<?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>101670</bug_id>
          
          <creation_ts>2012-11-08 17:14:28 -0800</creation_ts>
          <short_desc>Make track list control active</short_desc>
          <delta_ts>2012-12-20 14:54: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>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>88871</dependson>
    
    <dependson>101669</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Dean Jackson">dino</reporter>
          <assigned_to name="Dean Jackson">dino</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ojan</cc>
    
    <cc>rakuco</cc>
    
    <cc>rniwa</cc>
    
    <cc>silviapf</cc>
    
    <cc>silviapfeiffer1</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit-ews</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>762348</commentid>
    <comment_count>0</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-08 17:14:28 -0800</bug_when>
    <thetext>Hook selection in the media control track list (for captions and subtitles) up to the HTMLMediaElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>762349</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2012-11-08 17:14:53 -0800</bug_when>
    <thetext>&lt;rdar://problem/12667877&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763515</commentid>
    <comment_count>2</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-09 18:04:43 -0800</bug_when>
    <thetext>Note that the media controls code is all in flux right now</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763777</commentid>
    <comment_count>3</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-10 21:24:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Note that the media controls code is all in flux right now

Yes, when will you be landing the refactoring?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>763814</commentid>
    <comment_count>4</comment_count>
    <who name="Silvia Pfeiffer">silviapf</who>
    <bug_when>2012-11-11 04:26:37 -0800</bug_when>
    <thetext>If all goes well, the first patch should land tomorrow. I still have to prepare the second one.
Don&apos;t want to hold you up though, just thought to make you aware.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776340</commentid>
    <comment_count>5</comment_count>
      <attachid>176173</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-26 22:12:59 -0800</bug_when>
    <thetext>Created attachment 176173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776346</commentid>
    <comment_count>6</comment_count>
      <attachid>176173</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 22:25:35 -0800</bug_when>
    <thetext>Comment on attachment 176173
Patch

Attachment 176173 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14985984</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776348</commentid>
    <comment_count>7</comment_count>
      <attachid>176173</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 22:29:23 -0800</bug_when>
    <thetext>Comment on attachment 176173
Patch

Attachment 176173 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14987968</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776355</commentid>
    <comment_count>8</comment_count>
      <attachid>176177</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-26 22:36:54 -0800</bug_when>
    <thetext>Created attachment 176177
Patch

Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776361</commentid>
    <comment_count>9</comment_count>
      <attachid>176177</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 22:43:45 -0800</bug_when>
    <thetext>Comment on attachment 176177
Patch

Attachment 176177 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/14992925</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776364</commentid>
    <comment_count>10</comment_count>
      <attachid>176177</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-11-26 22:44:06 -0800</bug_when>
    <thetext>Comment on attachment 176177
Patch

Attachment 176177 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/14983985</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776375</commentid>
    <comment_count>11</comment_count>
      <attachid>176182</attachid>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-26 22:53:07 -0800</bug_when>
    <thetext>Created attachment 176182
Patch 3 for QT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>776386</commentid>
    <comment_count>12</comment_count>
    <who name="Silvia Pfeiffer">silviapfeiffer1</who>
    <bug_when>2012-11-26 23:00:13 -0800</bug_when>
    <thetext>FYI: Bug 101877 will make it possible to give media elements different functionality depending on platform. I have a patch to look at almost ready. (but don&apos;t wait to land this)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777061</commentid>
    <comment_count>13</comment_count>
      <attachid>176182</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2012-11-27 11:57:13 -0800</bug_when>
    <thetext>Comment on attachment 176182
Patch 3 for QT

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

Marking r+ but I would please consider the suggested changes.

&gt; Source/WebCore/ChangeLog:14
&gt; +        (WebCore):

Nit: you can remove this worthless entry added by prepare-ChangeLog.

&gt; Source/WebCore/ChangeLog:19
&gt; +        (WebCore):

Ditto.

&gt; Source/WebCore/ChangeLog:39
&gt; +        (MediaControlsApple):

Ditto.

&gt; Source/WebCore/html/HTMLMediaElement.cpp:161
&gt; +static const int cTextTracksOff = -1;

Nit: I don&apos;t think there is an explicit style rule about using &quot;c&quot; prefix on constants, and none of the others in this file do so I would prefer this didn&apos;t either.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:85
&gt; +static const char* cTextTracksOffAttrValue = &quot;-1&quot;; // This must match cTextTracksOff in HTMLMediaElement.
&gt; +static const int cTextTracksIndexOff = -1; // This must match cTextTracksOff in HTMLMediaElement.

It would be better to define and use a static function in HTMLMediaElement (like MediaPlayer::invalidTime()).

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:87
&gt; +static const int cTextTracksIndexNotFound = -2;
&gt; +static const char* cTextTrackSelectedClassValue = &quot;selected&quot;;

No &quot;c&quot; prefixes please.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:115
&gt; +    const AtomicString trackIndexAttributeValue = element-&gt;getAttribute(trackIndexAttr);

getAttribute() takes a const AtomicString&amp;, so it would be more efficient to create one once instead of every time it is called (eg. as we do in MediaControlTimelineContainerElement::shadowPseudoId).

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:929
&gt;      setDisplayType(mediaController()-&gt;closedCaptionsVisible() ? MediaHideClosedCaptionsButton : MediaShowClosedCaptionsButton);
&gt; +    setChecked(mediaController()-&gt;closedCaptionsVisible());

Nit: it would be more efficient to put mediaController()-&gt;closedCaptionsVisible() into a local.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:937
&gt; +        // FIXME: It&apos;s not great that the shared code is dictating behavior of platform-specific
&gt; +        // UI. Not all ports may want the closed captions button to toggle a list of tracks, so
&gt; +        // we have to use #if.

