<?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>111700</bug_id>
          
          <creation_ts>2013-03-07 02:02:01 -0800</creation_ts>
          <short_desc>Rename &apos;KURL::elidedString&apos; and inspector&apos;s &apos;String::trimMiddle&apos; for clarity.</short_desc>
          <delta_ts>2013-05-30 05:08:51 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>116924</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mike West">mkwst</reporter>
          <assigned_to name="Mike West">mkwst</assigned_to>
          <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>eric</cc>
    
    <cc>jochen</cc>
    
    <cc>mjs</cc>
    
    <cc>pfeldman</cc>
    
    <cc>timothy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>849889</commentid>
    <comment_count>0</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-07 02:02:01 -0800</bug_when>
    <thetext>In https://bugs.webkit.org/show_bug.cgi?id=111133#c21, Darin suggested that the current name for the process of shortening a URL&apos;s string representation was poorly chosen. We should rename it for clarity.

othermaciej suggested &quot;centerEllipsizeToLength&quot; or &quot;centerTruncate&quot;.  dydx liked &quot;ellipsize&quot;. I&apos;ll put something together here, and rename the various callsites.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849895</commentid>
    <comment_count>1</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-07 02:10:51 -0800</bug_when>
    <thetext>For consistency, I&apos;ll adjust the &apos;trimMiddle&apos; method that the Inspector adds to the String prototype as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>849905</commentid>
    <comment_count>2</comment_count>
      <attachid>191958</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-07 02:28:45 -0800</bug_when>
    <thetext>Created attachment 191958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850268</commentid>
    <comment_count>3</comment_count>
      <attachid>191958</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-03-07 10:45:54 -0800</bug_when>
    <thetext>Comment on attachment 191958
Patch

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

A few drive by comments below.

I&apos;m unsure if trimming URLs at this level is the right approach. Ideally, Web Inspector would show a shorter URL, but still allow for copying the full one to pasteboard, or possibly expanding inline. Also, an ellipsis in the middle of a 1024 character string is extremely hard to spot, so it could be highlighted in the UI by using a prominent style.

&gt; Source/WebCore/Modules/websockets/WebSocket.cpp:218
&gt; +        scriptExecutionContext()-&gt;addConsoleMessage(JSMessageSource, ErrorMessageLevel, &quot;Invalid url for WebSocket &quot; + m_url.stringCenterEllipsizedToLength());

All these call sites look a bit weird without a length argument. But I don&apos;t have a better suggestion.

&gt; Source/WebCore/platform/KURL.cpp:1928
&gt; +String KURL::stringCenterEllipsizedToLength(unsigned length) const

Since the result of this function is for viewing only, perhaps we should convert IDNA host names?

&gt; Source/WebCore/platform/KURL.cpp:1933
&gt; +    return string().left(length / 2 - 1) + &quot;...&quot; + string().right(length / 2 - 2);

It would be nice to use an ellipsis (U+2026), not three periods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850282</commentid>
    <comment_count>4</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-07 10:55:34 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 191958 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=191958&amp;action=review
&gt; 
&gt; A few drive by comments below.

Thanks, much appreciated.

&gt; I&apos;m unsure if trimming URLs at this level is the right approach. Ideally, Web Inspector would show a shorter URL, but still allow for copying the full one to pasteboard, or possibly expanding inline. Also, an ellipsis in the middle of a 1024 character string is extremely hard to spot, so it could be highlighted in the UI by using a prominent style.

It&apos;s a little complex. Here&apos;s a bit of background for context:

Web Inspector does currently show a shorter, linkified URL for all those longer than ~150 characters. If the URL is shorter than 1k, the full URL is linked, and the short URL is displayed.

Eric noted in bug 111133 that we&apos;re potentially doing a _lot_ of copying in order to produce these strings, especially in the case of &apos;data:&apos; URLs. These URLs especially cause problems when being dumped to the command line or to console.app.

That discussion lead to the patch in 111133 trimming the underlying string before passing it into the inspector.

&gt; &gt; Source/WebCore/Modules/websockets/WebSocket.cpp:218
&gt; &gt; +        scriptExecutionContext()-&gt;addConsoleMessage(JSMessageSource, ErrorMessageLevel, &quot;Invalid url for WebSocket &quot; + m_url.stringCenterEllipsizedToLength());
&gt; 
&gt; All these call sites look a bit weird without a length argument. But I don&apos;t have a better suggestion.

I considered adding a static property on Console to pass in here, but that seemed like pure overhead. I&apos;d like to avoid boilerplate to the extent possible.

What might make more sense is to move the method to Console, and to do the trimming there. Something like &apos;Console::centerEllipsizeForConsole(const String&amp;)&apos;. Would that be more clear?
 
&gt; &gt; Source/WebCore/platform/KURL.cpp:1928
&gt; &gt; +String KURL::stringCenterEllipsizedToLength(unsigned length) const
&gt; 
&gt; Since the result of this function is for viewing only, perhaps we should convert IDNA host names?

I&apos;ve no idea if we do anything useful with those, honestly. If we don&apos;t, it would be a good idea to teach the console about them when it goes through linkifying URLs.

&gt; &gt; Source/WebCore/platform/KURL.cpp:1933
&gt; &gt; +    return string().left(length / 2 - 1) + &quot;...&quot; + string().right(length / 2 - 2);
&gt; 
&gt; It would be nice to use an ellipsis (U+2026), not three periods.

I considered that; is it safe to throw unicode out to the console?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854272</commentid>
    <comment_count>5</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-03-13 07:00:02 -0700</bug_when>
    <thetext>+jochen, eric: Since you reviewed the original patch, perhaps you have opinions about this renaming discussion? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895454</commentid>
    <comment_count>6</comment_count>
      <attachid>203337</attachid>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-05-30 03:18:00 -0700</bug_when>
    <thetext>Created attachment 203337
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895455</commentid>
    <comment_count>7</comment_count>
    <who name="Mike West">mkwst</who>
    <bug_when>2013-05-30 03:18:40 -0700</bug_when>
    <thetext>Thanks for the review, Darin. Apologies for the belated rebase/upload. Assuming this passes the bots, I&apos;ll land it tonight.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895488</commentid>
    <comment_count>8</comment_count>
      <attachid>203337</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-30 05:08:47 -0700</bug_when>
    <thetext>Comment on attachment 203337
Patch

Clearing flags on attachment: 203337

Committed r150957: &lt;http://trac.webkit.org/changeset/150957&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>895489</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-05-30 05:08:51 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>191958</attachid>
            <date>2013-03-07 02:28:45 -0800</date>
            <delta_ts>2013-05-30 03:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111700-20130307112449.patch</filename>
            <type>text/plain</type>
            <size>35958</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MDUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmVhYmNiYzI0OGUxMjlk
ZTc4OWVlMmFiNTRkMzY2NjM5M2Q1M2I1My4uZGIxZmM2MjVhZWM1MWY2ZmVjZjllODcyODU1MGRj
YjcyMmY0NzllYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTAzLTA3ICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lICdLVVJMOjplbGlk
ZWRTdHJpbmcnIGFuZCBpbnNwZWN0b3IncyAnU3RyaW5nLnByb3RvdHlwZS50cmltTWlkZGxlJyBm
b3IgY2xhcml0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMTcwMAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIERhcmluIHN1Z2dlc3RlZCB0aGF0ICdLVVJMOjplbGlkZWRTdHJpbmcnIGlzIGluYWNjdXJh
dGVseSBuYW1lZFsxXSwgdGhpcworICAgICAgICBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGRvIGJl
dHRlci4gSXQgYWRkaXRpb25hbGx5IGJyaW5ncyB0aGUgSW5zcGVjdG9yJ3MKKyAgICAgICAgJ1N0
cmluZy5wcm90b3R5cGUudHJpbU1pZGRsZScgbWV0aG9kIGludG8gbGluZSwgYXMgdGhlIHR3byBt
ZXRob2RzIGRvCisgICAgICAgIG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB0aGluZy4KKworICAgICAg
ICBBZnRlciBhIGJpdCBvZiBkaXNjdXNzaW9uIHdpdGggTWFjaWVqIGFuZCBEYW5pZWwgQmF0ZXMg
b24gSVJDLCBJJ3ZlCisgICAgICAgIHNldHRsZWQgb24gJ0tVUkw6OnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCh1bnNpZ25lZCknIGFuZAorICAgICAgICAnU3RyaW5nLnByb3RvdHlwZS5j
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgobnVtYmVyKScgcmVzcGVjdGl2ZWx5LgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhcmUgYWRkZWQsIGFzIHRoaXMgcGF0Y2ggc2hvdWxkbid0IGhhdmUgYW55
IHZpc2libGUgZWZmZWN0CisgICAgICAgIG9uIHRoZSB3ZWIuIEl0J3Mgc3RyaWN0bHkgYW4gaW50
ZXJuYWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29j
a2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0
cy9XZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5u
ZWw6OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6Cisg
ICAgICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAqIGRv
bS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBF
cXVpdik6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVk
aWFFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBs
YXlUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9h
ZFVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpj
b21taXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNo
b3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VS
ZWNlaXZlZCk6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyk6CisgICAgICAg
ICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgorICAgICAgICAq
IGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAg
ICogcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NQ
RGlyZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAo
V2ViQ29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZSk6CisgICAgICAgIChX
ZWJDb3JlOjpDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdpblR5cGUpOgorICAgICAgICAqIHBs
YXRmb3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgICAg
ICBSZW5hbWUgJ0tVUkw6OmVsaWRlZFN0cmluZycgdG8gJ0tVUkw6OnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCcsCisgICAgICAgICAgICBhbmQgYWRqdXN0IGNhbGxzaXRlcyBhY2NvcmRp
bmdseS4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5l
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLlBsYWNhcmQu
cHJvdG90eXBlLl91cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVu
dHNUcmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVt
ZW50LnByb3RvdHlwZS5fYnVpbGRBdHRyaWJ1dGVET00pOgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZS5zaG9ydGVuV2luZG93VVJM
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qczoKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5MaW5raWZpZXIuRGVmYXVsdEZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0
TGl2ZUFuY2hvcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxz
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUpOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3RpdGxlRm9yRmls
ZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAg
ICAgICBSZW5hbWUgJ1N0cmluZy5wcm90b3R5cGUudHJpbU1pZGRsZScgdG8gJ1N0cmluZy5wcm90
b3R5cGUuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoJworICAgICAgICAgICAgYW5kIGFkanVzdCBj
YWxsc2l0ZXMgYWNjb3JkaW5nbHkuCisKIDIwMTMtMDMtMDcgIFZpY3RvciBDYXJidW5lICA8dmNh
cmJ1bmVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFRleHRUcmFja1JlZ2lvbiBDb25zdHJ1Y3Rv
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApp
bmRleCAxNjU0NWE0MTEyOTZiYzdlMmY1NjgyY2RjMWU3NjE2YmY4NjUzNjcyLi43MzhmMWIyY2U2
YzA1OWU0YzZiNTdlOTg2Y2U3ODYzNDQ5NzQ4OWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0LmNwcApAQCAtMjE1LDIwICsyMTUsMjAgQEAgdm9p
ZCBXZWJTb2NrZXQ6OmNvbm5lY3QoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBwcm90b2NvbHMsIEV4Y2UKICAgICBtX3VybCA9IEtVUkwoS1VSTCgpLCB1cmwpOwogCiAg
ICAgaWYgKCFtX3VybC5pc1ZhbGlkKCkpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4
dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVs
LCAiSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCAiICsgbV91cmwuZWxpZGVkU3RyaW5nKCkpOwor
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJJbnZhbGlkIHVybCBmb3IgV2ViU29ja2V0
ICIgKyBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAgICAgICAgIG1f
c3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIAogICAgIGlmICghbV91cmwucHJvdG9jb2xJcygid3MiKSAmJiAhbV91cmwucHJv
dG9jb2xJcygid3NzIikpIHsKLSAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpLT5hZGRD
b25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiV3Jvbmcg
dXJsIHNjaGVtZSBmb3IgV2ViU29ja2V0ICIgKyBtX3VybC5lbGlkZWRTdHJpbmcoKSk7CisgICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tl
dCAiICsgbV91cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBt
X3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKG1fdXJsLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpKSB7Ci0gICAg
ICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdl
U291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIlVSTCBoYXMgZnJhZ21lbnQgY29tcG9uZW50ICIg
KyBtX3VybC5lbGlkZWRTdHJpbmcoKSk7CisgICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IlVSTCBoYXMgZnJhZ21lbnQgY29tcG9uZW50ICIgKyBtX3VybC5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSk7CiAgICAgICAgIG1fc3RhdGUgPSBDTE9TRUQ7CiAgICAgICAgIGVjID0g
U1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMzUzLDcgKzM1Myw3IEBAIGJvb2wgV2Vi
U29ja2V0OjpzZW5kKEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3LCBFeGNlcHRpb25D
b2RlJiBlYykKIAogYm9vbCBXZWJTb2NrZXQ6OnNlbmQoQmxvYiogYmluYXJ5RGF0YSwgRXhjZXB0
aW9uQ29kZSYgZWMpCiB7Ci0gICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCBibG9i
ICVzIiwgdGhpcywgYmluYXJ5RGF0YS0+dXJsKCkuZWxpZGVkU3RyaW5nKCkudXRmOCgpLmRhdGEo
KSk7CisgICAgTE9HKE5ldHdvcmssICJXZWJTb2NrZXQgJXAgc2VuZCBibG9iICVzIiwgdGhpcywg
YmluYXJ5RGF0YS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgp
LmRhdGEoKSk7CiAgICAgQVNTRVJUKGJpbmFyeURhdGEpOwogICAgIGlmIChtX3N0YXRlID09IENP
Tk5FQ1RJTkcpIHsKICAgICAgICAgZWMgPSBJTlZBTElEX1NUQVRFX0VSUjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApp
bmRleCA1YjQ1ZTFhNDFmODFjZTllMjY4YzZjNGM1NWQ4OTkyNDI5ZDY3MWRiLi5mNGZhMzU0MjZk
MDI2ZGFhOWMyNzQxMWQ1ZTQ5Nzc5ZTRkYmI5YTYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCkBAIC0xNTgsNyAr
MTU4LDcgQEAgVGhyZWFkYWJsZVdlYlNvY2tldENoYW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0
Q2hhbm5lbDo6c2VuZChjb25zdCBBcnJheUJ1ZmZlciYKIAogVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRSZXN1bHQgV2ViU29ja2V0Q2hhbm5lbDo6c2VuZChjb25zdCBCbG9iJiBiaW5h
cnlEYXRhKQogewotICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGJs
b2IgJXMiLCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRh
KCkpOworICAgIExPRyhOZXR3b3JrLCAiV2ViU29ja2V0Q2hhbm5lbCAlcCBzZW5kIGJsb2IgJXMi
LCB0aGlzLCBiaW5hcnlEYXRhLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LnV0ZjgoKS5kYXRhKCkpOwogICAgIGVucXVldWVCbG9iRnJhbWUoV2ViU29ja2V0RnJhbWU6Ok9w
Q29kZUJpbmFyeSwgYmluYXJ5RGF0YSk7CiAgICAgcmV0dXJuIFRocmVhZGFibGVXZWJTb2NrZXRD
aGFubmVsOjpTZW5kU3VjY2VzczsKIH0KQEAgLTE5NSw3ICsxOTUsNyBAQCB2b2lkIFdlYlNvY2tl
dENoYW5uZWw6OmZhaWwoY29uc3QgU3RyaW5nJiByZWFzb24pCiAgICAgQVNTRVJUKCFtX3N1c3Bl
bmRlZCk7CiAgICAgaWYgKG1fZG9jdW1lbnQpIHsKICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpkaWRSZWNlaXZlV2ViU29ja2V0RnJhbWVFcnJvcihtX2RvY3VtZW50LCBtX2lkZW50
aWZpZXIsIHJlYXNvbik7Ci0gICAgICAgIG1fZG9jdW1lbnQtPmFkZENvbnNvbGVNZXNzYWdlKE5l
dHdvcmtNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldlYlNvY2tldCBjb25uZWN0
aW9uIHRvICciICsgbV9oYW5kc2hha2UtPnVybCgpLmVsaWRlZFN0cmluZygpICsgIicgZmFpbGVk
OiAiICsgcmVhc29uKTsKKyAgICAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTmV0
d29ya01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiV2ViU29ja2V0IGNvbm5lY3Rp
b24gdG8gJyIgKyBtX2hhbmRzaGFrZS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKCkgKyAiJyBmYWlsZWQ6ICIgKyByZWFzb24pOwogICAgIH0KIAogICAgIC8vIEh5YmktMTAg
c3BlY2lmaWNhdGlvbiBleHBsaWNpdGx5IHN0YXRlcyB3ZSBtdXN0IG5vdCBjb250aW51ZSB0byBo
YW5kbGUgaW5jb21pbmcgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
U2NyaXB0Q29udHJvbGxlckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0
Q29udHJvbGxlckJhc2UuY3BwCmluZGV4IGUzY2Y4YmY1ODVlNGUwYjVkOWVlNjgwZTgyY2JiZTE1
NDc2NWE0MzguLmJmNmI2ODFhMjJmODhkNTcyMmYwYzhlN2I1YzQwOTM4MWEzNTQxNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250cm9sbGVyQmFzZS5jcHAKQEAg
LTQyLDcgKzQyLDcgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVyOjpjYW5FeGVjdXRlU2NyaXB0cyhS
ZWFzb25Gb3JDYWxsaW5nQ2FuRXhlY3V0ZVNjcmlwdHMgcmVhc28KICAgICBpZiAobV9mcmFtZS0+
ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5pc1NhbmRib3hlZChTYW5kYm94U2Ny
aXB0cykpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBzaG91bGQgYmUgbW92ZWQg
b2ZmIHRoZSBjb25zb2xlIG9uY2UgYSBzb2x1dGlvbiB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMjc0IGV4aXN0cy4KICAgICAgICAgaWYgKHJlYXNvbiA9PSBB
Ym91dFRvRXhlY3V0ZVNjcmlwdCkKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJCbG9ja2VkIHNjcmlwdCBleGVjdXRpb24gaW4gJyIgKyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMg
c2FuZGJveGVkIGFuZCB0aGUgJ2FsbG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4i
KTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKFNl
Y3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCbG9ja2VkIHNjcmlwdCBl
eGVjdXRpb24gaW4gJyIgKyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJF
bGxpcHNpemVkVG9MZW5ndGgoKSArICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMg
c2FuZGJveGVkIGFuZCB0aGUgJ2FsbG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4i
KTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
aW5kZXggMzQ4ZWM4OTc2Njk5OWZiYjcxOTAyOGI4NGIxMGI2Y2IzOTAxZDY2Zi4uZDQxYTk2NjNh
ZTRmN2M4OWIxOTY1MWM5YTcyMWI3OGQwMmExZmVlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CkBAIC0yODc2LDcgKzI4NzYsNyBAQCB2b2lkIERvY3VtZW50Ojpwcm9jZXNzSHR0cEVxdWl2KGNv
bnN0IFN0cmluZyYgZXF1aXYsIGNvbnN0IFN0cmluZyYgY29udGVudCkKICAgICAgICAgICAgIGlm
IChmcmFtZUxvYWRlci0+YWN0aXZlRG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZUxvYWRlci0+YWN0
aXZlRG9jdW1lbnRMb2FkZXIoKS0+bWFpblJlc291cmNlTG9hZGVyKCkpCiAgICAgICAgICAgICAg
ICAgcmVxdWVzdElkZW50aWZpZXIgPSBmcmFtZUxvYWRlci0+YWN0aXZlRG9jdW1lbnRMb2FkZXIo
KS0+bWFpblJlc291cmNlTG9hZGVyKCktPmlkZW50aWZpZXIoKTsKICAgICAgICAgICAgIGlmIChm
cmFtZUxvYWRlci0+c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwg
dXJsKCksIHJlcXVlc3RJZGVudGlmaWVyKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBtZXNz
YWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHVybCgpLmVsaWRlZFN0cmluZygpICsgIicg
aW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIGNvbnRl
bnQgKyAiJy4iOworICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8g
ZGlzcGxheSAnIiArIHVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicg
aW4gYSBmcmFtZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIGNvbnRl
bnQgKyAiJy4iOwogICAgICAgICAgICAgICAgIGZyYW1lTG9hZGVyLT5zdG9wQWxsTG9hZGVycygp
OwogICAgICAgICAgICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCktPnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2Uoc2VjdXJpdHlPcmlnaW4oKSwgYmxhbmtVUkwoKSwgU3RyaW5nKCkpOwog
ICAgICAgICAgICAgICAgIGFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwg
RXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UsIHJlcXVlc3RJZGVudGlmaWVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCA0YjJmNmMyMzdlYzA3OGYzZmViMGFhMDc5YmQy
NDBhYTlkMmYxODViLi5kOTAxMjczY2E0NjIxN2E1OWJkOGU2NWY3OWRkZDZlOWM4ZDIwZThjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yOTYsNyArMjk2LDcgQEAgdm9p
ZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJjZUNvZGUmIHNv
dXJjZUNvZGUpCiAKICNpZiBFTkFCTEUoTk9TTklGRikKICAgICBpZiAobV9pc0V4dGVybmFsU2Ny
aXB0ICYmIG1fY2FjaGVkU2NyaXB0ICYmICFtX2NhY2hlZFNjcmlwdC0+bWltZVR5cGVBbGxvd2Vk
QnlOb3NuaWZmKCkpIHsKLSAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShTZWN1cml0eU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiUmVmdXNl
ZCB0byBleGVjdXRlIHNjcmlwdCBmcm9tICciICsgbV9jYWNoZWRTY3JpcHQtPnVybCgpLmVsaWRl
ZFN0cmluZygpICsgIicgYmVjYXVzZSBpdHMgTUlNRSB0eXBlICgnIiArIG1fY2FjaGVkU2NyaXB0
LT5taW1lVHlwZSgpICsgIicpIGlzIG5vdCBleGVjdXRhYmxlLCBhbmQgc3RyaWN0IE1JTUUgdHlw
ZSBjaGVja2luZyBpcyBlbmFibGVkLiIpOworICAgICAgICBtX2VsZW1lbnQtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJSZWZ1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0IGZyb20gJyIgKyBtX2NhY2hlZFNjcmlwdC0+
dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIGl0cyBN
SU1FIHR5cGUgKCciICsgbV9jYWNoZWRTY3JpcHQtPm1pbWVUeXBlKCkgKyAiJykgaXMgbm90IGV4
ZWN1dGFibGUsIGFuZCBzdHJpY3QgTUlNRSB0eXBlIGNoZWNraW5nIGlzIGVuYWJsZWQuIik7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRp
YUVsZW1lbnQuY3BwCmluZGV4IDFlODlkZmMyZWYwOWI5ODY0ZjI1MjcwZThjZDYwYjczMTY1NDg5
MzMuLjA2NTgxYThlNWYxZWJiNjZiZGIxOTJlNjA3N2YwNDhjNmZkNzNhN2EgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzAyLDcgKzcwMiw3IEBAIFN0cmlu
ZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBj
b25zdCBTdHJpbmcmIGtleVN5CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgCi0gICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoJXMsICVzLCAlcykgLT4g
JXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSwgdXJs
LmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNhblBsYXkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoJXMsICVzLCAlcykg
LT4gJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgpLmRhdGEoKSwg
dXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRhKCksIGNhblBs
YXkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gY2FuUGxheTsKIH0KQEAgLTE0NjMsNyAr
MTQ2Myw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtV
UkwmIHVybCwgSW52YWxpZFVSTEFjdGlvbiBhY3Rpb25JCiAgICAgRnJhbWUqIGZyYW1lID0gZG9j
dW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgpLT5zZWN1cml0
eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKGFjdGlvbklmSW52YWxp
ZCA9PSBDb21wbGFpbikKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRG
YWlsZWQoZnJhbWUsIHVybC5lbGlkZWRTdHJpbmcoKSk7CisgICAgICAgICAgICBGcmFtZUxvYWRl
cjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVtZW50Ojppc1Nh
ZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIHJlamVjdGVkIGJ5IFNlY3VyaXR5T3JpZ2luIiwgdXJs
Rm9yTG9nZ2luZ01lZGlhKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0NhbGxTdGFja1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwppbmRleCA1MjA5N2RkNzRlMWYxNTI3NDgxNzAz
ZTBlODE5MDM5ZGNlZjJjYTZlLi4yMWVmMGI2YmJmZmM1MDUyMjBjOGNhYmZjNmE5ZjU2MWY3ZGI0
ZmQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxT
dGFja1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKQEAgLTE3NSw3ICsxNzUsNyBAQCBXZWJJbnNwZWN0
b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUuUGxhY2FyZCA9IGZ1bmN0aW9uKGNhbGxGcmFtZSwgcGFu
ZSkKIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnByb3RvdHlwZSA9
IHsKICAgICBfdXBkYXRlOiBmdW5jdGlvbih1aUxvY2F0aW9uKQogICAgIHsKLSAgICAgICAgdGhp
cy5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0aW9uLnVpU291
cmNlQ29kZS5vcmlnaW5VUkwoKSwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKS50cmltTWlkZGxlKDEw
MCk7CisgICAgICAgIHRoaXMuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuZm9ybWF0TGlua1RleHQo
dWlMb2NhdGlvbi51aVNvdXJjZUNvZGUub3JpZ2luVVJMKCksIHVpTG9jYXRpb24ubGluZU51bWJl
cikuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKDEwMCk7CiAgICAgfSwKIAogICAgIF9wbGFjYXJk
Q29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmluZGV4IDhjZTdm
MGUyNzJkOWY0ZTI5NGQxODBlMmQ2NDdlZjdmMzk4OGE5ZWEuLmM5MmVkYWE4ZWIxMzI2ZTZmZjA1
YWViY2IyNmNkNzEzYWNiZGU2NTAgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTE3NzksNyArMTc3
OSw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgICAgICBhdHRyVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gdmFsdWU7CiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFydHNXaXRoKCJk
YXRhOiIpKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW1NaWRkbGUoNjAp
OworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCg2MCk7CiAgICAgICAgICAgICAgICAgYXR0clNwYW5FbGVtZW50LmFwcGVuZENoaWxkKGxp
bmtpZnkocmV3cml0dGVuSHJlZiwgdmFsdWUsICJ3ZWJraXQtaHRtbC1hdHRyaWJ1dGUtdmFsdWUi
LCBub2RlLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKSA9PT0gImEiKSk7CiAgICAgICAgICAgICB9
CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCmluZGV4IDE1NTYxYzAyMjZh
NGFmN2VhODViNWIzMTM5M2EzMTUzMGUwYTQyYzMuLjZmM2FkMTViM2I2YWUxZThmODMzZmJjMWUx
M2MyNjA3YTI2ZDJmMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCkBAIC01MTAsNyArNTEwLDcg
QEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBmdWxsVVJMID0gZnVsbE5hbWUuc3Vic3RyaW5nKHN0YXJ0UG9z
ICsgMSwgZW5kUG9zKS50cmltTGVmdCgpOwogICAgICAgICAgICAgdmFyIHVybCA9IGZ1bGxVUkwu
dHJpbVVSTCgpOwogICAgICAgICAgICAgaWYgKHVybC5sZW5ndGggPiA0MCkKLSAgICAgICAgICAg
ICAgICB1cmwgPSB1cmwudHJpbU1pZGRsZSg0MCk7CisgICAgICAgICAgICAgICAgdXJsID0gdXJs
LmNlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCg0MCk7CiAgICAgICAgICAgICByZXR1cm4gZnVsbE5h
bWUuc3Vic3RyKDAsIHN0YXJ0UG9zICsgMikgKyB1cmwgKyBmdWxsTmFtZS5zdWJzdHIoZW5kUG9z
KTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZnVsbE5hbWU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qcyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCmluZGV4IGNkYTFj
NjYzODVhMGJhY2MzOWE2MjJhZjhjNjZjM2JmOTMyZmM1YzEuLjFmNDExMGQ4Yzk0Y2FlNDgyZjkx
NmU0MWY1NmU2NWI4OWM5ZjA4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvTGlua2lmaWVyLmpzCkBAIC0xMzksNyArMTM5LDcgQEAgV2ViSW5zcGVjdG9yLkxp
bmtpZmllci5EZWZhdWx0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZh
ciB0ZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24udWlTb3VyY2VD
b2RlLm9yaWdpblVSTCgpLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIpOwogICAgICAgICBpZiAodGhp
cy5fbWF4TGVuZ3RoKQotICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbU1pZGRsZSh0aGlzLl9t
YXhMZW5ndGgpOworICAgICAgICAgICAgdGV4dCA9IHRleHQuY2VudGVyRWxsaXBzaXplZFRvTGVu
Z3RoKHRoaXMuX21heExlbmd0aCk7CiAgICAgICAgIGFuY2hvci50ZXh0Q29udGVudCA9IHRleHQ7
CiAKICAgICAgICAgdmFyIHRpdGxlVGV4dCA9IHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLm9yaWdp
blVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9S
ZXNvdXJjZVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNv
dXJjZVV0aWxzLmpzCmluZGV4IDVlZjNmZThlZGRlZTQ4MzAwYzRlZmYyMTcwOWM0NDEyOTM5MTY3
ZGYuLmUzOWFlNmE4MThkYWE5YTk1YzYwMjY1NjNmZjc2ZjAzYTIyYjNmMDAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGlscy5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRpbHMuanMKQEAg
LTE3Miw3ICsxNzIsNyBAQCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSA9IGZ1bmN0aW9u
KHVybCwgbGlua1RleHQsIGNsYXNzZXMsIGlzRXh0ZXJuYWwsIHRvbwogICAgICAgICBhLnRpdGxl
ID0gdXJsOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0b29sdGlwVGV4dCAhPT0gInN0cmluZyIgfHwg
dG9vbHRpcFRleHQubGVuZ3RoKQogICAgICAgICBhLnRpdGxlID0gdG9vbHRpcFRleHQ7Ci0gICAg
YS50ZXh0Q29udGVudCA9IGxpbmtUZXh0LnRyaW1NaWRkbGUoV2ViSW5zcGVjdG9yLkxpbmtpZmll
ci5NYXhMZW5ndGhGb3JEaXNwbGF5ZWRVUkxzKTsKKyAgICBhLnRleHRDb250ZW50ID0gbGlua1Rl
eHQuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKFdlYkluc3BlY3Rvci5MaW5raWZpZXIuTWF4TGVu
Z3RoRm9yRGlzcGxheWVkVVJMcyk7CiAgICAgaWYgKGlzRXh0ZXJuYWwpCiAgICAgICAgIGEuc2V0
QXR0cmlidXRlKCJ0YXJnZXQiLCAiX2JsYW5rIik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMKaW5k
ZXggNmIwODRhYjJmODRlN2EwMDJjY2MwM2Q0ZWQ5YzVlOTJjZmE1ZWMwOS4uNzVhMDQ4OGIzOGNj
MzUwYmRiYjJiNzE5YTliYjBmM2MzNzlhZWIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMKQEAg
LTE3MSw3ICsxNzEsNyBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFpbmVyLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgY29uc3QgbWluRGlzcGxheVF1ZXJ5UGFyYW1MZW5ndGggPSA1Owog
CiAgICAgICAgIHZhciB0aXRsZSA9IHVpU291cmNlQ29kZS5uYW1lKCk7Ci0gICAgICAgIHRpdGxl
ID0gdGl0bGUgPyB0aXRsZS50cmltTWlkZGxlKG1heERpc3BsYXlOYW1lTGVuZ3RoKSA6IFdlYklu
c3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgIHRpdGxlID0gdGl0bGUgPyB0
aXRsZS5jZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgobWF4RGlzcGxheU5hbWVMZW5ndGgpIDogV2Vi
SW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29k
ZS5pc0RpcnR5KCkpCiAgICAgICAgICAgICB0aXRsZSArPSAiKiI7CiAgICAgICAgIHJldHVybiB0
aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRp
bGl0aWVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMu
anMKaW5kZXggMzFkN2IxYzg2MWQxODBlOWNlNzI4ZDU4NGFiNDcyNzE1NmI1OGFmYy4uZjRmMjA1
MDUwOTg4MjU2MTQ2ZDkyZDE0MjQxYWFhZDg3YTczOWQyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTExNCw3ICsxMTQsNyBAQCBT
dHJpbmcucHJvdG90eXBlLmNvbGxhcHNlV2hpdGVzcGFjZSA9IGZ1bmN0aW9uKCkKICAgICByZXR1
cm4gdGhpcy5yZXBsYWNlKC9bXHNceEEwXSsvZywgIiAiKTsKIH0KIAotU3RyaW5nLnByb3RvdHlw
ZS50cmltTWlkZGxlID0gZnVuY3Rpb24obWF4TGVuZ3RoKQorU3RyaW5nLnByb3RvdHlwZS5jZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGggPSBmdW5jdGlvbihtYXhMZW5ndGgpCiB7CiAgICAgaWYgKHRo
aXMubGVuZ3RoIDw9IG1heExlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0cmluZyh0aGlzKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCmluZGV4IGZlMmRhZmY4YmUxNWQyYjE4OTUw
MDg3YjIzYWMyODY3YWEyZDI1ZmQuLjMxMzExOGE3MmEwZjA1YTliZmFiZWZiMzk5M2ZlZTcwNTI2
MGNjMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMzQwLDcgKzM0
MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlz
c2lvbj4gc3VibWlzc2lvbikKIAogICAgIGlmIChpc0RvY3VtZW50U2FuZGJveGVkKG1fZnJhbWUs
IFNhbmRib3hGb3JtcykpIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBzaG91bGQg
YmUgbW92ZWQgb2ZmIHRoZSBjb25zb2xlIG9uY2UgYSBzb2x1dGlvbiB0byBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzMjc0IGV4aXN0cy4KLSAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBF
cnJvck1lc3NhZ2VMZXZlbCwgIkJsb2NrZWQgZm9ybSBzdWJtaXNzaW9uIHRvICciICsgc3VibWlz
c2lvbi0+YWN0aW9uKCkuZWxpZGVkU3RyaW5nKCkgKyAiJyBiZWNhdXNlIHRoZSBmb3JtJ3MgZnJh
bWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2FsbG93LWZvcm1zJyBwZXJtaXNzaW9uIGlzIG5vdCBz
ZXQuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKFNl
Y3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJCbG9ja2VkIGZvcm0gc3Vi
bWlzc2lvbiB0byAnIiArIHN1Ym1pc3Npb24tPmFjdGlvbigpLnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSB0aGUgZm9ybSdzIGZyYW1lIGlzIHNhbmRib3hlZCBh
bmQgdGhlICdhbGxvdy1mb3JtcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC0xMTQ2LDcgKzExNDYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjps
b2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHJlcXVlc3QsIGJvb2wgbG9j
a0hpcwogCiAgICAgQVNTRVJUKG1fZnJhbWUtPmRvY3VtZW50KCkpOwogICAgIGlmICghcmVxdWVz
dC5yZXF1ZXN0ZXIoKS0+Y2FuRGlzcGxheSh1cmwpKSB7Ci0gICAgICAgIHJlcG9ydExvY2FsTG9h
ZEZhaWxlZChtX2ZyYW1lLCB1cmwuZWxpZGVkU3RyaW5nKCkpOworICAgICAgICByZXBvcnRMb2Nh
bExvYWRGYWlsZWQobV9mcmFtZSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTcwNyw4ICsxNzA3LDggQEAgdm9pZCBG
cmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICBSZWZQdHI8RnJhbWU+IHBy
b3RlY3QobV9mcmFtZSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6
IEFib3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycg
dG8gbmV3IFVSTCAnJXMnIiwgbV9mcmFtZS0+dHJlZSgpLT51bmlxdWVOYW1lKCkuc3RyaW5nKCku
dXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKSA/IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKLSAgICAg
ICAgcGRsID8gcGRsLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIjxubyBw
cm92aXNpb25hbCBEb2N1bWVudExvYWRlcj4iKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KSA/IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCgpLnV0ZjgoKS5kYXRhKCkgOiAiIiwKKyAgICAgICAgcGRsID8gcGRsLT51cmwoKS5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBwcm92aXNp
b25hbCBEb2N1bWVudExvYWRlcj4iKTsKIAogICAgIC8vIENoZWNrIHRvIHNlZSBpZiB3ZSBuZWVk
IHRvIGNhY2hlIHRoZSBwYWdlIHdlIGFyZSBuYXZpZ2F0aW5nIGF3YXkgZnJvbSBpbnRvIHRoZSBi
YWNrL2ZvcndhcmQgY2FjaGUuCiAgICAgLy8gV2UgYXJlIGRvaW5nIHRoaXMgaGVyZSBiZWNhdXNl
IHdlIGtub3cgZm9yIHN1cmUgdGhhdCBhIG5ldyBwYWdlIGlzIGFib3V0IHRvIGJlIGxvYWRlZC4K
QEAgLTE3NTksNyArMTc1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFs
TG9hZCgpCiAgICAgfQogCiAgICAgTE9HKExvYWRpbmcsICJXZWJDb3JlTG9hZGluZyAlczogRmlu
aXNoZWQgY29tbWl0dGluZyBwcm92aXNpb25hbCBsb2FkIHRvIFVSTCAlcyIsIG1fZnJhbWUtPnRy
ZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5lbGlkZWRTdHJpbmco
KS51dGY4KCkuZGF0YSgpIDogIiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCku
dXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5
cGVTdGFuZGFyZCAmJiBtX2RvY3VtZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0KCkpCiAgICAg
ICAgIGhpc3RvcnkoKS0+dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKTsKQEAgLTI5NjIsNyArMjk2
Miw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRp
b25zKGNvbnN0IFN0cmluZyYgY29udGVudCwgY29uCiAgICAgICAgIGlmICghb3JpZ2luLT5pc1Nh
bWVTY2hlbWVIb3N0UG9ydCh0b3BGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9IGVsc2UgaWYgKCFlcXVhbElnbm9yaW5n
Q2FzZShjb250ZW50LCAiYWxsb3dhbGwiKSkgewotICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJJ
bnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcg
JyIgKyB1cmwuZWxpZGVkU3RyaW5nKCkgKyAiJzogJyIgKyBjb250ZW50ICsgIicgaXMgbm90IGEg
cmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiI7CisgICAg
ICAgIFN0cmluZyBtZXNzYWdlID0gIkludmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVyIGVu
Y291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKSArICInOiAnIiArIGNvbnRlbnQgKyAiJyBpcyBub3QgYSByZWNvZ25pemVkIGRpcmVj
dGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQuIjsKICAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgbWVzc2FnZSwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgIH0KIApAQCAtMjk3Miw3ICsy
OTcyLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9w
dGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb24KIHZvaWQgRnJhbWVMb2FkZXI6OmxvYWRQ
cm92aXNpb25hbEl0ZW1Gcm9tQ2FjaGVkUGFnZSgpCiB7CiAgICAgRG9jdW1lbnRMb2FkZXIqIHBy
b3Zpc2lvbmFsTG9hZGVyID0gcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpOwotICAgIExPRyhQ
YWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNhY2hlOiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50
TG9hZGVyICVwIHdpdGggVVJMICclcycgZnJvbSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1
bWVudExvYWRlcigpLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCktPnVybCgpLmVsaWRlZFN0
cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhQYWdlQ2FjaGUsICJXZWJDb3JlUGFnZUNh
Y2hlOiBMb2FkaW5nIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyICVwIHdpdGggVVJMICclcycg
ZnJvbSBDYWNoZWRQYWdlIiwgcHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigpLCBwcm92aXNpb25h
bERvY3VtZW50TG9hZGVyKCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgcHJlcGFyZUZvckxvYWRTdGFydCgpOwogCkBAIC0zMzY3
LDcgKzMzNjcsNyBAQCBGcmFtZSogY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJh
bWUqIGxvb2t1cEZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZQogICAgIC8vIFNhbmRib3hlZCBm
cmFtZXMgY2Fubm90IG9wZW4gbmV3IGF1eGlsaWFyeSBicm93c2luZyBjb250ZXh0cy4KICAgICBp
ZiAoaXNEb2N1bWVudFNhbmRib3hlZChvcGVuZXJGcmFtZSwgU2FuZGJveFBvcHVwcykpIHsKICAg
ICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBzaG91bGQgYmUgbW92ZWQgb2ZmIHRoZSBjb25z
b2xlIG9uY2UgYSBzb2x1dGlvbiB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTAzMjc0IGV4aXN0cy4KLSAgICAgICAgb3BlbmVyRnJhbWUtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJCbG9ja2VkIG9wZW5pbmcgJyIgKyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLmVs
aWRlZFN0cmluZygpICsgIicgaW4gYSBuZXcgd2luZG93IGJlY2F1c2UgdGhlIHJlcXVlc3Qgd2Fz
IG1hZGUgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hvc2UgJ2FsbG93LXBvcHVwcycgcGVybWlzc2lv
biBpcyBub3Qgc2V0LiIpOworICAgICAgICBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkJs
b2NrZWQgb3BlbmluZyAnIiArIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIG5ldyB3aW5kb3cgYmVjYXVzZSB0
aGUgcmVxdWVzdCB3YXMgbWFkZSBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aG9zZSAnYWxsb3ctcG9w
dXBzJyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQuIik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01haW5SZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAppbmRleCBm
YWU0ZTAyNjAzN2VjZDI3ZDhkN2RhMmU4YzA0NzU0MzIyZmZjNmYzLi44MTk3OGRjMGVmYzBlOTFh
MzE3ZDUxODkwNGUxMGJjY2M0MjkzYThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvTWFpblJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWFp
blJlc291cmNlTG9hZGVyLmNwcApAQCAtMjQ2LDcgKzI0Niw3IEBAIHZvaWQgTWFpblJlc291cmNl
TG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiBuZXdSZXF1ZXN0LCBjb25z
dCBSZXNvCiAgICAgICAgIC8vIHRoZW4gYmxvY2sgdGhlIHJlZGlyZWN0LgogICAgICAgICBSZWZQ
dHI8U2VjdXJpdHlPcmlnaW4+IHJlZGlyZWN0aW5nT3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZShyZWRpcmVjdFJlc3BvbnNlLnVybCgpKTsKICAgICAgICAgaWYgKCFyZWRpcmVjdGluZ09y
aWdpbi0+Y2FuRGlzcGxheShuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBu
ZXdSZXF1ZXN0LnVybCgpLmVsaWRlZFN0cmluZygpKTsKKyAgICAgICAgICAgIEZyYW1lTG9hZGVy
OjpyZXBvcnRMb2NhbExvYWRGYWlsZWQobV9kb2N1bWVudExvYWRlci0+ZnJhbWUoKSwgbmV3UmVx
dWVzdC51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAgICAgICAgICAg
ICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDEwLDcgKzQx
MCw3IEBAIHZvaWQgTWFpblJlc291cmNlTG9hZGVyOjpyZXNwb25zZVJlY2VpdmVkKENhY2hlZFJl
c291cmNlKiByZXNvdXJjZSwgY29uc3QgUmVzb3VyCiAgICAgICAgIFN0cmluZyBjb250ZW50ID0g
aXQtPnZhbHVlOwogICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c2hvdWxkSW50ZXJydXB0TG9h
ZEZvclhGcmFtZU9wdGlvbnMoY29udGVudCwgci51cmwoKSwgaWRlbnRpZmllcigpKSkgewogICAg
ICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250aW51ZUFmdGVyWEZyYW1lT3B0
aW9uc0RlbmllZChtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLCBkb2N1bWVudExvYWRlcigpLCBp
ZGVudGlmaWVyKCksIHIpOwotICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0
byBkaXNwbGF5ICciICsgci51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGluIGEgZnJhbWUgYmVj
YXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHIudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1
c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgY29udGVudCArICInLiI7CiAgICAg
ICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShTZWN1cml0eU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCBtZXNzYWdl
LCBpZGVudGlmaWVyKCkpOwogCiAgICAgICAgICAgICBjYW5jZWwoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcAppbmRleCBlM2VmZjc1NGQ4NjdlOGIz
NzdmZWUxNzAyOWVjOWRkZTllNTEyNjM4Li4wOGMyMzY5M2QwZDdkZGUxZjY3ODdiMjUwYWE3N2Vk
MzllNmIxYmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50
Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNr
ZXIuY3BwCkBAIC05NSw3ICs5NSw3IEBAIGJvb2wgTWl4ZWRDb250ZW50Q2hlY2tlcjo6Y2FuUnVu
SW5zZWN1cmVDb250ZW50KFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwKIAogdm9pZCBN
aXhlZENvbnRlbnRDaGVja2VyOjpsb2dXYXJuaW5nKGJvb2wgYWxsb3dlZCwgY29uc3QgU3RyaW5n
JiBhY3Rpb24sIGNvbnN0IEtVUkwmIHRhcmdldCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbWVzc2Fn
ZSA9IG1ha2VTdHJpbmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBh
dCAiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5lbGlkZWRTdHJpbmcoKSwgIiAiLCBhY3Rp
b24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5lbGlkZWRTdHJpbmcoKSwgIi5c
biIpOworICAgIFN0cmluZyBtZXNzYWdlID0gbWFrZVN0cmluZygoYWxsb3dlZCA/ICIiIDogIlti
bG9ja2VkXSAiKSwgIlRoZSBwYWdlIGF0ICIsIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBj
b250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
LlxuIik7CiAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJp
dHlNZXNzYWdlU291cmNlLCBXYXJuaW5nTWVzc2FnZUxldmVsLCBtZXNzYWdlKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVH
cm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNo
ZUdyb3VwLmNwcAppbmRleCA0M2M4MTU1YWYyMTZmZDFhZWI3NDg0MjczMjEzNDI2Y2FhYWM0Y2Ri
Li42ZDk3NDg1ZmY5M2M3YzU3Y2QyMWJmODhjNjJiNThlYzk1M2VkNjU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3Vw
LmNwcApAQCAtNTY5LDcgKzU2OSw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRS
ZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzCiAKICAgICBp
ZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyIHx8IHJlc3BvbnNlLnVybCgp
ICE9IG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkpIHsKICAgICAgICAgaWYg
KCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCkgfHwgKHR5cGUgJiBB
cHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkgewotICAgICAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoT3RoZXJNZXNzYWdlU291cmNlLCBFcnJv
ck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ug
IiArIG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkuZWxpZGVkU3RyaW5nKCkg
KworICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoT3Ro
ZXJNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkFwcGxpY2F0aW9uIENhY2hlIHVw
ZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCku
dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKwogICAgICAgICAgICAgICAg
ICgocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyKSA/ICIgY291bGQgbm90IGJl
IGZldGNoZWQuIiA6ICIgd2FzIHJlZGlyZWN0ZWQuIikpOwogICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IGNhY2hlVXBkYXRlRmFpbGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBk
ZWxldGVkLgogICAgICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKQEAgLTY4Myw3ICs2ODMs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSog
aGFuZGxlLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIG1fcGVuZGluZ0VudHJpZXMucmVtb3Zl
KHVybCk7CiAKICAgICBpZiAoKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkV4cGxp
Y2l0KSB8fCAodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RmFsbGJhY2spKSB7Ci0g
ICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE90aGVyTWVzc2Fn
ZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFp
bGVkLCBiZWNhdXNlICIgKyB1cmwuZWxpZGVkU3RyaW5nKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRj
aGVkLiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShP
dGhlck1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24gQ2FjaGUg
dXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xl
bmd0aCgpICsgIiBjb3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKICAgICAgICAgLy8gTm90ZSB0aGF0
IGNhY2hlVXBkYXRlRmFpbGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBkZWxl
dGVkLgogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCA0YjQ2OTliZDY3MjA5ZmY5N2FkOWE2OTczNmZkMDMwN2Q5NWMxZjM0Li4zMjQ1Y2Q1OGE5
YWMxNjNiYTI4YmNlN2EwNGU0MzViOTY4MGVhMjE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTMwOSw3ICszMDks
NyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjYW5SZXF1ZXN0KENhY2hlZFJlc291cmNl
OjpUeXBlIHR5cGUsIGNvbnN0IEtVUkwmIHVybAogewogICAgIGlmIChkb2N1bWVudCgpICYmICFk
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAg
aWYgKCFmb3JQcmVsb2FkKQotICAgICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9h
ZEZhaWxlZChmcmFtZSgpLCB1cmwuZWxpZGVkU3RyaW5nKCkpOworICAgICAgICAgICAgRnJhbWVM
b2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNl
Y3VyaXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAg
LTQyNCw3ICs0MjQsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogewogICAgIEtVUkwgdXJs
ID0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKTsKICAgICAKLSAgICBMT0coUmVzb3Vy
Y2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBj
aGFyc2V0ICclcycsIHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLmVsaWRlZFN0cmlu
ZygpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCkubGF0aW4xKCkuZGF0YSgpLCBy
ZXF1ZXN0LnByaW9yaXR5KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgpKTsKKyAgICBMT0coUmVzb3Vy
Y2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSAnJXMnLCBj
aGFyc2V0ICclcycsIHByaW9yaXR5PSVkLCBmb3JQcmVsb2FkPSV1IiwgdXJsLnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5jaGFyc2V0KCku
bGF0aW4xKCkuZGF0YSgpLCByZXF1ZXN0LnByaW9yaXR5KCksIHJlcXVlc3QuZm9yUHJlbG9hZCgp
KTsKICAgICAKICAgICAvLyBJZiBvbmx5IHRoZSBmcmFnbWVudCBpZGVudGlmaWVycyBkaWZmZXIs
IGl0IGlzIHRoZSBzYW1lIHJlc291cmNlLgogICAgIHVybCA9IE1lbW9yeUNhY2hlOjpyZW1vdmVG
cmFnbWVudElkZW50aWZpZXJJZk5lZWRlZCh1cmwpOwpAQCAtNTQxLDcgKzU0MSw3IEBAIENhY2hl
ZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9h
ZFJlc291cmNlKENhY2hlZFJlCiB7CiAgICAgQVNTRVJUKCFtZW1vcnlDYWNoZSgpLT5yZXNvdXJj
ZUZvclJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOwogCi0gICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkxvYWRpbmcgQ2FjaGVkUmVzb3VyY2UgZm9yICclcycuIiwgcmVxdWVzdC5y
ZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5lbGlkZWRTdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCkpOwor
ICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJMb2FkaW5nIENhY2hlZFJlc291cmNlIGZvciAnJXMn
LiIsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxl
PENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVlc3Qu
bXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCBjaGFyc2V0KTsKIApAQCAtNjU4LDkgKzY1OCw5IEBA
IHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZShjb25z
dCBLVVJMJiB1cmwpIGNvbnN0CiAKICAgICBTdHJpbmcgbWVzc2FnZTsKICAgICBpZiAoIW1fZG9j
dW1lbnQgfHwgbV9kb2N1bWVudC0+dXJsKCkuaXNOdWxsKCkpCi0gICAgICAgIG1lc3NhZ2UgPSAi
VW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiArIHVybC5lbGlkZWRTdHJpbmcoKSArICcuJzsK
KyAgICAgICAgbWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgJy4nOwogICAgIGVsc2UKLSAgICAgICAg
bWVzc2FnZSA9ICJVbnNhZmUgYXR0ZW1wdCB0byBsb2FkIFVSTCAiICsgdXJsLmVsaWRlZFN0cmlu
ZygpICsgIiBmcm9tIGZyYW1lIHdpdGggVVJMICIgKyBtX2RvY3VtZW50LT51cmwoKS5lbGlkZWRT
dHJpbmcoKSArICIuIERvbWFpbnMsIHByb3RvY29scyBhbmQgcG9ydHMgbXVzdCBtYXRjaC5cbiI7
CisgICAgICAgIG1lc3NhZ2UgPSAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwgIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAi
ICsgbV9kb2N1bWVudC0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAi
LiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBvcnRzIG11c3QgbWF0Y2guXG4iOwogCiAgICAgZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNl
LCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKaW5kZXggNjhjNDQxYjRiMjIzM2U3ZmY2NDU2Njc1
NTI0OGFiMmE1YWZiYWZmOC4uNjI3M2U0ZjhiZGMzYzdlMWUyZjRjOGI4MDU0MjQxNmVlNWNmMzU4
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApA
QCAtMTA0Niw3ICsxMDQ2LDcgQEAgYm9vbCBDU1BEaXJlY3RpdmVMaXN0OjpjaGVja1NvdXJjZUFu
ZFJlcG9ydFZpb2xhdGlvbihTb3VyY2VMaXN0RGlyZWN0aXZlKiBkaXJlY3QKICAgICBpZiAoZGly
ZWN0aXZlID09IG1fZGVmYXVsdFNyYykKICAgICAgICAgc3VmZml4ID0gIiBOb3RlIHRoYXQgJyIg
KyB0eXBlICsgIi1zcmMnIHdhcyBub3QgZXhwbGljaXRseSBzZXQsIHNvICdkZWZhdWx0LXNyYycg
aXMgdXNlZCBhcyBhIGZhbGxiYWNrLiI7CiAKLSAgICByZXBvcnRWaW9sYXRpb24oZGlyZWN0aXZl
LT50ZXh0KCksIHByZWZpeCArIHVybC5lbGlkZWRTdHJpbmcoKSArICInIGJlY2F1c2UgaXQgdmlv
bGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3RpdmU6IFwi
IiArIGRpcmVjdGl2ZS0+dGV4dCgpICsgIlwiLiIgKyBzdWZmaXggKyAiXG4iLCB1cmwpOworICAg
IHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgcHJlZml4ICsgdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9s
bG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogXCIiICsgZGlyZWN0aXZl
LT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIHVybCk7CiAgICAgcmV0dXJuIGRlbnlJ
ZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMTAzLDEzICsxMTAzLDEzIEBAIGJvb2wgQ1NQ
RGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcmIG5vbmNlLCBjb25z
dCBTdHJpbmcmIGNvbnRlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGNvbnNvbGVN
ZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0IGJlY2F1c2Ug
aXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkaXJlY3Rp
dmU6ICIpKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiBjaGVja05v
bmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCBjb25zb2xl
TWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgIHJldHVybiBjaGVja05vbmNl
QW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0
byBsb2FkICciICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRlcyB0
aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29udGV4
dFVSTCwgY29udGV4dExpbmUpOworICAgIHJldHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0
aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJs
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2aW9sYXRl
cyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogIiwgY29u
dGV4dFVSTCwgY29udGV4dExpbmUpOwogfQogCiBib29sIENTUERpcmVjdGl2ZUxpc3Q6OmFsbG93
UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgdHlwZUF0dHJpYnV0
ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydGluZ1N0YXR1
cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9ydGluZ1N0YXR1cyA9
PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwotICAgICAgICBjaGVja01lZGlh
VHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0
cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgKE1J
TUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUg
Zm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTogIikgOgorICAgICAg
ICBjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0
eXBlLCB0eXBlQXR0cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgKE1JTUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUg
KyAiJykgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkg
UG9saWN5IERpcmVjdGl2ZTogIikgOgogICAgICAgICBjaGVja01lZGlhVHlwZShtX3BsdWdpblR5
cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJM
LmNwcAppbmRleCBiNWZiYzhjZGVhN2UxNjg0MGNjN2YwNDYyZmZiY2JhZWRkMmQ0OWU4Li5iYmUw
ZmZhZDI2ZGYxMDRiOGVkOTFkMzBjYjI4YmIyN2UwZGE1YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9L
VVJMLmNwcApAQCAtMTkyNSwxMiArMTkyNSwxMiBAQCBib29sIEtVUkw6OmlzU2FmZVRvU2VuZFRv
QW5vdGhlclRocmVhZCgpIGNvbnN0CiAjZW5kaWYKIH0KIAotU3RyaW5nIEtVUkw6OmVsaWRlZFN0
cmluZygpIGNvbnN0CitTdHJpbmcgS1VSTDo6c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KHVuc2lnbmVkIGxlbmd0aCkgY29uc3QKIHsKLSAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0g
MTAyNCkKKyAgICBpZiAoc3RyaW5nKCkubGVuZ3RoKCkgPD0gbGVuZ3RoKQogICAgICAgICByZXR1
cm4gc3RyaW5nKCk7CiAKLSAgICByZXR1cm4gc3RyaW5nKCkubGVmdCg1MTEpICsgIi4uLiIgKyBz
dHJpbmcoKS5yaWdodCg1MTApOworICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KGxlbmd0aCAvIDIg
LSAxKSArICIuLi4iICsgc3RyaW5nKCkucmlnaHQobGVuZ3RoIC8gMiAtIDIpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmgKaW5kZXggOGVhOWEyNGQ2MTU5NjczYWY0MTMyODc4NTYzMzk1ODQy
N2FkNDQ3NS4uZTliNWVlYjYwZWVhMWUyMjIxYWI2NDU1ZmI0MDk3MDE3MDg4ZTExMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkwuaApAQCAtMTMxLDcgKzEzMSw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBT
dHJpbmcmIHN0cmluZygpIGNvbnN0IHsgcmV0dXJuIG1fc3RyaW5nOyB9CiAjZW5kaWYKIAotICAg
IFN0cmluZyBlbGlkZWRTdHJpbmcoKSBjb25zdDsKKyAgICBTdHJpbmcgc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKHVuc2lnbmVkIGxlbmd0aCA9IDEwMjQpIGNvbnN0OwogCiAgICAgU3Ry
aW5nIHByb3RvY29sKCkgY29uc3Q7CiAgICAgU3RyaW5nIGhvc3QoKSBjb25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203337</attachid>
            <date>2013-05-30 03:18:00 -0700</date>
            <delta_ts>2013-05-30 05:08:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-111700-20130530121636.patch</filename>
            <type>text/plain</type>
            <size>36122</size>
            <attacher name="Mike West">mkwst</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTUwOTUzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODA4ZDQ1OGZmOWYzNjFk