Maybe mention https://bugs.webkit.org/show_bug.cgi?id=101877 ?

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1030
&gt; +        if (trackIndex != cTextTracksIndexNotFound) {

Nit: &quot;if (trackIndex == cTextTracksIndexNotFound) continue&quot; would make this slightly easier to read.

&gt; Source/WebCore/html/shadow/MediaControlElements.cpp:1032
&gt; +                if (mediaElement-&gt;closedCaptionsVisible())

Nit: mediaElement-&gt;closedCaptionsVisible() won&apos;t change during the loop so you can cache it in a local.

&gt; LayoutTests/media/video-controls-captions-trackmenu.html:96
&gt; +                consoleWrite(&quot;Track 2 should be disabled&quot;);
&gt; +                track = tracks[2];
&gt; +                testExpected(&quot;track.mode&quot;, &quot;disabled&quot;);

Minor nit: I think the results would be easier to read if you didn&apos;t use the &quot;track&quot; and &quot;tracks&quot; variables. Instead of 

Track 2 should be disabled
EXPECTED (track.mode == &apos;disabled&apos;) OK

it would read:


Track 2 should be disabled
EXPECTED (video.textTracks[2].mode == &apos;disabled&apos;) OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777134</commentid>
    <comment_count>14</comment_count>
    <who name="Silvia Pfeiffer">silviapfeiffer1</who>
    <bug_when>2012-11-27 12:45:47 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:161
&gt; &gt; +static const int cTextTracksOff = -1;
&gt; 

Would it make sense to define this as a class constant in HTMLMediaElement and then use it in MediaControlElement as HTMLMediaElement::constname , including a cast to string where you need it as a string?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777262</commentid>
    <comment_count>15</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-27 15:11:05 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; &gt; Source/WebCore/html/HTMLMediaElement.cpp:161
&gt; &gt; &gt; +static const int cTextTracksOff = -1;
&gt; &gt; 
&gt; 
&gt; Would it make sense to define this as a class constant in HTMLMediaElement and then use it in MediaControlElement as HTMLMediaElement::constname , including a cast to string where you need it as a string?

That&apos;s basically what I&apos;ve done (when landing). Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777296</commentid>
    <comment_count>16</comment_count>
    <who name="Dean Jackson">dino</who>
    <bug_when>2012-11-27 15:59:54 -0800</bug_when>
    <thetext>Committed r135934: &lt;http://trac.webkit.org/changeset/135934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>795836</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-12-20 14:54:58 -0800</bug_when>
    <thetext>The test added by this patch is flaky:
http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=media%2Fvideo-controls-captions-trackmenu.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176173</attachid>
            <date>2012-11-26 22:12:59 -0800</date>
            <delta_ts>2012-11-26 22:36:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101670-20121127171035.patch</filename>
            <type>text/plain</type>
            <size>32912</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2NDM4NTU4ODllZDNi
NzI3MjlkZjJhNDJhNGZkMGEwMWVhOWNhOC4uZWQ2N2E2ZDc3Y2NjMmUyNGI4ZTAyYTQ3MTBiMjU3
ZDE1MmZlYTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRyYWNrIGxpc3QgY29u
dHJvbCBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhvb2sgdXAgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYXB0aW9ucyBtZW51IHNvIHRo
YXQgaXQgZW5hYmxlcyBvcgorICAgICAgICBkaXNhYmxlcyB0cmFja3MgaW4gdGhlIGFzc29jaWF0
ZWQgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogTmV3IG1ldGhvZCB0byB0b2dnbGUgdGhlIHN0
YXRlIG9mIGEgdHJhY2ssIGJ5IGluZGV4LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhY2tMaXN0SW5kZXhGb3JFbGVtZW50KTogSGVscGVyIGZ1bmN0aW9u
IHRvIHRha2UgYSB0cmFjayBsaXN0IDxsaT4gZWxlbWVudCBhbmQgcmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgY3VzdG9tIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOiBUb2dn
bGUgdGhlIHN0YXRlIG9mIHRoZSBidXR0b24gYmFzZWQgb24gY2FwdGlvbnMgdmlzaWJpbGl0eS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IE9uIE1hYyBwbGF0Zm9ybXMgc2hvdyB0aGUg
Y2FwdGlvbnMgbWVudS4gT24gb3RoZXIgcGxhdGZvcm1zLCB0b2dnbGUgY2FwdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6
Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IE5vdyBoYXMgYSBy
ZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYSB0cmFjayBsaXN0IGl0ZW0sIGxv
b2sKKyAgICAgICAgZm9yIHRoZSBjdXN0b20gYXR0cmlidXRlIHRoYXQgaWRlbnRpZmllcyB0aGUg
YXNzb2NpYXRlZCB0cmFjaywgYW5kIHRoZW4gdG9nZ2xlIHRoYXQgdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0
ZURpc3BsYXkpOiBTZXQgYSBjbGFzcyBvbiB0aGUgdHJhY2sgbGlzdCBlbGVtZW50cyBzbyB0aGV5
IGNhbiBiZQorICAgICAgICBzdHlsZWQgYnkgdGhlIGluamVjdGVkIENTUyAod2l0aCB0aWNrIG1h
cmtzIHRvIHJlcHJlc2VudCB2aXNpYmlsaXR5KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVzZXRUcmFja0xpc3RNZW51KTog
V2hlbiBidWlsZGluZyB0aGUgbGlzdCBvZiB0cmFjayBtZW51IGl0ZW1zLCBhZGQKKyAgICAgICAg
YSBjdXN0b20gSFRNTCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQgc28gdGhhdCB0aGUgY29ycmVz
cG9uZGluZyB0cmFjayBjYW4gYmUgZm91bmQgaW4gdGhlIGV2ZW50IGhhbmRsZXIuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IEFkZCBhIGxpc3Qgb2YgZWxlbWVu
dHMgcmVwcmVzZW50aW5nIHRoZSB0cmFjayBsaXN0LgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBs
ZTo6Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSk6IE1ha2Ugc3VyZSB0byB1cGRhdGUg
dGhlIHRyYWNrIG1lbnUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5oOgorICAgICAgICAoTWVkaWFDb250cm9sc0FwcGxlKToKKwogMjAxMi0xMS0y
NiAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJl
bW92ZSByZWR1bmRhbnQgYXNzaWdubWVudCBpbiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZVNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDAyN2RkMjFkOTFiNzEzMTdlMjYxM2U4MWMwM2U4MWU4YzkzZTVhMDYuLjM5ZGRmM2U5
YWM0NjliNDhlNWYzOTk0ODZjOGFlNTZiYjVlMzViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBib29sU3RyaW5nKGJvb2wgdmFsKQogc3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNlQmxv
YlByb3RvY29sID0gImJsb2IiOwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFj
a3NPZmYgPSAtMTsKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTI5OTYsNiArMjk5OCwyMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKSBjb25zdAogICAg
IH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVUcmFja0F0SW5kZXgoaW50IGlu
ZGV4LCBib29sIGV4Y2x1c2l2ZSkKK3sKKyAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSB0
ZXh0VHJhY2tzKCk7CisgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlzdC0+bGVuZ3RoKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0cmFja0xp
c3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNrKiB0cmFj
ayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKKyAgICAgICAgdHJhY2stPnNldFNob3dpbmdCeURlZmF1
bHQoZmFsc2UpOworICAgICAgICBpZiAoaSA9PSBpbmRleCkKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7CisgICAgICAgIGVsc2UgaWYgKGV4
Y2x1c2l2ZSB8fCBpbmRleCA9PSBjVGV4dFRyYWNrc09mZikKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgIH0KK30KKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKIHsKICAgICBUcmFja0dyb3Vw
IGNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrcyhUcmFja0dyb3VwOjpDYXB0aW9uc0FuZFN1YnRpdGxl
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGM1MzEyOWQ2MjM0
MWI2MmI1NDlkOTZkYmNmYjBmODMwN2JmZWZlOWQuLmI0YTY4ZTQ2NmZjNjIwZGViYmMwZTQ0NGNk
YTFiY2JmYTJmZjNjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0yNDUsNiArMjQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygp
OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tHcm91cCYpIGNv
bnN0OwogCisgICAgdm9pZCB0b2dnbGVUcmFja0F0SW5kZXgoaW50IGluZGV4LCBib29sIGV4Y2x1
c2l2ZSA9IHRydWUpOworCiAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAg
ICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZykgY29uc3Q7CiAg
ICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCAyMTI4YmMyMzIw
Zjk3ZmE1MzkxNWY3YzZkN2NhMTljNDU5YWE3MjQ1Li43MDllZDU5YmNlNmQ3NDFhYzUzMTY1OTRh
YWJkZjY5NjU1ZTlmNTBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtNzcsNiArNzgsMTIgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGNTa2lwVGltZSA9IDAuMmY7CiBz
dGF0aWMgY29uc3QgZmxvYXQgY1NjYW5SZXBlYXREZWxheSA9IDEuNWY7CiBzdGF0aWMgY29uc3Qg
ZmxvYXQgY1NjYW5NYXhpbXVtUmF0ZSA9IDg7CiAKK3N0YXRpYyBjb25zdCBjaGFyKiB0cmFja0lu
ZGV4QXR0ciA9ICJ4LXdlYmtpdC10cmFjay1pbmRleCI7CitzdGF0aWMgY29uc3QgY2hhciogY1Rl
eHRUcmFja3NPZmZBdHRyVmFsdWUgPSAiLTEiOyAvLyBUaGlzIG11c3QgbWF0Y2ggY1RleHRUcmFj
a3NPZmYgaW4gSFRNTE1lZGlhRWxlbWVudC4KK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFja3NJ
bmRleE9mZiA9IC0xOyAvLyBUaGlzIG11c3QgbWF0Y2ggY1RleHRUcmFja3NPZmYgaW4gSFRNTE1l
ZGlhRWxlbWVudC4KK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFja3NJbmRleE5vdEZvdW5kID0g
LTI7CitzdGF0aWMgY29uc3QgY2hhciogY1RleHRUcmFja1NlbGVjdGVkQ2xhc3NWYWx1ZSA9ICJz
ZWxlY3RlZCI7CisKIEhUTUxNZWRpYUVsZW1lbnQqIHRvUGFyZW50TWVkaWFFbGVtZW50KE5vZGUq
IG5vZGUpCiB7CiAgICAgaWYgKCFub2RlKQpAQCAtOTksNiArMTA2LDE4IEBAIE1lZGlhQ29udHJv
bEVsZW1lbnRUeXBlIG1lZGlhQ29udHJvbEVsZW1lbnRUeXBlKE5vZGUqIG5vZGUpCiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PE1lZGlhQ29udHJvbEVsZW1lbnQqPihlbGVtZW50KS0+ZGlzcGxheVR5
cGUoKTsKIH0KIAorc3RhdGljIGludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCog
ZWxlbWVudCkKK3sKKyAgICBjb25zdCBBdG9taWNTdHJpbmcgdHJhY2tJbmRleEF0dHJpYnV0ZVZh
bHVlID0gZWxlbWVudC0+Z2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyKTsKKyAgICBpZiAodHJh
Y2tJbmRleEF0dHJpYnV0ZVZhbHVlLmlzTnVsbCgpIHx8IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1
ZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7Cisg
ICAgYm9vbCBvazsKKyAgICBpbnQgdHJhY2tJbmRleCA9IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1
ZS50b0ludCgmb2spOworICAgIGlmICghb2spCisgICAgICAgIHJldHVybiBjVGV4dFRyYWNrc0lu
ZGV4Tm90Rm91bmQ7CisgICAgcmV0dXJuIHRyYWNrSW5kZXg7Cit9CisKIC8vIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KIAogTWVkaWFDb250cm9sRWxlbWVudDo6TWVkaWFDb250cm9sRWxl
bWVudChEb2N1bWVudCogZG9jdW1lbnQpCkBAIC05MDIsMTcgKzkyMSwyMiBAQCBQYXNzUmVmUHRy
PE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudD4gTWVkaWFDb250
cm9sVG9nZ2xlQ2xvcwogdm9pZCBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRv
bkVsZW1lbnQ6OnVwZGF0ZURpc3BsYXlUeXBlKCkKIHsKICAgICBzZXREaXNwbGF5VHlwZShtZWRp
YUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkgPyBNZWRpYUhpZGVDbG9zZWRD
YXB0aW9uc0J1dHRvbiA6IE1lZGlhU2hvd0Nsb3NlZENhcHRpb25zQnV0dG9uKTsKKyAgICBzZXRD
aGVja2VkKG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiB9CiAK
IHZvaWQgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKICAgICBpZiAoZXZlbnQtPnR5cGUoKSA9
PSBldmVudE5hbWVzKCkuY2xpY2tFdmVudCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBpcyBu
b3cgaW5jb3JyZWN0bHkgZG9pbmcgdHdvIHRoaW5ncyBhdCBvbmNlOiBzaG93aW5nIHRoZSBsaXN0
IG9mIGNhcHRpb25zIGFuZCB0b2dnbGluZyBkaXNwbGF5LgotICAgICAgICAvLyBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjcwCisgICAgICAgIC8vIEZJWE1FOiBJ
dCdzIG5vdCBncmVhdCB0aGF0IHRoZSBzaGFyZWQgY29kZSBpcyBkaWN0YXRpbmcgYmVoYXZpb3Ig
b2YgcGxhdGZvcm0tc3BlY2lmaWMKKyAgICAgICAgLy8gVUkuIE5vdCBhbGwgcG9ydHMgbWF5IHdh
bnQgdGhlIGNsb3NlZCBjYXB0aW9ucyBidXR0b24gdG8gdG9nZ2xlIGEgbGlzdCBvZiB0cmFja3Ms
IHNvCisgICAgICAgIC8vIHdlIGhhdmUgdG8gdXNlICNpZi4KKyNpZiAhUExBVEZPUk0oTUFDKQog
ICAgICAgICBtZWRpYUNvbnRyb2xsZXIoKS0+c2V0Q2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCFtZWRp
YUNvbnRyb2xsZXIoKS0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpOwogICAgICAgICBzZXRDaGVj
a2VkKG1lZGlhQ29udHJvbGxlcigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7Ci0gICAgICAg
IG1fY29udHJvbHMtPnRvZ2dsZUNsb3NlZENhcHRpb25UcmFja0xpc3QoKTsKICAgICAgICAgdXBk
YXRlRGlzcGxheVR5cGUoKTsKKyNlbHNlCisgICAgICAgIG1fY29udHJvbHMtPnRvZ2dsZUNsb3Nl
ZENhcHRpb25UcmFja0xpc3QoKTsKKyNlbmRpZgogICAgICAgICBldmVudC0+c2V0RGVmYXVsdEhh
bmRsZWQoKTsKICAgICB9CiAKQEAgLTkyNywyMiArOTUxLDQ5IEBAIGNvbnN0IEF0b21pY1N0cmlu
ZyYgTWVkaWFDb250cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50OjpzaGFkb3dQ
c2V1ZG9JCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotaW5saW5lIE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCkKK2lubGluZSBNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6Ok1lZGlhQ29udHJvbENsb3Nl
ZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHMqIGNvbnRyb2xzKQogICAgIDogTWVkaWFDb250cm9sRWxlbWVudChkb2N1bWVudCkKKyAgICAs
IG1fY29udHJvbHMoY29udHJvbHMpCiB7CiB9CiAKLVBhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQpCitQYXNzUmVmUHRyPE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gTWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoRG9jdW1lbnQqIGRvY3VtZW50LCBN
ZWRpYUNvbnRyb2xzKiBjb250cm9scykKIHsKLSAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChkb2N1bWVudCkpOworICAgIEFTU0VS
VChjb250cm9scyk7CisgICAgUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudD4gZWxlbWVudCA9IGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0
aW9uc1RyYWNrTGlzdEVsZW1lbnQoZG9jdW1lbnQsIGNvbnRyb2xzKSk7CiAgICAgcmV0dXJuIGVs
ZW1lbnQucmVsZWFzZSgpOwogfQogCiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJh
Y2tMaXN0RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihFdmVudCogZXZlbnQpCiB7Ci0gICAg
Ly8gRklYTUU6IEhvb2sgdGhpcyB1cCB0byBhY3R1YWwgdGV4dCB0cmFja3MuCi0gICAgLy8gaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMTY3MAotICAgIFVOVVNFRF9Q
QVJBTShldmVudCk7CisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygpLmNsaWNr
RXZlbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkgZm9yIGV4Y2x1c2l2
aXR5IG92ZXJyaWRlLgorICAgICAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzM2MQorCisg
ICAgICAgIE5vZGUqIHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7CisgICAgICAg
IGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICAvLyBXaGVuIHdlIGNyZWF0ZWQgdGhlIGVsZW1lbnRzIGluIHRoZSB0
cmFjayBsaXN0LCB3ZSBnYXZlIHRoZW0gYSBjdXN0b20KKyAgICAgICAgLy8gYXR0cmlidXRlIHJl
cHJlc2VudGluZyB0aGUgaW5kZXggaW4gdGhlIEhUTUxNZWRpYUVsZW1lbnQncyBsaXN0IG9mIHRy
YWNrcy4KKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IHRhcmdldCBoYXMgc3VjaCBhIGN1
c3RvbSBlbGVtZW50IGFuZCwgaWYgc28sCisgICAgICAgIC8vIHRlbGwgdGhlIEhUTUxNZWRpYUVs
ZW1lbnQgdG8gZW5hYmxlIHRoYXQgdHJhY2suCisKKyAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0
cmFja0xpc3RJbmRleEZvckVsZW1lbnQodG9FbGVtZW50KHRhcmdldCkpOworICAgICAgICBpZiAo
dHJhY2tJbmRleCAhPSBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQpIHsKKyAgICAgICAgICAgIEhU
TUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMp
OworICAgICAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnRvZ2dsZVRyYWNrQXRJbmRleCh0cmFja0lu
ZGV4KTsKKworICAgICAgICAgICAgLy8gV2UndmUgc2VsZWN0ZWQgYSB0cmFjayB0byBkaXNwbGF5
LCBzbyB3ZSBjYW4gbm93IGNsb3NlIHRoZSBtZW51LgorICAgICAgICAgICAgbV9jb250cm9scy0+
dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOworICAgICAgICAgICAgdXBkYXRlRGlzcGxh
eSgpOworICAgICAgICB9CisgICAgfQorCisgICAgTWVkaWFDb250cm9sRWxlbWVudDo6ZGVmYXVs
dEV2ZW50SGFuZGxlcihldmVudCk7CiB9CiAKIGNvbnN0IEF0b21pY1N0cmluZyYgTWVkaWFDb250
cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0
CkBAIC05NTMsOSArMTAwNCw0NSBAQCBjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6c2hhZG93UHNldWRvSWQoKQogCiB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSgp
CiB7Ci0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICghbWVkaWFDb250cm9sbGVyKCkt
Pmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgIHJldHVybjsKKworICAgIEhUTUxNZWRpYUVs
ZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRoaXMpOworICAgIGlm
ICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBUZXh0VHJhY2tMaXN0KiB0
cmFja0xpc3QgPSBtZWRpYUVsZW1lbnQtPnRleHRUcmFja3MoKTsKKworICAgIGlmICghdHJhY2tM
aXN0IHx8ICF0cmFja0xpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBtZW51SXRlbXMuc2l6ZSgpOyBpIDwgbGVuZ3RoOyAr
K2kpIHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHRyYWNrSXRlbSA9IG1lbnVJdGVtc1tpXTsK
KyAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodHJhY2tJ
dGVtLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gY1RleHRUcmFja3NJbmRleE5v
dEZvdW5kKSB7CisgICAgICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBjVGV4dFRyYWNrc0luZGV4
T2ZmKSB7CisgICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+Y2xvc2VkQ2FwdGlvbnNW
aXNpYmxlKCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPnJl
bW92ZShjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsK
KyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xh
c3NMaXN0KCktPmFkZChjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhD
RVBUSU9OKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgVGV4dFRyYWNr
KiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbSh0cmFja0luZGV4KTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXRyYWNrKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAg
ICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3b3JkKCkpCisgICAg
ICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPmFkZChjVGV4dFRyYWNrU2Vs
ZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPnJlbW92ZShj
VGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRD
YXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnJlc2V0VHJhY2tMaXN0TWVudSgpCit7CiAgICAgLy8g
UmVtb3ZlIGFueSBleGlzdGluZyBjb250ZW50LgogICAgIHJlbW92ZUNoaWxkcmVuKCk7CisgICAg
bWVudUl0ZW1zLmNsZWFyKCk7CiAKICAgICBpZiAoIW1lZGlhQ29udHJvbGxlcigpLT5oYXNDbG9z
ZWRDYXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC05ODcsMTUgKzEwNzQsMTUgQEAgdm9p
ZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3Bs
YXkoKQogCiAgICAgdHJhY2tJdGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKICAgICB0cmFja0l0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4
dE5vZGUoIk9mZiIpKTsKLSAgICAvLyBGSVhNRTogVGhlc2UgbGlzdHMgYXJlIG5vdCB5ZXQgbGl2
ZS4gTWFyayB0aGUgT2ZmIGVudHJ5IGFzIHRoZSBzZWxlY3RlZCBvbmUgZm9yIG5vdy4KLSAgICB0
cmFja0l0ZW0tPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsICJzZWxlY3RlZCIpOworICAgIHRyYWNr
SXRlbS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyLCBjVGV4dFRyYWNrc09mZkF0dHJWYWx1
ZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgY2FwdGlvbnNMaXN0LT5hcHBlbmRDaGlsZCh0
cmFja0l0ZW0pOworICAgIG1lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVtKTsKIAogICAgIHRyYWNr
SXRlbSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAg
ICAgdHJhY2tJdGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJPZmYiKSk7Ci0g
ICAgLy8gRklYTUU6IFRoZXNlIGxpc3RzIGFyZSBub3QgeWV0IGxpdmUuIE1hcmsgdGhlIE9mZiBl
bnRyeSBhcyB0aGUgc2VsZWN0ZWQgb25lIGZvciBub3cuCi0gICAgdHJhY2tJdGVtLT5zZXRBdHRy
aWJ1dGUoY2xhc3NBdHRyLCAic2VsZWN0ZWQiKTsKKyAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0
ZSh0cmFja0luZGV4QXR0ciwgY1RleHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENF
UFRJT04pOwogICAgIHN1YnRpdGxlc0xpc3QtPmFwcGVuZENoaWxkKHRyYWNrSXRlbSk7CisgICAg
bWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwogCiAgICAgYm9vbCBoYXNDYXB0aW9ucyA9IGZh
bHNlOwogICAgIGJvb2wgaGFzU3VidGl0bGVzID0gZmFsc2U7CkBAIC0xMDAzLDYgKzEwOTAsMTMg
QEAgdm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0
ZURpc3BsYXkoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+
bGVuZ3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0g
dHJhY2tMaXN0LT5pdGVtKGkpOwogICAgICAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1l
bnQobGlUYWcsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgICAgIC8vIEFkZCBhIGN1c3Rv
bSBhdHRyaWJ1dGUgdG8gdGhlIDxsaT4gZWxlbWVudCB3aGljaCB3aWxsIGFsbG93CisgICAgICAg
IC8vIHVzIHRvIGVhc2lseSBhc3NvY2lhdGUgdGhlIHVzZXIgdGFwcGluZyBoZXJlIHdpdGggdGhl
CisgICAgICAgIC8vIHRyYWNrLiBTaW5jZSB0aGlzIGxpc3QgaXMgcmVidWlsdCBpZiB0aGUgdHJh
Y2tzIGNoYW5nZSwgd2UKKyAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBpbiBzeW5jLgorICAg
ICAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0ciwgU3RyaW5nOjpudW1i
ZXIoaSksIEFTU0VSVF9OT19FWENFUFRJT04pOworCiAgICAgICAgIEF0b21pY1N0cmluZyBsYWJl
bFRleHQgPSB0cmFjay0+bGFiZWwoKTsKICAgICAgICAgaWYgKGxhYmVsVGV4dC5pc051bGwoKSB8
fCBsYWJlbFRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbGFiZWxUZXh0ID0gZGlzcGxheU5h
bWVGb3JMYW5ndWFnZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CkBAIC0xMDE4LDYgKzExMTIs
NyBAQCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBk
YXRlRGlzcGxheSgpCiAgICAgICAgICAgICBzdWJ0aXRsZXNMaXN0LT5hcHBlbmRDaGlsZCh0cmFj
a0l0ZW0pOwogICAgICAgICB9CiAgICAgICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5j
cmVhdGVUZXh0Tm9kZShsYWJlbFRleHQpKTsKKyAgICAgICAgbWVudUl0ZW1zLmFwcGVuZCh0cmFj
a0l0ZW0pOwogICAgIH0KIAogICAgIGNhcHRpb25zU2VjdGlvbi0+YXBwZW5kQ2hpbGQoY2FwdGlv
bnNMaXN0KTsKQEAgLTEwMjcsNyArMTEyMiw4IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAgICAgYXBwZW5kQ2hp
bGQoY2FwdGlvbnNTZWN0aW9uKTsKICAgICBpZiAoaGFzU3VidGl0bGVzKQogICAgICAgICBhcHBl
bmRDaGlsZChzdWJ0aXRsZXNTZWN0aW9uKTsKLSNlbmRpZgorCisgICAgdXBkYXRlRGlzcGxheSgp
OwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRleCBjM2ZiYzgxMjE5
MmQzNDFmNjJiOTRlMjM4ZWJlMTRlZDJlZTk2NzVmLi5kM2E0NzNjMTI2NDc2MjIyNjYzZmYxNjZl
ZmQ1Y2Q2MTk0YjAxODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTQxNSwxOCArNDE1LDIzIEBAIHByaXZhdGU6CiAKIGNs
YXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCA6IHB1YmxpYyBN
ZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNyZWF0ZShEb2N1bWVudCop
OworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyopOwogCiAgICAgdmly
dHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2aXJ0dWFsIGJvb2wg
d2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJldHVybiB0cnVlOyB9
CiAKICAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKKyAgICB2b2lkIHJlc2V0VHJhY2tMaXN0TWVu
dSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0
RWxlbWVudChEb2N1bWVudCopOworICAgIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAogICAgIHZpcnR1YWwgTWVk
aWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJldHVybiBNZWRpYUNs
b3NlZENhcHRpb25zVHJhY2tMaXN0OyB9CiAgICAgdmlydHVhbCBjb25zdCBBdG9taWNTdHJpbmcm
IHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RWxl
bWVudD4gPiBUcmFja01lbnVJdGVtczsKKyAgICBUcmFja01lbnVJdGVtcyBtZW51SXRlbXM7Cisg
ICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlh
Q29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuY3BwCmluZGV4IDZjYzFjN2Y3ZGNlZjgyN2UxNDJmNDQzNDAyNmZiYWQyNGY2MWRh
MDYuLjkzNzMzYWViOGE4NmUyNmE3YjU0NTJmNWQ1M2UxODM5YWJhODlmY2MgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmNwcApAQCAtMTQ5
LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBNZWRpYUNvbnRyb2xz
QXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1CiAgICAgaWYgKGRvY3VtZW50LT5w
YWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7CiAgICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1lbnQ+IGNsb3NlZENh
cHRpb25zQ29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNDb250YWluZXJFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9z
ZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gTWVk
aWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQp
OworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25z
VHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5nZXQoKSk7CiAgICAg
ICAgIGNvbnRyb2xzLT5tX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gY2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3QuZ2V0KCk7CiAgICAgICAgIGNsb3NlZENhcHRpb25zQ29udGFpbmVyLT5hcHBlbmRD
aGlsZChjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC5yZWxlYXNlKCksIGVjLCB0cnVlKTsKICAgICAg
ICAgaWYgKGVjKQpAQCAtMjg5LDYgKzI4OSwxMyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6
bWFrZVRyYW5zcGFyZW50KCkKICAgICAgICAgbV9jbG9zZWRDYXB0aW9uc0NvbnRhaW5lci0+aGlk
ZSgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6Y2hhbmdlZENsb3NlZENhcHRpb25z
VmlzaWJpbGl0eSgpCit7CisgICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZENsb3NlZENhcHRpb25z
VmlzaWJpbGl0eSgpOworICAgIGlmIChtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0KQorICAgICAg
ICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT51cGRhdGVEaXNwbGF5KCk7Cit9CisKIHZvaWQg
TWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiB7CiAgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50
KCktPnBhZ2UoKTsKQEAgLTMyMyw3ICszMzAsNyBAQCB2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6
cmVzZXQoKQogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Nsb3NlZENhcHRpb25z
KCkpIHsKICAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b24tPnNob3coKTsK
ICAgICAgICAgICAgIGlmIChtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0KQotICAgICAgICAgICAg
ICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnVwZGF0ZURpc3BsYXkoKTsKKyAgICAgICAg
ICAgICAgICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT5yZXNldFRyYWNrTGlzdE1lbnUoKTsK
ICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
LT5oaWRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQXBwbGUuaAppbmRleCBkYzQ3MzA2ZWM5YzQyOWU3NDVjNTQxOWU5ODdhYTE2OWM2Y2Ix
YWJiLi5hMWVlODk2M2NlZmFjMGNkNjEzYmQ5MmYyYTZjNmNmZDlmMzBiODA0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaApAQCAtNTgsNiAr
NTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJlbnRUaW1lRGlzcGxh
eSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0dXNEaXNwbGF5KCkgT1ZF
UlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0
eSgpIE9WRVJSSURFOwogICAgIHZvaWQgdG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwog
CiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDFmYWQzODAyNmExNDlmYjVjZjk4MTliNGVlZjcyYTA1YzQ4ZmUz
NTIuLjJkMzI0MDAwODM5MmMyYjc4ZTk0ZmVkNzBiZWMyMWRjZWVjMDc1OTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAxMi0xMS0yNiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CisK
KyAgICAgICAgTWFrZSB0cmFjayBsaXN0IGNvbnRyb2wgYWN0aXZlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzAKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdCB0aGF0IGV4ZXJjaXNlcyB0
aGUgdHJhY2sgbGlzdCBtZW51LCBhbmQgaG93IGl0IGNhbiBiZSB1c2VkCisgICAgICAgIHRvIGVu
YWJsZSBzcGVjaWZpYyB0cmFja3MuIFNpbmNlIHRoaXMgaXMgb25seSBlbmFibGVkIGZvciBNYWMs
IGl0IGlzCisgICAgICAgIHNraXBwZWQgb24gYWxsIG90aGVyIHBsYXRmb3Jtcy4KKworICAgICAg
ICBNZWFud2hpbGUsIHRoZSBleGlzdGluZyB0ZXN0IGZvciBhIG9uL29mZiBjYXB0aW9ucyBidXR0
b24gbm93CisgICAgICAgIGRvZXMgbm90IHdvcmsgb24gTWFjLCBzbyBza2lwIGl0IHRoZXJlLiBJ
IGNvcGllZCB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICBpbnRvIHRoZSBuZXcgdGVzdCBzbyB3
ZSBzdGlsbCBoYXZlIGNvdmVyYWdlLgorCisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogbWVkaWEv
dmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
ZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMS0yNiAgVGhpYWdvIE1hcmNvcyBQLiBTYW50b3Mg
IDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBJbXBvcnQgbW9yZSBDU1MgRGV2
aWNlIEFkYXB0YXRpb24gbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tZWRp
YS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0
VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi5iMTI4NDVjOTY0ZjgwMWI2N2NmOGFiMTY1MjUzNjU3NzI2OGM1OWIyCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlv
bnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitUZXN0IHRoYXQgd2Ug
YXJlIGFibGUgdG8gdHJpZ2dlciB0aGUgbGlzdCBvZiBjYXB0aW9ucywgYW5kIHNlbGVjdCBmcm9t
IHRoZSBsaXN0LgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKyoqKiBTZXQgdGhlIHVzZXIgbGFu
Z3VhZ2UgcHJlZmVyZW5jZS4KK1JVTihpbnRlcm5hbHMuc2V0VXNlclByZWZlcnJlZExhbmd1YWdl
cyhbJ2VuJ10pKQorKioqIENsaWNrIHRoZSBDQyBidXR0b24uCisqKiogVHVybmluZyBjYXB0aW9u
cyBvbgorRm91bmQgdHJhY2tsaXN0IG1lbnUgYW5kIGxpc3Qgb2YgdHJhY2tzIE9LCitGb3VuZCBm
b3VyIGF2YWlsYWJsZSB0cmFja3MgaW4gbWVudSBPSworRVhQRUNURUQgKHRyYWNrcy5sZW5ndGgg
PT0gJzMnKSBPSworVHJhY2sgMCBzaG91bGQgYmUgZGlzYWJsZWQKK0VYUEVDVEVEICh0cmFjay5t
b2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAxIHNob3VsZCBiZSBzaG93aW5nCitFWFBFQ1RF
RCAodHJhY2subW9kZSA9PSAnc2hvd2luZycpIE9LCitUcmFjayAyIHNob3VsZCBiZSBkaXNhYmxl
ZAorRVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VYUEVDVEVEICh0ZXh0
VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRleHQgPT0gJ0xvcmVt
JykgT0sKKyoqKiBDbGljayB0aGUgQ0MgYnV0dG9uLgorKioqIFR1cm5pbmcgY2FwdGlvbnMgb24K
K0ZvdW5kIHRyYWNrbGlzdCBtZW51IGFuZCBsaXN0IG9mIHRyYWNrcyBPSworRm91bmQgZm91ciBh
dmFpbGFibGUgdHJhY2tzIGluIG1lbnUgT0sKK0VYUEVDVEVEICh0cmFja3MubGVuZ3RoID09ICcz
JykgT0sKK1RyYWNrIDAgc2hvdWxkIGJlIGRpc2FibGVkCitFWFBFQ1RFRCAodHJhY2subW9kZSA9
PSAnZGlzYWJsZWQnKSBPSworVHJhY2sgMSBzaG91bGQgYmUgZGlzYWJsZWQKK0VYUEVDVEVEICh0
cmFjay5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAyIHNob3VsZCBiZSBkaXNhYmxlZAor
RVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK05vIHRleHQgdHJhY2sgY3Vl
IHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRpc3BsYXknIGlzIGN1
cnJlbnRseSB2aXNpYmxlCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9t
ZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBiL0xheW91dFRlc3Rz
L21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJjOTQwNjIyNmIxM2Y5NzJmYjUzYWE5YWE2YWJjZmQ3NWY3YTA0YmUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUu
aHRtbApAQCAtMCwwICsxLDE0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKyAgICA8aGVh
ZD4KKyAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBmcm9tIGEgbGlzdCBvZiB0cmFja3M8L3RpdGxl
PgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtY29udHJvbHMuanMiPjwvc2NyaXB0PgorICAg
ICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+CisgICAgICAgIDxzY3Jp
cHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAg
ICAgICAgIHZhciB0cmFja3M7CisgICAgICAgICAgICB2YXIgY2FwdGlvbnNCdXR0b25Db29yZGlu
YXRlczsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAg
ICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICBmdW5jdGlvbiBjbGlj
a0NDQnV0dG9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUo
IioqKiBDbGljayB0aGUgQ0MgYnV0dG9uLiIpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlTW92ZVRvKGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMF0sIGNhcHRpb25zQnV0dG9u
Q29vcmRpbmF0ZXNbMV0pOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigp
OworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAgICAgICAgICAgIH0K
KworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKKyAgICAgICAgICAgIHsKKyAgICAg
ICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAgICAgICAgICAgICAg
IGNvbnNvbGVXcml0ZSgiKioqIFNldCB0aGUgdXNlciBsYW5ndWFnZSBwcmVmZXJlbmNlLiIpOwor
ICAgICAgICAgICAgICAgICAgICBydW4oImludGVybmFscy5zZXRVc2VyUHJlZmVycmVkTGFuZ3Vh
Z2VzKFsnZW4nXSkiKTsKKworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgY2FwdGlvbnNCdXR0b25Db29yZGluYXRlcyA9IG1lZGlhQ29udHJvbHNCdXR0
b25Db29yZGluYXRlcyh2aWRlbywgInRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMtYnV0dG9uIik7Cisg
ICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAgICAgICAgICAgICAg
ICAgICAgICAgZmFpbFRlc3QoZXhjZXB0aW9uLmRlc2NyaXB0aW9uKTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
ICAgICBjbGlja0NDQnV0dG9uKCk7CisgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1l
b3V0KHR1cm5DYXB0aW9uc09uLCAxMDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2FwdGlvbk1lbnVJdGVtKGluZGV4LCBu
ZXh0U3RlcCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0RWxl
bWVudDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICB0cmFja0xp
c3RFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNoYWRvd1Jvb3Qodmlk
ZW8pLmZpcnN0Q2hpbGQsICItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWNsb3NlZC1jYXB0aW9ucy10
cmFjay1saXN0Iik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0aW9uKSB7CisgICAg
ICAgICAgICAgICAgICAgIGZhaWxUZXN0KGV4Y2VwdGlvbi5kZXNjcmlwdGlvbik7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAg
Ly8gVHJhY2sgbGlzdCBzaG91bGQgaGF2ZSBhIDx1bD4gd2l0aCBmb3VyIDxsaT4gY2hpbGRyZW4g
KE9uZSBvZiB0aGVtIGlzICJPZmYiKS4KKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0ID0g
dHJhY2tMaXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ1bCIpOworICAgICAgICAgICAgICAgIGlm
ICghdHJhY2tMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBub3Qg
ZmluZCBhIGNoaWxkIHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlzdCBtZW51Iik7CisgICAgICAgICAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbG9n
UmVzdWx0KHRydWUsICJGb3VuZCB0cmFja2xpc3QgbWVudSBhbmQgbGlzdCBvZiB0cmFja3MiKTsK
KyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0SXRlbXMgPSB0cmFja0xpc3QucXVlcnlTZWxl
Y3RvckFsbCgibGkiKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrTGlzdEl0ZW1zKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBhIGNoaWxkIGxpIGVs
ZW1lbnRzIGluIHRyYWNrIGxpc3QgbWVudSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0cmFja0xpc3RJdGVtcy5s
ZW5ndGggIT0gNCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgiRXhwZWN0ZWQgNCB0
cmFja3MgaW4gbWVudSBidXQgZm91bmQgIiArIHRyYWNrTGlzdEl0ZW1zLmxlbmd0aCk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgbG9nUmVzdWx0KHRydWUsICJGb3VuZCBmb3VyIGF2YWlsYWJsZSB0cmFja3MgaW4gbWVudSIp
OworICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSBzZWxlY3RlZCBpdGVtCisgICAgICAg
ICAgICAgICAgdmFyIHNlbGVjdGVkVHJhY2tJdGVtID0gdHJhY2tMaXN0SXRlbXNbaW5kZXhdOwor
ICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBzZWxlY3RlZFRyYWNrSXRlbS5nZXRC
b3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9IGJvdW5kaW5nUmVj
dC5sZWZ0ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMjsKKyAgICAgICAgICAgICAgICB2YXIgeSA9
IGJvdW5kaW5nUmVjdC50b3AgKyBib3VuZGluZ1JlY3QuaGVpZ2h0IC8gMjsKKyAgICAgICAgICAg
ICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAgICAgICAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZVVw
KCk7CisgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQobmV4dFN0ZXAsIDEwMCk7Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHR1cm5DYXB0aW9uc09uKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqKiBUdXJuaW5nIGNh
cHRpb25zIG9uIik7CisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgb24gdGhlIHRoaXJkIGl0ZW0s
IHdoaWNoIGlzIHRoZSBzZWNvbmQgdHJhY2sgKE9mZiBpcyB0aGUgZmlyc3QgaXRlbSBpbiB0aGUg
bWVudSkKKyAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMiwgdGVzdENhcHRp
b25zVmlzaWJsZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RD
YXB0aW9uc1Zpc2libGUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRyYWNrcyA9
IHZpZGVvLnRleHRUcmFja3M7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFja3Mu
bGVuZ3RoIiwgMyk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUcmFjayAwIHNob3Vs
ZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzBdOworICAg
ICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJkaXNhYmxlZCIpOworICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVHJhY2sgMSBzaG91bGQgYmUgc2hvd2luZyIpOwor
ICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzFdOworICAgICAgICAgICAgICAgIHRlc3RF
eHBlY3RlZCgidHJhY2subW9kZSIsICJzaG93aW5nIik7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJUcmFjayAyIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRy
YWNrID0gdHJhY2tzWzJdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9k
ZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidGV4dFRyYWNr
RGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5uZXJUZXh0IiwgIkxvcmVtIik7Cisg
ICAgICAgICAgICAgICAgY2xpY2tDQ0J1dHRvbigpOworICAgICAgICAgICAgICAgIHdpbmRvdy5z
ZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09mZiwgMTAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZnVuY3Rpb24gdHVybkNhcHRpb25zT2ZmKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIioqKiBUdXJuaW5nIGNhcHRpb25zIG9uIik7CisgICAgICAg
ICAgICAgICAgLy8gQ2xpY2sgdGhlIE9mZiBidXR0b24KKyAgICAgICAgICAgICAgICBzZWxlY3RD
YXB0aW9uTWVudUl0ZW0oMCwgdGVzdENhcHRpb25zRGlzYWJsZWQpOworICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Q2FwdGlvbnNEaXNhYmxlZCgpCisgICAgICAgICAg
ICB7CisgICAgICAgICAgICAgICAgdHJhY2tzID0gdmlkZW8udGV4dFRyYWNrczsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrcy5sZW5ndGgiLCAzKTsKKyAgICAgICAgICAgICAg
ICBjb25zb2xlV3JpdGUoIlRyYWNrIDAgc2hvdWxkIGJlIGRpc2FibGVkIik7CisgICAgICAgICAg
ICAgICAgdHJhY2sgPSB0cmFja3NbMF07CisgICAgICAgICAgICAgICAgdGVzdEV4cGVjdGVkKCJ0
cmFjay5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
cmFjayAxIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJh
Y2tzWzFdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJkaXNh
YmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVHJhY2sgMiBzaG91bGQgYmUg
ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHRyYWNrc1syXTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrLm1vZGUiLCAiZGlzYWJsZWQiKTsKKyAgICAgICAg
ICAgICAgICB0ZXN0RXhwZWN0ZWQoInRleHRUcmFja0Rpc3BsYXlFbGVtZW50KHZpZGVvLCAnZGlz
cGxheScpLmlubmVyVGV4dCIsICJMb3JlbSIpOworICAgICAgICAgICAgICAgIGVuZFRlc3QoKTsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQoKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAgICAgICAgICAgICAg
ICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgc3RhcnRUZXN0KTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJvZHkgb25sb2FkPSJz
dGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHdlIGFyZSBhYmxlIHRvIHRyaWdnZXIgdGhl
IGxpc3Qgb2YgY2FwdGlvbnMsIGFuZCBzZWxlY3QgZnJvbSB0aGUgbGlzdC48L3A+CisgICAgICAg
IDx2aWRlbyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCIgY29udHJvbHM+CisgICAgICAgICAgICA8
c291cmNlIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgdHlwZT0idmlkZW8vbXA0Ij4KKyAgICAgICAg
ICAgIDxzb3VyY2Ugc3JjPSJjb250ZW50L3Rlc3Qub2d2IiB0eXBlPSJ2aWRlby9vZ2ciPgorICAg
ICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0
dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgorICAgICAgICAgICAgPHRyYWNrIGtp
bmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0
dCIgc3JjbGFuZz0iZW4tYXUiPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBz
cmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iamEi
PgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmRhOTE1N2ZkN2Ni
MzQ4NzYxMGI1ZTA1MzNiYjBjYWY5MzdlYTJmMS4uNzU4OTc0NDMyYTNjNGQ5NzM4MjJiOGJhNTIx
MmNmMmYzNTZkN2UwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
VGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0
RXhwZWN0YXRpb25zCkBAIC0zNjk4LDYgKzM2OTgsOSBAQCB3ZWJraXQub3JnL2IvOTI1NzAgWyBX
aW4gRGVidWcgXSBpbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtc3RhcnQtdGltZS5odG1sIFsg
RgogCiB3ZWJraXQub3JnL2IvOTQyNDIgWyBBbmRyb2lkIERlYnVnIF0gbWVkaWEvdHJhY2svdHJh
Y2stY3Vlcy1zb3J0ZWQtYmVmb3JlLWRpc3BhdGNoLmh0bWwgWyBDcmFzaCBQYXNzIFRpbWVvdXQg
XQogCisjIENocm9taXVtIHN0aWxsIGhhcyB0aGUgQ0MgdG9nZ2xlIGJ1dHRvbiwgbm90IHRoZSBt
ZW51IG9mIHRyYWNrcy4KK3dlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlkZW8tY29udHJvbHMt
Y2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwgWyBTa2lwIF0KKwogIyBTdXBwb3NlZGx5IHN0YXJ0ZWQg
ZmFpbGluZyBiZXR3ZWVuIENSIHIxNDA3NjAgYW5kIENSIHIxNDEyMTYuICBUaGUgZmFpbHVyZXMK
ICMgbG9vayBsaWtlIHRoZXkgaW52b2x2ZSBhbnRpYWxpYXNpbmc7IHRoZSBmYWN0IHRoYXQgdGhl
IHRlc3QgY2xlYXJseSBleHBlY3RzCiAjIHRoZXNlIHBpeGVscyBub3QgdG8gYmUgYW50aWFsaWFz
ZWQgbWVhbnMgdGhlc2Ugc2hvdWxkbid0IGp1c3QgYmUgcmViYXNlbGluZWQKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODU5MTQ1YWVjNDQzZGY0ZTQ2ZDE3
NTg5MDZhYWQwZGUzNTJiM2UwNS4uYjJhNjUxM2VhZGFhM2JiMWZlN2EwOWNmOWZhMmU2NjMyYTE1
OTE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlv
bnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE2
ODYsNiArMTY4Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNjcgZmFzdC9mb3Jtcy96b29tZWQtY29u
dHJvbHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgTWlzc2luZyBdCiAKIHdlYmtpdC5vcmcvYi8x
MDI0OTMgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLmh0bWwgWyBGYWlsdXJlIF0KIAorIyBFRkwg
c3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBub3QgdGhlIG1lbnUgb2YgdHJhY2tzLgor
d2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21l
bnUuaHRtbCBbIFNraXAgXQorCiAjIEZhaWxzIHVudGlsIHdlIGVuYWJsZSB0aGUgUmVzb3VyY2Ug
VGltaW5nIEFQSS4KIHdlYmtpdC5vcmcvYi82MTEzOCBodHRwL3Rlc3RzL3czYy93ZWJwZXJmL3N1
Ym1pc3Npb24vcmVzb3VyY2UtdGltaW5nIFsgU2tpcCBdCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Z3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYThmOWViNmNmZjhlNzI2MTQwZmRmMDU1NjQ0NzE2
NDZlMmRlYWJmOC4uNmI5Mzg2ODEyOTBhMDQzOWMxYmI0ZmMxODRjNGVjYjU2MmUyMGI1ZiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTEzOTEsNiArMTM5
MSw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNDkgZmFzdC9kb20vc2hhZG93L3BzZXVkb2NsYXNzLXVw
ZGF0ZS1lbmFibGVkLWFyZWEuaHRtbCBbIEltYWdlCiAKIHdlYmtpdC5vcmcvYi8xMDI1ODYgbWVk
aWEvdmlkZW8tc3JjLWJsb2IuaHRtbCBbIEZhaWx1cmUgXQogCisjIEdUSyBzdGlsbCBoYXMgdGhl
IENDIHRvZ2dsZSBidXR0b24sIG5vdCB0aGUgbWVudSBvZiB0cmFja3MuCit3ZWJraXQub3JnL2Iv
MTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tp
cCBdCisKICMgRml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTcxOTIgaW50cm9kdWNlcyB0aGVzZSByZWdyZXNzaW9ucwogd2Via2l0Lm9yZy9iLzEwMjc3NiBt
ZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1yZXBhaW50Lmh0bWwgWyBGYWlsdXJlIF0KIHdlYmtp
dC5vcmcvYi8xMDI3NzYgbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5lci1yZW5kZXJpbmct
cG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4
cGVjdGF0aW9ucwppbmRleCA2MDljYWM2MDFkZTZhODY1YzAxOTViNjY0MTVlNDZmOWRmMjNiZWU1
Li5hM2ZlY2IwY2Q1YjQyMmMwYzdlY2QxNjJiYzlmMTAxYjkzMjNhMjU4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE4OCw2ICsxMTg4LDkgQEAgd2Vi
a2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1ody5odG1sIFsg
RmFpbCBdCiB3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNl
LW9yZGVyaW5nLWh3Lmh0bWwgWyBGYWlsIF0KIHdlYmtpdC5vcmcvYi8xMDAxNDIgY3NzMy9maWx0
ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQogCisjIE1hYyBkb2Vzbid0IGhhdmUg
YSB0b2dnbGUgZm9yIENDIGFueSBtb3JlLCBpdCdzIGJhc2VkIG9uIGEgbWVudSBvZiBjaG9pY2Vz
Lgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy5odG1s
IFsgU2tpcCBdCisKICMgT3ZlcmZsb3dpbmcgTGF5b3V0VW5pdHMgY2F1c2UgUmVuZGVyR2VvbWV0
cnlNYXAgYXNzZXJ0aW9ucwogd2Via2l0Lm9yZy9iLzY3NDM0IFsgRGVidWcgXSBmYXN0L292ZXJm
bG93L292ZXJmbG93LWhlaWdodC1mbG9hdC1ub3QtcmVtb3ZlZC1jcmFzaC5odG1sIFsgU2tpcCBd
CiB3ZWJraXQub3JnL2IvNjc0MzQgWyBEZWJ1ZyBdIGZhc3Qvb3ZlcmZsb3cvb3ZlcmZsb3ctaGVp
Z2h0LWZsb2F0LW5vdC1yZW1vdmVkLWNyYXNoMi5odG1sIFsgU2tpcCBdCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5NzA4NzUzNGYxNTg5NWVmZDM3MzJhNzJi
MzkzNTRhZTI4OTBhYjdjLi5mZWVlMzgxMDkyNDExZjI4NTJlYWYwOWQzYmRjOGI1NTUxOGRmZTg4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zCisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTIzNjYsNiAr
MjM2Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDE1MzkgZWRpdGluZy9leGVjQ29tbWFuZC9zd2l0Y2gt
bGlzdC10eXBlLXdpdGgtb3JwaGFuZWQtbGkuaHRtbCBbCiB3ZWJraXQub3JnL2IvMTAwODQ2IGlu
c3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29ya2VyLmh0bWwgWyBT
a2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXRl
cm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNlZC5odG1sIFsgU2tpcCBdCiAKKyMg
UVQgc3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBub3QgdGhlIG1lbnUgb2YgdHJhY2tz
Lgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFj
a21lbnUuaHRtbCBbIFNraXAgXQorCiAjIE5ldywgYnV0IGZhaWxpbmcgdGVzdAogd2Via2l0Lm9y
Zy9iLzEwMTAzNSBmYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWltYWdlLWRvY3VtZW50Lmh0
bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlv
bnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCAxNDU4
MmMyOTFkMGRkMTRkODUyNjgwYjU3Y2EyNWQwYTk2ODYxMmU5Li5jMGE0YjA2MWIxYWFmYWYxZTlh
OGEzNjgxYmI3YzE5ODU1YzU0N2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwpAQCAtMjM1MCw2ICsyMzUwLDkgQEAgd2Via2l0Lm9yZy9iLzk4NjY2IGZhc3Qv
cmVwYWludC9zbGlkZXItdGh1bWItZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9i
Lzk4NjY2IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGljYWwuaHRtbCBbIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4NjY2IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJp
bmctaG9yaXpvbnRhbC5odG1sIFsgRmFpbHVyZSBdCiAKKyMgV2luIGRvZXNuJ3Qgc3VwcG9ydCB0
cmFjayBtZW51Cit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRp
b25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCisKICNodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTgwNzkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jvc3Mtb3JpZ2luLWxv
Y2FsLXN0b3JhZ2Utd2sxLmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176177</attachid>
            <date>2012-11-26 22:36:54 -0800</date>
            <delta_ts>2012-11-26 22:52:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-101670-20121127173431.patch</filename>
            <type>text/plain</type>
            <size>33095</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2NDM4NTU4ODllZDNi
NzI3MjlkZjJhNDJhNGZkMGEwMWVhOWNhOC4uZWQ2N2E2ZDc3Y2NjMmUyNGI4ZTAyYTQ3MTBiMjU3
ZDE1MmZlYTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRyYWNrIGxpc3QgY29u
dHJvbCBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhvb2sgdXAgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYXB0aW9ucyBtZW51IHNvIHRo
YXQgaXQgZW5hYmxlcyBvcgorICAgICAgICBkaXNhYmxlcyB0cmFja3MgaW4gdGhlIGFzc29jaWF0
ZWQgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogTmV3IG1ldGhvZCB0byB0b2dnbGUgdGhlIHN0
YXRlIG9mIGEgdHJhY2ssIGJ5IGluZGV4LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhY2tMaXN0SW5kZXhGb3JFbGVtZW50KTogSGVscGVyIGZ1bmN0aW9u
IHRvIHRha2UgYSB0cmFjayBsaXN0IDxsaT4gZWxlbWVudCBhbmQgcmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgY3VzdG9tIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOiBUb2dn
bGUgdGhlIHN0YXRlIG9mIHRoZSBidXR0b24gYmFzZWQgb24gY2FwdGlvbnMgdmlzaWJpbGl0eS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IE9uIE1hYyBwbGF0Zm9ybXMgc2hvdyB0aGUg
Y2FwdGlvbnMgbWVudS4gT24gb3RoZXIgcGxhdGZvcm1zLCB0b2dnbGUgY2FwdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6
Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IE5vdyBoYXMgYSBy
ZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYSB0cmFjayBsaXN0IGl0ZW0sIGxv
b2sKKyAgICAgICAgZm9yIHRoZSBjdXN0b20gYXR0cmlidXRlIHRoYXQgaWRlbnRpZmllcyB0aGUg
YXNzb2NpYXRlZCB0cmFjaywgYW5kIHRoZW4gdG9nZ2xlIHRoYXQgdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0
ZURpc3BsYXkpOiBTZXQgYSBjbGFzcyBvbiB0aGUgdHJhY2sgbGlzdCBlbGVtZW50cyBzbyB0aGV5
IGNhbiBiZQorICAgICAgICBzdHlsZWQgYnkgdGhlIGluamVjdGVkIENTUyAod2l0aCB0aWNrIG1h
cmtzIHRvIHJlcHJlc2VudCB2aXNpYmlsaXR5KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVzZXRUcmFja0xpc3RNZW51KTog
V2hlbiBidWlsZGluZyB0aGUgbGlzdCBvZiB0cmFjayBtZW51IGl0ZW1zLCBhZGQKKyAgICAgICAg
YSBjdXN0b20gSFRNTCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQgc28gdGhhdCB0aGUgY29ycmVz
cG9uZGluZyB0cmFjayBjYW4gYmUgZm91bmQgaW4gdGhlIGV2ZW50IGhhbmRsZXIuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IEFkZCBhIGxpc3Qgb2YgZWxlbWVu
dHMgcmVwcmVzZW50aW5nIHRoZSB0cmFjayBsaXN0LgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBs
ZTo6Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSk6IE1ha2Ugc3VyZSB0byB1cGRhdGUg
dGhlIHRyYWNrIG1lbnUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5oOgorICAgICAgICAoTWVkaWFDb250cm9sc0FwcGxlKToKKwogMjAxMi0xMS0y
NiAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJl
bW92ZSByZWR1bmRhbnQgYXNzaWdubWVudCBpbiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZVNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDAyN2RkMjFkOTFiNzEzMTdlMjYxM2U4MWMwM2U4MWU4YzkzZTVhMDYuLjM5ZGRmM2U5
YWM0NjliNDhlNWYzOTk0ODZjOGFlNTZiYjVlMzViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBib29sU3RyaW5nKGJvb2wgdmFsKQogc3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNlQmxv
YlByb3RvY29sID0gImJsb2IiOwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFj
a3NPZmYgPSAtMTsKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTI5OTYsNiArMjk5OCwyMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKSBjb25zdAogICAg
IH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVUcmFja0F0SW5kZXgoaW50IGlu
ZGV4LCBib29sIGV4Y2x1c2l2ZSkKK3sKKyAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSB0
ZXh0VHJhY2tzKCk7CisgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlzdC0+bGVuZ3RoKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0cmFja0xp
c3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNrKiB0cmFj
ayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKKyAgICAgICAgdHJhY2stPnNldFNob3dpbmdCeURlZmF1
bHQoZmFsc2UpOworICAgICAgICBpZiAoaSA9PSBpbmRleCkKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7CisgICAgICAgIGVsc2UgaWYgKGV4
Y2x1c2l2ZSB8fCBpbmRleCA9PSBjVGV4dFRyYWNrc09mZikKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgIH0KK30KKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKIHsKICAgICBUcmFja0dyb3Vw
IGNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrcyhUcmFja0dyb3VwOjpDYXB0aW9uc0FuZFN1YnRpdGxl
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGM1MzEyOWQ2MjM0
MWI2MmI1NDlkOTZkYmNmYjBmODMwN2JmZWZlOWQuLmI0YTY4ZTQ2NmZjNjIwZGViYmMwZTQ0NGNk
YTFiY2JmYTJmZjNjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0yNDUsNiArMjQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygp
OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tHcm91cCYpIGNv
bnN0OwogCisgICAgdm9pZCB0b2dnbGVUcmFja0F0SW5kZXgoaW50IGluZGV4LCBib29sIGV4Y2x1
c2l2ZSA9IHRydWUpOworCiAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAg
ICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZykgY29uc3Q7CiAg
ICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCAyMTI4YmMyMzIw
Zjk3ZmE1MzkxNWY3YzZkN2NhMTljNDU5YWE3MjQ1Li5iNjhhNzJlZTIxODE2NzgwM2E2YjA1M2E1
NDY2NWQzOGFhNmU4NThiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtNjMsNiArNjQsNyBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIlRleHRUcmFjay5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNlbmRpZgogCkBAIC03Nyw2ICs3OSwxMiBAQCBz
dGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBj
U2NhblJlcGVhdERlbGF5ID0gMS41ZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1S
YXRlID0gODsKIAorc3RhdGljIGNvbnN0IGNoYXIqIHRyYWNrSW5kZXhBdHRyID0gIngtd2Via2l0
LXRyYWNrLWluZGV4IjsKK3N0YXRpYyBjb25zdCBjaGFyKiBjVGV4dFRyYWNrc09mZkF0dHJWYWx1
ZSA9ICItMSI7IC8vIFRoaXMgbXVzdCBtYXRjaCBjVGV4dFRyYWNrc09mZiBpbiBIVE1MTWVkaWFF
bGVtZW50Lgorc3RhdGljIGNvbnN0IGludCBjVGV4dFRyYWNrc0luZGV4T2ZmID0gLTE7IC8vIFRo
aXMgbXVzdCBtYXRjaCBjVGV4dFRyYWNrc09mZiBpbiBIVE1MTWVkaWFFbGVtZW50Lgorc3RhdGlj
IGNvbnN0IGludCBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQgPSAtMjsKK3N0YXRpYyBjb25zdCBj
aGFyKiBjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlID0gInNlbGVjdGVkIjsKKwogSFRNTE1l
ZGlhRWxlbWVudCogdG9QYXJlbnRNZWRpYUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAo
IW5vZGUpCkBAIC05OSw2ICsxMDcsMTggQEAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFD
b250cm9sRWxlbWVudFR5cGUoTm9kZSogbm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVk
aWFDb250cm9sRWxlbWVudCo+KGVsZW1lbnQpLT5kaXNwbGF5VHlwZSgpOwogfQogCitzdGF0aWMg
aW50IHRyYWNrTGlzdEluZGV4Rm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQoreworICAgIGNv
bnN0IEF0b21pY1N0cmluZyB0cmFja0luZGV4QXR0cmlidXRlVmFsdWUgPSBlbGVtZW50LT5nZXRB
dHRyaWJ1dGUodHJhY2tJbmRleEF0dHIpOworICAgIGlmICh0cmFja0luZGV4QXR0cmlidXRlVmFs
dWUuaXNOdWxsKCkgfHwgdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlLmlzRW1wdHkoKSkKKyAgICAg
ICAgcmV0dXJuIGNUZXh0VHJhY2tzSW5kZXhOb3RGb3VuZDsKKyAgICBib29sIG9rOworICAgIGlu
dCB0cmFja0luZGV4ID0gdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlLnRvSW50KCZvayk7CisgICAg
aWYgKCFvaykKKyAgICAgICAgcmV0dXJuIGNUZXh0VHJhY2tzSW5kZXhOb3RGb3VuZDsKKyAgICBy
ZXR1cm4gdHJhY2tJbmRleDsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KERvY3VtZW50KiBkb2N1
bWVudCkKQEAgLTkwMiwxNyArOTIyLDIyIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sVG9nZ2xl
Q2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xUb2dnbGVDbG9zCiB2b2lk
IE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlz
cGxheVR5cGUoKQogewogICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxlcigpLT5jbG9z
ZWRDYXB0aW9uc1Zpc2libGUoKSA/IE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0dG9uIDogTWVk
aWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOworICAgIHNldENoZWNrZWQobWVkaWFDb250cm9s
bGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKIH0KIAogdm9pZCBNZWRpYUNvbnRyb2xU
b2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhhbmRsZXIoRXZl
bnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdyBpbmNvcnJlY3RseSBkb2lu
ZyB0d28gdGhpbmdzIGF0IG9uY2U6IHNob3dpbmcgdGhlIGxpc3Qgb2YgY2FwdGlvbnMgYW5kIHRv
Z2dsaW5nIGRpc3BsYXkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDE2NzAKKyAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdyZWF0IHRoYXQg
dGhlIHNoYXJlZCBjb2RlIGlzIGRpY3RhdGluZyBiZWhhdmlvciBvZiBwbGF0Zm9ybS1zcGVjaWZp
YworICAgICAgICAvLyBVSS4gTm90IGFsbCBwb3J0cyBtYXkgd2FudCB0aGUgY2xvc2VkIGNhcHRp
b25zIGJ1dHRvbiB0byB0b2dnbGUgYSBsaXN0IG9mIHRyYWNrcywgc28KKyAgICAgICAgLy8gd2Ug
aGF2ZSB0byB1c2UgI2lmLgorI2lmICFQTEFURk9STShNQUMpCiAgICAgICAgIG1lZGlhQ29udHJv
bGxlcigpLT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoIW1lZGlhQ29udHJvbGxlcigpLT5jbG9z
ZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHNldENoZWNrZWQobWVkaWFDb250cm9sbGVy
KCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKLSAgICAgICAgbV9jb250cm9scy0+dG9nZ2xl
Q2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwogICAgICAgICB1cGRhdGVEaXNwbGF5VHlwZSgpOwor
I2Vsc2UKKyAgICAgICAgbV9jb250cm9scy0+dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgp
OworI2VuZGlmCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwogICAgIH0KIApA
QCAtOTI3LDIyICs5NTIsNTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xUb2dn
bGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0kKIAogLy8gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zVHJhY2tMaXN0RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RF
bGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJvbHMpCiAgICAg
OiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorICAgICwgbV9jb250cm9scyhjb250cm9s
cykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlz
dEVsZW1lbnQ+IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3Jl
YXRlKERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2Fw
dGlvbnNUcmFja0xpc3RFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlz
dEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJvbHMqIGNvbnRy
b2xzKQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVs
ZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50KGRvY3VtZW50KSk7CisgICAgQVNTRVJUKGNvbnRyb2xzKTsKKyAgICBS
ZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBlbGVtZW50
ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICByZXR1cm4gZWxlbWVudC5yZWxlYXNlKCk7CiB9
CiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZh
dWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKLSAgICAvLyBGSVhNRTogSG9vayB0aGlz
IHVwIHRvIGFjdHVhbCB0ZXh0IHRyYWNrcy4KLSAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjcwCi0gICAgVU5VU0VEX1BBUkFNKGV2ZW50KTsKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZlbnROYW1lcygp
LmNsaWNrRXZlbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBrZXkgZm9yIGV4
Y2x1c2l2aXR5IG92ZXJyaWRlLgorICAgICAgICAvLyBodHRwOi8vd2Via2l0Lm9yZy9iLzEwMzM2
MQorCisgICAgICAgIE5vZGUqIHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCk7Cisg
ICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzRWxlbWVudE5vZGUoKSkKKyAgICAgICAg
ICAgIHJldHVybjsKKworICAgICAgICAvLyBXaGVuIHdlIGNyZWF0ZWQgdGhlIGVsZW1lbnRzIGlu
IHRoZSB0cmFjayBsaXN0LCB3ZSBnYXZlIHRoZW0gYSBjdXN0b20KKyAgICAgICAgLy8gYXR0cmli
dXRlIHJlcHJlc2VudGluZyB0aGUgaW5kZXggaW4gdGhlIEhUTUxNZWRpYUVsZW1lbnQncyBsaXN0
IG9mIHRyYWNrcy4KKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IHRhcmdldCBoYXMgc3Vj
aCBhIGN1c3RvbSBlbGVtZW50IGFuZCwgaWYgc28sCisgICAgICAgIC8vIHRlbGwgdGhlIEhUTUxN
ZWRpYUVsZW1lbnQgdG8gZW5hYmxlIHRoYXQgdHJhY2suCisKKyAgICAgICAgaW50IHRyYWNrSW5k
ZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodG9FbGVtZW50KHRhcmdldCkpOworICAgICAg
ICBpZiAodHJhY2tJbmRleCAhPSBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQpIHsKKyAgICAgICAg
ICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50
KHRoaXMpOworICAgICAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnRvZ2dsZVRyYWNrQXRJbmRleCh0
cmFja0luZGV4KTsKKworICAgICAgICAgICAgLy8gV2UndmUgc2VsZWN0ZWQgYSB0cmFjayB0byBk
aXNwbGF5LCBzbyB3ZSBjYW4gbm93IGNsb3NlIHRoZSBtZW51LgorICAgICAgICAgICAgbV9jb250
cm9scy0+dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOworICAgICAgICAgICAgdXBkYXRl
RGlzcGxheSgpOworICAgICAgICB9CisgICAgfQorCisgICAgTWVkaWFDb250cm9sRWxlbWVudDo6
ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisjZW5kaWYKIH0KIAogY29uc3QgQXRvbWljU3Ry
aW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnNoYWRvd1Bz
ZXVkb0lkKCkgY29uc3QKQEAgLTk1NCw4ICsxMDA4LDQ3IEBAIGNvbnN0IEF0b21pY1N0cmluZyYg
TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpzaGFkb3dQc2V1ZG9J
ZCgpCiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBk
YXRlRGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlmICghbWVkaWFD
b250cm9sbGVyKCktPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgIHJldHVybjsKKworICAg
IEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFFbGVtZW50KHRo
aXMpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisKKyAgICBUZXh0
VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtZWRpYUVsZW1lbnQtPnRleHRUcmFja3MoKTsKKworICAg
IGlmICghdHJhY2tMaXN0IHx8ICF0cmFja0xpc3QtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBtZW51SXRlbXMuc2l6ZSgpOyBp
IDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHRyYWNrSXRlbSA9IG1l
bnVJdGVtc1tpXTsKKyAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVs
ZW1lbnQodHJhY2tJdGVtLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXggIT0gY1RleHRU
cmFja3NJbmRleE5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAodHJhY2tJbmRleCA9PSBjVGV4
dFRyYWNrc0luZGV4T2ZmKSB7CisgICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxlbWVudC0+Y2xv
c2VkQ2FwdGlvbnNWaXNpYmxlKCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xh
c3NMaXN0KCktPnJlbW92ZShjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRy
YWNrSXRlbS0+Y2xhc3NMaXN0KCktPmFkZChjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAg
ICAgVGV4dFRyYWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbSh0cmFja0luZGV4KTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXRyYWNrKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICAgICAgICAgICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNob3dpbmdLZXl3
b3JkKCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPmFkZChj
VGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0
KCktPnJlbW92ZShjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBU
SU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorfQorCit2b2lk
IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVzZXRUcmFja0xp
c3RNZW51KCkKK3sKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gUmVtb3ZlIGFueSBl
eGlzdGluZyBjb250ZW50LgogICAgIHJlbW92ZUNoaWxkcmVuKCk7CisgICAgbWVudUl0ZW1zLmNs
ZWFyKCk7CiAKICAgICBpZiAoIW1lZGlhQ29udHJvbGxlcigpLT5oYXNDbG9zZWRDYXB0aW9ucygp
KQogICAgICAgICByZXR1cm47CkBAIC05ODcsMTUgKzEwODAsMTUgQEAgdm9pZCBNZWRpYUNvbnRy
b2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQogCiAgICAg
dHJhY2tJdGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKICAgICB0cmFja0l0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5vZGUoIk9mZiIp
KTsKLSAgICAvLyBGSVhNRTogVGhlc2UgbGlzdHMgYXJlIG5vdCB5ZXQgbGl2ZS4gTWFyayB0aGUg
T2ZmIGVudHJ5IGFzIHRoZSBzZWxlY3RlZCBvbmUgZm9yIG5vdy4KLSAgICB0cmFja0l0ZW0tPnNl
dEF0dHJpYnV0ZShjbGFzc0F0dHIsICJzZWxlY3RlZCIpOworICAgIHRyYWNrSXRlbS0+c2V0QXR0
cmlidXRlKHRyYWNrSW5kZXhBdHRyLCBjVGV4dFRyYWNrc09mZkF0dHJWYWx1ZSwgQVNTRVJUX05P
X0VYQ0VQVElPTik7CiAgICAgY2FwdGlvbnNMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0ZW0pOwor
ICAgIG1lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVtKTsKIAogICAgIHRyYWNrSXRlbSA9IGRvYy0+
Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgdHJhY2tJdGVt
LT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJPZmYiKSk7Ci0gICAgLy8gRklYTUU6
IFRoZXNlIGxpc3RzIGFyZSBub3QgeWV0IGxpdmUuIE1hcmsgdGhlIE9mZiBlbnRyeSBhcyB0aGUg
c2VsZWN0ZWQgb25lIGZvciBub3cuCi0gICAgdHJhY2tJdGVtLT5zZXRBdHRyaWJ1dGUoY2xhc3NB
dHRyLCAic2VsZWN0ZWQiKTsKKyAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4
QXR0ciwgY1RleHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogICAg
IHN1YnRpdGxlc0xpc3QtPmFwcGVuZENoaWxkKHRyYWNrSXRlbSk7CisgICAgbWVudUl0ZW1zLmFw
cGVuZCh0cmFja0l0ZW0pOwogCiAgICAgYm9vbCBoYXNDYXB0aW9ucyA9IGZhbHNlOwogICAgIGJv
b2wgaGFzU3VidGl0bGVzID0gZmFsc2U7CkBAIC0xMDAzLDYgKzEwOTYsMTMgQEAgdm9pZCBNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXkoKQog
ICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVuZ3RoKCk7IGkg
PCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJhY2tMaXN0LT5p
dGVtKGkpOwogICAgICAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQobGlUYWcsIEFT
U0VSVF9OT19FWENFUFRJT04pOworCisgICAgICAgIC8vIEFkZCBhIGN1c3RvbSBhdHRyaWJ1dGUg
dG8gdGhlIDxsaT4gZWxlbWVudCB3aGljaCB3aWxsIGFsbG93CisgICAgICAgIC8vIHVzIHRvIGVh
c2lseSBhc3NvY2lhdGUgdGhlIHVzZXIgdGFwcGluZyBoZXJlIHdpdGggdGhlCisgICAgICAgIC8v
IHRyYWNrLiBTaW5jZSB0aGlzIGxpc3QgaXMgcmVidWlsdCBpZiB0aGUgdHJhY2tzIGNoYW5nZSwg
d2UKKyAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBpbiBzeW5jLgorICAgICAgICB0cmFja0l0
ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0ciwgU3RyaW5nOjpudW1iZXIoaSksIEFTU0VS
VF9OT19FWENFUFRJT04pOworCiAgICAgICAgIEF0b21pY1N0cmluZyBsYWJlbFRleHQgPSB0cmFj
ay0+bGFiZWwoKTsKICAgICAgICAgaWYgKGxhYmVsVGV4dC5pc051bGwoKSB8fCBsYWJlbFRleHQu
aXNFbXB0eSgpKQogICAgICAgICAgICAgbGFiZWxUZXh0ID0gZGlzcGxheU5hbWVGb3JMYW5ndWFn
ZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CkBAIC0xMDE4LDYgKzExMTgsNyBAQCB2b2lkIE1l
ZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRlRGlzcGxheSgp
CiAgICAgICAgICAgICBzdWJ0aXRsZXNMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0ZW0pOwogICAg
ICAgICB9CiAgICAgICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVhdGVUZXh0Tm9k
ZShsYWJlbFRleHQpKTsKKyAgICAgICAgbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwogICAg
IH0KIAogICAgIGNhcHRpb25zU2VjdGlvbi0+YXBwZW5kQ2hpbGQoY2FwdGlvbnNMaXN0KTsKQEAg
LTEwMjcsNiArMTEyOCw4IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xp
c3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAgICAgYXBwZW5kQ2hpbGQoY2FwdGlvbnNT
ZWN0aW9uKTsKICAgICBpZiAoaGFzU3VidGl0bGVzKQogICAgICAgICBhcHBlbmRDaGlsZChzdWJ0
aXRsZXNTZWN0aW9uKTsKKworICAgIHVwZGF0ZURpc3BsYXkoKTsKICNlbmRpZgogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5o
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaAppbmRl
eCBjM2ZiYzgxMjE5MmQzNDFmNjJiOTRlMjM4ZWJlMTRlZDJlZTk2NzVmLi5kM2E0NzNjMTI2NDc2
MjIyNjYzZmYxNjZlZmQ1Y2Q2MTk0YjAxODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTQxNSwxOCArNDE1LDIzIEBAIHBy
aXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVu
dCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNyZWF0
ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJvbENsb3NlZENh
cHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFDb250cm9scyop
OwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQqKTsKICAgICB2
aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVSUklERSB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKKyAgICB2b2lkIHJlc2V0
VHJhY2tMaXN0TWVudSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbENsb3NlZENhcHRp
b25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCopOworICAgIE1lZGlhQ29udHJvbENsb3NlZENh
cHRpb25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMqKTsKIAogICAg
IHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBjb25zdCB7IHJl
dHVybiBNZWRpYUNsb3NlZENhcHRpb25zVHJhY2tMaXN0OyB9CiAgICAgdmlydHVhbCBjb25zdCBB
dG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisKKyAgICB0eXBlZGVmIFZlY3Rv
cjxSZWZQdHI8RWxlbWVudD4gPiBUcmFja01lbnVJdGVtczsKKyAgICBUcmFja01lbnVJdGVtcyBt
ZW51SXRlbXM7CisgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKIH07CiAKIC8vIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDZjYzFjN2Y3ZGNlZjgyN2UxNDJmNDQzNDAy
NmZiYWQyNGY2MWRhMDYuLjkzNzMzYWViOGE4NmUyNmE3YjU0NTJmNWQ1M2UxODM5YWJhODlmY2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBs
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxl
LmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sc0FwcGxlPiBN
ZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1CiAgICAgaWYg
KGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlvbmluZygpKSB7
CiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRhaW5lckVsZW1l
bnQ+IGNsb3NlZENhcHRpb25zQ29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnND
b250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgICAgIFJlZlB0cjxNZWRp
YUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENhcHRpb25zVHJh
Y2tMaXN0ID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVh
dGUoZG9jdW1lbnQpOworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBjb250cm9scy5n
ZXQoKSk7CiAgICAgICAgIGNvbnRyb2xzLT5tX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0ID0gY2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3QuZ2V0KCk7CiAgICAgICAgIGNsb3NlZENhcHRpb25zQ29udGFp
bmVyLT5hcHBlbmRDaGlsZChjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC5yZWxlYXNlKCksIGVjLCB0
cnVlKTsKICAgICAgICAgaWYgKGVjKQpAQCAtMjg5LDYgKzI4OSwxMyBAQCB2b2lkIE1lZGlhQ29u
dHJvbHNBcHBsZTo6bWFrZVRyYW5zcGFyZW50KCkKICAgICAgICAgbV9jbG9zZWRDYXB0aW9uc0Nv
bnRhaW5lci0+aGlkZSgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6Y2hhbmdlZENs
b3NlZENhcHRpb25zVmlzaWJpbGl0eSgpCit7CisgICAgTWVkaWFDb250cm9sczo6Y2hhbmdlZENs
b3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOworICAgIGlmIChtX2Nsb3NlZENhcHRpb25zVHJhY2tM
aXN0KQorICAgICAgICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT51cGRhdGVEaXNwbGF5KCk7
Cit9CisKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiB7CiAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKQEAgLTMyMyw3ICszMzAsNyBAQCB2b2lkIE1lZGlhQ29u
dHJvbHNBcHBsZTo6cmVzZXQoKQogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xsZXItPmhhc0Ns
b3NlZENhcHRpb25zKCkpIHsKICAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0
b24tPnNob3coKTsKICAgICAgICAgICAgIGlmIChtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0KQot
ICAgICAgICAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnVwZGF0ZURpc3BsYXko
KTsKKyAgICAgICAgICAgICAgICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT5yZXNldFRyYWNr
TGlzdE1lbnUoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3RvZ2dsZUNsb3NlZENh
cHRpb25zQnV0dG9uLT5oaWRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCBkYzQ3MzA2ZWM5YzQyOWU3NDVjNTQxOWU5
ODdhYTE2OWM2Y2IxYWJiLi5hMWVlODk2M2NlZmFjMGNkNjEzYmQ5MmYyYTZjNmNmZDlmMzBiODA0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBw
bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUu
aApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUN1cnJl
bnRUaW1lRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVTdGF0dXNE
aXNwbGF5KCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZENsb3NlZENhcHRp
b25zVmlzaWJpbGl0eSgpIE9WRVJSSURFOwogICAgIHZvaWQgdG9nZ2xlQ2xvc2VkQ2FwdGlvblRy
YWNrTGlzdCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFmYWQzODAyNmExNDlmYjVjZjk4MTliNGVl
ZjcyYTA1YzQ4ZmUzNTIuLjJkMzI0MDAwODM5MmMyYjc4ZTk0ZmVkNzBiZWMyMWRjZWVjMDc1OTAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0yNiAgRGVhbiBKYWNrc29uICA8ZGlub0Bh
cHBsZS5jb20+CisKKyAgICAgICAgTWFrZSB0cmFjayBsaXN0IGNvbnRyb2wgYWN0aXZlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcgdGVzdCB0aGF0
IGV4ZXJjaXNlcyB0aGUgdHJhY2sgbGlzdCBtZW51LCBhbmQgaG93IGl0IGNhbiBiZSB1c2VkCisg
ICAgICAgIHRvIGVuYWJsZSBzcGVjaWZpYyB0cmFja3MuIFNpbmNlIHRoaXMgaXMgb25seSBlbmFi
bGVkIGZvciBNYWMsIGl0IGlzCisgICAgICAgIHNraXBwZWQgb24gYWxsIG90aGVyIHBsYXRmb3Jt
cy4KKworICAgICAgICBNZWFud2hpbGUsIHRoZSBleGlzdGluZyB0ZXN0IGZvciBhIG9uL29mZiBj
YXB0aW9ucyBidXR0b24gbm93CisgICAgICAgIGRvZXMgbm90IHdvcmsgb24gTWFjLCBzbyBza2lw
IGl0IHRoZXJlLiBJIGNvcGllZCB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICBpbnRvIHRoZSBu
ZXcgdGVzdCBzbyB3ZSBzdGlsbCBoYXZlIGNvdmVyYWdlLgorCisgICAgICAgICogbWVkaWEvdmlk
ZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAg
ICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAg
ICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vZ3Rr
L1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlv
bnM6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgKiBw
bGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMS0yNiAgVGhpYWdvIE1hcmNv
cyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAgICBJbXBvcnQg
bW9yZSBDU1MgRGV2aWNlIEFkYXB0YXRpb24gbGF5b3V0IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTI4NDVjOTY0ZjgwMWI2N2NmOGFiMTY1MjUzNjU3
NzI2OGM1OWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29u
dHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMxIEBACitU
ZXN0IHRoYXQgd2UgYXJlIGFibGUgdG8gdHJpZ2dlciB0aGUgbGlzdCBvZiBjYXB0aW9ucywgYW5k
IHNlbGVjdCBmcm9tIHRoZSBsaXN0LgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkKKyoqKiBTZXQg
dGhlIHVzZXIgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4KK1JVTihpbnRlcm5hbHMuc2V0VXNlclByZWZl
cnJlZExhbmd1YWdlcyhbJ2VuJ10pKQorKioqIENsaWNrIHRoZSBDQyBidXR0b24uCisqKiogVHVy
bmluZyBjYXB0aW9ucyBvbgorRm91bmQgdHJhY2tsaXN0IG1lbnUgYW5kIGxpc3Qgb2YgdHJhY2tz
IE9LCitGb3VuZCBmb3VyIGF2YWlsYWJsZSB0cmFja3MgaW4gbWVudSBPSworRVhQRUNURUQgKHRy
YWNrcy5sZW5ndGggPT0gJzMnKSBPSworVHJhY2sgMCBzaG91bGQgYmUgZGlzYWJsZWQKK0VYUEVD
VEVEICh0cmFjay5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAxIHNob3VsZCBiZSBzaG93
aW5nCitFWFBFQ1RFRCAodHJhY2subW9kZSA9PSAnc2hvd2luZycpIE9LCitUcmFjayAyIHNob3Vs
ZCBiZSBkaXNhYmxlZAorRVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK0VY
UEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXknKS5pbm5lclRl
eHQgPT0gJ0xvcmVtJykgT0sKKyoqKiBDbGljayB0aGUgQ0MgYnV0dG9uLgorKioqIFR1cm5pbmcg
Y2FwdGlvbnMgb24KK0ZvdW5kIHRyYWNrbGlzdCBtZW51IGFuZCBsaXN0IG9mIHRyYWNrcyBPSwor
Rm91bmQgZm91ciBhdmFpbGFibGUgdHJhY2tzIGluIG1lbnUgT0sKK0VYUEVDVEVEICh0cmFja3Mu
bGVuZ3RoID09ICczJykgT0sKK1RyYWNrIDAgc2hvdWxkIGJlIGRpc2FibGVkCitFWFBFQ1RFRCAo
dHJhY2subW9kZSA9PSAnZGlzYWJsZWQnKSBPSworVHJhY2sgMSBzaG91bGQgYmUgZGlzYWJsZWQK
K0VYUEVDVEVEICh0cmFjay5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAyIHNob3VsZCBi
ZSBkaXNhYmxlZAorRVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykgT0sKK05vIHRl
eHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0LXRyYWNrLWRp
c3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCitFTkQgT0YgVEVTVAorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBi
L0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjJjOTQwNjIyNmIxM2Y5NzJmYjUzYWE5YWE2YWJjZmQ3NWY3YTA0YmUKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9u
cy10cmFja21lbnUuaHRtbApAQCAtMCwwICsxLDE0NSBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRt
bD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBmcm9tIGEgbGlzdCBvZiB0
cmFja3M8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtY29udHJvbHMuanMiPjwv
c2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9zY3JpcHQ+Cisg
ICAgICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAgICAgICAgPHNj
cmlwdD4KKyAgICAgICAgICAgIHZhciB0cmFja3M7CisgICAgICAgICAgICB2YXIgY2FwdGlvbnNC
dXR0b25Db29yZGluYXRlczsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQor
ICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgICAgICBm
dW5jdGlvbiBjbGlja0NDQnV0dG9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBj
b25zb2xlV3JpdGUoIioqKiBDbGljayB0aGUgQ0MgYnV0dG9uLiIpOworICAgICAgICAgICAgICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMF0sIGNh
cHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMV0pOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVy
Lm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlVXAoKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkKKyAgICAgICAg
ICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgICAg
ICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiKioqIFNldCB0aGUgdXNlciBsYW5ndWFnZSBwcmVm
ZXJlbmNlLiIpOworICAgICAgICAgICAgICAgICAgICBydW4oImludGVybmFscy5zZXRVc2VyUHJl
ZmVycmVkTGFuZ3VhZ2VzKFsnZW4nXSkiKTsKKworICAgICAgICAgICAgICAgICAgICB0cnkgewor
ICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbnNCdXR0b25Db29yZGluYXRlcyA9IG1lZGlh
Q29udHJvbHNCdXR0b25Db29yZGluYXRlcyh2aWRlbywgInRvZ2dsZS1jbG9zZWQtY2FwdGlvbnMt
YnV0dG9uIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlvbikgeworICAg
ICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoZXhjZXB0aW9uLmRlc2NyaXB0aW9uKTsKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgICAgICBjbGlja0NDQnV0dG9uKCk7CisgICAgICAgICAgICAgICAgICAgIHdp
bmRvdy5zZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09uLCAxMDApOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2FwdGlvbk1lbnVJ
dGVtKGluZGV4LCBuZXh0U3RlcCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YXIg
dHJhY2tMaXN0RWxlbWVudDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
ICAgICB0cmFja0xpc3RFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1lbnQoaW50ZXJuYWxzLnNo
YWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICItd2Via2l0LW1lZGlhLWNvbnRyb2xzLWNsb3Nl
ZC1jYXB0aW9ucy10cmFjay1saXN0Iik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoZXhjZXB0
aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KGV4Y2VwdGlvbi5kZXNjcmlwdGlv
bik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgLy8gVHJhY2sgbGlzdCBzaG91bGQgaGF2ZSBhIDx1bD4gd2l0aCBmb3VyIDxs
aT4gY2hpbGRyZW4gKE9uZSBvZiB0aGVtIGlzICJPZmYiKS4KKyAgICAgICAgICAgICAgICB2YXIg
dHJhY2tMaXN0ID0gdHJhY2tMaXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ1bCIpOworICAgICAg
ICAgICAgICAgIGlmICghdHJhY2tMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0
KCJDb3VsZCBub3QgZmluZCBhIGNoaWxkIHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlzdCBtZW51Iik7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgbG9nUmVzdWx0KHRydWUsICJGb3VuZCB0cmFja2xpc3QgbWVudSBhbmQgbGlzdCBv
ZiB0cmFja3MiKTsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0SXRlbXMgPSB0cmFja0xp
c3QucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrTGlz
dEl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBh
IGNoaWxkIGxpIGVsZW1lbnRzIGluIHRyYWNrIGxpc3QgbWVudSIpOworICAgICAgICAgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0cmFj
a0xpc3RJdGVtcy5sZW5ndGggIT0gNCkgeworICAgICAgICAgICAgICAgICAgICBmYWlsVGVzdCgi
RXhwZWN0ZWQgNCB0cmFja3MgaW4gbWVudSBidXQgZm91bmQgIiArIHRyYWNrTGlzdEl0ZW1zLmxl
bmd0aCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgbG9nUmVzdWx0KHRydWUsICJGb3VuZCBmb3VyIGF2YWlsYWJsZSB0cmFj
a3MgaW4gbWVudSIpOworICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSBzZWxlY3RlZCBp
dGVtCisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJhY2tJdGVtID0gdHJhY2tMaXN0SXRl
bXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBzZWxlY3RlZFRy
YWNrSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAgICB2YXIgeCA9
IGJvdW5kaW5nUmVjdC5sZWZ0ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMjsKKyAgICAgICAgICAg
ICAgICB2YXIgeSA9IGJvdW5kaW5nUmVjdC50b3AgKyBib3VuZGluZ1JlY3QuaGVpZ2h0IC8gMjsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICAgICAg
ICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAgICBldmVudFNl
bmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVvdXQobmV4dFN0
ZXAsIDEwMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9uIHR1cm5DYXB0
aW9uc09uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioq
KiBUdXJuaW5nIGNhcHRpb25zIG9uIik7CisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgb24gdGhl
IHRoaXJkIGl0ZW0sIHdoaWNoIGlzIHRoZSBzZWNvbmQgdHJhY2sgKE9mZiBpcyB0aGUgZmlyc3Qg
aXRlbSBpbiB0aGUgbWVudSkKKyAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0o
MiwgdGVzdENhcHRpb25zVmlzaWJsZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1
bmN0aW9uIHRlc3RDYXB0aW9uc1Zpc2libGUoKQorICAgICAgICAgICAgeworICAgICAgICAgICAg
ICAgIHRyYWNrcyA9IHZpZGVvLnRleHRUcmFja3M7CisgICAgICAgICAgICAgICAgdGVzdEV4cGVj
dGVkKCJ0cmFja3MubGVuZ3RoIiwgMyk7CisgICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJU
cmFjayAwIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJh
Y2tzWzBdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJkaXNh
YmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVHJhY2sgMSBzaG91bGQgYmUg
c2hvd2luZyIpOworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzFdOworICAgICAgICAg
ICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJzaG93aW5nIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJUcmFjayAyIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAg
ICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzJdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2subW9kZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5uZXJUZXh0Iiwg
IkxvcmVtIik7CisgICAgICAgICAgICAgICAgY2xpY2tDQ0J1dHRvbigpOworICAgICAgICAgICAg
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09mZiwgMTAwKTsKKyAgICAgICAgICAg
IH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHVybkNhcHRpb25zT2ZmKCkKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqKiBUdXJuaW5nIGNhcHRpb25zIG9u
Iik7CisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgdGhlIE9mZiBidXR0b24KKyAgICAgICAgICAg
ICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMCwgdGVzdENhcHRpb25zRGlzYWJsZWQpOworICAg
ICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Q2FwdGlvbnNEaXNhYmxlZCgp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJhY2tzID0gdmlkZW8udGV4dFRyYWNr
czsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrcy5sZW5ndGgiLCAzKTsKKyAg
ICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRyYWNrIDAgc2hvdWxkIGJlIGRpc2FibGVkIik7
CisgICAgICAgICAgICAgICAgdHJhY2sgPSB0cmFja3NbMF07CisgICAgICAgICAgICAgICAgdGVz
dEV4cGVjdGVkKCJ0cmFjay5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAgICAgICAgY29u
c29sZVdyaXRlKCJUcmFjayAxIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAg
IHRyYWNrID0gdHJhY2tzWzFdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2su
bW9kZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVHJhY2sg
MiBzaG91bGQgYmUgZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICB0cmFjayA9IHRyYWNrc1sy
XTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrLm1vZGUiLCAiZGlzYWJsZWQi
KTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRleHRUcmFja0Rpc3BsYXlFbGVtZW50
KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCIsICJMb3JlbSIpOworICAgICAgICAgICAgICAg
IGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnQo
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1lbnQoKTsKKyAg
ICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgc3RhcnRUZXN0KTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorCisgICAgPGJv
ZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHdlIGFyZSBhYmxlIHRv
IHRyaWdnZXIgdGhlIGxpc3Qgb2YgY2FwdGlvbnMsIGFuZCBzZWxlY3QgZnJvbSB0aGUgbGlzdC48
L3A+CisgICAgICAgIDx2aWRlbyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCIgY29udHJvbHM+Cisg
ICAgICAgICAgICA8c291cmNlIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgdHlwZT0idmlkZW8vbXA0
Ij4KKyAgICAgICAgICAgIDxzb3VyY2Ugc3JjPSJjb250ZW50L3Rlc3Qub2d2IiB0eXBlPSJ2aWRl
by9vZ2ciPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2Nh
cHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgorICAgICAgICAg
ICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0
aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9
ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIg
c3JjbGFuZz0iamEiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwvaHRtbD4KKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9u
cyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ZmRhOTE1N2ZkN2NiMzQ4NzYxMGI1ZTA1MzNiYjBjYWY5MzdlYTJmMS4uNzU4OTc0NDMyYTNjNGQ5
NzM4MjJiOGJhNTIxMmNmMmYzNTZkN2UwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjk4LDYgKzM2OTgsOSBAQCB3ZWJraXQub3Jn
L2IvOTI1NzAgWyBXaW4gRGVidWcgXSBpbnNwZWN0b3IvdGltZWxpbmUvdGltZWxpbmUtc3RhcnQt
dGltZS5odG1sIFsgRgogCiB3ZWJraXQub3JnL2IvOTQyNDIgWyBBbmRyb2lkIERlYnVnIF0gbWVk
aWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVmb3JlLWRpc3BhdGNoLmh0bWwgWyBDcmFzaCBQ
YXNzIFRpbWVvdXQgXQogCisjIENocm9taXVtIHN0aWxsIGhhcyB0aGUgQ0MgdG9nZ2xlIGJ1dHRv
biwgbm90IHRoZSBtZW51IG9mIHRyYWNrcy4KK3dlYmtpdC5vcmcvYi8xMDE2NzAgbWVkaWEvdmlk
ZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwgWyBTa2lwIF0KKwogIyBTdXBwb3Nl
ZGx5IHN0YXJ0ZWQgZmFpbGluZyBiZXR3ZWVuIENSIHIxNDA3NjAgYW5kIENSIHIxNDEyMTYuICBU
aGUgZmFpbHVyZXMKICMgbG9vayBsaWtlIHRoZXkgaW52b2x2ZSBhbnRpYWxpYXNpbmc7IHRoZSBm
YWN0IHRoYXQgdGhlIHRlc3QgY2xlYXJseSBleHBlY3RzCiAjIHRoZXNlIHBpeGVscyBub3QgdG8g
YmUgYW50aWFsaWFzZWQgbWVhbnMgdGhlc2Ugc2hvdWxkbid0IGp1c3QgYmUgcmViYXNlbGluZWQK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggODU5MTQ1YWVj
NDQzZGY0ZTQ2ZDE3NTg5MDZhYWQwZGUzNTJiM2UwNS4uYjJhNjUxM2VhZGFhM2JiMWZlN2EwOWNm
OWZhMmU2NjMyYTE1OTE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTE2ODYsNiArMTY4Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNjcgZmFzdC9mb3Jt
cy96b29tZWQtY29udHJvbHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgTWlzc2luZyBdCiAKIHdl
YmtpdC5vcmcvYi8xMDI0OTMgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLmh0bWwgWyBGYWlsdXJl
IF0KIAorIyBFRkwgc3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBub3QgdGhlIG1lbnUg
b2YgdHJhY2tzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1jYXB0
aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQorCiAjIEZhaWxzIHVudGlsIHdlIGVuYWJsZSB0
aGUgUmVzb3VyY2UgVGltaW5nIEFQSS4KIHdlYmtpdC5vcmcvYi82MTEzOCBodHRwL3Rlc3RzL3cz
Yy93ZWJwZXJmL3N1Ym1pc3Npb24vcmVzb3VyY2UtdGltaW5nIFsgU2tpcCBdCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYThmOWViNmNmZjhlNzI2MTQw
ZmRmMDU1NjQ0NzE2NDZlMmRlYWJmOC4uNmI5Mzg2ODEyOTBhMDQzOWMxYmI0ZmMxODRjNGVjYjU2
MmUyMGI1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKQEAg
LTEzOTEsNiArMTM5MSw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNDkgZmFzdC9kb20vc2hhZG93L3Bz
ZXVkb2NsYXNzLXVwZGF0ZS1lbmFibGVkLWFyZWEuaHRtbCBbIEltYWdlCiAKIHdlYmtpdC5vcmcv
Yi8xMDI1ODYgbWVkaWEvdmlkZW8tc3JjLWJsb2IuaHRtbCBbIEZhaWx1cmUgXQogCisjIEdUSyBz
dGlsbCBoYXMgdGhlIENDIHRvZ2dsZSBidXR0b24sIG5vdCB0aGUgbWVudSBvZiB0cmFja3MuCit3
ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVu
dS5odG1sIFsgU2tpcCBdCisKICMgRml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9OTcxOTIgaW50cm9kdWNlcyB0aGVzZSByZWdyZXNzaW9ucwogd2Via2l0Lm9y
Zy9iLzEwMjc3NiBtZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1yZXBhaW50Lmh0bWwgWyBGYWls
dXJlIF0KIHdlYmtpdC5vcmcvYi8xMDI3NzYgbWVkaWEvdHJhY2svdHJhY2stY3VlLWNvbnRhaW5l
ci1yZW5kZXJpbmctcG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2MDljYWM2MDFkZTZhODY1YzAxOTViNjY0MTVl
NDZmOWRmMjNiZWU1Li5hM2ZlY2IwY2Q1YjQyMmMwYzdlY2QxNjJiYzlmMTAxYjkzMjNhMjU4IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucworKysg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTE4OCw2ICsx
MTg4LDkgQEAgd2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5j
ZS1ody5odG1sIFsgRmFpbCBdCiB3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmlsdGVycy9lZmZl
Y3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgWyBGYWlsIF0KIHdlYmtpdC5vcmcvYi8xMDAx
NDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQogCisjIE1hYyBk
b2Vzbid0IGhhdmUgYSB0b2dnbGUgZm9yIENDIGFueSBtb3JlLCBpdCdzIGJhc2VkIG9uIGEgbWVu
dSBvZiBjaG9pY2VzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy5odG1sIFsgU2tpcCBdCisKICMgT3ZlcmZsb3dpbmcgTGF5b3V0VW5pdHMgY2F1c2Ug
UmVuZGVyR2VvbWV0cnlNYXAgYXNzZXJ0aW9ucwogd2Via2l0Lm9yZy9iLzY3NDM0IFsgRGVidWcg
XSBmYXN0L292ZXJmbG93L292ZXJmbG93LWhlaWdodC1mbG9hdC1ub3QtcmVtb3ZlZC1jcmFzaC5o
dG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjc0MzQgWyBEZWJ1ZyBdIGZhc3Qvb3ZlcmZsb3cv
b3ZlcmZsb3ctaGVpZ2h0LWZsb2F0LW5vdC1yZW1vdmVkLWNyYXNoMi5odG1sIFsgU2tpcCBdCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRpb25zIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5NzA4NzUzNGYxNTg5
NWVmZDM3MzJhNzJiMzkzNTRhZTI4OTBhYjdjLi5mZWVlMzgxMDkyNDExZjI4NTJlYWYwOWQzYmRj
OGI1NTUxOGRmZTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBlY3RhdGlvbnMK
QEAgLTIzNjYsNiArMjM2Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDE1MzkgZWRpdGluZy9leGVjQ29t
bWFuZC9zd2l0Y2gtbGlzdC10eXBlLXdpdGgtb3JwaGFuZWQtbGkuaHRtbCBbCiB3ZWJraXQub3Jn
L2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRpY2F0ZWQtd29y
a2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNlZC5odG1sIFsg
U2tpcCBdCiAKKyMgUVQgc3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBub3QgdGhlIG1l
bnUgb2YgdHJhY2tzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250cm9scy1j
YXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQorCiAjIE5ldywgYnV0IGZhaWxpbmcgdGVz
dAogd2Via2l0Lm9yZy9iLzEwMTAzNSBmYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0aW9uLWltYWdl
LWRvY3VtZW50Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCAxNDU4MmMyOTFkMGRkMTRkODUyNjgwYjU3Y2EyNWQwYTk2ODYxMmU5Li5jMGE0YjA2
MWIxYWFmYWYxZTlhOGEzNjgxYmI3YzE5ODU1YzU0N2FiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM1MCw2ICsyMzUwLDkgQEAgd2Via2l0Lm9yZy9i
Lzk4NjY2IGZhc3QvcmVwYWludC9zbGlkZXItdGh1bWItZmxvYXQuaHRtbCBbIEZhaWx1cmUgXQog
d2Via2l0Lm9yZy9iLzk4NjY2IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctdmVydGlj
YWwuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4NjY2IG1lZGlhL3RyYWNrL3RyYWNr
LWN1ZS1yZW5kZXJpbmctaG9yaXpvbnRhbC5odG1sIFsgRmFpbHVyZSBdCiAKKyMgV2luIGRvZXNu
J3Qgc3VwcG9ydCB0cmFjayBtZW51Cit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNv
bnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCisKICNodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwNzkKIGh0dHAvdGVzdHMvc2VjdXJpdHkvY3Jv
c3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176182</attachid>
            <date>2012-11-26 22:53:07 -0800</date>
            <delta_ts>2012-11-27 11:57:13 -0800</delta_ts>
            <desc>Patch 3 for QT</desc>
            <filename>bug-101670-20121127175043.patch</filename>
            <type>text/plain</type>
            <size>33161</size>
            <attacher name="Dean Jackson">dino</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg2NDM4NTU4ODllZDNi
NzI3MjlkZjJhNDJhNGZkMGEwMWVhOWNhOC4uZWQ2N2E2ZDc3Y2NjMmUyNGI4ZTAyYTQ3MTBiMjU3
ZDE1MmZlYTMxNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEyLTExLTI2ICBEZWFu
IEphY2tzb24gIDxkaW5vQGFwcGxlLmNvbT4KKworICAgICAgICBNYWtlIHRyYWNrIGxpc3QgY29u
dHJvbCBhY3RpdmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTEwMTY3MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEhvb2sgdXAgdGhlIGV2ZW50IGhhbmRsZXIgZm9yIHRoZSBjYXB0aW9ucyBtZW51IHNvIHRo
YXQgaXQgZW5hYmxlcyBvcgorICAgICAgICBkaXNhYmxlcyB0cmFja3MgaW4gdGhlIGFzc29jaWF0
ZWQgSFRNTE1lZGlhRWxlbWVudC4KKworICAgICAgICBUZXN0OiBtZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUuaHRtbAorCisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudDo6dG9nZ2xlVHJhY2tBdEluZGV4KTogTmV3IG1ldGhvZCB0byB0b2dnbGUgdGhlIHN0
YXRlIG9mIGEgdHJhY2ssIGJ5IGluZGV4LgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVu
dC5oOgorICAgICAgICAoSFRNTE1lZGlhRWxlbWVudCk6IERpdHRvLgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAoV2ViQ29yZTo6dHJhY2tMaXN0SW5kZXhGb3JFbGVtZW50KTogSGVscGVyIGZ1bmN0aW9u
IHRvIHRha2UgYSB0cmFjayBsaXN0IDxsaT4gZWxlbWVudCBhbmQgcmV0dXJuIHRoZSB2YWx1ZSBv
ZiB0aGUgY3VzdG9tIGF0dHJpYnV0ZS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRv
Z2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6dXBkYXRlRGlzcGxheVR5cGUpOiBUb2dn
bGUgdGhlIHN0YXRlIG9mIHRoZSBidXR0b24gYmFzZWQgb24gY2FwdGlvbnMgdmlzaWJpbGl0eS4K
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9u
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcik6IE9uIE1hYyBwbGF0Zm9ybXMgc2hvdyB0aGUg
Y2FwdGlvbnMgbWVudS4gT24gb3RoZXIgcGxhdGZvcm1zLCB0b2dnbGUgY2FwdGlvbnMuCisgICAg
ICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6
Ok1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IE5vdyBoYXMgYSBy
ZWZlcmVuY2UgdG8gdGhlIGNvbnRyb2xzLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpkZWZhdWx0RXZl
bnRIYW5kbGVyKTogV2hlbiB0aGUgdXNlciBjbGlja3Mgb24gYSB0cmFjayBsaXN0IGl0ZW0sIGxv
b2sKKyAgICAgICAgZm9yIHRoZSBjdXN0b20gYXR0cmlidXRlIHRoYXQgaWRlbnRpZmllcyB0aGUg
YXNzb2NpYXRlZCB0cmFjaywgYW5kIHRoZW4gdG9nZ2xlIHRoYXQgdHJhY2suCisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0
ZURpc3BsYXkpOiBTZXQgYSBjbGFzcyBvbiB0aGUgdHJhY2sgbGlzdCBlbGVtZW50cyBzbyB0aGV5
IGNhbiBiZQorICAgICAgICBzdHlsZWQgYnkgdGhlIGluamVjdGVkIENTUyAod2l0aCB0aWNrIG1h
cmtzIHRvIHJlcHJlc2VudCB2aXNpYmlsaXR5KS4KKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVzZXRUcmFja0xpc3RNZW51KTog
V2hlbiBidWlsZGluZyB0aGUgbGlzdCBvZiB0cmFjayBtZW51IGl0ZW1zLCBhZGQKKyAgICAgICAg
YSBjdXN0b20gSFRNTCBhdHRyaWJ1dGUgdG8gdGhlIGVsZW1lbnQgc28gdGhhdCB0aGUgY29ycmVz
cG9uZGluZyB0cmFjayBjYW4gYmUgZm91bmQgaW4gdGhlIGV2ZW50IGhhbmRsZXIuCisgICAgICAg
ICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaDoKKyAgICAgICAgKE1lZGlhQ29u
dHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudCk6IEFkZCBhIGxpc3Qgb2YgZWxlbWVu
dHMgcmVwcmVzZW50aW5nIHRoZSB0cmFjayBsaXN0LgorICAgICAgICAqIGh0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHNBcHBsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xzQXBw
bGU6OmNyZWF0ZUNvbnRyb2xzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbHNBcHBs
ZTo6Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSk6IE1ha2Ugc3VyZSB0byB1cGRhdGUg
dGhlIHRyYWNrIG1lbnUuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQpOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5oOgorICAgICAgICAoTWVkaWFDb250cm9sc0FwcGxlKToKKwogMjAxMi0xMS0y
NiAgSmFlIEh5dW4gUGFyayAgPGphZS5wYXJrQGNvbXBhbnkxMDAubmV0PgogCiAgICAgICAgIFJl
bW92ZSByZWR1bmRhbnQgYXNzaWdubWVudCBpbiBUZXh0dXJlTWFwcGVyTGF5ZXI6OmZsdXNoQ29t
cG9zaXRpbmdTdGF0ZVNlbGYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1l
ZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3Bw
CmluZGV4IDAyN2RkMjFkOTFiNzEzMTdlMjYxM2U4MWMwM2U4MWU4YzkzZTVhMDYuLjM5ZGRmM2U5
YWM0NjliNDhlNWYzOTk0ODZjOGFlNTZiYjVlMzViOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MTWVkaWFFbGVtZW50LmNwcApAQCAtMTU4LDYgKzE1OCw4IEBAIHN0YXRpYyBjb25zdCBjaGFy
KiBib29sU3RyaW5nKGJvb2wgdmFsKQogc3RhdGljIGNvbnN0IGNoYXIqIG1lZGlhU291cmNlQmxv
YlByb3RvY29sID0gImJsb2IiOwogI2VuZGlmCiAKK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFj
a3NPZmYgPSAtMTsKKwogdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHVzaW5nIG5hbWVzcGFj
ZSBzdGQ7CiAKQEAgLTI5OTYsNiArMjk5OCwyMiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmNv
bmZpZ3VyZVRleHRUcmFja0dyb3VwKGNvbnN0IFRyYWNrR3JvdXAmIGdyb3VwKSBjb25zdAogICAg
IH0KIH0KIAordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0b2dnbGVUcmFja0F0SW5kZXgoaW50IGlu
ZGV4LCBib29sIGV4Y2x1c2l2ZSkKK3sKKyAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSB0
ZXh0VHJhY2tzKCk7CisgICAgaWYgKCF0cmFja0xpc3QgfHwgIXRyYWNrTGlzdC0+bGVuZ3RoKCkp
CisgICAgICAgIHJldHVybjsKKworICAgIGZvciAoaW50IGkgPSAwLCBsZW5ndGggPSB0cmFja0xp
c3QtPmxlbmd0aCgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgVGV4dFRyYWNrKiB0cmFj
ayA9IHRyYWNrTGlzdC0+aXRlbShpKTsKKyAgICAgICAgdHJhY2stPnNldFNob3dpbmdCeURlZmF1
bHQoZmFsc2UpOworICAgICAgICBpZiAoaSA9PSBpbmRleCkKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6c2hvd2luZ0tleXdvcmQoKSk7CisgICAgICAgIGVsc2UgaWYgKGV4
Y2x1c2l2ZSB8fCBpbmRleCA9PSBjVGV4dFRyYWNrc09mZikKKyAgICAgICAgICAgIHRyYWNrLT5z
ZXRNb2RlKFRleHRUcmFjazo6ZGlzYWJsZWRLZXl3b3JkKCkpOworICAgIH0KK30KKwogdm9pZCBI
VE1MTWVkaWFFbGVtZW50Ojpjb25maWd1cmVUZXh0VHJhY2tzKCkKIHsKICAgICBUcmFja0dyb3Vw
IGNhcHRpb25BbmRTdWJ0aXRsZVRyYWNrcyhUcmFja0dyb3VwOjpDYXB0aW9uc0FuZFN1YnRpdGxl
cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGM1MzEyOWQ2MjM0
MWI2MmI1NDlkOTZkYmNmYjBmODMwN2JmZWZlOWQuLmI0YTY4ZTQ2NmZjNjIwZGViYmMwZTQ0NGNk
YTFiY2JmYTJmZjNjM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlh
RWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBA
IC0yNDUsNiArMjQ1LDggQEAgcHVibGljOgogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrcygp
OwogICAgIHZvaWQgY29uZmlndXJlVGV4dFRyYWNrR3JvdXAoY29uc3QgVHJhY2tHcm91cCYpIGNv
bnN0OwogCisgICAgdm9pZCB0b2dnbGVUcmFja0F0SW5kZXgoaW50IGluZGV4LCBib29sIGV4Y2x1
c2l2ZSA9IHRydWUpOworCiAgICAgYm9vbCB1c2VyUHJlZmVyc0NhcHRpb25zKCkgY29uc3Q7CiAg
ICAgYm9vbCB1c2VySXNJbnRlcmVzdGVkSW5UaGlzVHJhY2tLaW5kKFN0cmluZykgY29uc3Q7CiAg
ICAgYm9vbCB0ZXh0VHJhY2tzQXJlUmVhZHkoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAppbmRleCAyMTI4YmMyMzIw
Zjk3ZmE1MzkxNWY3YzZkN2NhMTljNDU5YWE3MjQ1Li45YWFiNTY5ZGFkOTcxZTUzNDg2NzE5ZjFk
MjNiZjQzM2E1YTVhNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cv
TWVkaWFDb250cm9sRWxlbWVudHMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQ1NT
VmFsdWVLZXl3b3Jkcy5oIgogI2luY2x1ZGUgIkRPTVRva2VuTGlzdC5oIgogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJFdmVudFRhcmdldC5oIgogI2luY2x1ZGUgIkZsb2F0Q29u
dmVyc2lvbi5oIgogI2luY2x1ZGUgIkZsb2F0UG9pbnQuaCIKICNpbmNsdWRlICJGcmFtZS5oIgpA
QCAtNjMsNiArNjQsNyBAQAogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJU
ZXh0LmgiCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIlRleHRUcmFjay5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0xpc3QuaCIKICNlbmRpZgogCkBAIC03Nyw2ICs3OSwxNCBAQCBz
dGF0aWMgY29uc3QgZmxvYXQgY1NraXBUaW1lID0gMC4yZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBj
U2NhblJlcGVhdERlbGF5ID0gMS41ZjsKIHN0YXRpYyBjb25zdCBmbG9hdCBjU2Nhbk1heGltdW1S
YXRlID0gODsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKK3N0YXRpYyBjb25zdCBjaGFyKiB0
cmFja0luZGV4QXR0ciA9ICJ4LXdlYmtpdC10cmFjay1pbmRleCI7CitzdGF0aWMgY29uc3QgY2hh
ciogY1RleHRUcmFja3NPZmZBdHRyVmFsdWUgPSAiLTEiOyAvLyBUaGlzIG11c3QgbWF0Y2ggY1Rl
eHRUcmFja3NPZmYgaW4gSFRNTE1lZGlhRWxlbWVudC4KK3N0YXRpYyBjb25zdCBpbnQgY1RleHRU
cmFja3NJbmRleE9mZiA9IC0xOyAvLyBUaGlzIG11c3QgbWF0Y2ggY1RleHRUcmFja3NPZmYgaW4g
SFRNTE1lZGlhRWxlbWVudC4KK3N0YXRpYyBjb25zdCBpbnQgY1RleHRUcmFja3NJbmRleE5vdEZv
dW5kID0gLTI7CitzdGF0aWMgY29uc3QgY2hhciogY1RleHRUcmFja1NlbGVjdGVkQ2xhc3NWYWx1
ZSA9ICJzZWxlY3RlZCI7CisjZW5kaWYKKwogSFRNTE1lZGlhRWxlbWVudCogdG9QYXJlbnRNZWRp
YUVsZW1lbnQoTm9kZSogbm9kZSkKIHsKICAgICBpZiAoIW5vZGUpCkBAIC05OSw2ICsxMDksMjAg
QEAgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgbWVkaWFDb250cm9sRWxlbWVudFR5cGUoTm9kZSog
bm9kZSkKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8TWVkaWFDb250cm9sRWxlbWVudCo+KGVsZW1l
bnQpLT5kaXNwbGF5VHlwZSgpOwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorc3RhdGlj
IGludCB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3sKKyAgICBj
b25zdCBBdG9taWNTdHJpbmcgdHJhY2tJbmRleEF0dHJpYnV0ZVZhbHVlID0gZWxlbWVudC0+Z2V0
QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyKTsKKyAgICBpZiAodHJhY2tJbmRleEF0dHJpYnV0ZVZh
bHVlLmlzTnVsbCgpIHx8IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1ZS5pc0VtcHR5KCkpCisgICAg
ICAgIHJldHVybiBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7CisgICAgYm9vbCBvazsKKyAgICBp
bnQgdHJhY2tJbmRleCA9IHRyYWNrSW5kZXhBdHRyaWJ1dGVWYWx1ZS50b0ludCgmb2spOworICAg
IGlmICghb2spCisgICAgICAgIHJldHVybiBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQ7CisgICAg
cmV0dXJuIHRyYWNrSW5kZXg7Cit9CisjZW5kaWYKKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQogCiBNZWRpYUNvbnRyb2xFbGVtZW50OjpNZWRpYUNvbnRyb2xFbGVtZW50KERvY3Vt
ZW50KiBkb2N1bWVudCkKQEAgLTkwMiwxNyArOTI2LDIyIEBAIFBhc3NSZWZQdHI8TWVkaWFDb250
cm9sVG9nZ2xlQ2xvc2VkQ2FwdGlvbnNCdXR0b25FbGVtZW50PiBNZWRpYUNvbnRyb2xUb2dnbGVD
bG9zCiB2b2lkIE1lZGlhQ29udHJvbFRvZ2dsZUNsb3NlZENhcHRpb25zQnV0dG9uRWxlbWVudDo6
dXBkYXRlRGlzcGxheVR5cGUoKQogewogICAgIHNldERpc3BsYXlUeXBlKG1lZGlhQ29udHJvbGxl
cigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSA/IE1lZGlhSGlkZUNsb3NlZENhcHRpb25zQnV0
dG9uIDogTWVkaWFTaG93Q2xvc2VkQ2FwdGlvbnNCdXR0b24pOworICAgIHNldENoZWNrZWQobWVk
aWFDb250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKIH0KIAogdm9pZCBNZWRp
YUNvbnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OmRlZmF1bHRFdmVudEhh
bmRsZXIoRXZlbnQqIGV2ZW50KQogewogICAgIGlmIChldmVudC0+dHlwZSgpID09IGV2ZW50TmFt
ZXMoKS5jbGlja0V2ZW50KSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGlzIG5vdyBpbmNvcnJl
Y3RseSBkb2luZyB0d28gdGhpbmdzIGF0IG9uY2U6IHNob3dpbmcgdGhlIGxpc3Qgb2YgY2FwdGlv
bnMgYW5kIHRvZ2dsaW5nIGRpc3BsYXkuCi0gICAgICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2NzAKKyAgICAgICAgLy8gRklYTUU6IEl0J3Mgbm90IGdy
ZWF0IHRoYXQgdGhlIHNoYXJlZCBjb2RlIGlzIGRpY3RhdGluZyBiZWhhdmlvciBvZiBwbGF0Zm9y
bS1zcGVjaWZpYworICAgICAgICAvLyBVSS4gTm90IGFsbCBwb3J0cyBtYXkgd2FudCB0aGUgY2xv
c2VkIGNhcHRpb25zIGJ1dHRvbiB0byB0b2dnbGUgYSBsaXN0IG9mIHRyYWNrcywgc28KKyAgICAg
ICAgLy8gd2UgaGF2ZSB0byB1c2UgI2lmLgorI2lmICFQTEFURk9STShNQUMpCiAgICAgICAgIG1l
ZGlhQ29udHJvbGxlcigpLT5zZXRDbG9zZWRDYXB0aW9uc1Zpc2libGUoIW1lZGlhQ29udHJvbGxl
cigpLT5jbG9zZWRDYXB0aW9uc1Zpc2libGUoKSk7CiAgICAgICAgIHNldENoZWNrZWQobWVkaWFD
b250cm9sbGVyKCktPmNsb3NlZENhcHRpb25zVmlzaWJsZSgpKTsKLSAgICAgICAgbV9jb250cm9s
cy0+dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOwogICAgICAgICB1cGRhdGVEaXNwbGF5
VHlwZSgpOworI2Vsc2UKKyAgICAgICAgbV9jb250cm9scy0+dG9nZ2xlQ2xvc2VkQ2FwdGlvblRy
YWNrTGlzdCgpOworI2VuZGlmCiAgICAgICAgIGV2ZW50LT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KIApAQCAtOTI3LDIyICs5NTYsNTEgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNv
bnRyb2xUb2dnbGVDbG9zZWRDYXB0aW9uc0J1dHRvbkVsZW1lbnQ6OnNoYWRvd1BzZXVkb0kKIAog
Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1pbmxpbmUgTWVkaWFDb250cm9sQ2xv
c2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50KQoraW5saW5lIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNU
cmFja0xpc3RFbGVtZW50KERvY3VtZW50KiBkb2N1bWVudCwgTWVkaWFDb250cm9scyogY29udHJv
bHMpCiAgICAgOiBNZWRpYUNvbnRyb2xFbGVtZW50KGRvY3VtZW50KQorICAgICwgbV9jb250cm9s
cyhjb250cm9scykKIHsKIH0KIAotUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdEVsZW1lbnQ+IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxl
bWVudDo6Y3JlYXRlKERvY3VtZW50KiBkb2N1bWVudCkKK1Bhc3NSZWZQdHI8TWVkaWFDb250cm9s
Q2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9u
c1RyYWNrTGlzdEVsZW1lbnQ6OmNyZWF0ZShEb2N1bWVudCogZG9jdW1lbnQsIE1lZGlhQ29udHJv
bHMqIGNvbnRyb2xzKQogewotICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1Ry
YWNrTGlzdEVsZW1lbnQ+IGVsZW1lbnQgPSBhZG9wdFJlZihuZXcgTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50KGRvY3VtZW50KSk7CisgICAgQVNTRVJUKGNvbnRyb2xz
KTsKKyAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50
PiBlbGVtZW50ID0gYWRvcHRSZWYobmV3IE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudChkb2N1bWVudCwgY29udHJvbHMpKTsKICAgICByZXR1cm4gZWxlbWVudC5yZWxl
YXNlKCk7CiB9CiAKIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpkZWZhdWx0RXZlbnRIYW5kbGVyKEV2ZW50KiBldmVudCkKIHsKLSAgICAvLyBGSVhNRTog
SG9vayB0aGlzIHVwIHRvIGFjdHVhbCB0ZXh0IHRyYWNrcy4KLSAgICAvLyBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAxNjcwCi0gICAgVU5VU0VEX1BBUkFNKGV2ZW50
KTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgaWYgKGV2ZW50LT50eXBlKCkgPT0gZXZl
bnROYW1lcygpLmNsaWNrRXZlbnQpIHsKKyAgICAgICAgLy8gRklYTUU6IEFkZCBtb2RpZmllciBr
ZXkgZm9yIGV4Y2x1c2l2aXR5IG92ZXJyaWRlLgorICAgICAgICAvLyBodHRwOi8vd2Via2l0Lm9y
Zy9iLzEwMzM2MQorCisgICAgICAgIE5vZGUqIHRhcmdldCA9IGV2ZW50LT50YXJnZXQoKS0+dG9O
b2RlKCk7CisgICAgICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzRWxlbWVudE5vZGUoKSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBXaGVuIHdlIGNyZWF0ZWQgdGhlIGVs
ZW1lbnRzIGluIHRoZSB0cmFjayBsaXN0LCB3ZSBnYXZlIHRoZW0gYSBjdXN0b20KKyAgICAgICAg
Ly8gYXR0cmlidXRlIHJlcHJlc2VudGluZyB0aGUgaW5kZXggaW4gdGhlIEhUTUxNZWRpYUVsZW1l
bnQncyBsaXN0IG9mIHRyYWNrcy4KKyAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIGV2ZW50IHRhcmdl
dCBoYXMgc3VjaCBhIGN1c3RvbSBlbGVtZW50IGFuZCwgaWYgc28sCisgICAgICAgIC8vIHRlbGwg
dGhlIEhUTUxNZWRpYUVsZW1lbnQgdG8gZW5hYmxlIHRoYXQgdHJhY2suCisKKyAgICAgICAgaW50
IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJbmRleEZvckVsZW1lbnQodG9FbGVtZW50KHRhcmdldCkp
OworICAgICAgICBpZiAodHJhY2tJbmRleCAhPSBjVGV4dFRyYWNrc0luZGV4Tm90Rm91bmQpIHsK
KyAgICAgICAgICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVk
aWFFbGVtZW50KHRoaXMpOworICAgICAgICAgICAgaWYgKCFtZWRpYUVsZW1lbnQpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICBtZWRpYUVsZW1lbnQtPnRvZ2dsZVRyYWNr
QXRJbmRleCh0cmFja0luZGV4KTsKKworICAgICAgICAgICAgLy8gV2UndmUgc2VsZWN0ZWQgYSB0
cmFjayB0byBkaXNwbGF5LCBzbyB3ZSBjYW4gbm93IGNsb3NlIHRoZSBtZW51LgorICAgICAgICAg
ICAgbV9jb250cm9scy0+dG9nZ2xlQ2xvc2VkQ2FwdGlvblRyYWNrTGlzdCgpOworICAgICAgICAg
ICAgdXBkYXRlRGlzcGxheSgpOworICAgICAgICB9CisgICAgfQorCisgICAgTWVkaWFDb250cm9s
RWxlbWVudDo6ZGVmYXVsdEV2ZW50SGFuZGxlcihldmVudCk7CisjZW5kaWYKIH0KIAogY29uc3Qg
QXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6
OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKQEAgLTk1NCw4ICsxMDEyLDQ3IEBAIGNvbnN0IEF0b21p
Y1N0cmluZyYgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVtZW50OjpzaGFk
b3dQc2V1ZG9JZCgpCiB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxl
bWVudDo6dXBkYXRlRGlzcGxheSgpCiB7CiAjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGlm
ICghbWVkaWFDb250cm9sbGVyKCktPmhhc0Nsb3NlZENhcHRpb25zKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCA9IHRvUGFyZW50TWVkaWFF
bGVtZW50KHRoaXMpOworICAgIGlmICghbWVkaWFFbGVtZW50KQorICAgICAgICByZXR1cm47CisK
KyAgICBUZXh0VHJhY2tMaXN0KiB0cmFja0xpc3QgPSBtZWRpYUVsZW1lbnQtPnRleHRUcmFja3Mo
KTsKKworICAgIGlmICghdHJhY2tMaXN0IHx8ICF0cmFja0xpc3QtPmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwLCBsZW5ndGggPSBtZW51SXRlbXMu
c2l6ZSgpOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEVsZW1lbnQ+IHRyYWNr
SXRlbSA9IG1lbnVJdGVtc1tpXTsKKyAgICAgICAgaW50IHRyYWNrSW5kZXggPSB0cmFja0xpc3RJ
bmRleEZvckVsZW1lbnQodHJhY2tJdGVtLmdldCgpKTsKKyAgICAgICAgaWYgKHRyYWNrSW5kZXgg
IT0gY1RleHRUcmFja3NJbmRleE5vdEZvdW5kKSB7CisgICAgICAgICAgICBpZiAodHJhY2tJbmRl
eCA9PSBjVGV4dFRyYWNrc0luZGV4T2ZmKSB7CisgICAgICAgICAgICAgICAgaWYgKG1lZGlhRWxl
bWVudC0+Y2xvc2VkQ2FwdGlvbnNWaXNpYmxlKCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWNr
SXRlbS0+Y2xhc3NMaXN0KCktPnJlbW92ZShjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBB
U1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAg
ICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0KCktPmFkZChjVGV4dFRyYWNrU2VsZWN0ZWRDbGFz
c1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAg
ICAgICAgICAgICAgVGV4dFRyYWNrKiB0cmFjayA9IHRyYWNrTGlzdC0+aXRlbSh0cmFja0luZGV4
KTsKKyAgICAgICAgICAgICAgICBpZiAoIXRyYWNrKQorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1vZGUoKSA9PSBUZXh0VHJhY2s6OnNo
b3dpbmdLZXl3b3JkKCkpCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+Y2xhc3NMaXN0
KCktPmFkZChjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRfTk9fRVhDRVBUSU9O
KTsKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIHRyYWNrSXRlbS0+
Y2xhc3NMaXN0KCktPnJlbW92ZShjVGV4dFRyYWNrU2VsZWN0ZWRDbGFzc1ZhbHVlLCBBU1NFUlRf
Tk9fRVhDRVBUSU9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgor
fQorCit2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6cmVz
ZXRUcmFja0xpc3RNZW51KCkKK3sKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAgICAgLy8gUmVt
b3ZlIGFueSBleGlzdGluZyBjb250ZW50LgogICAgIHJlbW92ZUNoaWxkcmVuKCk7CisgICAgbWVu
dUl0ZW1zLmNsZWFyKCk7CiAKICAgICBpZiAoIW1lZGlhQ29udHJvbGxlcigpLT5oYXNDbG9zZWRD
YXB0aW9ucygpKQogICAgICAgICByZXR1cm47CkBAIC05ODcsMTUgKzEwODQsMTUgQEAgdm9pZCBN
ZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURpc3BsYXko
KQogCiAgICAgdHJhY2tJdGVtID0gZG9jLT5jcmVhdGVFbGVtZW50KGxpVGFnLCBBU1NFUlRfTk9f
RVhDRVBUSU9OKTsKICAgICB0cmFja0l0ZW0tPmFwcGVuZENoaWxkKGRvYy0+Y3JlYXRlVGV4dE5v
ZGUoIk9mZiIpKTsKLSAgICAvLyBGSVhNRTogVGhlc2UgbGlzdHMgYXJlIG5vdCB5ZXQgbGl2ZS4g
TWFyayB0aGUgT2ZmIGVudHJ5IGFzIHRoZSBzZWxlY3RlZCBvbmUgZm9yIG5vdy4KLSAgICB0cmFj
a0l0ZW0tPnNldEF0dHJpYnV0ZShjbGFzc0F0dHIsICJzZWxlY3RlZCIpOworICAgIHRyYWNrSXRl
bS0+c2V0QXR0cmlidXRlKHRyYWNrSW5kZXhBdHRyLCBjVGV4dFRyYWNrc09mZkF0dHJWYWx1ZSwg
QVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAgY2FwdGlvbnNMaXN0LT5hcHBlbmRDaGlsZCh0cmFj
a0l0ZW0pOworICAgIG1lbnVJdGVtcy5hcHBlbmQodHJhY2tJdGVtKTsKIAogICAgIHRyYWNrSXRl
bSA9IGRvYy0+Y3JlYXRlRWxlbWVudChsaVRhZywgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAgICAg
dHJhY2tJdGVtLT5hcHBlbmRDaGlsZChkb2MtPmNyZWF0ZVRleHROb2RlKCJPZmYiKSk7Ci0gICAg
Ly8gRklYTUU6IFRoZXNlIGxpc3RzIGFyZSBub3QgeWV0IGxpdmUuIE1hcmsgdGhlIE9mZiBlbnRy
eSBhcyB0aGUgc2VsZWN0ZWQgb25lIGZvciBub3cuCi0gICAgdHJhY2tJdGVtLT5zZXRBdHRyaWJ1
dGUoY2xhc3NBdHRyLCAic2VsZWN0ZWQiKTsKKyAgICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0
cmFja0luZGV4QXR0ciwgY1RleHRUcmFja3NPZmZBdHRyVmFsdWUsIEFTU0VSVF9OT19FWENFUFRJ
T04pOwogICAgIHN1YnRpdGxlc0xpc3QtPmFwcGVuZENoaWxkKHRyYWNrSXRlbSk7CisgICAgbWVu
dUl0ZW1zLmFwcGVuZCh0cmFja0l0ZW0pOwogCiAgICAgYm9vbCBoYXNDYXB0aW9ucyA9IGZhbHNl
OwogICAgIGJvb2wgaGFzU3VidGl0bGVzID0gZmFsc2U7CkBAIC0xMDAzLDYgKzExMDAsMTMgQEAg
dm9pZCBNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ6OnVwZGF0ZURp
c3BsYXkoKQogICAgIGZvciAodW5zaWduZWQgaSA9IDAsIGxlbmd0aCA9IHRyYWNrTGlzdC0+bGVu
Z3RoKCk7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICBUZXh0VHJhY2sqIHRyYWNrID0gdHJh
Y2tMaXN0LT5pdGVtKGkpOwogICAgICAgICB0cmFja0l0ZW0gPSBkb2MtPmNyZWF0ZUVsZW1lbnQo
bGlUYWcsIEFTU0VSVF9OT19FWENFUFRJT04pOworCisgICAgICAgIC8vIEFkZCBhIGN1c3RvbSBh
dHRyaWJ1dGUgdG8gdGhlIDxsaT4gZWxlbWVudCB3aGljaCB3aWxsIGFsbG93CisgICAgICAgIC8v
IHVzIHRvIGVhc2lseSBhc3NvY2lhdGUgdGhlIHVzZXIgdGFwcGluZyBoZXJlIHdpdGggdGhlCisg
ICAgICAgIC8vIHRyYWNrLiBTaW5jZSB0aGlzIGxpc3QgaXMgcmVidWlsdCBpZiB0aGUgdHJhY2tz
IGNoYW5nZSwgd2UKKyAgICAgICAgLy8gc2hvdWxkIGFsd2F5cyBiZSBpbiBzeW5jLgorICAgICAg
ICB0cmFja0l0ZW0tPnNldEF0dHJpYnV0ZSh0cmFja0luZGV4QXR0ciwgU3RyaW5nOjpudW1iZXIo
aSksIEFTU0VSVF9OT19FWENFUFRJT04pOworCiAgICAgICAgIEF0b21pY1N0cmluZyBsYWJlbFRl
eHQgPSB0cmFjay0+bGFiZWwoKTsKICAgICAgICAgaWYgKGxhYmVsVGV4dC5pc051bGwoKSB8fCBs
YWJlbFRleHQuaXNFbXB0eSgpKQogICAgICAgICAgICAgbGFiZWxUZXh0ID0gZGlzcGxheU5hbWVG
b3JMYW5ndWFnZUxvY2FsZSh0cmFjay0+bGFuZ3VhZ2UoKSk7CkBAIC0xMDE4LDYgKzExMjIsNyBA
QCB2b2lkIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6dXBkYXRl
RGlzcGxheSgpCiAgICAgICAgICAgICBzdWJ0aXRsZXNMaXN0LT5hcHBlbmRDaGlsZCh0cmFja0l0
ZW0pOwogICAgICAgICB9CiAgICAgICAgIHRyYWNrSXRlbS0+YXBwZW5kQ2hpbGQoZG9jLT5jcmVh
dGVUZXh0Tm9kZShsYWJlbFRleHQpKTsKKyAgICAgICAgbWVudUl0ZW1zLmFwcGVuZCh0cmFja0l0
ZW0pOwogICAgIH0KIAogICAgIGNhcHRpb25zU2VjdGlvbi0+YXBwZW5kQ2hpbGQoY2FwdGlvbnNM
aXN0KTsKQEAgLTEwMjcsNiArMTEzMiw4IEBAIHZvaWQgTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlv
bnNUcmFja0xpc3RFbGVtZW50Ojp1cGRhdGVEaXNwbGF5KCkKICAgICAgICAgYXBwZW5kQ2hpbGQo
Y2FwdGlvbnNTZWN0aW9uKTsKICAgICBpZiAoaGFzU3VidGl0bGVzKQogICAgICAgICBhcHBlbmRD
aGlsZChzdWJ0aXRsZXNTZWN0aW9uKTsKKworICAgIHVwZGF0ZURpc3BsYXkoKTsKICNlbmRpZgog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xF
bGVtZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuaAppbmRleCBjM2ZiYzgxMjE5MmQzNDFmNjJiOTRlMjM4ZWJlMTRlZDJlZTk2NzVmLi5kM2E0
NzNjMTI2NDc2MjIyNjYzZmYxNjZlZmQ1Y2Q2MTk0YjAxODVmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKQEAgLTQxNSwxOCArNDE1
LDIzIEBAIHByaXZhdGU6CiAKIGNsYXNzIE1lZGlhQ29udHJvbENsb3NlZENhcHRpb25zVHJhY2tM
aXN0RWxlbWVudCA6IHB1YmxpYyBNZWRpYUNvbnRyb2xFbGVtZW50IHsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1l
bnQ+IGNyZWF0ZShEb2N1bWVudCopOworICAgIHN0YXRpYyBQYXNzUmVmUHRyPE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudD4gY3JlYXRlKERvY3VtZW50KiwgTWVkaWFD
b250cm9scyopOwogCiAgICAgdmlydHVhbCB2b2lkIGRlZmF1bHRFdmVudEhhbmRsZXIoRXZlbnQq
KTsKICAgICB2aXJ0dWFsIGJvb2wgd2lsbFJlc3BvbmRUb01vdXNlQ2xpY2tFdmVudHMoKSBPVkVS
UklERSB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHVwZGF0ZURpc3BsYXkoKTsKKyAgICB2
b2lkIHJlc2V0VHJhY2tMaXN0TWVudSgpOwogCiBwcml2YXRlOgotICAgIE1lZGlhQ29udHJvbENs
b3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCopOworICAgIE1lZGlhQ29udHJv
bENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudChEb2N1bWVudCosIE1lZGlhQ29udHJvbHMq
KTsKIAogICAgIHZpcnR1YWwgTWVkaWFDb250cm9sRWxlbWVudFR5cGUgZGlzcGxheVR5cGUoKSBj
b25zdCB7IHJldHVybiBNZWRpYUNsb3NlZENhcHRpb25zVHJhY2tMaXN0OyB9CiAgICAgdmlydHVh
bCBjb25zdCBBdG9taWNTdHJpbmcmIHNoYWRvd1BzZXVkb0lkKCkgY29uc3Q7CisKKyAgICB0eXBl
ZGVmIFZlY3RvcjxSZWZQdHI8RWxlbWVudD4gPiBUcmFja01lbnVJdGVtczsKKyAgICBUcmFja01l
bnVJdGVtcyBtZW51SXRlbXM7CisgICAgTWVkaWFDb250cm9scyogbV9jb250cm9sczsKIH07CiAK
IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbHNBcHBsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuY3BwCmluZGV4IDZjYzFjN2Y3ZGNlZjgyN2Ux
NDJmNDQzNDAyNmZiYWQyNGY2MWRhMDYuLjkzNzMzYWViOGE4NmUyNmE3YjU0NTJmNWQ1M2UxODM5
YWJhODlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29u
dHJvbHNBcHBsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sc0FwcGxlLmNwcApAQCAtMTQ5LDcgKzE0OSw3IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9s
c0FwcGxlPiBNZWRpYUNvbnRyb2xzQXBwbGU6OmNyZWF0ZUNvbnRyb2xzKERvY3VtZW50KiBkb2N1
CiAgICAgaWYgKGRvY3VtZW50LT5wYWdlKCktPnRoZW1lKCktPnN1cHBvcnRzQ2xvc2VkQ2FwdGlv
bmluZygpKSB7CiAgICAgICAgIFJlZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc0NvbnRh
aW5lckVsZW1lbnQ+IGNsb3NlZENhcHRpb25zQ29udGFpbmVyID0gTWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNDb250YWluZXJFbGVtZW50OjpjcmVhdGUoZG9jdW1lbnQpOwogCi0gICAgICAgIFJl
ZlB0cjxNZWRpYUNvbnRyb2xDbG9zZWRDYXB0aW9uc1RyYWNrTGlzdEVsZW1lbnQ+IGNsb3NlZENh
cHRpb25zVHJhY2tMaXN0ID0gTWVkaWFDb250cm9sQ2xvc2VkQ2FwdGlvbnNUcmFja0xpc3RFbGVt
ZW50OjpjcmVhdGUoZG9jdW1lbnQpOworICAgICAgICBSZWZQdHI8TWVkaWFDb250cm9sQ2xvc2Vk
Q2FwdGlvbnNUcmFja0xpc3RFbGVtZW50PiBjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdCA9IE1lZGlh
Q29udHJvbENsb3NlZENhcHRpb25zVHJhY2tMaXN0RWxlbWVudDo6Y3JlYXRlKGRvY3VtZW50LCBj
b250cm9scy5nZXQoKSk7CiAgICAgICAgIGNvbnRyb2xzLT5tX2Nsb3NlZENhcHRpb25zVHJhY2tM
aXN0ID0gY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QuZ2V0KCk7CiAgICAgICAgIGNsb3NlZENhcHRp
b25zQ29udGFpbmVyLT5hcHBlbmRDaGlsZChjbG9zZWRDYXB0aW9uc1RyYWNrTGlzdC5yZWxlYXNl
KCksIGVjLCB0cnVlKTsKICAgICAgICAgaWYgKGVjKQpAQCAtMjg5LDYgKzI4OSwxMyBAQCB2b2lk
IE1lZGlhQ29udHJvbHNBcHBsZTo6bWFrZVRyYW5zcGFyZW50KCkKICAgICAgICAgbV9jbG9zZWRD
YXB0aW9uc0NvbnRhaW5lci0+aGlkZSgpOwogfQogCit2b2lkIE1lZGlhQ29udHJvbHNBcHBsZTo6
Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpCit7CisgICAgTWVkaWFDb250cm9sczo6
Y2hhbmdlZENsb3NlZENhcHRpb25zVmlzaWJpbGl0eSgpOworICAgIGlmIChtX2Nsb3NlZENhcHRp
b25zVHJhY2tMaXN0KQorICAgICAgICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT51cGRhdGVE
aXNwbGF5KCk7Cit9CisKIHZvaWQgTWVkaWFDb250cm9sc0FwcGxlOjpyZXNldCgpCiB7CiAgICAg
UGFnZSogcGFnZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKQEAgLTMyMyw3ICszMzAsNyBAQCB2b2lk
IE1lZGlhQ29udHJvbHNBcHBsZTo6cmVzZXQoKQogICAgICAgICBpZiAobV9tZWRpYUNvbnRyb2xs
ZXItPmhhc0Nsb3NlZENhcHRpb25zKCkpIHsKICAgICAgICAgICAgIG1fdG9nZ2xlQ2xvc2VkQ2Fw
dGlvbnNCdXR0b24tPnNob3coKTsKICAgICAgICAgICAgIGlmIChtX2Nsb3NlZENhcHRpb25zVHJh
Y2tMaXN0KQotICAgICAgICAgICAgICAgIG1fY2xvc2VkQ2FwdGlvbnNUcmFja0xpc3QtPnVwZGF0
ZURpc3BsYXkoKTsKKyAgICAgICAgICAgICAgICBtX2Nsb3NlZENhcHRpb25zVHJhY2tMaXN0LT5y
ZXNldFRyYWNrTGlzdE1lbnUoKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBtX3RvZ2ds
ZUNsb3NlZENhcHRpb25zQnV0dG9uLT5oaWRlKCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sc0FwcGxlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzQXBwbGUuaAppbmRleCBkYzQ3MzA2ZWM5YzQyOWU3
NDVjNTQxOWU5ODdhYTE2OWM2Y2IxYWJiLi5hMWVlODk2M2NlZmFjMGNkNjEzYmQ5MmYyYTZjNmNm
ZDlmMzBiODA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xzQXBwbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRy
b2xzQXBwbGUuaApAQCAtNTgsNiArNTgsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHVw
ZGF0ZUN1cnJlbnRUaW1lRGlzcGxheSgpIE9WRVJSSURFOwogICAgIHZpcnR1YWwgdm9pZCB1cGRh
dGVTdGF0dXNEaXNwbGF5KCkgT1ZFUlJJREU7CiAKKyAgICB2aXJ0dWFsIHZvaWQgY2hhbmdlZENs
b3NlZENhcHRpb25zVmlzaWJpbGl0eSgpIE9WRVJSSURFOwogICAgIHZvaWQgdG9nZ2xlQ2xvc2Vk
Q2FwdGlvblRyYWNrTGlzdCgpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFmYWQzODAyNmExNDlmYjVj
Zjk4MTliNGVlZjcyYTA1YzQ4ZmUzNTIuLjJkMzI0MDAwODM5MmMyYjc4ZTk0ZmVkNzBiZWMyMWRj
ZWVjMDc1OTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMi0xMS0yNiAgRGVhbiBKYWNrc29u
ICA8ZGlub0BhcHBsZS5jb20+CisKKyAgICAgICAgTWFrZSB0cmFjayBsaXN0IGNvbnRyb2wgYWN0
aXZlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDE2
NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZXcg
dGVzdCB0aGF0IGV4ZXJjaXNlcyB0aGUgdHJhY2sgbGlzdCBtZW51LCBhbmQgaG93IGl0IGNhbiBi
ZSB1c2VkCisgICAgICAgIHRvIGVuYWJsZSBzcGVjaWZpYyB0cmFja3MuIFNpbmNlIHRoaXMgaXMg
b25seSBlbmFibGVkIGZvciBNYWMsIGl0IGlzCisgICAgICAgIHNraXBwZWQgb24gYWxsIG90aGVy
IHBsYXRmb3Jtcy4KKworICAgICAgICBNZWFud2hpbGUsIHRoZSBleGlzdGluZyB0ZXN0IGZvciBh
IG9uL29mZiBjYXB0aW9ucyBidXR0b24gbm93CisgICAgICAgIGRvZXMgbm90IHdvcmsgb24gTWFj
LCBzbyBza2lwIGl0IHRoZXJlLiBJIGNvcGllZCB0aGUgZnVuY3Rpb25hbGl0eQorICAgICAgICBp
bnRvIHRoZSBuZXcgdGVzdCBzbyB3ZSBzdGlsbCBoYXZlIGNvdmVyYWdlLgorCisgICAgICAgICog
bWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0
bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxh
dGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RF
eHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9uczoKKyAg
ICAgICAgKiBwbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9uczoKKwogMjAxMi0xMS0yNiAgVGhp
YWdvIE1hcmNvcyBQLiBTYW50b3MgIDx0aGlhZ28uc2FudG9zQGludGVsLmNvbT4KIAogICAgICAg
ICBJbXBvcnQgbW9yZSBDU1MgRGV2aWNlIEFkYXB0YXRpb24gbGF5b3V0IHRlc3RzCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21lbnUt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMt
dHJhY2ttZW51LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iMTI4NDVjOTY0ZjgwMWI2N2NmOGFi
MTY1MjUzNjU3NzI2OGM1OWIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWVkaWEv
dmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDMxIEBACitUZXN0IHRoYXQgd2UgYXJlIGFibGUgdG8gdHJpZ2dlciB0aGUgbGlzdCBvZiBjYXB0
aW9ucywgYW5kIHNlbGVjdCBmcm9tIHRoZSBsaXN0LgorCitFVkVOVChjYW5wbGF5dGhyb3VnaCkK
KyoqKiBTZXQgdGhlIHVzZXIgbGFuZ3VhZ2UgcHJlZmVyZW5jZS4KK1JVTihpbnRlcm5hbHMuc2V0
VXNlclByZWZlcnJlZExhbmd1YWdlcyhbJ2VuJ10pKQorKioqIENsaWNrIHRoZSBDQyBidXR0b24u
CisqKiogVHVybmluZyBjYXB0aW9ucyBvbgorRm91bmQgdHJhY2tsaXN0IG1lbnUgYW5kIGxpc3Qg
b2YgdHJhY2tzIE9LCitGb3VuZCBmb3VyIGF2YWlsYWJsZSB0cmFja3MgaW4gbWVudSBPSworRVhQ
RUNURUQgKHRyYWNrcy5sZW5ndGggPT0gJzMnKSBPSworVHJhY2sgMCBzaG91bGQgYmUgZGlzYWJs
ZWQKK0VYUEVDVEVEICh0cmFjay5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAxIHNob3Vs
ZCBiZSBzaG93aW5nCitFWFBFQ1RFRCAodHJhY2subW9kZSA9PSAnc2hvd2luZycpIE9LCitUcmFj
ayAyIHNob3VsZCBiZSBkaXNhYmxlZAorRVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVk
JykgT0sKK0VYUEVDVEVEICh0ZXh0VHJhY2tEaXNwbGF5RWxlbWVudCh2aWRlbywgJ2Rpc3BsYXkn
KS5pbm5lclRleHQgPT0gJ0xvcmVtJykgT0sKKyoqKiBDbGljayB0aGUgQ0MgYnV0dG9uLgorKioq
IFR1cm5pbmcgY2FwdGlvbnMgb24KK0ZvdW5kIHRyYWNrbGlzdCBtZW51IGFuZCBsaXN0IG9mIHRy
YWNrcyBPSworRm91bmQgZm91ciBhdmFpbGFibGUgdHJhY2tzIGluIG1lbnUgT0sKK0VYUEVDVEVE
ICh0cmFja3MubGVuZ3RoID09ICczJykgT0sKK1RyYWNrIDAgc2hvdWxkIGJlIGRpc2FibGVkCitF
WFBFQ1RFRCAodHJhY2subW9kZSA9PSAnZGlzYWJsZWQnKSBPSworVHJhY2sgMSBzaG91bGQgYmUg
ZGlzYWJsZWQKK0VYUEVDVEVEICh0cmFjay5tb2RlID09ICdkaXNhYmxlZCcpIE9LCitUcmFjayAy
IHNob3VsZCBiZSBkaXNhYmxlZAorRVhQRUNURUQgKHRyYWNrLm1vZGUgPT0gJ2Rpc2FibGVkJykg
T0sKK05vIHRleHQgdHJhY2sgY3VlIHdpdGggZGlzcGxheSBpZCAnLXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrLWRpc3BsYXknIGlzIGN1cnJlbnRseSB2aXNpYmxlCitFTkQgT0YgVEVTVAorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9scy1jYXB0aW9ucy10cmFja21l
bnUuaHRtbCBiL0xheW91dFRlc3RzL21lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNr
bWVudS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjOTQwNjIyNmIxM2Y5NzJmYjUzYWE5YWE2YWJjZmQ3NWY3
YTA0YmUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS92aWRlby1jb250cm9s
cy1jYXB0aW9ucy10cmFja21lbnUuaHRtbApAQCAtMCwwICsxLDE0NSBAQAorPCFET0NUWVBFIGh0
bWw+Cis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHRpdGxlPlNlbGVjdGluZyBmcm9tIGEg
bGlzdCBvZiB0cmFja3M8L3RpdGxlPgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtY29udHJv
bHMuanMiPjwvc2NyaXB0PgorICAgICAgICA8c2NyaXB0IHNyYz0ibWVkaWEtZmlsZS5qcyI+PC9z
Y3JpcHQ+CisgICAgICAgIDxzY3JpcHQgc3JjPSJ2aWRlby10ZXN0LmpzIj48L3NjcmlwdD4KKyAg
ICAgICAgPHNjcmlwdD4KKyAgICAgICAgICAgIHZhciB0cmFja3M7CisgICAgICAgICAgICB2YXIg
Y2FwdGlvbnNCdXR0b25Db29yZGluYXRlczsKKworICAgICAgICAgICAgaWYgKHdpbmRvdy50ZXN0
UnVubmVyKQorICAgICAgICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAg
ICAgICAgICBmdW5jdGlvbiBjbGlja0NDQnV0dG9uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBjb25zb2xlV3JpdGUoIioqKiBDbGljayB0aGUgQ0MgYnV0dG9uLiIpOworICAgICAg
ICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0
ZXNbMF0sIGNhcHRpb25zQnV0dG9uQ29vcmRpbmF0ZXNbMV0pOworICAgICAgICAgICAgICAgIGV2
ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgICAgICAgICAgICAgIGV2ZW50U2VuZGVyLm1vdXNl
VXAoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc3RhcnRUZXN0KCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiKioqIFNldCB0aGUgdXNlciBsYW5n
dWFnZSBwcmVmZXJlbmNlLiIpOworICAgICAgICAgICAgICAgICAgICBydW4oImludGVybmFscy5z
ZXRVc2VyUHJlZmVycmVkTGFuZ3VhZ2VzKFsnZW4nXSkiKTsKKworICAgICAgICAgICAgICAgICAg
ICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FwdGlvbnNCdXR0b25Db29yZGluYXRl
cyA9IG1lZGlhQ29udHJvbHNCdXR0b25Db29yZGluYXRlcyh2aWRlbywgInRvZ2dsZS1jbG9zZWQt
Y2FwdGlvbnMtYnV0dG9uIik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGV4Y2VwdGlv
bikgeworICAgICAgICAgICAgICAgICAgICAgICAgZmFpbFRlc3QoZXhjZXB0aW9uLmRlc2NyaXB0
aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICBjbGlja0NDQnV0dG9uKCk7CisgICAgICAgICAgICAg
ICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09uLCAxMDApOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gc2VsZWN0Q2Fw
dGlvbk1lbnVJdGVtKGluZGV4LCBuZXh0U3RlcCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIgdHJhY2tMaXN0RWxlbWVudDsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAg
ICAgICAgICAgICAgICB0cmFja0xpc3RFbGVtZW50ID0gbWVkaWFDb250cm9sc0VsZW1lbnQoaW50
ZXJuYWxzLnNoYWRvd1Jvb3QodmlkZW8pLmZpcnN0Q2hpbGQsICItd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWNsb3NlZC1jYXB0aW9ucy10cmFjay1saXN0Iik7CisgICAgICAgICAgICAgICAgfSBjYXRj
aCAoZXhjZXB0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KGV4Y2VwdGlvbi5k
ZXNjcmlwdGlvbik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgLy8gVHJhY2sgbGlzdCBzaG91bGQgaGF2ZSBhIDx1bD4gd2l0
aCBmb3VyIDxsaT4gY2hpbGRyZW4gKE9uZSBvZiB0aGVtIGlzICJPZmYiKS4KKyAgICAgICAgICAg
ICAgICB2YXIgdHJhY2tMaXN0ID0gdHJhY2tMaXN0RWxlbWVudC5xdWVyeVNlbGVjdG9yKCJ1bCIp
OworICAgICAgICAgICAgICAgIGlmICghdHJhY2tMaXN0KSB7CisgICAgICAgICAgICAgICAgICAg
IGZhaWxUZXN0KCJDb3VsZCBub3QgZmluZCBhIGNoaWxkIHVsIGVsZW1lbnQgaW4gdHJhY2sgbGlz
dCBtZW51Iik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgbG9nUmVzdWx0KHRydWUsICJGb3VuZCB0cmFja2xpc3QgbWVudSBh
bmQgbGlzdCBvZiB0cmFja3MiKTsKKyAgICAgICAgICAgICAgICB2YXIgdHJhY2tMaXN0SXRlbXMg
PSB0cmFja0xpc3QucXVlcnlTZWxlY3RvckFsbCgibGkiKTsKKyAgICAgICAgICAgICAgICBpZiAo
IXRyYWNrTGlzdEl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIGZhaWxUZXN0KCJDb3VsZCBu
b3QgZmluZCBhIGNoaWxkIGxpIGVsZW1lbnRzIGluIHRyYWNrIGxpc3QgbWVudSIpOworICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAg
IGlmICh0cmFja0xpc3RJdGVtcy5sZW5ndGggIT0gNCkgeworICAgICAgICAgICAgICAgICAgICBm
YWlsVGVzdCgiRXhwZWN0ZWQgNCB0cmFja3MgaW4gbWVudSBidXQgZm91bmQgIiArIHRyYWNrTGlz
dEl0ZW1zLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgbG9nUmVzdWx0KHRydWUsICJGb3VuZCBmb3VyIGF2YWls
YWJsZSB0cmFja3MgaW4gbWVudSIpOworICAgICAgICAgICAgICAgIC8vIENsaWNrIG9uIHRoZSBz
ZWxlY3RlZCBpdGVtCisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdGVkVHJhY2tJdGVtID0gdHJh
Y2tMaXN0SXRlbXNbaW5kZXhdOworICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ1JlY3QgPSBz
ZWxlY3RlZFRyYWNrSXRlbS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsKKyAgICAgICAgICAgICAg
ICB2YXIgeCA9IGJvdW5kaW5nUmVjdC5sZWZ0ICsgYm91bmRpbmdSZWN0LndpZHRoIC8gMjsKKyAg
ICAgICAgICAgICAgICB2YXIgeSA9IGJvdW5kaW5nUmVjdC50b3AgKyBib3VuZGluZ1JlY3QuaGVp
Z2h0IC8gMjsKKyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsK
KyAgICAgICAgICAgICAgICBldmVudFNlbmRlci5tb3VzZURvd24oKTsKKyAgICAgICAgICAgICAg
ICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgICAgICAgICAgICAgd2luZG93LnNldFRpbWVv
dXQobmV4dFN0ZXAsIDEwMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZ1bmN0aW9u
IHR1cm5DYXB0aW9uc09uKCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xl
V3JpdGUoIioqKiBUdXJuaW5nIGNhcHRpb25zIG9uIik7CisgICAgICAgICAgICAgICAgLy8gQ2xp
Y2sgb24gdGhlIHRoaXJkIGl0ZW0sIHdoaWNoIGlzIHRoZSBzZWNvbmQgdHJhY2sgKE9mZiBpcyB0
aGUgZmlyc3QgaXRlbSBpbiB0aGUgbWVudSkKKyAgICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9u
TWVudUl0ZW0oMiwgdGVzdENhcHRpb25zVmlzaWJsZSk7CisgICAgICAgICAgICB9CisKKyAgICAg
ICAgICAgIGZ1bmN0aW9uIHRlc3RDYXB0aW9uc1Zpc2libGUoKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIHRyYWNrcyA9IHZpZGVvLnRleHRUcmFja3M7CisgICAgICAgICAgICAgICAg
dGVzdEV4cGVjdGVkKCJ0cmFja3MubGVuZ3RoIiwgMyk7CisgICAgICAgICAgICAgICAgY29uc29s
ZVdyaXRlKCJUcmFjayAwIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRy
YWNrID0gdHJhY2tzWzBdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9k
ZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0ZSgiVHJhY2sgMSBz
aG91bGQgYmUgc2hvd2luZyIpOworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzFdOwor
ICAgICAgICAgICAgICAgIHRlc3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJzaG93aW5nIik7Cisg
ICAgICAgICAgICAgICAgY29uc29sZVdyaXRlKCJUcmFjayAyIHNob3VsZCBiZSBkaXNhYmxlZCIp
OworICAgICAgICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzJdOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidHJhY2subW9kZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIHRl
c3RFeHBlY3RlZCgidGV4dFRyYWNrRGlzcGxheUVsZW1lbnQodmlkZW8sICdkaXNwbGF5JykuaW5u
ZXJUZXh0IiwgIkxvcmVtIik7CisgICAgICAgICAgICAgICAgY2xpY2tDQ0J1dHRvbigpOworICAg
ICAgICAgICAgICAgIHdpbmRvdy5zZXRUaW1lb3V0KHR1cm5DYXB0aW9uc09mZiwgMTAwKTsKKyAg
ICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rpb24gdHVybkNhcHRpb25zT2ZmKCkKKyAg
ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIioqKiBUdXJuaW5nIGNh
cHRpb25zIG9uIik7CisgICAgICAgICAgICAgICAgLy8gQ2xpY2sgdGhlIE9mZiBidXR0b24KKyAg
ICAgICAgICAgICAgICBzZWxlY3RDYXB0aW9uTWVudUl0ZW0oMCwgdGVzdENhcHRpb25zRGlzYWJs
ZWQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0Q2FwdGlvbnNE
aXNhYmxlZCgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdHJhY2tzID0gdmlkZW8u
dGV4dFRyYWNrczsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrcy5sZW5ndGgi
LCAzKTsKKyAgICAgICAgICAgICAgICBjb25zb2xlV3JpdGUoIlRyYWNrIDAgc2hvdWxkIGJlIGRp
c2FibGVkIik7CisgICAgICAgICAgICAgICAgdHJhY2sgPSB0cmFja3NbMF07CisgICAgICAgICAg
ICAgICAgdGVzdEV4cGVjdGVkKCJ0cmFjay5tb2RlIiwgImRpc2FibGVkIik7CisgICAgICAgICAg
ICAgICAgY29uc29sZVdyaXRlKCJUcmFjayAxIHNob3VsZCBiZSBkaXNhYmxlZCIpOworICAgICAg
ICAgICAgICAgIHRyYWNrID0gdHJhY2tzWzFdOworICAgICAgICAgICAgICAgIHRlc3RFeHBlY3Rl
ZCgidHJhY2subW9kZSIsICJkaXNhYmxlZCIpOworICAgICAgICAgICAgICAgIGNvbnNvbGVXcml0
ZSgiVHJhY2sgMiBzaG91bGQgYmUgZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICB0cmFjayA9
IHRyYWNrc1syXTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRyYWNrLm1vZGUiLCAi
ZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICB0ZXN0RXhwZWN0ZWQoInRleHRUcmFja0Rpc3Bs
YXlFbGVtZW50KHZpZGVvLCAnZGlzcGxheScpLmlubmVyVGV4dCIsICJMb3JlbSIpOworICAgICAg
ICAgICAgICAgIGVuZFRlc3QoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZnVuY3Rp
b24gc3RhcnQoKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZpbmRNZWRpYUVsZW1l
bnQoKTsKKyAgICAgICAgICAgICAgICB3YWl0Rm9yRXZlbnQoJ2NhbnBsYXl0aHJvdWdoJywgc3Rh
cnRUZXN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgor
CisgICAgPGJvZHkgb25sb2FkPSJzdGFydCgpIj4KKyAgICAgICAgPHA+VGVzdCB0aGF0IHdlIGFy
ZSBhYmxlIHRvIHRyaWdnZXIgdGhlIGxpc3Qgb2YgY2FwdGlvbnMsIGFuZCBzZWxlY3QgZnJvbSB0
aGUgbGlzdC48L3A+CisgICAgICAgIDx2aWRlbyB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCIgY29u
dHJvbHM+CisgICAgICAgICAgICA8c291cmNlIHNyYz0iY29udGVudC90ZXN0Lm1wNCIgdHlwZT0i
dmlkZW8vbXA0Ij4KKyAgICAgICAgICAgIDxzb3VyY2Ugc3JjPSJjb250ZW50L3Rlc3Qub2d2IiB0
eXBlPSJ2aWRlby9vZ2ciPgorICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9
InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4iPgor
ICAgICAgICAgICAgPHRyYWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdl
YnZ0dC9jYXB0aW9ucy1mYXN0LnZ0dCIgc3JjbGFuZz0iZW4tYXUiPgorICAgICAgICAgICAgPHRy
YWNrIGtpbmQ9ImNhcHRpb25zIiBzcmM9InRyYWNrL2NhcHRpb25zLXdlYnZ0dC9jYXB0aW9ucy1m
YXN0LnZ0dCIgc3JjbGFuZz0iamEiPgorICAgICAgICA8L3ZpZGVvPgorICAgIDwvYm9keT4KKzwv
aHRtbD4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4
cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlv
bnMKaW5kZXggZmRhOTE1N2ZkN2NiMzQ4NzYxMGI1ZTA1MzNiYjBjYWY5MzdlYTJmMS4uNzU4OTc0
NDMyYTNjNGQ5NzM4MjJiOGJhNTIxMmNmMmYzNTZkN2UwNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjk4LDYgKzM2OTgsOSBAQCB3
ZWJraXQub3JnL2IvOTI1NzAgWyBXaW4gRGVidWcgXSBpbnNwZWN0b3IvdGltZWxpbmUvdGltZWxp
bmUtc3RhcnQtdGltZS5odG1sIFsgRgogCiB3ZWJraXQub3JnL2IvOTQyNDIgWyBBbmRyb2lkIERl
YnVnIF0gbWVkaWEvdHJhY2svdHJhY2stY3Vlcy1zb3J0ZWQtYmVmb3JlLWRpc3BhdGNoLmh0bWwg
WyBDcmFzaCBQYXNzIFRpbWVvdXQgXQogCisjIENocm9taXVtIHN0aWxsIGhhcyB0aGUgQ0MgdG9n
Z2xlIGJ1dHRvbiwgbm90IHRoZSBtZW51IG9mIHRyYWNrcy4KK3dlYmtpdC5vcmcvYi8xMDE2NzAg
bWVkaWEvdmlkZW8tY29udHJvbHMtY2FwdGlvbnMtdHJhY2ttZW51Lmh0bWwgWyBTa2lwIF0KKwog
IyBTdXBwb3NlZGx5IHN0YXJ0ZWQgZmFpbGluZyBiZXR3ZWVuIENSIHIxNDA3NjAgYW5kIENSIHIx
NDEyMTYuICBUaGUgZmFpbHVyZXMKICMgbG9vayBsaWtlIHRoZXkgaW52b2x2ZSBhbnRpYWxpYXNp
bmc7IHRoZSBmYWN0IHRoYXQgdGhlIHRlc3QgY2xlYXJseSBleHBlY3RzCiAjIHRoZXNlIHBpeGVs
cyBub3QgdG8gYmUgYW50aWFsaWFzZWQgbWVhbnMgdGhlc2Ugc2hvdWxkbid0IGp1c3QgYmUgcmVi
YXNlbGluZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
ODU5MTQ1YWVjNDQzZGY0ZTQ2ZDE3NTg5MDZhYWQwZGUzNTJiM2UwNS4uYjJhNjUxM2VhZGFhM2Ji
MWZlN2EwOWNmOWZhMmU2NjMyYTE1OTE3NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZWZsL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTE2ODYsNiArMTY4Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNjcg
ZmFzdC9mb3Jtcy96b29tZWQtY29udHJvbHMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgTWlzc2lu
ZyBdCiAKIHdlYmtpdC5vcmcvYi8xMDI0OTMgZmFzdC9ldmVudHMvbW91c2UtY3Vyc29yLmh0bWwg
WyBGYWlsdXJlIF0KIAorIyBFRkwgc3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBub3Qg
dGhlIG1lbnUgb2YgdHJhY2tzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1jb250
cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQorCiAjIEZhaWxzIHVudGlsIHdl
IGVuYWJsZSB0aGUgUmVzb3VyY2UgVGltaW5nIEFQSS4KIHdlYmtpdC5vcmcvYi82MTEzOCBodHRw
L3Rlc3RzL3czYy93ZWJwZXJmL3N1Ym1pc3Npb24vcmVzb3VyY2UtdGltaW5nIFsgU2tpcCBdCiAK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9UZXN0RXhwZWN0YXRpb25zIGIv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggYThmOWViNmNm
ZjhlNzI2MTQwZmRmMDU1NjQ0NzE2NDZlMmRlYWJmOC4uNmI5Mzg2ODEyOTBhMDQzOWMxYmI0ZmMx
ODRjNGVjYjU2MmUyMGI1ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rl
c3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTEzOTEsNiArMTM5MSw5IEBAIHdlYmtpdC5vcmcvYi8xMDIzNDkgZmFzdC9kb20v
c2hhZG93L3BzZXVkb2NsYXNzLXVwZGF0ZS1lbmFibGVkLWFyZWEuaHRtbCBbIEltYWdlCiAKIHdl
YmtpdC5vcmcvYi8xMDI1ODYgbWVkaWEvdmlkZW8tc3JjLWJsb2IuaHRtbCBbIEZhaWx1cmUgXQog
CisjIEdUSyBzdGlsbCBoYXMgdGhlIENDIHRvZ2dsZSBidXR0b24sIG5vdCB0aGUgbWVudSBvZiB0
cmFja3MuCit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlhL3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25z
LXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCisKICMgRml4IGZvciBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTcxOTIgaW50cm9kdWNlcyB0aGVzZSByZWdyZXNzaW9ucwog
d2Via2l0Lm9yZy9iLzEwMjc3NiBtZWRpYS9tZWRpYS1kb2N1bWVudC1hdWRpby1yZXBhaW50Lmh0
bWwgWyBGYWlsdXJlIF0KIHdlYmtpdC5vcmcvYi8xMDI3NzYgbWVkaWEvdHJhY2svdHJhY2stY3Vl
LWNvbnRhaW5lci1yZW5kZXJpbmctcG9zaXRpb24uaHRtbCBbIEZhaWx1cmUgXQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA2MDljYWM2MDFkZTZhODY1YzAx
OTViNjY0MTVlNDZmOWRmMjNiZWU1Li5hM2ZlY2IwY2Q1YjQyMmMwYzdlY2QxNjJiYzlmMTAxYjkz
MjNhMjU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0
aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAt
MTE4OCw2ICsxMTg4LDkgQEAgd2Via2l0Lm9yZy9iLzEwMDE0MiBjc3MzL2ZpbHRlcnMvZWZmZWN0
LXJlZmVyZW5jZS1ody5odG1sIFsgRmFpbCBdCiB3ZWJraXQub3JnL2IvMTAwMTQyIGNzczMvZmls
dGVycy9lZmZlY3QtcmVmZXJlbmNlLW9yZGVyaW5nLWh3Lmh0bWwgWyBGYWlsIF0KIHdlYmtpdC5v
cmcvYi8xMDAxNDIgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UuaHRtbCBbIEZhaWwgXQog
CisjIE1hYyBkb2Vzbid0IGhhdmUgYSB0b2dnbGUgZm9yIENDIGFueSBtb3JlLCBpdCdzIGJhc2Vk
IG9uIGEgbWVudSBvZiBjaG9pY2VzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1j
b250cm9scy1jYXB0aW9ucy5odG1sIFsgU2tpcCBdCisKICMgT3ZlcmZsb3dpbmcgTGF5b3V0VW5p
dHMgY2F1c2UgUmVuZGVyR2VvbWV0cnlNYXAgYXNzZXJ0aW9ucwogd2Via2l0Lm9yZy9iLzY3NDM0
IFsgRGVidWcgXSBmYXN0L292ZXJmbG93L292ZXJmbG93LWhlaWdodC1mbG9hdC1ub3QtcmVtb3Zl
ZC1jcmFzaC5odG1sIFsgU2tpcCBdCiB3ZWJraXQub3JnL2IvNjc0MzQgWyBEZWJ1ZyBdIGZhc3Qv
b3ZlcmZsb3cvb3ZlcmZsb3ctaGVpZ2h0LWZsb2F0LW5vdC1yZW1vdmVkLWNyYXNoMi5odG1sIFsg
U2tpcCBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9UZXN0RXhwZWN0YXRp
b25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvVGVzdEV4cGVjdGF0aW9ucwppbmRleCA5NzA4
NzUzNGYxNTg5NWVmZDM3MzJhNzJiMzkzNTRhZTI4OTBhYjdjLi5mZWVlMzgxMDkyNDExZjI4NTJl
YWYwOWQzYmRjOGI1NTUxOGRmZTg4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Rlc3RFeHBl
Y3RhdGlvbnMKQEAgLTIzNjYsNiArMjM2Niw5IEBAIHdlYmtpdC5vcmcvYi8xMDE1MzkgZWRpdGlu
Zy9leGVjQ29tbWFuZC9zd2l0Y2gtbGlzdC10eXBlLXdpdGgtb3JwaGFuZWQtbGkuaHRtbCBbCiB3
ZWJraXQub3JnL2IvMTAwODQ2IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1wYXVzZS1kZWRp
Y2F0ZWQtd29ya2VyLmh0bWwgWyBTa2lwIF0KIHdlYmtpdC5vcmcvYi8xMDA4NDYgaW5zcGVjdG9y
LXByb3RvY29sL2RlYnVnZ2VyLXRlcm1pbmF0ZS1kZWRpY2F0ZWQtd29ya2VyLXdoaWxlLXBhdXNl
ZC5odG1sIFsgU2tpcCBdCiAKKyMgUVQgc3RpbGwgaGFzIHRoZSBDQyB0b2dnbGUgYnV0dG9uLCBu
b3QgdGhlIG1lbnUgb2YgdHJhY2tzLgord2Via2l0Lm9yZy9iLzEwMTY3MCBtZWRpYS92aWRlby1j
b250cm9scy1jYXB0aW9ucy10cmFja21lbnUuaHRtbCBbIFNraXAgXQorCiAjIE5ldywgYnV0IGZh
aWxpbmcgdGVzdAogd2Via2l0Lm9yZy9iLzEwMTAzNSBmYXN0L2ltYWdlcy9leGlmLW9yaWVudGF0
aW9uLWltYWdlLWRvY3VtZW50Lmh0bWwKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4
cGVjdGF0aW9ucwppbmRleCAxNDU4MmMyOTFkMGRkMTRkODUyNjgwYjU3Y2EyNWQwYTk2ODYxMmU5
Li5jMGE0YjA2MWIxYWFmYWYxZTlhOGEzNjgxYmI3YzE5ODU1YzU0N2FiIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtMjM1MCw2ICsyMzUwLDkgQEAgd2Vi
a2l0Lm9yZy9iLzk4NjY2IGZhc3QvcmVwYWludC9zbGlkZXItdGh1bWItZmxvYXQuaHRtbCBbIEZh
aWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4NjY2IG1lZGlhL3RyYWNrL3RyYWNrLWN1ZS1yZW5kZXJp
bmctdmVydGljYWwuaHRtbCBbIEZhaWx1cmUgXQogd2Via2l0Lm9yZy9iLzk4NjY2IG1lZGlhL3Ry
YWNrL3RyYWNrLWN1ZS1yZW5kZXJpbmctaG9yaXpvbnRhbC5odG1sIFsgRmFpbHVyZSBdCiAKKyMg
V2luIGRvZXNuJ3Qgc3VwcG9ydCB0cmFjayBtZW51Cit3ZWJraXQub3JnL2IvMTAxNjcwIG1lZGlh
L3ZpZGVvLWNvbnRyb2xzLWNhcHRpb25zLXRyYWNrbWVudS5odG1sIFsgU2tpcCBdCisKICNodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTgwNzkKIGh0dHAvdGVzdHMvc2Vj
dXJpdHkvY3Jvc3Mtb3JpZ2luLWxvY2FsLXN0b3JhZ2Utd2sxLmh0bWwKIAo=
</data>
<flag name="review"
          id="191890"
          type_id="1"
          status="+"
          setter="eric.carlson"
    />
          </attachment>
      

    </bug>

</bugzilla>