YWY3YWVkY2ViMDQ0MTk3YmUzODgxYTc3OC4uZmY5NmIwYWUyZGZmZjYxNGRlNDE5MGRjMjIxNjg4
MzFjYjZlMDk0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDgyIEBACisyMDEzLTA1LTMwICBNaWtl
IFdlc3QgIDxta3dzdEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmVuYW1lICdLVVJMOjplbGlk
ZWRTdHJpbmcnIGFuZCBpbnNwZWN0b3IncyAnU3RyaW5nLnByb3RvdHlwZS50cmltTWlkZGxlJyBm
b3IgY2xhcml0eS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMTcwMAorCisgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgorCisgICAgICAg
IERhcmluIHN1Z2dlc3RlZCB0aGF0ICdLVVJMOjplbGlkZWRTdHJpbmcnIGlzIGluYWNjdXJhdGVs
eSBuYW1lZFsxXSwgdGhpcworICAgICAgICBwYXRjaCBpcyBhbiBhdHRlbXB0IHRvIGRvIGJldHRl
ci4gSXQgYWRkaXRpb25hbGx5IGJyaW5ncyB0aGUgSW5zcGVjdG9yJ3MKKyAgICAgICAgJ1N0cmlu
Zy5wcm90b3R5cGUudHJpbU1pZGRsZScgbWV0aG9kIGludG8gbGluZSwgYXMgdGhlIHR3byBtZXRo
b2RzIGRvCisgICAgICAgIG1vcmUgb3IgbGVzcyB0aGUgc2FtZSB0aGluZy4KKworICAgICAgICBB
ZnRlciBhIGJpdCBvZiBkaXNjdXNzaW9uIHdpdGggTWFjaWVqIGFuZCBEYW5pZWwgQmF0ZXMgb24g
SVJDLCBJJ3ZlCisgICAgICAgIHNldHRsZWQgb24gJ0tVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCh1bnNpZ25lZCknIGFuZAorICAgICAgICAnU3RyaW5nLnByb3RvdHlwZS5jZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgobnVtYmVyKScgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyBhcmUgYWRkZWQsIGFzIHRoaXMgcGF0Y2ggc2hvdWxkbid0IGhhdmUgYW55IHZp
c2libGUgZWZmZWN0CisgICAgICAgIG9uIHRoZSB3ZWIuIEl0J3Mgc3RyaWN0bHkgYW4gaW50ZXJu
YWwgcmVmYWN0b3JpbmcuCisKKyAgICAgICAgKiBNb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldDo6Y29ubmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJTb2NrZXQ6OnNlbmQpOgorICAgICAgICAqIE1vZHVsZXMvd2Vic29ja2V0cy9X
ZWJTb2NrZXRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlNvY2tldENoYW5uZWw6
OnNlbmQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViU29ja2V0Q2hhbm5lbDo6ZmFpbCk6CisgICAg
ICAgICogYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q29udHJvbGxlcjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAqIGRvbS9E
b2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVp
dik6CisgICAgICAgICogZG9tL1NjcmlwdEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U2NyaXB0RWxlbWVudDo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmNhblBsYXlU
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmlzU2FmZVRvTG9hZFVS
TCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyOjpzdWJtaXRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVy
Ojpsb2FkRnJhbWVSZXF1ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjb21t
aXRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpsb2FkUHJvdmlzaW9uYWxJdGVtRnJvbUNhY2hlZFBhZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKiBsb2FkZXIvTWFpblJlc291cmNlTG9hZGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1haW5SZXNvdXJjZUxvYWRlcjo6cmVzcG9uc2VSZWNl
aXZlZCk6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyk6CisgICAgICAgICog
bG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25zZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJlc291cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgICog
cGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NQRGly
ZWN0aXZlTGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZSk6CisgICAgICAgIChXZWJD
b3JlOjpDU1BEaXJlY3RpdmVMaXN0OjphbGxvd1BsdWdpblR5cGUpOgorICAgICAgICAqIHBsYXRm
b3JtL0tVUkwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6S1VSTDo6c3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9LVVJMLmg6CisgICAgICAgICAgICBS
ZW5hbWUgJ0tVUkw6OmVsaWRlZFN0cmluZycgdG8gJ0tVUkw6OnN0cmluZ0NlbnRlckVsbGlwc2l6
ZWRUb0xlbmd0aCcsCisgICAgICAgICAgICBhbmQgYWRqdXN0IGNhbGxzaXRlcyBhY2NvcmRpbmds
eS4KKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNhbGxTdGFja1NpZGViYXJQYW5lLlBsYWNhcmQucHJv
dG90eXBlLl91cGRhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNU
cmVlT3V0bGluZS5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50
LnByb3RvdHlwZS5fYnVpbGRBdHRyaWJ1dGVET00pOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkhl
YXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnByb3RvdHlwZS5zaG9ydGVuV2luZG93VVJMKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmllci5qczoKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5MaW5raWZpZXIuRGVmYXVsdEZvcm1hdHRlci5wcm90b3R5cGUuZm9ybWF0TGl2
ZUFuY2hvcik6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVV0aWxzLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLmxpbmtpZnlVUkxBc05vZGUpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpzOgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlRhYmJlZEVkaXRvckNvbnRhaW5lci5wcm90b3R5cGUuX3RpdGxlRm9yRmlsZSk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanM6CisgICAgICAgICAg
ICBSZW5hbWUgJ1N0cmluZy5wcm90b3R5cGUudHJpbU1pZGRsZScgdG8gJ1N0cmluZy5wcm90b3R5
cGUuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoJworICAgICAgICAgICAgYW5kIGFkanVzdCBjYWxs
c2l0ZXMgYWNjb3JkaW5nbHkuCisKIDIwMTMtMDUtMzAgIFNlb2tqdSBLd29uICA8c2Vva2p1Lmt3
b25AZ21haWwuY29tPgogCiAgICAgICAgIFJlbW92ZSBvYnNvbGV0ZSBmb3J3YXJkIGRlY2xhcmF0
aW9uIGZyb20gSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldC5jcHAKaW5kZXggMzBlMGI1ZmZlYzU5ZTcyNTFmY2Y2
YzA2ZGJiNTAzMzI5MmFmM2ZjZS4uYzA3NmVjNmU2ZDcxYzBkNWZkOTM3YjhiMzA1M2YxNTAzYmQy
YTE0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNv
Y2tldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tl
dC5jcHAKQEAgLTIxNiwyMCArMjE2LDIwIEBAIHZvaWQgV2ViU29ja2V0Ojpjb25uZWN0KGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcHJvdG9jb2xzLCBFeGNlCiAgICAg
bV91cmwgPSBLVVJMKEtVUkwoKSwgdXJsKTsKIAogICAgIGlmICghbV91cmwuaXNWYWxpZCgpKSB7
Ci0gICAgICAgIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNN
ZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgdXJsIGZvciBXZWJTb2Nr
ZXQgIiArIG1fdXJsLmVsaWRlZFN0cmluZygpKTsKKyAgICAgICAgc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxl
dmVsLCAiSW52YWxpZCB1cmwgZm9yIFdlYlNvY2tldCAiICsgbV91cmwuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBtX3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBl
YyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoIW1fdXJs
LnByb3RvY29sSXMoIndzIikgJiYgIW1fdXJsLnByb3RvY29sSXMoIndzcyIpKSB7Ci0gICAgICAg
IHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291
cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIldyb25nIHVybCBzY2hlbWUgZm9yIFdlYlNvY2tldCAi
ICsgbV91cmwuZWxpZGVkU3RyaW5nKCkpOworICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJXcm9uZyB1cmwgc2NoZW1lIGZvciBXZWJTb2NrZXQgIiArIG1fdXJsLnN0cmluZ0NlbnRlckVs
bGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAgICAgICAgbV9zdGF0ZSA9IENMT1NFRDsKICAgICAgICAg
ZWMgPSBTWU5UQVhfRVJSOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlmIChtX3VybC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSkgewotICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0
KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVudCAiICsgbV91cmwuZWxpZGVkU3RyaW5nKCkpOwor
ICAgICAgICBzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVz
c2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJVUkwgaGFzIGZyYWdtZW50IGNvbXBvbmVu
dCAiICsgbV91cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBt
X3N0YXRlID0gQ0xPU0VEOwogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVy
bjsKQEAgLTM1Myw3ICszNTMsNyBAQCB2b2lkIFdlYlNvY2tldDo6c2VuZChBcnJheUJ1ZmZlclZp
ZXcqIGFycmF5QnVmZmVyVmlldywgRXhjZXB0aW9uQ29kZSYgZWMpCiAKIHZvaWQgV2ViU29ja2V0
OjpzZW5kKEJsb2IqIGJpbmFyeURhdGEsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJyVzJyIsIHRoaXMsIGJp
bmFyeURhdGEtPnVybCgpLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCkpOworICAgIExPRyhO
ZXR3b3JrLCAiV2ViU29ja2V0ICVwIHNlbmQoKSBTZW5kaW5nIEJsb2IgJyVzJyIsIHRoaXMsIGJp
bmFyeURhdGEtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5k
YXRhKCkpOwogICAgIEFTU0VSVChiaW5hcnlEYXRhKTsKICAgICBpZiAobV9zdGF0ZSA9PSBDT05O
RUNUSU5HKSB7CiAgICAgICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnNvY2tldHMvV2ViU29ja2V0Q2hhbm5lbC5jcHAKaW5k
ZXggZGIwOWE0ZTg0OGQ5ODg3NWU4NTg5MjU2NmMxMTcwYTdiOThjNjExMS4uMGEzZmYwYzBlYzQ4
OWFkYTdjN2MzODAzNDA4MGU1MDRhYjY4YjQwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJzb2NrZXRzL1dlYlNvY2tldENoYW5uZWwuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2Vic29ja2V0cy9XZWJTb2NrZXRDaGFubmVsLmNwcApAQCAtMTYxLDcgKzE2
MSw3IEBAIFRocmVhZGFibGVXZWJTb2NrZXRDaGFubmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENo
YW5uZWw6OnNlbmQoY29uc3QgQXJyYXlCdWZmZXImCiAKIFRocmVhZGFibGVXZWJTb2NrZXRDaGFu
bmVsOjpTZW5kUmVzdWx0IFdlYlNvY2tldENoYW5uZWw6OnNlbmQoY29uc3QgQmxvYiYgYmluYXJ5
RGF0YSkKIHsKLSAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2VuZCgpIFNl
bmRpbmcgQmxvYiAnJXMnIiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5lbGlkZWRTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKKyAgICBMT0coTmV0d29yaywgIldlYlNvY2tldENoYW5uZWwgJXAgc2Vu
ZCgpIFNlbmRpbmcgQmxvYiAnJXMnIiwgdGhpcywgYmluYXJ5RGF0YS51cmwoKS5zdHJpbmdDZW50
ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpKTsKICAgICBlbnF1ZXVlQmxvYkZy
YW1lKFdlYlNvY2tldEZyYW1lOjpPcENvZGVCaW5hcnksIGJpbmFyeURhdGEpOwogICAgIHByb2Nl
c3NPdXRnb2luZ0ZyYW1lUXVldWUoKTsKICAgICByZXR1cm4gVGhyZWFkYWJsZVdlYlNvY2tldENo
YW5uZWw6OlNlbmRTdWNjZXNzOwpAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQgV2ViU29ja2V0Q2hh
bm5lbDo6ZmFpbChjb25zdCBTdHJpbmcmIHJlYXNvbikKICAgICBBU1NFUlQoIW1fc3VzcGVuZGVk
KTsKICAgICBpZiAobV9kb2N1bWVudCkgewogICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRp
b246OmRpZFJlY2VpdmVXZWJTb2NrZXRGcmFtZUVycm9yKG1fZG9jdW1lbnQsIG1faWRlbnRpZmll
ciwgcmVhc29uKTsKLSAgICAgICAgbV9kb2N1bWVudC0+YWRkQ29uc29sZU1lc3NhZ2UoTmV0d29y
a01lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiV2ViU29ja2V0IGNvbm5lY3Rpb24g
dG8gJyIgKyBtX2hhbmRzaGFrZS0+dXJsKCkuZWxpZGVkU3RyaW5nKCkgKyAiJyBmYWlsZWQ6ICIg
KyByZWFzb24pOworICAgICAgICBtX2RvY3VtZW50LT5hZGRDb25zb2xlTWVzc2FnZShOZXR3b3Jr
TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJXZWJTb2NrZXQgY29ubmVjdGlvbiB0
byAnIiArIG1faGFuZHNoYWtlLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
KSArICInIGZhaWxlZDogIiArIHJlYXNvbik7CiAgICAgfQogCiAgICAgLy8gSHliaS0xMCBzcGVj
aWZpY2F0aW9uIGV4cGxpY2l0bHkgc3RhdGVzIHdlIG11c3Qgbm90IGNvbnRpbnVlIHRvIGhhbmRs
ZSBpbmNvbWluZyBkYXRhCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3Jp
cHRDb250cm9sbGVyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9TY3JpcHRDb250
cm9sbGVyQmFzZS5jcHAKaW5kZXggOTYzZGNiYzgwM2Y1NWQ5ZDlmYzEwN2NjMzZkYzJmYmQ1ZjMw
YmVhOS4uMTRhODJlMzI3NjZlNjVkNTU4ZmM5NDE2NWVlNDIwNjBmY2Y1MjMwNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvU2NyaXB0Q29udHJvbGxlckJhc2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL1NjcmlwdENvbnRyb2xsZXJCYXNlLmNwcApAQCAtNDIs
NyArNDIsNyBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNv
bkZvckNhbGxpbmdDYW5FeGVjdXRlU2NyaXB0cyByZWFzbwogICAgIGlmIChtX2ZyYW1lLT5kb2N1
bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRz
KSkgewogICAgICAgICAvLyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYg
dGhlIGNvbnNvbGUgb25jZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMDMyNzQgZXhpc3RzLgogICAgICAgICBpZiAocmVhc29uID09IEFib3V0
VG9FeGVjdXRlU2NyaXB0KQotICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkJs
b2NrZWQgc2NyaXB0IGV4ZWN1dGlvbiBpbiAnIiArIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgp
LmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSB0aGUgZG9jdW1lbnQncyBmcmFtZSBpcyBzYW5k
Ym94ZWQgYW5kIHRoZSAnYWxsb3ctc2NyaXB0cycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOwor
ICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2VjdXJp
dHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkJsb2NrZWQgc2NyaXB0IGV4ZWN1
dGlvbiBpbiAnIiArIG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSB0aGUgZG9jdW1lbnQncyBmcmFtZSBpcyBzYW5k
Ym94ZWQgYW5kIHRoZSAnYWxsb3ctc2NyaXB0cycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOwog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAppbmRl
eCA4ZGE3N2UwMzIwMGRjNjBkZTU3MjFkMTEzNWMyYTg1YjM1M2EzODlmLi5jYjA4NDFjM2FkY2Ri
NTg5ZTdjYWQxOGM1NWI3OWNjMzMzZjQ5ZjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKQEAg
LTI4ODMsNyArMjg4Myw3IEBAIHZvaWQgRG9jdW1lbnQ6OnByb2Nlc3NIdHRwRXF1aXYoY29uc3Qg
U3RyaW5nJiBlcXVpdiwgY29uc3QgU3RyaW5nJiBjb250ZW50KQogICAgICAgICAgICAgaWYgKGZy
YW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRlcigpICYmIGZyYW1lTG9hZGVyLT5hY3RpdmVE
b2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VMb2FkZXIoKSkKICAgICAgICAgICAgICAgICBy
ZXF1ZXN0SWRlbnRpZmllciA9IGZyYW1lTG9hZGVyLT5hY3RpdmVEb2N1bWVudExvYWRlcigpLT5t
YWluUmVzb3VyY2VMb2FkZXIoKS0+aWRlbnRpZmllcigpOwogICAgICAgICAgICAgaWYgKGZyYW1l
TG9hZGVyLT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCB1cmwo
KSwgcmVxdWVzdElkZW50aWZpZXIpKSB7Ci0gICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2Ug
PSAiUmVmdXNlZCB0byBkaXNwbGF5ICciICsgdXJsKCkuZWxpZGVkU3RyaW5nKCkgKyAiJyBpbiBh
IGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgY29udGVudCAr
ICInLiI7CisgICAgICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byBkaXNw
bGF5ICciICsgdXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBh
IGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9wdGlvbnMnIHRvICciICsgY29udGVudCAr
ICInLiI7CiAgICAgICAgICAgICAgICAgZnJhbWVMb2FkZXItPnN0b3BBbGxMb2FkZXJzKCk7CiAg
ICAgICAgICAgICAgICAgLy8gU3RvcHBpbmcgdGhlIGxvYWRlciBpc24ndCBlbm91Z2gsIGFzIHdl
J3JlIGFscmVhZHkgcGFyc2luZyB0aGUgZG9jdW1lbnQ7IHRvIGhvbm9yIHRoZSBoZWFkZXIncwog
ICAgICAgICAgICAgICAgIC8vIGludGVudCwgd2UgbXVzdCBuYXZpZ2F0ZSBhd2F5IGZyb20gdGhl
IHBvc3NpYmx5IHBhcnRpYWxseS1yZW5kZXJlZCBkb2N1bWVudCB0byBhIGxvY2F0aW9uIHRoYXQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9TY3JpcHRFbGVtZW50LmNwcAppbmRleCBjNTA1YWZhMzdkOTE1N2Y0OTI4
NmExNzU3MmM1ODIyMmQ3ZGNkZWQ1Li4yM2YwZjY1MmZmMmI0ODA4ZWY5ZmFmYTlmZjM5YzA5Zjk1
N2M1YzYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vU2NyaXB0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1NjcmlwdEVsZW1lbnQuY3BwCkBAIC0yOTcsNyArMjk3
LDcgQEAgdm9pZCBTY3JpcHRFbGVtZW50OjpleGVjdXRlU2NyaXB0KGNvbnN0IFNjcmlwdFNvdXJj
ZUNvZGUmIHNvdXJjZUNvZGUpCiAKICNpZiBFTkFCTEUoTk9TTklGRikKICAgICBpZiAobV9pc0V4
dGVybmFsU2NyaXB0ICYmIG1fY2FjaGVkU2NyaXB0ICYmICFtX2NhY2hlZFNjcmlwdC0+bWltZVR5
cGVBbGxvd2VkQnlOb3NuaWZmKCkpIHsKLSAgICAgICAgbV9lbGVtZW50LT5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShTZWN1cml0eU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVs
LCAiUmVmdXNlZCB0byBleGVjdXRlIHNjcmlwdCBmcm9tICciICsgbV9jYWNoZWRTY3JpcHQtPnVy
bCgpLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSBpdHMgTUlNRSB0eXBlICgnIiArIG1fY2Fj
aGVkU2NyaXB0LT5taW1lVHlwZSgpICsgIicpIGlzIG5vdCBleGVjdXRhYmxlLCBhbmQgc3RyaWN0
IE1JTUUgdHlwZSBjaGVja2luZyBpcyBlbmFibGVkLiIpOworICAgICAgICBtX2VsZW1lbnQtPmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JN
ZXNzYWdlTGV2ZWwsICJSZWZ1c2VkIHRvIGV4ZWN1dGUgc2NyaXB0IGZyb20gJyIgKyBtX2NhY2hl
ZFNjcmlwdC0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNh
dXNlIGl0cyBNSU1FIHR5cGUgKCciICsgbV9jYWNoZWRTY3JpcHQtPm1pbWVUeXBlKCkgKyAiJykg
aXMgbm90IGV4ZWN1dGFibGUsIGFuZCBzdHJpY3QgTUlNRSB0eXBlIGNoZWNraW5nIGlzIGVuYWJs
ZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuY3BwCmluZGV4IDAzZTYwMTQwNTg4M2QzYzVjNGQ1MDcyZDEwZTQ4
MTQwYzU2YzI1NWQuLmZiMjE3ZDI1YzVkODJlMzBlYmVhMWI0NzI2NDE0ZjU5ZWI4M2I2ODAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcApAQCAtNzQ4LDcgKzc0OCw3
IEBAIFN0cmluZyBIVE1MTWVkaWFFbGVtZW50OjpjYW5QbGF5VHlwZShjb25zdCBTdHJpbmcmIG1p
bWVUeXBlLCBjb25zdCBTdHJpbmcmIGtleVN5CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAg
ICAgCi0gICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoJXMsICVz
LCAlcykgLT4gJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgpLmRh
dGEoKSwgdXJsLmVsaWRlZFN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGNhblBsYXkudXRmOCgpLmRh
dGEoKSk7CisgICAgTE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6Y2FuUGxheVR5cGUoJXMs
ICVzLCAlcykgLT4gJXMiLCBtaW1lVHlwZS51dGY4KCkuZGF0YSgpLCBrZXlTeXN0ZW0udXRmOCgp
LmRhdGEoKSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5kYXRh
KCksIGNhblBsYXkudXRmOCgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gY2FuUGxheTsKIH0KQEAg
LTE1MzAsNyArMTUzMCw3IEBAIGJvb2wgSFRNTE1lZGlhRWxlbWVudDo6aXNTYWZlVG9Mb2FkVVJM
KGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFVSTEFjdGlvbiBhY3Rpb25JCiAgICAgRnJhbWUqIGZy
YW1lID0gZG9jdW1lbnQoKS0+ZnJhbWUoKTsKICAgICBpZiAoIWZyYW1lIHx8ICFkb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgaWYgKGFjdGlv
bklmSW52YWxpZCA9PSBDb21wbGFpbikKLSAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRM
b2NhbExvYWRGYWlsZWQoZnJhbWUsIHVybC5lbGlkZWRTdHJpbmcoKSk7CisgICAgICAgICAgICBG
cmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKGZyYW1lLCB1cmwuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkpOwogICAgICAgICBMT0coTWVkaWEsICJIVE1MTWVkaWFFbGVt
ZW50Ojppc1NhZmVUb0xvYWRVUkwoJXMpIC0+IEZBTFNFIHJlamVjdGVkIGJ5IFNlY3VyaXR5T3Jp
Z2luIiwgdXJsRm9yTG9nZ2luZ01lZGlhKHVybCkudXRmOCgpLmRhdGEoKSk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9DYWxsU3RhY2tTaWRlYmFyUGFuZS5qcwppbmRleCBlZGFiYzU3NzhjZmIw
M2UyYWJlMjVkYzZkMzNhMWE2YmYzYjU3YzI2Li4xY2EwZTQwMDNjMTdkZDY0ODNjMWY0Zjk3NmU0
YWJiMzI2NmYwZDQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0NhbGxTdGFja1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ2FsbFN0YWNrU2lkZWJhclBhbmUuanMKQEAgLTE5MSw3ICsxOTEsNyBAQCBX
ZWJJbnNwZWN0b3IuQ2FsbFN0YWNrU2lkZWJhclBhbmUuUGxhY2FyZCA9IGZ1bmN0aW9uKGNhbGxG
cmFtZSwgcGFuZSkKIFdlYkluc3BlY3Rvci5DYWxsU3RhY2tTaWRlYmFyUGFuZS5QbGFjYXJkLnBy
b3RvdHlwZSA9IHsKICAgICBfdXBkYXRlOiBmdW5jdGlvbih1aUxvY2F0aW9uKQogICAgIHsKLSAg
ICAgICAgdGhpcy5zdWJ0aXRsZSA9IFdlYkluc3BlY3Rvci5mb3JtYXRMaW5rVGV4dCh1aUxvY2F0
aW9uLnVpU291cmNlQ29kZS5vcmlnaW5VUkwoKSwgdWlMb2NhdGlvbi5saW5lTnVtYmVyKS50cmlt
TWlkZGxlKDEwMCk7CisgICAgICAgIHRoaXMuc3VidGl0bGUgPSBXZWJJbnNwZWN0b3IuZm9ybWF0
TGlua1RleHQodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUub3JpZ2luVVJMKCksIHVpTG9jYXRpb24u
bGluZU51bWJlcikuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKDEwMCk7CiAgICAgfSwKIAogICAg
IF9wbGFjYXJkQ29udGV4dE1lbnU6IGZ1bmN0aW9uKGV2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1RyZWVPdXRsaW5lLmpzCmlu
ZGV4IGUxN2M3Y2UzMjUxNDI3NGI1MGE4ZjViZWRmOWVhOGUzODQ3NjVmNzMuLmMzMDViODU4OTI2
ZmM1NTRiMDQ4NWQzYzNhYTFkZThkNTU5NmUyMzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNUcmVlT3V0bGluZS5qcworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRzVHJlZU91dGxpbmUuanMKQEAgLTE3
OTYsNyArMTc5Niw3IEBAIFdlYkluc3BlY3Rvci5FbGVtZW50c1RyZWVFbGVtZW50LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgICAgICBhdHRyVmFsdWVFbGVtZW50LnRleHRDb250ZW50ID0gdmFs
dWU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5zdGFy
dHNXaXRoKCJkYXRhOiIpKQotICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnRyaW1N
aWRkbGUoNjApOworICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLmNlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCg2MCk7CiAgICAgICAgICAgICAgICAgYXR0clNwYW5FbGVtZW50LmFwcGVu
ZENoaWxkKGxpbmtpZnkocmV3cml0dGVuSHJlZiwgdmFsdWUsICJ3ZWJraXQtaHRtbC1hdHRyaWJ1
dGUtdmFsdWUiLCBub2RlLm5vZGVOYW1lKCkudG9Mb3dlckNhc2UoKSA9PT0gImEiKSk7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0hlYXBTbmFwc2hvdEdyaWROb2Rlcy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCmluZGV4IDUy
ZmQ4MjVkYmFmOTNhYzA4M2Q4NTczMTE2MTAxNzNkNGEyZjY3MzMuLjFhMGQ0ZjUwMzIxYjk1MmRj
OTYwNjIwOGRiZjI2MzM3YWMxYWY5YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvSGVhcFNuYXBzaG90R3JpZE5vZGVzLmpzCkBAIC01MTcs
NyArNTE3LDcgQEAgV2ViSW5zcGVjdG9yLkhlYXBTbmFwc2hvdEdlbmVyaWNPYmplY3ROb2RlLnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIHZhciBmdWxsVVJMID0gZnVsbE5hbWUuc3Vic3RyaW5n
KHN0YXJ0UG9zICsgMSwgZW5kUG9zKS50cmltTGVmdCgpOwogICAgICAgICAgICAgdmFyIHVybCA9
IGZ1bGxVUkwudHJpbVVSTCgpOwogICAgICAgICAgICAgaWYgKHVybC5sZW5ndGggPiA0MCkKLSAg
ICAgICAgICAgICAgICB1cmwgPSB1cmwudHJpbU1pZGRsZSg0MCk7CisgICAgICAgICAgICAgICAg
dXJsID0gdXJsLmNlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCg0MCk7CiAgICAgICAgICAgICByZXR1
cm4gZnVsbE5hbWUuc3Vic3RyKDAsIHN0YXJ0UG9zICsgMikgKyB1cmwgKyBmdWxsTmFtZS5zdWJz
dHIoZW5kUG9zKTsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gZnVsbE5hbWU7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpbmtpZmll
ci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCmlu
ZGV4IGNkYTFjNjYzODVhMGJhY2MzOWE2MjJhZjhjNjZjM2JmOTMyZmM1YzEuLjFmNDExMGQ4Yzk0
Y2FlNDgyZjkxNmU0MWY1NmU2NWI4OWM5ZjA4NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTGlua2lmaWVyLmpzCkBAIC0xMzksNyArMTM5LDcgQEAgV2ViSW5z
cGVjdG9yLkxpbmtpZmllci5EZWZhdWx0Rm9ybWF0dGVyLnByb3RvdHlwZSA9IHsKICAgICB7CiAg
ICAgICAgIHZhciB0ZXh0ID0gV2ViSW5zcGVjdG9yLmZvcm1hdExpbmtUZXh0KHVpTG9jYXRpb24u
dWlTb3VyY2VDb2RlLm9yaWdpblVSTCgpLCB1aUxvY2F0aW9uLmxpbmVOdW1iZXIpOwogICAgICAg
ICBpZiAodGhpcy5fbWF4TGVuZ3RoKQotICAgICAgICAgICAgdGV4dCA9IHRleHQudHJpbU1pZGRs
ZSh0aGlzLl9tYXhMZW5ndGgpOworICAgICAgICAgICAgdGV4dCA9IHRleHQuY2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKHRoaXMuX21heExlbmd0aCk7CiAgICAgICAgIGFuY2hvci50ZXh0Q29udGVu
dCA9IHRleHQ7CiAKICAgICAgICAgdmFyIHRpdGxlVGV4dCA9IHVpTG9jYXRpb24udWlTb3VyY2VD
b2RlLm9yaWdpblVSTCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9SZXNvdXJjZVV0aWxzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9SZXNvdXJjZVV0aWxzLmpzCmluZGV4IDVlZjNmZThlZGRlZTQ4MzAwYzRlZmYyMTcwOWM0
NDEyOTM5MTY3ZGYuLmUzOWFlNmE4MThkYWE5YTk1YzYwMjY1NjNmZjc2ZjAzYTIyYjNmMDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VVdGls
cy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1Jlc291cmNlVXRp
bHMuanMKQEAgLTE3Miw3ICsxNzIsNyBAQCBXZWJJbnNwZWN0b3IubGlua2lmeVVSTEFzTm9kZSA9
IGZ1bmN0aW9uKHVybCwgbGlua1RleHQsIGNsYXNzZXMsIGlzRXh0ZXJuYWwsIHRvbwogICAgICAg
ICBhLnRpdGxlID0gdXJsOwogICAgIGVsc2UgaWYgKHR5cGVvZiB0b29sdGlwVGV4dCAhPT0gInN0
cmluZyIgfHwgdG9vbHRpcFRleHQubGVuZ3RoKQogICAgICAgICBhLnRpdGxlID0gdG9vbHRpcFRl
eHQ7Ci0gICAgYS50ZXh0Q29udGVudCA9IGxpbmtUZXh0LnRyaW1NaWRkbGUoV2ViSW5zcGVjdG9y
LkxpbmtpZmllci5NYXhMZW5ndGhGb3JEaXNwbGF5ZWRVUkxzKTsKKyAgICBhLnRleHRDb250ZW50
ID0gbGlua1RleHQuY2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKFdlYkluc3BlY3Rvci5MaW5raWZp
ZXIuTWF4TGVuZ3RoRm9yRGlzcGxheWVkVVJMcyk7CiAgICAgaWYgKGlzRXh0ZXJuYWwpCiAgICAg
ICAgIGEuc2V0QXR0cmlidXRlKCJ0YXJnZXQiLCAiX2JsYW5rIik7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvVGFiYmVkRWRpdG9yQ29udGFpbmVyLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWlu
ZXIuanMKaW5kZXggOTg4MDdjMjZlODQzZWRhNDU2ZWFmZWY2NWVkYTE4OGFmMGNkMzg4NC4uZjk2
Y2U1NmJhOGY3ZWRlOWIwZWRkMTJhODM4YTZlNWUyYWRiNjgzZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWluZXIuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9UYWJiZWRFZGl0b3JDb250YWlu
ZXIuanMKQEAgLTE3Myw3ICsxNzMsNyBAQCBXZWJJbnNwZWN0b3IuVGFiYmVkRWRpdG9yQ29udGFp
bmVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgY29uc3QgbWluRGlzcGxheVF1ZXJ5UGFyYW1MZW5n
dGggPSA1OwogCiAgICAgICAgIHZhciB0aXRsZSA9IHVpU291cmNlQ29kZS5uYW1lKCk7Ci0gICAg
ICAgIHRpdGxlID0gdGl0bGUgPyB0aXRsZS50cmltTWlkZGxlKG1heERpc3BsYXlOYW1lTGVuZ3Ro
KSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgIHRpdGxlID0g
dGl0bGUgPyB0aXRsZS5jZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgobWF4RGlzcGxheU5hbWVMZW5n
dGgpIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJvZ3JhbSkiKTsKICAgICAgICAgaWYgKHVp
U291cmNlQ29kZS5pc0RpcnR5KCkpCiAgICAgICAgICAgICB0aXRsZSArPSAiKiI7CiAgICAgICAg
IHJldHVybiB0aXRsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91
dGlsaXRpZXMuanMKaW5kZXggZDA5MDQxZjMzM2IwYzQ2NWRmZDQ5ZDY0NjAyZjdiNDNmNTZkOTk0
OC4uOTBjZWZkNmIwYjFlY2M5N2Y5ZTJhMDBiODk2ZDhiMGY1ZWExMDExZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKQEAgLTExNCw3ICsx
MTQsNyBAQCBTdHJpbmcucHJvdG90eXBlLmNvbGxhcHNlV2hpdGVzcGFjZSA9IGZ1bmN0aW9uKCkK
ICAgICByZXR1cm4gdGhpcy5yZXBsYWNlKC9bXHNceEEwXSsvZywgIiAiKTsKIH0KIAotU3RyaW5n
LnByb3RvdHlwZS50cmltTWlkZGxlID0gZnVuY3Rpb24obWF4TGVuZ3RoKQorU3RyaW5nLnByb3Rv
dHlwZS5jZW50ZXJFbGxpcHNpemVkVG9MZW5ndGggPSBmdW5jdGlvbihtYXhMZW5ndGgpCiB7CiAg
ICAgaWYgKHRoaXMubGVuZ3RoIDw9IG1heExlbmd0aCkKICAgICAgICAgcmV0dXJuIFN0cmluZyh0
aGlzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDQ5M2Qy
YTg5NzNhNzFiOWI1NDBjNTY1NDg1NjYwNjJhODk1OTk0ZjUuLjkyZWI4MDU0MWYwNDZmNzBmYTQz
ZWYzMWFlNzkyZGZmZTE2NWExMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9E
b2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmNwcApAQCAtNTcyLDcgKzU3Miw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNl
UmVjZWl2ZWQoQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAgICAg
ICAgIEFTU0VSVChpZGVudGlmaWVyKTsKICAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCktPnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHJlc3BvbnNlLnVybCgpLCBp
ZGVudGlmaWVyKSkgewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250
aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLCB0aGlzLCBpZGVudGlmaWVyLCBy
ZXNwb25zZSk7Ci0gICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3Bs
YXkgJyIgKyByZXNwb25zZS51cmwoKS5lbGlkZWRTdHJpbmcoKSArICInIGluIGEgZnJhbWUgYmVj
YXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBjb250ZW50ICsgIicuIjsKKyAg
ICAgICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gZGlzcGxheSAnIiArIHJlc3Bv
bnNlLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgaW4gYSBmcmFt
ZSBiZWNhdXNlIGl0IHNldCAnWC1GcmFtZS1PcHRpb25zJyB0byAnIiArIGNvbnRlbnQgKyAiJy4i
OwogICAgICAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoU2Vj
dXJpdHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgbWVzc2FnZSwgaWRlbnRpZmll
cik7CiAgICAgICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLT5lbmZvcmNlU2FuZGJveEZsYWdz
KFNhbmRib3hPcmlnaW4pOwogICAgICAgICAgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCog
b3duZXJFbGVtZW50ID0gZnJhbWUoKS0+b3duZXJFbGVtZW50KCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmNwcAppbmRleCBiNjVkNWEwNTdiMWE4MGQwN2JiMjM5OGZkZGZiNjljNTE5
ZWU0ODkwLi4yYTlmNWYyZTgzY2Y0ZGJiODU3ZWI1ZjhmNzA5OGE0ODcwODg1NjkyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKQEAgLTMzNiw3ICszMzYsNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Np
b24pCiAKICAgICBpZiAoaXNEb2N1bWVudFNhbmRib3hlZChtX2ZyYW1lLCBTYW5kYm94Rm9ybXMp
KSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJlIG1vdmVkIG9mZiB0
aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PmFkZENvbnNvbGVNZXNzYWdlKFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2
ZWwsICJCbG9ja2VkIGZvcm0gc3VibWlzc2lvbiB0byAnIiArIHN1Ym1pc3Npb24tPmFjdGlvbigp
LmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSB0aGUgZm9ybSdzIGZyYW1lIGlzIHNhbmRib3hl
ZCBhbmQgdGhlICdhbGxvdy1mb3JtcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOworICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShTZWN1cml0eU1lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQmxvY2tlZCBmb3JtIHN1Ym1pc3Npb24gdG8gJyIg
KyBzdWJtaXNzaW9uLT5hY3Rpb24oKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgdGhlIGZvcm0ncyBmcmFtZSBpcyBzYW5kYm94ZWQgYW5kIHRoZSAnYWxsb3ct
Zm9ybXMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEZyYW1lUmVxdWVz
dChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGxvY2tIaXMKIAogICAgIEFT
U0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBpZiAoIXJlcXVlc3QucmVxdWVzdGVyKCkt
PmNhbkRpc3BsYXkodXJsKSkgewotICAgICAgICByZXBvcnRMb2NhbExvYWRGYWlsZWQobV9mcmFt
ZSwgdXJsLmVsaWRlZFN0cmluZygpKTsKKyAgICAgICAgcmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1f
ZnJhbWUsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTE2OTQsOCArMTY5NCw4IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNv
bW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgUmVmUHRyPEZyYW1lPiBwcm90ZWN0KG1fZnJhbWUp
OwogCiAgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21t
aXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZpb3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVz
JyIsIG1fZnJhbWUtPnRyZWUoKS0+dW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCks
Ci0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwo
KS5lbGlkZWRTdHJpbmcoKS51dGY4KCkuZGF0YSgpIDogIiIsCi0gICAgICAgIHBkbCA/IHBkbC0+
dXJsKCkuZWxpZGVkU3RyaW5nKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9j
dW1lbnRMb2FkZXI+Iik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkgPyBtX2ZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCku
ZGF0YSgpIDogIiIsCisgICAgICAgIHBkbCA/IHBkbC0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6ICI8bm8gcHJvdmlzaW9uYWwgRG9jdW1lbnRM
b2FkZXI+Iik7CiAKICAgICB3aWxsVHJhbnNpdGlvblRvQ29tbWl0dGVkKCk7CiAKQEAgLTE3NDgs
NyArMTc0OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAg
ICAgfQogCiAgICAgTE9HKExvYWRpbmcsICJXZWJDb3JlTG9hZGluZyAlczogRmluaXNoZWQgY29t
bWl0dGluZyBwcm92aXNpb25hbCBsb2FkIHRvIFVSTCAlcyIsIG1fZnJhbWUtPnRyZWUoKS0+dW5p
cXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksCi0gICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCkgPyBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5lbGlkZWRTdHJpbmcoKS51dGY4KCku
ZGF0YSgpIDogIiIpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpID8gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRh
dGEoKSA6ICIiKTsKIAogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVTdGFuZGFy
ZCAmJiBtX2RvY3VtZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0KCkpCiAgICAgICAgIGhpc3Rv
cnkoKS0+dXBkYXRlRm9yQ2xpZW50UmVkaXJlY3QoKTsKQEAgLTI5NjQsMTAgKzI5NjQsMTAgQEAg
Ym9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29u
c3QgU3RyaW5nJiBjb250ZW50LCBjb24KICAgICBjYXNlIFhGcmFtZU9wdGlvbnNBbGxvd0FsbDoK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNhc2UgWEZyYW1lT3B0aW9uc0NvbmZsaWN0Ogot
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShKU01lc3NhZ2VT
b3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiTXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVh
ZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVlcyAoJyIgKyBjb250ZW50ICsgIicpIGVuY291bnRl
cmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5lbGlkZWRTdHJpbmcoKSArICInLiBGYWxsaW5nIGJh
Y2sgdG8gJ0RFTlknLiIsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VM
ZXZlbCwgIk11bHRpcGxlICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlcnMgd2l0aCBjb25mbGljdGlu
ZyB2YWx1ZXMgKCciICsgY29udGVudCArICInKSBlbmNvdW50ZXJlZCB3aGVuIGxvYWRpbmcgJyIg
KyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJy4gRmFsbGluZyBiYWNr
IHRvICdERU5ZJy4iLCByZXF1ZXN0SWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIGNhc2UgWEZyYW1lT3B0aW9uc0ludmFsaWQ6Ci0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmFkZENvbnNvbGVNZXNzYWdlKEpTTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWws
ICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxvYWRp
bmcgJyIgKyB1cmwuZWxpZGVkU3RyaW5nKCkgKyAiJzogJyIgKyBjb250ZW50ICsgIicgaXMgbm90
IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIgd2lsbCBiZSBpZ25vcmVkLiIsIHJl
cXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoSlNNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkludmFsaWQgJ1gt
RnJhbWUtT3B0aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIGNvbnRlbnQgKyAiJyBp
cyBub3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQu
IiwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZGVmYXVs
dDoKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBAIC0yOTc4LDcgKzI5NzgsNyBAQCBi
b29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFByb3Zpc2lvbmFs
SXRlbUZyb21DYWNoZWRQYWdlKCkKIHsKICAgICBEb2N1bWVudExvYWRlciogcHJvdmlzaW9uYWxM
b2FkZXIgPSBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCk7Ci0gICAgTE9HKFBhZ2VDYWNoZSwg
IldlYkNvcmVQYWdlQ2FjaGU6IExvYWRpbmcgcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAg
d2l0aCBVUkwgJyVzJyBmcm9tIENhY2hlZFBhZ2UiLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KCksIHByb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIoKS0+dXJsKCkuZWxpZGVkU3RyaW5nKCkudXRm
OCgpLmRhdGEoKSk7CisgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNvcmVQYWdlQ2FjaGU6IExvYWRp
bmcgcHJvdmlzaW9uYWwgRG9jdW1lbnRMb2FkZXIgJXAgd2l0aCBVUkwgJyVzJyBmcm9tIENhY2hl
ZFBhZ2UiLCBwcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCksIHByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRh
dGEoKSk7CiAKICAgICBwcmVwYXJlRm9yTG9hZFN0YXJ0KCk7CiAKQEAgLTMzNjcsNyArMzM2Nyw3
IEBAIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIEZy
YW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhCiAgICAgLy8gU2FuZGJveGVkIGZyYW1lcyBjYW5u
b3Qgb3BlbiBuZXcgYXV4aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHRzLgogICAgIGlmIChpc0RvY3Vt
ZW50U2FuZGJveGVkKG9wZW5lckZyYW1lLCBTYW5kYm94UG9wdXBzKSkgewogICAgICAgICAvLyBG
SVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhlIGNvbnNvbGUgb25jZSBh
IHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDMy
NzQgZXhpc3RzLgotICAgICAgICBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoU2VjdXJpdHlNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwgIkJsb2NrZWQg
b3BlbmluZyAnIiArIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuZWxpZGVkU3RyaW5n
KCkgKyAiJyBpbiBhIG5ldyB3aW5kb3cgYmVjYXVzZSB0aGUgcmVxdWVzdCB3YXMgbWFkZSBpbiBh
IHNhbmRib3hlZCBmcmFtZSB3aG9zZSAnYWxsb3ctcG9wdXBzJyBwZXJtaXNzaW9uIGlzIG5vdCBz
ZXQuIik7CisgICAgICAgIG9wZW5lckZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShTZWN1cml0eU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQmxvY2tlZCBvcGVu
aW5nICciICsgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKSArICInIGluIGEgbmV3IHdpbmRvdyBiZWNhdXNlIHRoZSByZXF1ZXN0
IHdhcyBtYWRlIGluIGEgc2FuZGJveGVkIGZyYW1lIHdob3NlICdhbGxvdy1wb3B1cHMnIHBlcm1p
c3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggZTNlZmY3NTRk
ODY3ZThiMzc3ZmVlMTcwMjllYzlkZGU5ZTUxMjYzOC4uMDhjMjM2OTNkMGQ3ZGRlMWY2Nzg3YjI1
MGFhNzdlZDM5ZTZiMWJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVk
Q29udGVudENoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRl
bnRDaGVja2VyLmNwcApAQCAtOTUsNyArOTUsNyBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6
OmNhblJ1bkluc2VjdXJlQ29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sCiAK
IHZvaWQgTWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0
IFN0cmluZyYgYWN0aW9uLCBjb25zdCBLVVJMJiB0YXJnZXQpIGNvbnN0CiB7Ci0gICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhl
IHBhZ2UgYXQgIiwgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkuZWxpZGVkU3RyaW5nKCksICIg
IiwgYWN0aW9uLCAiIGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuZWxpZGVkU3RyaW5n
KCksICIuXG4iKTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoKGFsbG93ZWQgPyAi
IiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLT5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIiAiLCBhY3Rpb24sICIgaW5z
ZWN1cmUgY29udGVudCBmcm9tICIsIHRhcmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSwgIi5cbiIpOwogICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdl
KFNlY3VyaXR5TWVzc2FnZVNvdXJjZSwgV2FybmluZ01lc3NhZ2VMZXZlbCwgbWVzc2FnZSk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlv
bkNhY2hlR3JvdXAuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0
aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXggNmViOTI5ZTJjNzA1NDY4ZmYwMTU0MWNlNGFmY2FiNThi
YjEzYTkzMS4uM2EyZmJlMmJhYTIzMjQ4ODFlZGRjZGJmY2U5ZDZhOGMyZjNhOTAzYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91
cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2Fj
aGVHcm91cC5jcHAKQEAgLTU3Myw3ICs1NzMsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91
cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwog
CiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMiB8fCByZXNwb25z
ZS51cmwoKSAhPSBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpKSB7CiAgICAg
ICAgIGlmICgodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNvdXJjZTo6RXhwbGljaXQpIHx8ICh0
eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGYWxsYmFjaykpIHsKLSAgICAgICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKEFwcENhY2hlTWVzc2FnZVNv
dXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVk
LCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLmVsaWRl
ZFN0cmluZygpICsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKEFwcENhY2hlTWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsICJBcHBsaWNh
dGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZp
cnN0UmVxdWVzdCgpLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsKICAg
ICAgICAgICAgICAgICAoKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMikgPyAi
IGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIgOiAiIHdhcyByZWRpcmVjdGVkLiIpKTsKICAgICAgICAg
ICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUg
Z3JvdXAgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBA
IC02ODcsNyArNjg3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqIGhhbmRsZSwgY29uc3QgUmVzb3VyY2VFcnJvciYKICAgICBtX3BlbmRpbmdF
bnRyaWVzLnJlbW92ZSh1cmwpOwogCiAgICAgaWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJl
c291cmNlOjpFeHBsaWNpdCkgfHwgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZh
bGxiYWNrKSkgewotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2Fn
ZShBcHBDYWNoZU1lc3NhZ2VTb3VyY2UsIEVycm9yTWVzc2FnZUxldmVsLCAiQXBwbGljYXRpb24g
Q2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgdXJsLmVsaWRlZFN0cmluZygpICsgIiBj
b3VsZCBub3QgYmUgZmV0Y2hlZC4iKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRk
Q29uc29sZU1lc3NhZ2UoQXBwQ2FjaGVNZXNzYWdlU291cmNlLCBFcnJvck1lc3NhZ2VMZXZlbCwg
IkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2UgIiArIHVybC5zdHJpbmdD
ZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICIgY291bGQgbm90IGJlIGZldGNoZWQuIik7CiAg
ICAgICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVwZGF0ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2Fj
aGUgZ3JvdXAgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAg
ICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggN2RhODVmMzBlY2Q3MjFiZTA2NGU1ODE2OTdhMzE3NDU0
YWNmYjQ1Mi4uODk4OWJmMTFjNGY3NzgyNWU2MzUwOTk3MmIxMGU1NzQ5ZDg4MWQ3NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC0zMDcsNyArMzA3LDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVx
dWVzdChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdCBLVVJMJiB1cmwKIHsKICAgICBp
ZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eSh1cmwpKSB7CiAgICAgICAgIGlmICghZm9yUHJlbG9hZCkKLSAgICAgICAgICAgIEZyYW1lTG9h
ZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUoKSwgdXJsLmVsaWRlZFN0cmluZygpKTsK
KyAgICAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUoKSwg
dXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKICAgICAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJMIHdh
cyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwogICAgICAgICBy
ZXR1cm4gMDsKICAgICB9CkBAIC00MzUsNyArNDM1LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8
Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2Fj
aGUKIHsKICAgICBLVVJMIHVybCA9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCk7CiAg
ICAgCi0gICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0l
dSIsIHVybC5lbGlkZWRTdHJpbmcoKS5sYXRpbjEoKS5kYXRhKCksIHJlcXVlc3QuY2hhcnNldCgp
LmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpLCByZXF1ZXN0LmZvclByZWxvYWQo
KSk7CisgICAgTE9HKFJlc291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1
ZXN0UmVzb3VyY2UgJyVzJywgY2hhcnNldCAnJXMnLCBwcmlvcml0eT0lZCwgZm9yUHJlbG9hZD0l
dSIsIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS5sYXRpbjEoKS5kYXRhKCks
IHJlcXVlc3QuY2hhcnNldCgpLmxhdGluMSgpLmRhdGEoKSwgcmVxdWVzdC5wcmlvcml0eSgpLCBy
ZXF1ZXN0LmZvclByZWxvYWQoKSk7CiAgICAgCiAgICAgLy8gSWYgb25seSB0aGUgZnJhZ21lbnQg
aWRlbnRpZmllcnMgZGlmZmVyLCBpdCBpcyB0aGUgc2FtZSByZXNvdXJjZS4KICAgICB1cmwgPSBN
ZW1vcnlDYWNoZTo6cmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVySWZOZWVkZWQodXJsKTsKQEAgLTUz
OCw3ICs1MzgsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVk
UmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZShDYWNoZWRSZQogewogICAgIEFTU0VSVCghbWVt
b3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkp
KTsKIAotICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJMb2FkaW5nIENhY2hlZFJlc291cmNlIGZv
ciAnJXMnLiIsIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuZWxpZGVkU3RyaW5nKCku
bGF0aW4xKCkuZGF0YSgpKTsKKyAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiTG9hZGluZyBDYWNo
ZWRSZXNvdXJjZSBmb3IgJyVzJy4iLCByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLmxhdGluMSgpLmRhdGEoKSk7CiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNv
dXJjZSh0eXBlLCByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgY2hhcnNldCk7CiAK
QEAgLTY2OCw5ICs2NjgsOSBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmludEFjY2Vz
c0RlbmllZE1lc3NhZ2UoY29uc3QgS1VSTCYgdXJsKSBjb25zdAogCiAgICAgU3RyaW5nIG1lc3Nh
Z2U7CiAgICAgaWYgKCFtX2RvY3VtZW50IHx8IG1fZG9jdW1lbnQtPnVybCgpLmlzTnVsbCgpKQot
ICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuZWxp
ZGVkU3RyaW5nKCkgKyAnLic7CisgICAgICAgIG1lc3NhZ2UgPSAiVW5zYWZlIGF0dGVtcHQgdG8g
bG9hZCBVUkwgIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICcuJzsK
ICAgICBlbHNlCi0gICAgICAgIG1lc3NhZ2UgPSAiVW5zYWZlIGF0dGVtcHQgdG8gbG9hZCBVUkwg
IiArIHVybC5lbGlkZWRTdHJpbmcoKSArICIgZnJvbSBmcmFtZSB3aXRoIFVSTCAiICsgbV9kb2N1
bWVudC0+dXJsKCkuZWxpZGVkU3RyaW5nKCkgKyAiLiBEb21haW5zLCBwcm90b2NvbHMgYW5kIHBv
cnRzIG11c3QgbWF0Y2guXG4iOworICAgICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRv
IGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIGZy
b20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1lbnQtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1h
dGNoLlxuIjsKIAogICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKFNl
Y3VyaXR5TWVzc2FnZVNvdXJjZSwgRXJyb3JNZXNzYWdlTGV2ZWwsIG1lc3NhZ2UpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmluZGV4IDhmM2Yz
YTVhMTdmMDM2YjI3NzgyNjk5MDE2NDg3OGQ0MWMzMzY5ZDAuLjFmMjk4ZmJmYjhlOTdiZDI2ZGUx
ZjYzZTgwNWQyYzMzMmU0NDRmYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29u
dGVudFNlY3VyaXR5UG9saWN5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRlbnRT
ZWN1cml0eVBvbGljeS5jcHAKQEAgLTEwNzYsNyArMTA3Niw3IEBAIGJvb2wgQ1NQRGlyZWN0aXZl
TGlzdDo6Y2hlY2tTb3VyY2VBbmRSZXBvcnRWaW9sYXRpb24oU291cmNlTGlzdERpcmVjdGl2ZSog
ZGlyZWN0CiAgICAgaWYgKGRpcmVjdGl2ZSA9PSBtX2RlZmF1bHRTcmMpCiAgICAgICAgIHN1ZmZp
eCA9ICIgTm90ZSB0aGF0ICciICsgZWZmZWN0aXZlRGlyZWN0aXZlICsgIicgd2FzIG5vdCBleHBs
aWNpdGx5IHNldCwgc28gJ2RlZmF1bHQtc3JjJyBpcyB1c2VkIGFzIGEgZmFsbGJhY2suIjsKIAot
ICAgIHJlcG9ydFZpb2xhdGlvbihkaXJlY3RpdmUtPnRleHQoKSwgZWZmZWN0aXZlRGlyZWN0aXZl
LCBwcmVmaXggKyB1cmwuZWxpZGVkU3RyaW5nKCkgKyAiJyBiZWNhdXNlIGl0IHZpb2xhdGVzIHRo
ZSBmb2xsb3dpbmcgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZGlyZWN0aXZlOiBcIiIgKyBkaXJl
Y3RpdmUtPnRleHQoKSArICJcIi4iICsgc3VmZml4ICsgIlxuIiwgdXJsKTsKKyAgICByZXBvcnRW
aW9sYXRpb24oZGlyZWN0aXZlLT50ZXh0KCksIGVmZmVjdGl2ZURpcmVjdGl2ZSwgcHJlZml4ICsg
dXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSBpdCB2aW9s
YXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2ZTogXCIi
ICsgZGlyZWN0aXZlLT50ZXh0KCkgKyAiXCIuIiArIHN1ZmZpeCArICJcbiIsIHVybCk7CiAgICAg
cmV0dXJuIGRlbnlJZkVuZm9yY2luZ1BvbGljeSgpOwogfQogCkBAIC0xMTMzLDEzICsxMTMzLDEz
IEBAIGJvb2wgQ1NQRGlyZWN0aXZlTGlzdDo6YWxsb3dTY3JpcHROb25jZShjb25zdCBTdHJpbmcm
IG5vbmNlLCBjb25zdCBTdHJpbmcmIGNvbnRlCiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJp
bmcsIGNvbnNvbGVNZXNzYWdlLCAoQVNDSUlMaXRlcmFsKCJSZWZ1c2VkIHRvIGV4ZWN1dGUgc2Ny
aXB0IGJlY2F1c2UgaXQgdmlvbGF0ZXMgdGhlIGZvbGxvd2luZyBDb250ZW50IFNlY3VyaXR5IFBv
bGljeSBkaXJlY3RpdmU6ICIpKSk7CiAgICAgaWYgKHVybC5pc0VtcHR5KCkpCiAgICAgICAgIHJl
dHVybiBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5v
bmNlLCBjb25zb2xlTWVzc2FnZSwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwotICAgIHJldHVy
biBjaGVja05vbmNlQW5kUmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNl
LCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLmVsaWRlZFN0cmluZygpICsgIicgYmVjYXVzZSBp
dCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVjdGl2
ZTogIiwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOworICAgIHJldHVybiBjaGVja05vbmNlQW5k
UmVwb3J0VmlvbGF0aW9uKG1fc2NyaXB0Tm9uY2UuZ2V0KCksIG5vbmNlLCAiUmVmdXNlZCB0byBs
b2FkICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVz
ZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRpcmVj
dGl2ZTogIiwgY29udGV4dFVSTCwgY29udGV4dExpbmUpOwogfQogCiBib29sIENTUERpcmVjdGl2
ZUxpc3Q6OmFsbG93UGx1Z2luVHlwZShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYg
dHlwZUF0dHJpYnV0ZSwgY29uc3QgS1VSTCYgdXJsLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
cG9ydGluZ1N0YXR1cyByZXBvcnRpbmdTdGF0dXMpIGNvbnN0CiB7CiAgICAgcmV0dXJuIHJlcG9y
dGluZ1N0YXR1cyA9PSBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlNlbmRSZXBvcnQgPwotICAgICAg
ICBjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5cGVzLmdldCgpLCB0
eXBlLCB0eXBlQXR0cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJsLmVsaWRlZFN0cmlu
ZygpICsgIicgKE1JTUUgdHlwZSAnIiArIHR5cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2
aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTog
IikgOgorICAgICAgICBjaGVja01lZGlhVHlwZUFuZFJlcG9ydFZpb2xhdGlvbihtX3BsdWdpblR5
cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlLCAiUmVmdXNlZCB0byBsb2FkICciICsgdXJs
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgKE1JTUUgdHlwZSAnIiArIHR5
cGVBdHRyaWJ1dGUgKyAiJykgYmVjYXVzZSBpdCB2aW9sYXRlcyB0aGUgZm9sbG93aW5nIENvbnRl
bnQgU2VjdXJpdHkgUG9saWN5IERpcmVjdGl2ZTogIikgOgogICAgICAgICBjaGVja01lZGlhVHlw
ZShtX3BsdWdpblR5cGVzLmdldCgpLCB0eXBlLCB0eXBlQXR0cmlidXRlKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vS1VSTC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9LVVJMLmNwcAppbmRleCA5ZmQ3MjY5M2IxMWFhYTUwYjc2M2IyN2E0ZWU4YWMyYTQy
YTNlNDA5Li44NzMyMjAxOGZkODEwNjdmOGJlMDE4YWFjOThlNDNiMWVjOTQwOGMyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9LVVJMLmNwcApAQCAtMTkyNCwxMiArMTkyNCwxMiBAQCBib29sIEtVUkw6Omlz
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fc3RyaW5nLmlz
U2FmZVRvU2VuZFRvQW5vdGhlclRocmVhZCgpOwogfQogCi1TdHJpbmcgS1VSTDo6ZWxpZGVkU3Ry
aW5nKCkgY29uc3QKK1N0cmluZyBLVVJMOjpzdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgo
dW5zaWduZWQgbGVuZ3RoKSBjb25zdAogewotICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSAx
MDI0KQorICAgIGlmIChzdHJpbmcoKS5sZW5ndGgoKSA8PSBsZW5ndGgpCiAgICAgICAgIHJldHVy
biBzdHJpbmcoKTsKIAotICAgIHJldHVybiBzdHJpbmcoKS5sZWZ0KDUxMSkgKyAiLi4uIiArIHN0
cmluZygpLnJpZ2h0KDUxMCk7CisgICAgcmV0dXJuIHN0cmluZygpLmxlZnQobGVuZ3RoIC8gMiAt
IDEpICsgIi4uLiIgKyBzdHJpbmcoKS5yaWdodChsZW5ndGggLyAyIC0gMik7CiB9CiAKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0tVUkwuaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL0tVUkwuaAppbmRleCA4YTU1OWRiYzRlZTRjOTJlNzJmZDQ0ZTk5Y2E2ZWQ1Mjg0
NmZiNWUwLi4wZjk3ZmY4ODBiMWViNDA4NWI4MjQzN2RiNDNlNDA1MWUyOGU4OTZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9LVVJMLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vS1VSTC5oCkBAIC0xMDMsNyArMTAzLDcgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
U3RyaW5nJiBzdHJpbmcoKSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQogCi0gICAgU3RyaW5n
IGVsaWRlZFN0cmluZygpIGNvbnN0OworICAgIFN0cmluZyBzdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgodW5zaWduZWQgbGVuZ3RoID0gMTAyNCkgY29uc3Q7CiAKICAgICBTdHJpbmcgcHJv
dG9jb2woKSBjb25zdDsKICAgICBTdHJpbmcgaG9zdCgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>