<?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>158313</bug_id>
          
          <creation_ts>2016-06-02 13:19:04 -0700</creation_ts>
          <short_desc>Modernize how many platform/network classes do isolatedCopy()</short_desc>
          <delta_ts>2016-06-13 10:03:52 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=158293</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>158695</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>danw</cc>
    
    <cc>galpeter</cc>
    
    <cc>gustavo</cc>
    
    <cc>japhet</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1198643</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 13:19:04 -0700</bug_when>
    <thetext>Modernize how many platform/network classes do isolatedCopy()

First part of this work was in https://bugs.webkit.org/show_bug.cgi?id=158293

Now let&apos;s get rid of these &quot;CrossThread*Data&quot; objects altogether.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198660</commentid>
    <comment_count>1</comment_count>
      <attachid>280359</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 13:37:35 -0700</bug_when>
    <thetext>Created attachment 280359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198671</commentid>
    <comment_count>2</comment_count>
      <attachid>280359</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-02 14:01:39 -0700</bug_when>
    <thetext>Comment on attachment 280359
Patch

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

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:87
&gt; +    setAllowCookies(m_allowCookies);

other.m_allowCookies

&gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:89
&gt; +    const_cast&lt;ResourceRequest&amp;&gt;(asResourceRequest()).doPlatformSetAsIsolatedCopy(other);

Would it work to make a non-const asResourceRequest() instead of a const_cast here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198680</commentid>
    <comment_count>3</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:20:53 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 280359 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=280359&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:87
&gt; &gt; +    setAllowCookies(m_allowCookies);
&gt; 
&gt; other.m_allowCookies

Yup yikes.

&gt; &gt; Source/WebCore/platform/network/ResourceRequestBase.cpp:89
&gt; &gt; +    const_cast&lt;ResourceRequest&amp;&gt;(asResourceRequest()).doPlatformSetAsIsolatedCopy(other);
&gt; 
&gt; Would it work to make a non-const asResourceRequest() instead of a
&gt; const_cast here?

const_cast&apos;ing the const ResourceRequest&amp; is an already established pattern in the class.


The relationship between ResourceRequestBase and ResourceRequest is already so gnarly that I didn&apos;t feel like tackling that here.

Would be a good followup cleanup.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198683</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:24:46 -0700</bug_when>
    <thetext>The linux build errors:

In file included from ../../Source/WebCore/platform/network/ResourceErrorBase.cpp:28:0:
../../Source/WebCore/platform/network/soup/ResourceError.h: In member function &apos;WebCore::ResourceError WebCore::ResourceErrorBase::isolatedCopy() const&apos;:
../../Source/WebCore/platform/network/soup/ResourceError.h:70:10: error: &apos;void WebCore::ResourceError::doPlatformIsolatedCopy(const WebCore::ResourceError&amp;)&apos; is private
../../Source/WebCore/platform/network/ResourceErrorBase.cpp:52:55: error: within this context

Funny, that method is private in the CF/Mac version as well, but it builds on Clang.

Anyways, yah I&apos;ll make it public.

(Normally I&apos;d virtualize it, but we try to keep these classes non-virtual for some historic reason I forgot)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198684</commentid>
    <comment_count>5</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:25:42 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The linux build errors:
&gt; 
&gt; In file included from
&gt; ../../Source/WebCore/platform/network/ResourceErrorBase.cpp:28:0:
&gt; ../../Source/WebCore/platform/network/soup/ResourceError.h: In member
&gt; function &apos;WebCore::ResourceError WebCore::ResourceErrorBase::isolatedCopy()
&gt; const&apos;:
&gt; ../../Source/WebCore/platform/network/soup/ResourceError.h:70:10: error:
&gt; &apos;void WebCore::ResourceError::doPlatformIsolatedCopy(const
&gt; WebCore::ResourceError&amp;)&apos; is private
&gt; ../../Source/WebCore/platform/network/ResourceErrorBase.cpp:52:55: error:
&gt; within this context
&gt; 
&gt; Funny, that method is private in the CF/Mac version as well, but it builds
&gt; on Clang.
&gt; 
&gt; Anyways, yah I&apos;ll make it public.
&gt; 
&gt; (Normally I&apos;d virtualize it, but we try to keep these classes non-virtual
&gt; for some historic reason I forgot)

Oh duh:
    friend class ResourceErrorBase;


Will add to the other headers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198685</commentid>
    <comment_count>6</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:27:20 -0700</bug_when>
    <thetext>Last 500 characters of output:
p.o.d -o Source/WebCore/CMakeFiles/WebCore.dir/platform/network/FormData.cpp.o -c ../../Source/WebCore/platform/network/FormData.cpp
../../Source/WebCore/platform/network/FormData.cpp: In member function &apos;WebCore::FormDataElement WebCore::FormDataElement::isolatedCopy() const&apos;:
../../Source/WebCore/platform/network/FormData.cpp:139:1: error: control reaches end of non-void function [-Werror=return-type]

That&apos;s just GCC not recognizing that all 3 of the possible cases are handled. *sigh*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198686</commentid>
    <comment_count>7</comment_count>
      <attachid>280367</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:28:26 -0700</bug_when>
    <thetext>Created attachment 280367
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198687</commentid>
    <comment_count>8</comment_count>
      <attachid>280368</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:29:22 -0700</bug_when>
    <thetext>Created attachment 280368
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198688</commentid>
    <comment_count>9</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2016-06-02 14:30:03 -0700</bug_when>
    <thetext>For an EWS run. Will cq+ once linux bots are happy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198711</commentid>
    <comment_count>10</comment_count>
      <attachid>280368</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 15:42:05 -0700</bug_when>
    <thetext>Comment on attachment 280368
Patch

Clearing flags on attachment: 280368

Committed r201623: &lt;http://trac.webkit.org/changeset/201623&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198712</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 15:42:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280359</attachid>
            <date>2016-06-02 13:37:35 -0700</date>
            <delta_ts>2016-06-02 14:28:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158313-20160602133854.patch</filename>
            <type>text/plain</type>
            <size>37246</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VlZWM4ZmZjNDRiMTFm
YjIyNGQ2YTE2YzhkYTgyN2FkZTIzYzcyNi4uNDgwNThlMGVmMDY0ODk2MjNhYTc0ZTRhZjU3YjMx
MmIxMDYwOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk1IEBACiAyMDE2LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBNb2Rlcm5pemUgaG93IG1h
bnkgcGxhdGZvcm0vbmV0d29yayBjbGFzc2VzIGRvIGlzb2xhdGVkQ29weSgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZh
Y3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6Rm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OmRlZXBDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Y29weURhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6YWRvcHQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjphc1Jlc291cmNlRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtQ29weSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjppc29sYXRlZENvcHkpOiBOb3Qgc3RyaWN0bHkgbmVlZGVkIGZvciBu
b3csIGJ1dCBtYWtlcyBpdCBvYnZpb3VzCisgICAgICAgICAgdGhhdCBjaGFuZ2VzIHdpbGwgYmUg
bmVlZGVkIGlmIG5ldyBtZW1iZXJzIGFyZSBhZGRlZCBsYXRlci4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZTo6Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YUJhc2UpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OnBsYXRmb3JtQ29weSk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZv
cm1BZG9wdCk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpk
b1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Ojpkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQpOiBEZWxldGVkLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZv
cm1BZG9wdCk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yOjpwbGF0Zm9ybUNvcHkpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
c3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3Jt
Q29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
ZG9QbGF0Zm9ybUFkb3B0KTogRGVsZXRlZC4KKworMjAxNi0wNi0wMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgT3ZlcmhhdWwgY3Jvc3MtdGhyZWFkIHVzZSBv
ZiBSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UsIGFuZCBSZXNvdXJjZUVycm9yLgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4
IDA2NjgzZWE1OWFjZWViYWJjYjFjZWEyOGFhYTQzYzBkMDE5NzBmMzUuLjY2YmUwZTg1MmU5Yjk1
M2Y4NjIzOGFiMDVlMDEwNzllNmM0N2EzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwogICAgIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwotICAgIHN0cnVjdCBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOwotICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9h
ZGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDg4NWE5ODE4Y2ZiNDI2ODczMjY0
NmUxMDA4ZjY1MDU2OWNhOWQ5YTkuLjEyYWRjZGY3MThlMWMzMGUzYjE3NjYxYjRmYzU4ZDIyZjhm
MTljZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CkBAIC0zOSw5ICszOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBGb3JtRGF0
YTo6Rm9ybURhdGEoKQotICAgIDogbV9pZGVudGlmaWVyKDApCi0gICAgLCBtX2Fsd2F5c1N0cmVh
bShmYWxzZSkKLSAgICAsIG1fY29udGFpbnNQYXNzd29yZERhdGEoZmFsc2UpCiB7CiB9CiAKQEAg
LTExNSwyOSArMTEyLDMyIEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBjb25zdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKLVJlZjxGb3Jt
RGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVh
dGUoKSk7CisgICAgLy8gRklYTUU6IGlzb2xhdGVkQ29weSgpIChoaXN0b3JpY2FsbHkgZGVlcENv
cHkoKSkgb25seSBjb3BpZXMgY2VydGFpbiB2YWx1ZXMgZnJvbSBgdGhpc2AuIFdoeSBpcyB0aGF0
PworICAgIGF1dG8gZm9ybURhdGEgPSBjcmVhdGUoKTsKIAogICAgIGZvcm1EYXRhLT5tX2Fsd2F5
c1N0cmVhbSA9IG1fYWx3YXlzU3RyZWFtOwogCiAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VsZW1lbnRzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBG
b3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIHN3aXRjaCAo
ZWxlbWVudC5tX3R5cGUpIHsKLSAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkRh
dGE6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9y
bURhdGFFbGVtZW50KGVsZW1lbnQubV9kYXRhKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlOgotICAgICAgICAgICAg
Zm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlbGVt
ZW50Lm1fZmlsZW5hbWUsIGVsZW1lbnQubV9maWxlU3RhcnQsIGVsZW1lbnQubV9maWxlTGVuZ3Ro
LCBlbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZWxlbWVudC5tX3Nob3Vs
ZEdlbmVyYXRlRmlsZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRm9ybURh
dGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkQmxvYjoKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2Vs
ZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX3VybCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogbV9lbGVtZW50cykKKyAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2Vk
QXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkpOworCiAgICAgcmV0dXJuIGZvcm1EYXRhOwog
fQogCitGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEYXRhOgorICAgICAg
ICByZXR1cm4gRm9ybURhdGFFbGVtZW50KG1fZGF0YSk7CisgICAgY2FzZSBUeXBlOjpFbmNvZGVk
RmlsZToKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChtX2ZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpLCBtX2ZpbGVTdGFydCwgbV9maWxlTGVuZ3RoLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUsIG1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKKyAgICBjYXNlIFR5cGU6OkVuY29kZWRC
bG9iOgorICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KG1fdXJsLmlzb2xhdGVkQ29weSgp
KTsKKyAgICB9Cit9CisKIHZvaWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0
YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgbWVtY3B5KGV4cGFuZERhdGFTdG9yZShzaXplKSwgZGF0
YSwgc2l6ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5k
ZXggYjczNGJiMTI1MDRiZGExMDg1NWM0N2M4Y2YzODExZGFjMmI5YjkzMi4uN2U0NGRjYWY5NTlm
ODE5NDY3NTYxODA3MzkyMDU2NWU0ZGM1MjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvRm9ybURhdGEuaApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgewogICAg
IH0KIAorICAgIEZvcm1EYXRhRWxlbWVudCBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0
OwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIERlY29kZXI+CkBAIC0yMDUsNyArMjA3LDcgQEAgcHVi
bGljOgogICAgIC8vIEZJWE1FOiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVlcCBj
b3B5IG9mIG1fZWxlbWVudHMsIGJ1dCBkaWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0YSBt
ZW1iZXJzLgogICAgIC8vIEhvdyBtdWNoIG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5lZWQg
YmV0dGVyIG5hbWVzIHRoYXQgZXhwbGFpbiB0aGUgZGlmZmVyZW5jZS4KICAgICBSZWY8Rm9ybURh
dGE+IGNvcHkoKSBjb25zdDsKLSAgICBSZWY8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7Cisg
ICAgUmVmPEZvcm1EYXRhPiBpc29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIEVuY29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMjYz
LDEwICsyNjUsMTAgQEAgcHJpdmF0ZToKIAogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IG1f
ZWxlbWVudHM7CiAKLSAgICBpbnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICBib29sIG1fYWx3YXlz
U3RyZWFtOworICAgIGludDY0X3QgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIGJvb2wgbV9hbHdh
eXNTdHJlYW0geyBmYWxzZSB9OwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwotICAgIGJv
b2wgbV9jb250YWluc1Bhc3N3b3JkRGF0YTsKKyAgICBib29sIG1fY29udGFpbnNQYXNzd29yZERh
dGEgeyBmYWxzZSB9OwogfTsKIAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0
YSYgYSwgY29uc3QgRm9ybURhdGEmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAppbmRleCA1NjUxZTk4MTliNWJkNTU4NzEwODk5Njli
OTk4MjZjYWNhYTJiZmU2Li5lMjlkZDgzNjc5NGE2MTU3MWUwZWFiODczZTJmZDkyOGRhZmViYWMx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJN
YXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5jcHAKQEAgLTQ0LDMxICs0NCwxNyBAQCBIVFRQSGVhZGVyTWFwOjp+SFRUUEhlYWRlck1hcCgp
CiB7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBI
VFRQSGVhZGVyTWFwOjpjb3B5RGF0YSgpIGNvbnN0CitIVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJN
YXA6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3Vu
aXF1ZTxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPigpOworICAgIEhUVFBIZWFkZXJNYXAg
bWFwOwogCi0gICAgZGF0YS0+Y29tbW9uSGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1f
Y29tbW9uSGVhZGVycy5zaXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV9j
b21tb25IZWFkZXJzKQotICAgICAgICBkYXRhLT5jb21tb25IZWFkZXJzLnVuY2hlY2tlZEFwcGVu
ZChzdGQ6Om1ha2VfcGFpcihoZWFkZXIua2V5LCBoZWFkZXIudmFsdWUuaXNvbGF0ZWRDb3B5KCkp
KTsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fY29tbW9uSGVhZGVycykKKyAgICAgICAgbWFw
Lm1fY29tbW9uSGVhZGVycy5zZXQoaGVhZGVyLmtleSwgaGVhZGVyLnZhbHVlLmlzb2xhdGVkQ29w
eSgpKTsKIAotICAgIGRhdGEtPnVuY29tbW9uSGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5
KG1fdW5jb21tb25IZWFkZXJzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIg
OiBtX3VuY29tbW9uSGVhZGVycykKLSAgICAgICAgZGF0YS0+dW5jb21tb25IZWFkZXJzLnVuY2hl
Y2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpcihoZWFkZXIua2V5Lmlzb2xhdGVkQ29weSgpLCBoZWFk
ZXIudmFsdWUuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fdW5j
b21tb25IZWFkZXJzKQorICAgICAgICBtYXAubV91bmNvbW1vbkhlYWRlcnMuc2V0KGhlYWRlci5r
ZXkuaXNvbGF0ZWRDb3B5KCksIGhlYWRlci52YWx1ZS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICBy
ZXR1cm4gZGF0YTsKLX0KLQotdm9pZCBIVFRQSGVhZGVyTWFwOjphZG9wdChzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gZGF0YSkKLXsKLSAgICBtX2NvbW1vbkhl
YWRlcnMuY2xlYXIoKTsKLSAgICBtX3VuY29tbW9uSGVhZGVycy5jbGVhcigpOwotCi0gICAgZm9y
IChhdXRvJiBoZWFkZXIgOiBkYXRhLT5jb21tb25IZWFkZXJzKQotICAgICAgICBtX2NvbW1vbkhl
YWRlcnMuYWRkKGhlYWRlci5maXJzdCwgV1RGTW92ZShoZWFkZXIuc2Vjb25kKSk7Ci0KLSAgICBm
b3IgKGF1dG8mIGhlYWRlciA6IGRhdGEtPnVuY29tbW9uSGVhZGVycykKLSAgICAgICAgbV91bmNv
bW1vbkhlYWRlcnMuYWRkKFdURk1vdmUoaGVhZGVyLmZpcnN0KSwgV1RGTW92ZShoZWFkZXIuc2Vj
b25kKSk7CisgICAgcmV0dXJuIG1hcDsKIH0KIAogU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChj
b25zdCBTdHJpbmcmIG5hbWUpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvSFRUUEhlYWRlck1hcC5oCmluZGV4IGQzNDU2OTc1NTJiNmE1MzlhNzU1YmNmODJlMmE2
MzI0MzBlM2Q3YTYuLmU3OWE0NGE5YzZiNTRmYzJiNTA2Yzc5NTM5NDJjNjUzYTQ3Y2FjNTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBA
IC0yNCw4ICsyNCw3IEBACiAgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEhUVFBIZWFk
ZXJNYXBfaAotI2RlZmluZSBIVFRQSGVhZGVyTWFwX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiSFRUUEhlYWRlck5hbWVzLmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTM4LDExICszNyw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotc3RydWN0IENyb3NzVGhyZWFkSFRUUEhlYWRl
ck1hcERhdGEgewotICAgIFZlY3RvcjxzdGQ6OnBhaXI8SFRUUEhlYWRlck5hbWUsIFN0cmluZz4+
IGNvbW1vbkhlYWRlcnM7Ci0gICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHVu
Y29tbW9uSGVhZGVyczsKLX07Ci0KIC8vIEZJWE1FOiBOb3QgZXZlcnkgaGVhZGVyIGZpdHMgaW50
byBhIG1hcC4gTm90YWJseSwgbXVsdGlwbGUgU2V0LUNvb2tpZSBoZWFkZXIgZmllbGRzIGFyZSBu
ZWVkZWQgdG8gc2V0IG11bHRpcGxlIGNvb2tpZXMuCiAKIGNsYXNzIEhUVFBIZWFkZXJNYXAgewpA
QCAtMTI0LDggKzExOCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+SFRUUEhlYWRl
ck1hcCgpOwogCiAgICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBh
c3NpbmcgdG8gYW5vdGhlciB0aHJlYWQuCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFk
SFRUUEhlYWRlck1hcERhdGE+IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhZG9wdChzdGQ6
OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4pOworICAgIEhUVFBIZWFk
ZXJNYXAgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7
IHJldHVybiBtX2NvbW1vbkhlYWRlcnMuaXNFbXB0eSgpICYmIG1fdW5jb21tb25IZWFkZXJzLmlz
RW1wdHkoKTsgfQogICAgIGludCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJz
LnNpemUoKSArIG1fdW5jb21tb25IZWFkZXJzLnNpemUoKTsgfQpAQCAtMjE1LDUgKzIwOCwzIEBA
IGJvb2wgSFRUUEhlYWRlck1hcDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEhUVFBIZWFkZXJN
YXAmIGhlYWRlck1hcCkKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8g
SFRUUEhlYWRlck1hcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCmluZGV4IDEwYmJiYWE2YzUwOTUxMGRiNzNkNGI3Y2Rk
NGQxZjdkZWZmN2MxOWQuLjBlZmQwNGU4MjM0NTZmMTZiZDMzMzI3NjU0ZDczZmFjZGUwNjZiZWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJv
ckJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VF
cnJvckJhc2UuY3BwCkBAIC0zMSw2ICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNv
bnN0IGNoYXIqIGNvbnN0IGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwgPSAiV2ViS2l0SW50ZXJu
YWwiOwogCitpbmxpbmUgY29uc3QgUmVzb3VyY2VFcnJvciYgUmVzb3VyY2VFcnJvckJhc2U6OmFz
UmVzb3VyY2VFcnJvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBS
ZXNvdXJjZUVycm9yKj4odGhpcyk7Cit9CisKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvckJh
c2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7CiAgICAgbGF6eUluaXQoKTsKQEAgLTQzLDcgKzQ4
LDkgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29u
c3QKICAgICBlcnJvckNvcHkubV9pc051bGwgPSBtX2lzTnVsbDsKICAgICBlcnJvckNvcHkubV9p
c0NhbmNlbGxhdGlvbiA9IG1faXNDYW5jZWxsYXRpb247CiAgICAgZXJyb3JDb3B5Lm1faXNUaW1l
b3V0ID0gbV9pc1RpbWVvdXQ7Ci0gICAgcGxhdGZvcm1Db3B5KGVycm9yQ29weSk7CisKKyAgICBl
cnJvckNvcHkuZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShhc1Jlc291cmNlRXJyb3IoKSk7CisKICAg
ICByZXR1cm4gZXJyb3JDb3B5OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKaW5kZXggNzdmNGQ2MDVlNTAyY2E3MWE5N2Q2
YzNiYWFjZDZkMDA4ZjZmYTMyOC4uYmI2YTNhNWMzMjcwYmRlMjJiOWQwMjljM2RkYWVhN2I4ZjUw
MjRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3Vy
Y2VFcnJvckJhc2UuaApAQCAtNzgsOSArNzgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhlIFJl
c291cmNlRXJyb3Igc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGxhemlseSBp
bml0aWFsaXplIHBsYXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHZvaWQgcGxhdGZvcm1MYXp5
SW5pdCgpIHt9CiAKLSAgICAvLyBUaGUgUmVzb3VyY2VFcnJvciBzdWJjbGFzcyBtYXkgInNoYWRv
dyIgdGhpcyBtZXRob2QgdG8gY29weSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKLSAgICB2b2lk
IHBsYXRmb3JtQ29weShSZXNvdXJjZUVycm9yJikgY29uc3Qge30KLQogICAgIC8vIFRoZSBSZXNv
dXJjZUVycm9yIHN1YmNsYXNzIG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBs
YXRmb3JtIHNwZWNpZmljIGZpZWxkcwogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShj
b25zdCBSZXNvdXJjZUVycm9yJiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIHRydWU7
IH0KIApAQCAtOTEsNiArODgsOSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzTnVsbCA6IDE7
CiAgICAgYm9vbCBtX2lzQ2FuY2VsbGF0aW9uIDogMTsKICAgICBib29sIG1faXNUaW1lb3V0IDog
MTsKKworcHJpdmF0ZToKKyAgICBjb25zdCBSZXNvdXJjZUVycm9yJiBhc1Jlc291cmNlRXJyb3Io
KSBjb25zdDsKIH07CiAKIGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJv
ciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6
OmNvbXBhcmUoYSwgYik7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCmluZGV4IDliZDk0NWNjYjZlMWIwNzFlMTgwNGIyN2Vi
N2I1MTJhZmNjMDMzZmQuLjc1Y2VjNDkzNjc5MjNiN2Y3ZTFiNTg3NTdhYzJjYjFhYzYzNmNiY2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2Fk
VGltaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxv
YWRUaW1pbmcuaApAQCAtNjgsNiArNjgsMTIgQEAgcHVibGljOgogICAgICAgICBzZWN1cmVDb25u
ZWN0aW9uU3RhcnQgPSBvdGhlci5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7CiAgICAgICAgIHJldHVy
biAqdGhpczsKICAgICB9CisKKyAgICBSZXNvdXJjZUxvYWRUaW1pbmcgaXNvbGF0ZWRDb3B5KCkg
Y29uc3QKKyAgICB7CisgICAgICAgIC8vIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gbWVtYmVycyB0
aGF0IG5lZWQgaXNvbGF0ZWQgY29waWVzLCBzbyB3ZSBjYW4gdXNlIHRoZSBjb3B5IGNvbnN0cnVj
dG9yLgorICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0
b3I9PShjb25zdCBSZXNvdXJjZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJh
c2UuY3BwCmluZGV4IDM0YmI3NmE0MGQ0ZGZhYzk3MzA1MDI1Mjk2ZDViOGE4M2JmYWZjM2EuLjU3
Y2RmZTg1YWE1MTBkMGViMTJkNDE2NWNmYjUwNzdkZTZjYzk1ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApA
QCAtNTIsNjUgKzUyLDQxIEBAIGlubGluZSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNl
UmVxdWVzdEJhc2U6OmFzUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3QKIFJlc291cmNlUmVxdWVzdCBS
ZXNvdXJjZVJlcXVlc3RCYXNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIFJlc291cmNl
UmVxdWVzdCByZXF1ZXN0OwotICAgIHJlcXVlc3Quc2V0QXNJc29sYXRlZENvcHkoKnRoaXMpOwor
ICAgIHJlcXVlc3Quc2V0QXNJc29sYXRlZENvcHkoYXNSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAg
cmV0dXJuIHJlcXVlc3Q7CiB9CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29s
YXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYgb3RoZXIpCit2b2lkIFJlc291cmNl
UmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3Ro
ZXIpCiB7Ci0gICAgYXV0byBkYXRhID0gb3RoZXIuY29weURhdGEoKTsKLQotICAgIHNldFVSTChk
YXRhLT51cmwpOwotICAgIHNldENhY2hlUG9saWN5KGRhdGEtPmNhY2hlUG9saWN5KTsKLSAgICBz
ZXRUaW1lb3V0SW50ZXJ2YWwoZGF0YS0+dGltZW91dEludGVydmFsKTsKLSAgICBzZXRGaXJzdFBh
cnR5Rm9yQ29va2llcyhkYXRhLT5maXJzdFBhcnR5Rm9yQ29va2llcyk7Ci0gICAgc2V0SFRUUE1l
dGhvZChkYXRhLT5odHRwTWV0aG9kKTsKLSAgICBzZXRQcmlvcml0eShkYXRhLT5wcmlvcml0eSk7
Ci0gICAgc2V0UmVxdWVzdGVyKGRhdGEtPnJlcXVlc3Rlcik7CisgICAgc2V0VVJMKG90aGVyLnVy
bCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICBzZXRDYWNoZVBvbGljeShvdGhlci5jYWNoZVBvbGlj
eSgpKTsKKyAgICBzZXRUaW1lb3V0SW50ZXJ2YWwob3RoZXIudGltZW91dEludGVydmFsKCkpOwor
ICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVzKG90aGVyLmZpcnN0UGFydHlGb3JDb29raWVzKCku
aXNvbGF0ZWRDb3B5KCkpOworICAgIHNldEhUVFBNZXRob2Qob3RoZXIuaHR0cE1ldGhvZCgpLmlz
b2xhdGVkQ29weSgpKTsKKyAgICBzZXRQcmlvcml0eShvdGhlci5wcmlvcml0eSgpKTsKKyAgICBz
ZXRSZXF1ZXN0ZXIob3RoZXIucmVxdWVzdGVyKCkpOwogCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1
ZXN0KCk7Ci0gICAgbV9odHRwSGVhZGVyRmllbGRzLmFkb3B0KFdURk1vdmUoZGF0YS0+aHR0cEhl
YWRlcnMpKTsKKyAgICBtX2h0dHBIZWFkZXJGaWVsZHMgPSBvdGhlci5odHRwSGVhZGVyRmllbGRz
KCkuaXNvbGF0ZWRDb3B5KCk7CiAKLSAgICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IGRhdGEtPnJl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKKyAg
ICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IG90aGVyLm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwogICAgIGlmIChlbmNvZGluZ0NvdW50ID4g
MCkgewotICAgICAgICBTdHJpbmcgZW5jb2RpbmcxID0gZGF0YS0+cmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMF07CisgICAgICAgIFN0cmluZyBlbmNvZGlu
ZzEgPSBvdGhlci5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5WzBdLmlzb2xhdGVkQ29weSgpOwogICAgICAgICBTdHJpbmcgZW5jb2RpbmcyOwogICAgICAg
ICBTdHJpbmcgZW5jb2RpbmczOwogICAgICAgICBpZiAoZW5jb2RpbmdDb3VudCA+IDEpIHsKLSAg
ICAgICAgICAgIGVuY29kaW5nMiA9IGRhdGEtPnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5WzFdOworICAgICAgICAgICAgZW5jb2RpbmcyID0gb3RoZXIubV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsxXS5pc29sYXRl
ZENvcHkoKTsKICAgICAgICAgICAgIGlmIChlbmNvZGluZ0NvdW50ID4gMikKLSAgICAgICAgICAg
ICAgICBlbmNvZGluZzMgPSBkYXRhLT5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5n
RmFsbGJhY2tBcnJheVsyXTsKKyAgICAgICAgICAgICAgICBlbmNvZGluZzMgPSBvdGhlci5tX3Jl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzJdLmlzb2xhdGVk
Q29weSgpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVChlbmNvZGluZ0NvdW50IDw9IDMpOwog
ICAgICAgICBzZXRSZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJh
eShlbmNvZGluZzEsIGVuY29kaW5nMiwgZW5jb2RpbmczKTsKICAgICB9Ci0gICAgc2V0SFRUUEJv
ZHkoZGF0YS0+aHR0cEJvZHkuY29weVJlZigpKTsKLSAgICBzZXRBbGxvd0Nvb2tpZXMoZGF0YS0+
YWxsb3dDb29raWVzKTsKLQotICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNv
dXJjZVJlcXVlc3QoKSkuZG9QbGF0Zm9ybUFkb3B0KFdURk1vdmUoZGF0YSkpOwotfQorICAgIGlm
IChvdGhlci5tX2h0dHBCb2R5KQorICAgICAgICBzZXRIVFRQQm9keShvdGhlci5tX2h0dHBCb2R5
LT5pc29sYXRlZENvcHkoKSk7CisgICAgc2V0QWxsb3dDb29raWVzKG1fYWxsb3dDb29raWVzKTsK
IAotc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3Vy
Y2VSZXF1ZXN0QmFzZTo6Y29weURhdGEoKSBjb25zdAotewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6
bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPigpOwotICAgIGRhdGEt
PnVybCA9IHVybCgpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPmNhY2hlUG9saWN5ID0gbV9j
YWNoZVBvbGljeTsKLSAgICBkYXRhLT50aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWwo
KTsKLSAgICBkYXRhLT5maXJzdFBhcnR5Rm9yQ29va2llcyA9IGZpcnN0UGFydHlGb3JDb29raWVz
KCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+aHR0cE1ldGhvZCA9IGh0dHBNZXRob2QoKS5p
c29sYXRlZENvcHkoKTsKLSAgICBkYXRhLT5odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMo
KS5jb3B5RGF0YSgpOwotICAgIGRhdGEtPnByaW9yaXR5ID0gbV9wcmlvcml0eTsKLSAgICBkYXRh
LT5yZXF1ZXN0ZXIgPSBtX3JlcXVlc3RlcjsKLQotICAgIGRhdGEtPnJlc3BvbnNlQ29udGVudERp
c3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCkpOwot
ICAgIHNpemVfdCBlbmNvZGluZ0FycmF5U2l6ZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRp
b25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0g
MDsgaW5kZXggPCBlbmNvZGluZ0FycmF5U2l6ZTsgKytpbmRleCkgewotICAgICAgICBkYXRhLT5y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQobV9y
ZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpbmRleF0uaXNv
bGF0ZWRDb3B5KCkpOwotICAgIH0KLSAgICBpZiAobV9odHRwQm9keSkKLSAgICAgICAgZGF0YS0+
aHR0cEJvZHkgPSBtX2h0dHBCb2R5LT5kZWVwQ29weSgpOwotICAgIGRhdGEtPmFsbG93Q29va2ll
cyA9IG1fYWxsb3dDb29raWVzOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVxdWVzdCgpLmRvUGxh
dGZvcm1Db3B5RGF0YShXVEZNb3ZlKGRhdGEpKTsKKyAgICBjb25zdF9jYXN0PFJlc291cmNlUmVx
dWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShv
dGhlcik7CiB9CiAKIGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVz
dEJhc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0
QmFzZS5oCmluZGV4IDZiMTYzY2I5MTcxOGI4NDMwNzU2NTFiMWViMzFhOTRhZGIyZTM0MzcuLjZl
MGJiZTAyMGI5ZTg3OThkYjcwMGViNGQ1NjNmNGE3MDg2YTk1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC00
OCwxNCArNDgsMTMgQEAgZW51bSBIVFRQQm9keVVwZGF0ZVBvbGljeSB7CiB9OwogCiBjbGFzcyBS
ZXNvdXJjZVJlcXVlc3Q7Ci1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhOwog
CiAvLyBEbyBub3QgdXNlIHRoaXMgdHlwZSBkaXJlY3RseS4gIFVzZSBSZXNvdXJjZVJlcXVlc3Qg
aW5zdGVhZC4KIGNsYXNzIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOwogcHVibGljOgogICAgIFJlc291cmNlUmVxdWVzdCBpc29sYXRlZENvcHkoKSBj
b25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJl
c291cmNlUmVxdWVzdEJhc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzSXNvbGF0
ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9v
bCBpc051bGwoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25z
dDsKQEAgLTIyMCw5ICsyMTksNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKIAotICAgIC8vIEdldHMg
YSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFk
LgotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGNv
cHlEYXRhKCkgY29uc3Q7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgZG91YmxlIHNfZGVm
YXVsdFRpbWVvdXRJbnRlcnZhbDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wg
c19kZWZhdWx0QWxsb3dDb29raWVzOwpAQCAtMjM0LDIwICsyMzAsNiBAQCBib29sIGVxdWFsSWdu
b3JpbmdIZWFkZXJGaWVsZHMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYsIGNvbnN0IFJlc291
cmNlUmVxdWVzdAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6Y29tcGFyZShhLCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShSZXNvdXJjZVJlcXVl
c3QmIGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAK
LXN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlIHsKLSAgICBVUkwgdXJs
OwotICAgIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5OwotICAgIGRvdWJs
ZSB0aW1lb3V0SW50ZXJ2YWw7Ci0gICAgVVJMIGZpcnN0UGFydHlGb3JDb29raWVzOwotICAgIFN0
cmluZyBodHRwTWV0aG9kOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFk
ZXJNYXBEYXRhPiBodHRwSGVhZGVyczsKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheTsKLSAgICBSZWZQdHI8Rm9ybURhdGE+
IGh0dHBCb2R5OwotICAgIGJvb2wgYWxsb3dDb29raWVzOwotICAgIFJlc291cmNlTG9hZFByaW9y
aXR5IHByaW9yaXR5OwotICAgIFJlc291cmNlUmVxdWVzdEJhc2U6OlJlcXVlc3RlciByZXF1ZXN0
ZXI7Ci19OwotCiBXRUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBD
b25uZWN0aW9uQ291bnRQZXJIb3N0KCk7CiAjaWYgUExBVEZPUk0oSU9TKQogV0VCQ09SRV9FWFBP
UlQgdm9pZCBpbml0aWFsaXplSFRUUENvbm5lY3Rpb25TZXR0aW5nc09uU3RhcnR1cCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNl
QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9u
c2VCYXNlLmNwcAppbmRleCAzMWZmNGZhMTk0MzAyZmQzNmY4NGQ4YzFhYjI0YTgxMGEzM2E0MThk
Li41YjUyODc2MDZjM2M5OTc1NDVlNDQwZGI1MTVkYTVlNmI0Y2E0N2NlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNl
LmNwcApAQCAtNjYsNDIgKzY2LDI0IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJl
c3BvbnNlQmFzZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiBSZXNvdXJj
ZVJlc3BvbnNlIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewog
ICAgIFJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgYXV0byBkYXRhID0gY29weURhdGEo
KTsKIAotICAgIHJlc3BvbnNlLnNldFVSTChkYXRhLT5tX3VybCk7Ci0gICAgcmVzcG9uc2Uuc2V0
TWltZVR5cGUoZGF0YS0+bV9taW1lVHlwZSk7Ci0gICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250
ZW50TGVuZ3RoKGRhdGEtPm1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKLSAgICByZXNwb25zZS5z
ZXRUZXh0RW5jb2RpbmdOYW1lKGRhdGEtPm1fdGV4dEVuY29kaW5nTmFtZSk7CisgICAgcmVzcG9u
c2Uuc2V0VVJMKHVybCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXNwb25zZS5zZXRNaW1lVHlw
ZShtaW1lVHlwZSgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXNwb25zZS5zZXRFeHBlY3RlZENv
bnRlbnRMZW5ndGgoZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOworICAgIHJlc3BvbnNlLnNldFRl
eHRFbmNvZGluZ05hbWUodGV4dEVuY29kaW5nTmFtZSgpLmlzb2xhdGVkQ29weSgpKTsKIAotICAg
IHJlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKGRhdGEtPm1faHR0cFN0YXR1c0NvZGUpOwotICAg
IHJlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1RleHQpOwotICAg
IHJlc3BvbnNlLnNldEhUVFBWZXJzaW9uKGRhdGEtPm1faHR0cFZlcnNpb24pOworICAgIHJlc3Bv
bnNlLnNldEhUVFBTdGF0dXNDb2RlKGh0dHBTdGF0dXNDb2RlKCkpOworICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNUZXh0KGh0dHBTdGF0dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJl
c3BvbnNlLnNldEhUVFBWZXJzaW9uKGh0dHBWZXJzaW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogCiAg
ICAgcmVzcG9uc2UubGF6eUluaXQoQWxsRmllbGRzKTsKLSAgICByZXNwb25zZS5tX2h0dHBIZWFk
ZXJGaWVsZHMuYWRvcHQoV1RGTW92ZShkYXRhLT5tX2h0dHBIZWFkZXJzKSk7Ci0gICAgcmVzcG9u
c2UubV9yZXNvdXJjZUxvYWRUaW1pbmcgPSBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZzsKLSAg
ICByZXNwb25zZS5tX3R5cGUgPSBkYXRhLT5tX3R5cGU7Ci0gICAgcmVzcG9uc2UuZG9QbGF0Zm9y
bUFkb3B0KFdURk1vdmUoZGF0YSkpOworICAgIHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcyA9
IGh0dHBIZWFkZXJGaWVsZHMoKS5pc29sYXRlZENvcHkoKTsKKyAgICByZXNwb25zZS5tX3Jlc291
cmNlTG9hZFRpbWluZyA9IG1fcmVzb3VyY2VMb2FkVGltaW5nLmlzb2xhdGVkQ29weSgpOworICAg
IHJlc3BvbnNlLm1fdHlwZSA9IG1fdHlwZTsKIAogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAot
c3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFJlc291cmNl
UmVzcG9uc2VCYXNlOjpjb3B5RGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byBkYXRhID0gc3RkOjpt
YWtlX3VuaXF1ZTxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPigpOwotICAgIGRhdGEt
Pm1fdXJsID0gdXJsKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9taW1lVHlwZSA9IG1p
bWVUeXBlKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9leHBlY3RlZENvbnRlbnRMZW5n
dGggPSBleHBlY3RlZENvbnRlbnRMZW5ndGgoKTsKLSAgICBkYXRhLT5tX3RleHRFbmNvZGluZ05h
bWUgPSB0ZXh0RW5jb2RpbmdOYW1lKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRw
U3RhdHVzQ29kZSA9IGh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgZGF0YS0+bV9odHRwU3RhdHVzVGV4
dCA9IGh0dHBTdGF0dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRwVmVy
c2lvbiA9IGh0dHBWZXJzaW9uKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRwSGVh
ZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwotICAgIGRhdGEtPm1fcmVzb3Vy
Y2VMb2FkVGltaW5nID0gbV9yZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgZGF0YS0+bV90eXBlID0g
bV90eXBlOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVzcG9uc2UoKS5kb1BsYXRmb3JtQ29weURh
dGEoV1RGTW92ZShkYXRhKSk7Ci19Ci0KIC8vIEZJWE1FOiBOYW1lIGRvZXMgbm90IG1ha2UgaXQg
Y2xlYXIgdGhpcyBpcyB0cnVlIGZvciBIVFRQUyEKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6
OmlzSFRUUCgpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggNWZmZjM1OTk0OTE0MTI4ODMyZGU3
NjAwOWFjZTU3YmJmMjY0MjMzYy4uYWQ1MTA3ZjdmN2M1Mjg1ZjI2MGJjODc5ZjQxZTcxMTViZGUz
ODdmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVz
b3VyY2VSZXNwb25zZUJhc2UuaApAQCAtNDAsNyArNDAsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlOwotc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VS
ZXNwb25zZURhdGE7CiAKIC8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRo
ZSBjbGFzcyBSZXNwb25zZVJlc3BvbnNlIGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VC
YXNlIHsKQEAgLTE1OSw5ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VDYWNoZUNv
bnRyb2xEaXJlY3RpdmVzKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVIZWFkZXJQYXJzZWRTdGF0
ZShIVFRQSGVhZGVyTmFtZSk7CiAKLSAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0
YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gY29weURhdGEoKSBjb25zdDsKLQogcHJv
dGVjdGVkOgogICAgIGJvb2wgbV9pc051bGw7CiAgICAgVVJMIG1fdXJsOwpAQCAtMjc0LDIxICsy
NzAsNCBAQCBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
ciwgUmVzb3VyY2VSZXNwb25zZUJhc2UmIHJlc3BvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1z
dHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewotICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YUJhc2UoKSB7IH0KLSAgICBVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fbWltZVR5cGU7
Ci0gICAgbG9uZyBsb25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwotICAgIFN0cmluZyBtX3Rl
eHRFbmNvZGluZ05hbWU7Ci0gICAgaW50IG1faHR0cFN0YXR1c0NvZGU7Ci0gICAgU3RyaW5nIG1f
aHR0cFN0YXR1c1RleHQ7Ci0gICAgU3RyaW5nIG1faHR0cFZlcnNpb247Ci0gICAgc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7Ci0gICAg
UmVzb3VyY2VMb2FkVGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwotICAgIFJlc291cmNlUmVz
cG9uc2VCYXNlOjpUeXBlIG1fdHlwZTsKLSAgICBib29sIG1faXNSZWRpcmVjdGVkOwotfTsKLQog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAppbmRleCBjMzZiZGNhNzJiMzExMDRjYmUwNDI0ZjI4
ZmZkM2Q0M2JhNGRiOTZhLi4yY2EwNGVlZjI4MjY5Zjk4MmFmY2YwNmI3YjliZTEyMDdlODgyYjVl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3IuaApAQCAtODMsNyArODMsOSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZUVycm9yQmFzZTsKIAogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOwotICAgIHZvaWQg
cGxhdGZvcm1Db3B5KFJlc291cmNlRXJyb3ImKSBjb25zdDsKKworICAgIHZvaWQgZG9QbGF0Zm9y
bUlzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJik7CisKICAgICBib29sIG1fZGF0YUlz
VXBUb0RhdGU7CiAjaWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVy
cm9yUmVmPiBtX3BsYXRmb3JtRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNjBiZmIzNjU5MWUwN2Mx
YmZiZWFiNmIxZTNiNTZmYWI5ODQ3ODQ3My4uZDViNGVlNDdlMzlkODY1Y2E0ODI1NTVjZWM5Y2Mz
MjdkOGE1NTNkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcApAQCAtMTE5LDEyICsxMTksMTMgQEAgdm9pZCBSZXNv
dXJjZUVycm9yOjpwbGF0Zm9ybUxhenlJbml0KCkKICAgICBtX2RhdGFJc1VwVG9EYXRlID0gdHJ1
ZTsKIH0KIAotdm9pZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvcHkoUmVzb3VyY2VFcnJvciYg
ZXJyb3JDb3B5KSBjb25zdAorCit2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRl
ZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYgb3RoZXIpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQot
ICAgIGVycm9yQ29weS5tX2NlcnRpZmljYXRlID0gbV9jZXJ0aWZpY2F0ZTsKKyAgICBtX2NlcnRp
ZmljYXRlID0gb3RoZXIubV9jZXJ0aWZpY2F0ZTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVy
cm9yQ29weSk7CisgICAgVU5VU0VEX1BBUkFNKG90aGVyKTsKICNlbmRpZgogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaApp
bmRleCBjNzQzZjY1ZjJiNmNhY2NlY2IwNTM3ZWM0Y2NkZTI3Y2VmNzFjN2EyLi44ZmU4ZjkwMDc4
MzQyYzVjOGVkYTk3OWM5NGExOTUxYmI0NGNiODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTEyNiw4ICsxMjYs
NyBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCk7CiAgICAg
dm9pZCBkb1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7Ci0gICAgdm9p
ZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1
ZXN0RGF0YT4pOworICAgIHZvaWQgZG9QbGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYpOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZV
UkxSZXF1ZXN0UmVmPiBtX2NmUmVxdWVzdDsKQEAgLTE0MiwxMiArMTQxLDYgQEAgcHJpdmF0ZToK
ICAgICBzdGF0aWMgYm9vbCBzX2h0dHBQaXBlbGluaW5nRW5hYmxlZDsKIH07CiAKLXN0cnVjdCBD
cm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlcXVlc3REYXRhQmFzZSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBT
dHJpbmcgbV9jYWNoZVBhcnRpdGlvbjsKLSNlbmRpZgotfTsKLQogaW5saW5lIGJvb2wgUmVzb3Vy
Y2VSZXF1ZXN0OjpyZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkKIHsKICNpZiBQTEFURk9STShN
QUMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlUmVxdWVzdENGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCmluZGV4IGFjODdiMmEzODQyNzJkZDNhZTc1ODJlYzBk
OGM0ZDkzZWNkN2M1ZjUuLjkwZTQwZjEyYmY0MTg1M2ZlYjNmNzA4ZGEwZTFiMjI2OTgwN2U3Zjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXF1ZXN0Q0ZOZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VSZXF1ZXN0Q0ZOZXQuY3BwCkBAIC0zNjYsMjMgKzM2NiwxNiBAQCBTdHJpbmcgUmVz
b3VyY2VSZXF1ZXN0OjpwYXJ0aXRpb25OYW1lKGNvbnN0IFN0cmluZyYgZG9tYWluKQogfQogI2Vu
ZGlmCiAKLXN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJl
c291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVxdWVz
dDo6ZG9QbGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3Ro
ZXIpCiB7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBkYXRhLT5tX2NhY2hl
UGFydGl0aW9uID0gbV9jYWNoZVBhcnRpdGlvbjsKLSNlbmRpZgotICAgIHJldHVybiBkYXRhOwot
fQotCi12b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCi17Ci0jaWYgRU5BQkxFKENB
Q0hFX1BBUlRJVElPTklORykKLSAgICBtX2NhY2hlUGFydGl0aW9uID0gZGF0YS0+bV9jYWNoZVBh
cnRpdGlvbjsKKyAgICBtX2NhY2hlUGFydGl0aW9uID0gb3RoZXIubV9jYWNoZVBhcnRpdGlvbi5p
c29sYXRlZENvcHkoKTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNF
RF9QQVJBTShvdGhlcik7CiAjZW5kaWYKIH0KIAorCiAvLyBGSVhNRTogSXQgaXMgY29uZnVzaW5n
IHRoYXQgdGhpcyBmdW5jdGlvbiBib3RoIHNldHMgY29ubmVjdGlvbiBjb3VudCBhbmQgZGV0ZXJt
aW5lcyBtYXhpbXVtIHJlcXVlc3QgY291bnQgYXQgbmV0d29yayBsYXllci4gVGhpcyBjYW4gYW5k
IHNob3VsZCBiZSBkb25lIHNlcGFyYXRlbHkuCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhU
VFBDb25uZWN0aW9uQ291bnRQZXJIb3N0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggODM5NDZjZmE1ODg4
ZjI5Mjk2YTE5NzFkNTMxYzk1Y2NlMTg5YzMwNi4uN2RmMGU3MDNiZTRjY2Y4YzY0OGFkYWY2ZjZk
YmY4ZWQzMzNkOGQxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgog
ICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgQ2VydGlm
aWNhdGVJbmZvIHBsYXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAKLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlE
YXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRh
KSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICB2b2lk
IGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29u
c3Q7CisKICNpZiBQTEFURk9STShDT0NPQSkKICAgICB2b2lkIGluaXROU1VSTFJlc3BvbnNlKCkg
Y29uc3Q7CiAjZW5kaWYKQEAgLTExOSw3ICsxMTksNCBAQCBwcml2YXRlOgogI2VuZGlmCiB9Owog
Ci1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlRXJyb3IuaAppbmRleCBjMzFkZDQyNTFmNjdhMWNlZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUy
Li4zMzI5NzM3MDY5ZmRjYmE4MjYwYmI4ZTA4MGFlNTgzMWU2MGYwNDg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAg
LTU0LDYgKzU0LDggQEAgcHVibGljOgogICAgIGJvb2wgaGFzU1NMQ29ubmVjdEVycm9yKCkgY29u
c3QgeyByZXR1cm4gZXJyb3JDb2RlKCkgPT0gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7IH0KIAog
cHJpdmF0ZToKKyAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VF
cnJvciYpIHsgfQorCiAgICAgdW5zaWduZWQgbV9zc2xFcnJvcnM7CiB9OwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0LmgK
aW5kZXggNjU0ZDAyZmFhZDZmNDlkMDAxZmZhNTNjZWRjM2JlMTE2NmMwZWEzNy4uN2RiZjY0ZGZi
NjgyMjU3MmVhMmZiOTZlZmY2ZTNmYmM4Y2RlOWUxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlcXVlc3QuaApAQCAtNzgsMTMg
Kzc4LDkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRlUGxhdGZv
cm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9keSgp
IHsgfQogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVz
dERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+KSB7IH0KLSAKLSAgICAgICAgc3RhdGljIGJvb2wgc19odHRwUGlwZWxpbmluZ0Vu
YWJsZWQ7Ci0gICAgfTsKKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JikgeyB9CiAKLSAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJh
c2UgeworICAgICAgICBzdGF0aWMgYm9vbCBzX2h0dHBQaXBlbGluaW5nRW5hYmxlZDsKICAgICB9
OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAppbmRleCA0MzA3ZjZlNDBj
ZTE5NjE0MzU4ZTRmMDNkMDQ5YzNjZWRmMGYyOGEzLi5lYTE4NDBmYjNlZDE4OTc0MmMwNjAyNWY0
MzBiZDVjNzQ0M2RkMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKQEAgLTU5LDggKzU5LDYgQEAgcHVibGlj
OgogcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VSZXNwb25zZUJhc2U7CiAKLSAg
ICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0
Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRv
cHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0K
ICAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0CiAgICAgewogICAg
ICAgICByZXR1cm4gZmlsZW5hbWVGcm9tSFRUUENvbnRlbnREaXNwb3NpdGlvbihodHRwSGVhZGVy
RmllbGQoSFRUUEhlYWRlck5hbWU6OkNvbnRlbnREaXNwb3NpdGlvbikpOwpAQCAtNjksOSArNjcs
NiBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNwb25zZUZpcmVkOwogfTsKIAotc3RydWN0IENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YUJhc2UgewotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUmVzb3VyY2VSZXNwb25zZV9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQppbmRleCA2MGIwZGZmM2Y2MTFj
YTE0ZGY2ZjQ2N2Y3MjdjNTFkNTI5YzQzNzRkLi41MjA3OWJkMWY1MzVkZmJjOTIyNjEzMTFhNTFk
YzM3NDVhMjE4YWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KQEAgLTI4MSw2ICsyODEsMTAgQEAgYm9vbCBS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29u
c3QgUmVzb3VyY2VFcnJvciYKICAgICByZXR1cm4gYS5uc0Vycm9yKCkgPT0gYi5uc0Vycm9yKCk7
CiB9CiAKK3ZvaWQgUmVzb3VyY2VFcnJvcjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weShjb25zdCBS
ZXNvdXJjZUVycm9yJikKK3sKK30KKwogTlNFcnJvciAqUmVzb3VyY2VFcnJvcjo6bnNFcnJvcigp
IGNvbnN0CiB7CiAgICAgaWYgKG1faXNOdWxsKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAppbmRleCA0NDdiMDAyNzQ4YTYz
ZjVhYzQwNzZhYjNkOWMzZjJhNTIzNWZiNmZjLi40NTgwMGM0NTU1M2VlOWVmZWNhOWI5MDI1M2Zl
Y2RhYTI1ZDJiNWQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yLmgKQEAgLTY3LDcgKzY3LDcgQEAgcHVibGljOgogICAgIHN0
YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBS
ZXNvdXJjZUVycm9yJiBiKTsKIAogcHJpdmF0ZToKLSAgICB2b2lkIHBsYXRmb3JtQ29weShSZXNv
dXJjZUVycm9yJikgY29uc3Q7CisgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0
IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOwogICAgIEdSZWZQ
dHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAKaW5k
ZXggYWQ2YjhlNzA4NjczYWViOWE1NjU4ZTRjY2I4YzM1MTI5OWVmZWU5ZS4uZGI2ZmQ5NWQ2MjRj
Mjk4MzhhOTUwZWQ5ZjJlMGU1YzAyNjliN2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBAIC05
NywxMCArOTcsMTAgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJyb3Io
Y29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIHJldHVybiBlcnJvcjsKIH0KIAotdm9pZCBSZXNv
dXJjZUVycm9yOjpwbGF0Zm9ybUNvcHkoUmVzb3VyY2VFcnJvciYgZXJyb3JDb3B5KSBjb25zdAor
dm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNl
RXJyb3ImIG90aGVyKQogewotICAgIGVycm9yQ29weS5tX2NlcnRpZmljYXRlID0gbV9jZXJ0aWZp
Y2F0ZTsKLSAgICBlcnJvckNvcHkubV90bHNFcnJvcnMgPSBtX3Rsc0Vycm9yczsKKyAgICBtX2Nl
cnRpZmljYXRlID0gb3RoZXIubV9jZXJ0aWZpY2F0ZTsKKyAgICBtX3Rsc0Vycm9ycyA9IG90aGVy
Lm1fdGxzRXJyb3JzOwogfQogCiBib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShj
b25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5o
CmluZGV4IGExNzFlOTk3YmZjMTI1NmJmZjE5N2ViOTdjOTM4MTZmNWRkMGI3NzAuLjhhMjM1YmI0
ZGQ4MTE5MWU3MDY2MTYzYTM1MjlhYjM5ZjZhMjUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTEyMCwx
MSArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRlUGxh
dGZvcm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQQm9k
eSgpIHsgfQogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVx
dWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAgICAg
IHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+KSB7IH0KLSAgICB9OwotCi0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNl
IHsKKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JikgeyB9CiAgICAgfTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA0Mywg
MSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVz
b3VyY2VSZXNwb25zZS5oCmluZGV4IGZmOGJlMmFkOTM1MTk4ZTRjNmY2NDJiODA3NmU1MzdkOGYx
MWYwODguLjI3ZjliNTNiMGNjZTZkZmY4MDNmNWQ0MWQ5ZTk1ODZjMWNkZGM3YTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3BvbnNl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaApAQCAtOTAsOSArOTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VcGRhdGVSZXNv
dXJjZVJlc3BvbnNlKCkgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5hbWUo
KSBjb25zdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8oKSBj
b25zdDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VE
YXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lkIGRv
UGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNl
RGF0YT4pIHsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTExMiw5ICsxMDks
NiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RydWN0IENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YUJhc2UgewotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gUmVzb3VyY2VSZXNwb25zZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280367</attachid>
            <date>2016-06-02 14:28:26 -0700</date>
            <delta_ts>2016-06-02 14:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158313-20160602142945.patch</filename>
            <type>text/plain</type>
            <size>37363</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VlZWM4ZmZjNDRiMTFm
YjIyNGQ2YTE2YzhkYTgyN2FkZTIzYzcyNi4uNDgwNThlMGVmMDY0ODk2MjNhYTc0ZTRhZjU3YjMx
MmIxMDYwOTljZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk1IEBACiAyMDE2LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBNb2Rlcm5pemUgaG93IG1h
bnkgcGxhdGZvcm0vbmV0d29yayBjbGFzc2VzIGRvIGlzb2xhdGVkQ29weSgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChSZWZh
Y3Rvciwgbm8gYmVoYXZpb3IgY2hhbmdlKS4KKworICAgICAgICAqIGxvYWRlci9Xb3JrZXJUaHJl
YWRhYmxlTG9hZGVyLmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Rm9ybURhdGE6Omlzb2xhdGVkQ29weSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSk6CisgICAgICAg
IChXZWJDb3JlOjpGb3JtRGF0YTo6Rm9ybURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6Rm9ybURhdGE6OmRlZXBDb3B5KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL0Zvcm1EYXRhLmg6CisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRU
UEhlYWRlck1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjppc29sYXRl
ZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6Y29weURhdGEpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViQ29yZTo6SFRUUEhlYWRlck1hcDo6YWRvcHQpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oOgorICAgICAgICAKKyAg
ICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlRXJyb3JCYXNlOjphc1Jlc291cmNlRXJyb3IpOgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6Omlzb2xhdGVkQ29weSk6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VFcnJvckJhc2U6OnBsYXRmb3JtQ29weSk6IERlbGV0ZWQuCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VMb2FkVGltaW5nOjppc29sYXRlZENvcHkpOiBOb3Qgc3RyaWN0bHkgbmVlZGVkIGZvciBu
b3csIGJ1dCBtYWtlcyBpdCBvYnZpb3VzCisgICAgICAgICAgdGhhdCBjaGFuZ2VzIHdpbGwgYmUg
bmVlZGVkIGlmIG5ldyBtZW1iZXJzIGFyZSBhZGRlZCBsYXRlci4KKworICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oOgorICAgICAgICAKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2VCYXNlOjppc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6OmNvcHlEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZTo6Q3Jvc3NUaHJlYWRSZXNvdXJj
ZVJlc3BvbnNlRGF0YUJhc2UpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OnBsYXRmb3JtQ29weSk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5ldC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZv
cm1BZG9wdCk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZUVycm9yLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9yOjpk
b1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0
d29yay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Ojpkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQ29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Ojpkb1BsYXRmb3JtQWRvcHQpOiBEZWxldGVkLgorICAg
ICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0Zm9ybUNvcHlEYXRh
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZv
cm1BZG9wdCk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlRXJyb3JNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUVycm9y
Ojpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0v
bmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6ZG9QbGF0Zm9ybUlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yOjpwbGF0Zm9ybUNvcHkpOiBEZWxldGVkLgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6IERlbGV0
ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJl
c3BvbnNlLmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3Jt
Q29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6
ZG9QbGF0Zm9ybUFkb3B0KTogRGVsZXRlZC4KKworMjAxNi0wNi0wMiAgQnJhZHkgRWlkc29uICA8
YmVpZHNvbkBhcHBsZS5jb20+CisKICAgICAgICAgT3ZlcmhhdWwgY3Jvc3MtdGhyZWFkIHVzZSBv
ZiBSZXNvdXJjZVJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UsIGFuZCBSZXNvdXJjZUVycm9yLgog
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MjkzCiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCmluZGV4
IDA2NjgzZWE1OWFjZWViYWJjYjFjZWEyOGFhYTQzYzBkMDE5NzBmMzUuLjY2YmUwZTg1MmU5Yjk1
M2Y4NjIzOGFiMDVlMDEwNzllNmM0N2EzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1dvcmtlclRocmVhZGFibGVMb2FkZXIuaApAQCAtNDUsOCArNDUsNiBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogICAgIGNsYXNzIFdvcmtlckdsb2Jh
bFNjb3BlOwogICAgIGNsYXNzIFdvcmtlckxvYWRlclByb3h5OwotICAgIHN0cnVjdCBDcm9zc1Ro
cmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOwotICAgIHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE7CiAKICAgICBjbGFzcyBXb3JrZXJUaHJlYWRhYmxlTG9hZGVyIDogcHVibGlj
IFJlZkNvdW50ZWQ8V29ya2VyVGhyZWFkYWJsZUxvYWRlcj4sIHB1YmxpYyBUaHJlYWRhYmxlTG9h
ZGVyIHsKICAgICAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwCmluZGV4IDg4NWE5ODE4Y2ZiNDI2ODczMjY0
NmUxMDA4ZjY1MDU2OWNhOWQ5YTkuLmUyN2UyYjA5MDVhNDI1ZTNlNzcwN2I1NzdkZGFhMTgwNGFl
NTkxYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURh
dGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3Bw
CkBAIC0zOSw5ICszOSw2IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGlubGluZSBGb3JtRGF0
YTo6Rm9ybURhdGEoKQotICAgIDogbV9pZGVudGlmaWVyKDApCi0gICAgLCBtX2Fsd2F5c1N0cmVh
bShmYWxzZSkKLSAgICAsIG1fY29udGFpbnNQYXNzd29yZERhdGEoZmFsc2UpCiB7CiB9CiAKQEAg
LTExNSwyOSArMTEyLDM0IEBAIFJlZjxGb3JtRGF0YT4gRm9ybURhdGE6OmNvcHkoKSBjb25zdAog
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEZvcm1EYXRhKCp0aGlzKSk7CiB9CiAKLVJlZjxGb3Jt
RGF0YT4gRm9ybURhdGE6OmRlZXBDb3B5KCkgY29uc3QKK1JlZjxGb3JtRGF0YT4gRm9ybURhdGE6
Omlzb2xhdGVkQ29weSgpIGNvbnN0CiB7Ci0gICAgUmVmPEZvcm1EYXRhPiBmb3JtRGF0YShjcmVh
dGUoKSk7CisgICAgLy8gRklYTUU6IGlzb2xhdGVkQ29weSgpIChoaXN0b3JpY2FsbHkgZGVlcENv
cHkoKSkgb25seSBjb3BpZXMgY2VydGFpbiB2YWx1ZXMgZnJvbSBgdGhpc2AuIFdoeSBpcyB0aGF0
PworICAgIGF1dG8gZm9ybURhdGEgPSBjcmVhdGUoKTsKIAogICAgIGZvcm1EYXRhLT5tX2Fsd2F5
c1N0cmVhbSA9IG1fYWx3YXlzU3RyZWFtOwogCiAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMucmVz
ZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2VsZW1lbnRzLnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBG
b3JtRGF0YUVsZW1lbnQmIGVsZW1lbnQgOiBtX2VsZW1lbnRzKSB7Ci0gICAgICAgIHN3aXRjaCAo
ZWxlbWVudC5tX3R5cGUpIHsKLSAgICAgICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkRh
dGE6Ci0gICAgICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9y
bURhdGFFbGVtZW50KGVsZW1lbnQubV9kYXRhKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAg
ICAgY2FzZSBGb3JtRGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRGaWxlOgotICAgICAgICAgICAg
Zm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlbGVt
ZW50Lm1fZmlsZW5hbWUsIGVsZW1lbnQubV9maWxlU3RhcnQsIGVsZW1lbnQubV9maWxlTGVuZ3Ro
LCBlbGVtZW50Lm1fZXhwZWN0ZWRGaWxlTW9kaWZpY2F0aW9uVGltZSwgZWxlbWVudC5tX3Nob3Vs
ZEdlbmVyYXRlRmlsZSkpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgRm9ybURh
dGFFbGVtZW50OjpUeXBlOjpFbmNvZGVkQmxvYjoKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2Vs
ZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChGb3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX3VybCkpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9CisgICAgZm9yIChhdXRvJiBlbGVt
ZW50IDogbV9lbGVtZW50cykKKyAgICAgICAgZm9ybURhdGEtPm1fZWxlbWVudHMudW5jaGVja2Vk
QXBwZW5kKGVsZW1lbnQuaXNvbGF0ZWRDb3B5KCkpOworCiAgICAgcmV0dXJuIGZvcm1EYXRhOwog
fQogCitGb3JtRGF0YUVsZW1lbnQgRm9ybURhdGFFbGVtZW50Ojppc29sYXRlZENvcHkoKSBjb25z
dAoreworICAgIHN3aXRjaCAobV90eXBlKSB7CisgICAgY2FzZSBUeXBlOjpEYXRhOgorICAgICAg
ICByZXR1cm4gRm9ybURhdGFFbGVtZW50KG1fZGF0YSk7CisgICAgY2FzZSBUeXBlOjpFbmNvZGVk
RmlsZToKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhRWxlbWVudChtX2ZpbGVuYW1lLmlzb2xhdGVk
Q29weSgpLCBtX2ZpbGVTdGFydCwgbV9maWxlTGVuZ3RoLCBtX2V4cGVjdGVkRmlsZU1vZGlmaWNh
dGlvblRpbWUsIG1fc2hvdWxkR2VuZXJhdGVGaWxlKTsKKyAgICBjYXNlIFR5cGU6OkVuY29kZWRC
bG9iOgorICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KG1fdXJsLmlzb2xhdGVkQ29weSgp
KTsKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCiB2b2lk
IEZvcm1EYXRhOjphcHBlbmREYXRhKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQogewog
ICAgIG1lbWNweShleHBhbmREYXRhU3RvcmUoc2l6ZSksIGRhdGEsIHNpemUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5oCmluZGV4IGI3MzRiYjEyNTA0YmRhMTA4
NTVjNDdjOGNmMzgxMWRhYzJiOWI5MzIuLjdlNDRkY2FmOTU5ZjgxOTQ2NzU2MTgwNzM5MjA1NjVl
NGRjNTIzMjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9y
bURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgK
QEAgLTY5LDYgKzY5LDggQEAgcHVibGljOgogICAgIHsKICAgICB9CiAKKyAgICBGb3JtRGF0YUVs
ZW1lbnQgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7CisKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNv
ZGVyPgogICAgIHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBEZWNvZGVyPgpAQCAtMjA1LDcgKzIwNyw3IEBAIHB1YmxpYzoKICAgICAvLyBGSVhNRTog
Qm90aCB0aGVzZSBmdW5jdGlvbnMgcGVyZm9ybSBhIGRlZXAgY29weSBvZiBtX2VsZW1lbnRzLCBi
dXQgZGlmZmVyIGluIGhhbmRsaW5nIG9mIG90aGVyIGRhdGEgbWVtYmVycy4KICAgICAvLyBIb3cg
bXVjaCBvZiB0aGF0IGlzIGludGVudGlvbmFsPyBXZSBuZWVkIGJldHRlciBuYW1lcyB0aGF0IGV4
cGxhaW4gdGhlIGRpZmZlcmVuY2UuCiAgICAgUmVmPEZvcm1EYXRhPiBjb3B5KCkgY29uc3Q7Ci0g
ICAgUmVmPEZvcm1EYXRhPiBkZWVwQ29weSgpIGNvbnN0OworICAgIFJlZjxGb3JtRGF0YT4gaXNv
bGF0ZWRDb3B5KCkgY29uc3Q7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBFbmNvZGVyPgogICAg
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTI2MywxMCArMjY1LDEwIEBAIHByaXZh
dGU6CiAKICAgICBWZWN0b3I8Rm9ybURhdGFFbGVtZW50PiBtX2VsZW1lbnRzOwogCi0gICAgaW50
NjRfdCBtX2lkZW50aWZpZXI7Ci0gICAgYm9vbCBtX2Fsd2F5c1N0cmVhbTsKKyAgICBpbnQ2NF90
IG1faWRlbnRpZmllciB7IDAgfTsKKyAgICBib29sIG1fYWx3YXlzU3RyZWFtIHsgZmFsc2UgfTsK
ICAgICBWZWN0b3I8Y2hhcj4gbV9ib3VuZGFyeTsKLSAgICBib29sIG1fY29udGFpbnNQYXNzd29y
ZERhdGE7CisgICAgYm9vbCBtX2NvbnRhaW5zUGFzc3dvcmREYXRhIHsgZmFsc2UgfTsKIH07CiAK
IGlubGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgRm9ybURhdGEmIGEsIGNvbnN0IEZvcm1EYXRh
JiBiKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5jcHAKaW5kZXggNTY1MWU5ODE5YjViZDU1ODcxMDg5OTY5Yjk5ODI2Y2FjYWEyYmZlNi4uZTI5
ZGQ4MzY3OTRhNjE1NzFlMGVhYjg3M2UyZmQ5MjhkYWZlYmFjMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCkBAIC00NCwzMSArNDQs
MTcgQEAgSFRUUEhlYWRlck1hcDo6fkhUVFBIZWFkZXJNYXAoKQogewogfQogCi1zdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gSFRUUEhlYWRlck1hcDo6Y29weURh
dGEoKSBjb25zdAorSFRUUEhlYWRlck1hcCBIVFRQSGVhZGVyTWFwOjppc29sYXRlZENvcHkoKSBj
b25zdAogewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YT4oKTsKKyAgICBIVFRQSGVhZGVyTWFwIG1hcDsKIAotICAgIGRhdGEtPmNv
bW1vbkhlYWRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX2NvbW1vbkhlYWRlcnMuc2l6ZSgp
KTsKLSAgICBmb3IgKGNvbnN0IGF1dG8mIGhlYWRlciA6IG1fY29tbW9uSGVhZGVycykKLSAgICAg
ICAgZGF0YS0+Y29tbW9uSGVhZGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtlX3BhaXIoaGVh
ZGVyLmtleSwgaGVhZGVyLnZhbHVlLmlzb2xhdGVkQ29weSgpKSk7CisgICAgZm9yIChhdXRvJiBo
ZWFkZXIgOiBtX2NvbW1vbkhlYWRlcnMpCisgICAgICAgIG1hcC5tX2NvbW1vbkhlYWRlcnMuc2V0
KGhlYWRlci5rZXksIGhlYWRlci52YWx1ZS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICBkYXRhLT51
bmNvbW1vbkhlYWRlcnMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShtX3VuY29tbW9uSGVhZGVycy5z
aXplKCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV91bmNvbW1vbkhlYWRlcnMp
Ci0gICAgICAgIGRhdGEtPnVuY29tbW9uSGVhZGVycy51bmNoZWNrZWRBcHBlbmQoc3RkOjptYWtl
X3BhaXIoaGVhZGVyLmtleS5pc29sYXRlZENvcHkoKSwgaGVhZGVyLnZhbHVlLmlzb2xhdGVkQ29w
eSgpKSk7CisgICAgZm9yIChhdXRvJiBoZWFkZXIgOiBtX3VuY29tbW9uSGVhZGVycykKKyAgICAg
ICAgbWFwLm1fdW5jb21tb25IZWFkZXJzLnNldChoZWFkZXIua2V5Lmlzb2xhdGVkQ29weSgpLCBo
ZWFkZXIudmFsdWUuaXNvbGF0ZWRDb3B5KCkpOwogCi0gICAgcmV0dXJuIGRhdGE7Ci19Ci0KLXZv
aWQgSFRUUEhlYWRlck1hcDo6YWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhl
YWRlck1hcERhdGE+IGRhdGEpCi17Ci0gICAgbV9jb21tb25IZWFkZXJzLmNsZWFyKCk7Ci0gICAg
bV91bmNvbW1vbkhlYWRlcnMuY2xlYXIoKTsKLQotICAgIGZvciAoYXV0byYgaGVhZGVyIDogZGF0
YS0+Y29tbW9uSGVhZGVycykKLSAgICAgICAgbV9jb21tb25IZWFkZXJzLmFkZChoZWFkZXIuZmly
c3QsIFdURk1vdmUoaGVhZGVyLnNlY29uZCkpOwotCi0gICAgZm9yIChhdXRvJiBoZWFkZXIgOiBk
YXRhLT51bmNvbW1vbkhlYWRlcnMpCi0gICAgICAgIG1fdW5jb21tb25IZWFkZXJzLmFkZChXVEZN
b3ZlKGhlYWRlci5maXJzdCksIFdURk1vdmUoaGVhZGVyLnNlY29uZCkpOworICAgIHJldHVybiBt
YXA7CiB9CiAKIFN0cmluZyBIVFRQSGVhZGVyTWFwOjpnZXQoY29uc3QgU3RyaW5nJiBuYW1lKSBj
b25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVh
ZGVyTWFwLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAu
aAppbmRleCBkMzQ1Njk3NTUyYjZhNTM5YTc1NWJjZjgyZTJhNjMyNDMwZTNkN2E2Li5lNzlhNDRh
OWM2YjU0ZmMyYjUwNmM3OTUzOTQyYzY1M2E0N2NhYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuaApAQCAtMjQsOCArMjQsNyBAQAogICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4gCiAgKi8KIAotI2lmbmRlZiBIVFRQSGVhZGVyTWFwX2gKLSNkZWZpbmUgSFRU
UEhlYWRlck1hcF9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkhUVFBIZWFkZXJOYW1lcy5o
IgogI2luY2x1ZGUgPHV0aWxpdHk+CkBAIC0zOCwxMSArMzcsNiBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLXN0cnVjdCBDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhIHsKLSAgICBWZWN0
b3I8c3RkOjpwYWlyPEhUVFBIZWFkZXJOYW1lLCBTdHJpbmc+PiBjb21tb25IZWFkZXJzOwotICAg
IFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCBTdHJpbmc+PiB1bmNvbW1vbkhlYWRlcnM7Ci19Owot
CiAvLyBGSVhNRTogTm90IGV2ZXJ5IGhlYWRlciBmaXRzIGludG8gYSBtYXAuIE5vdGFibHksIG11
bHRpcGxlIFNldC1Db29raWUgaGVhZGVyIGZpZWxkcyBhcmUgbmVlZGVkIHRvIHNldCBtdWx0aXBs
ZSBjb29raWVzLgogCiBjbGFzcyBIVFRQSGVhZGVyTWFwIHsKQEAgLTEyNCw4ICsxMTgsNyBAQCBw
dWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgfkhUVFBIZWFkZXJNYXAoKTsKIAogICAgIC8vIEdl
dHMgYSBjb3B5IG9mIHRoZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhy
ZWFkLgotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBj
b3B5RGF0YSgpIGNvbnN0OwotICAgIHZvaWQgYWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhy
ZWFkSFRUUEhlYWRlck1hcERhdGE+KTsKKyAgICBIVFRQSGVhZGVyTWFwIGlzb2xhdGVkQ29weSgp
IGNvbnN0OwogCiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFk
ZXJzLmlzRW1wdHkoKSAmJiBtX3VuY29tbW9uSGVhZGVycy5pc0VtcHR5KCk7IH0KICAgICBpbnQg
c2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29tbW9uSGVhZGVycy5zaXplKCkgKyBtX3VuY29tbW9u
SGVhZGVycy5zaXplKCk7IH0KQEAgLTIxNSw1ICsyMDgsMyBAQCBib29sIEhUVFBIZWFkZXJNYXA6
OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJNYXApCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEhUVFBIZWFkZXJNYXBfaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFz
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNl
LmNwcAppbmRleCAxMGJiYmFhNmM1MDk1MTBkYjczZDRiN2NkZDRkMWY3ZGVmZjdjMTlkLi4wZWZk
MDRlODIzNDU2ZjE2YmQzMzMyNzY1NGQ3M2ZhY2RlMDY2YmVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmNwcApAQCAtMzEs
NiArMzEsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjb25zdCBjaGFyKiBjb25zdCBlcnJv
ckRvbWFpbldlYktpdEludGVybmFsID0gIldlYktpdEludGVybmFsIjsKIAoraW5saW5lIGNvbnN0
IFJlc291cmNlRXJyb3ImIFJlc291cmNlRXJyb3JCYXNlOjphc1Jlc291cmNlRXJyb3IoKSBjb25z
dAoreworICAgIHJldHVybiAqc3RhdGljX2Nhc3Q8Y29uc3QgUmVzb3VyY2VFcnJvcio+KHRoaXMp
OworfQorCiBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3JCYXNlOjppc29sYXRlZENvcHkoKSBj
b25zdAogewogICAgIGxhenlJbml0KCk7CkBAIC00Myw3ICs0OCw5IEBAIFJlc291cmNlRXJyb3Ig
UmVzb3VyY2VFcnJvckJhc2U6Omlzb2xhdGVkQ29weSgpIGNvbnN0CiAgICAgZXJyb3JDb3B5Lm1f
aXNOdWxsID0gbV9pc051bGw7CiAgICAgZXJyb3JDb3B5Lm1faXNDYW5jZWxsYXRpb24gPSBtX2lz
Q2FuY2VsbGF0aW9uOwogICAgIGVycm9yQ29weS5tX2lzVGltZW91dCA9IG1faXNUaW1lb3V0Owot
ICAgIHBsYXRmb3JtQ29weShlcnJvckNvcHkpOworCisgICAgZXJyb3JDb3B5LmRvUGxhdGZvcm1J
c29sYXRlZENvcHkoYXNSZXNvdXJjZUVycm9yKCkpOworCiAgICAgcmV0dXJuIGVycm9yQ29weTsK
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZUVycm9yQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVy
cm9yQmFzZS5oCmluZGV4IDc3ZjRkNjA1ZTUwMmNhNzFhOTdkNmMzYmFhY2Q2ZDAwOGY2ZmEzMjgu
LmJiNmEzYTVjMzI3MGJkZTIyYjlkMDI5YzNkZGFlYTdiOGY1MDI0ZjIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmgKQEAgLTc4
LDkgKzc4LDYgQEAgcHJvdGVjdGVkOgogICAgIC8vIFRoZSBSZXNvdXJjZUVycm9yIHN1YmNsYXNz
IG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBsYXppbHkgaW5pdGlhbGl6ZSBwbGF0Zm9ybSBz
cGVjaWZpYyBmaWVsZHMKICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKSB7fQogCi0gICAgLy8g
VGhlIFJlc291cmNlRXJyb3Igc3ViY2xhc3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGNv
cHkgcGxhdGZvcm0gc3BlY2lmaWMgZmllbGRzCi0gICAgdm9pZCBwbGF0Zm9ybUNvcHkoUmVzb3Vy
Y2VFcnJvciYpIGNvbnN0IHt9Ci0KICAgICAvLyBUaGUgUmVzb3VyY2VFcnJvciBzdWJjbGFzcyBt
YXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8gY29tcGFyZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVs
ZHMKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3QgUmVzb3VyY2VFcnJvciYs
IGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IHJldHVybiB0cnVlOyB9CiAKQEAgLTkxLDYgKzg4LDkg
QEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9pc051bGwgOiAxOwogICAgIGJvb2wgbV9pc0NhbmNl
bGxhdGlvbiA6IDE7CiAgICAgYm9vbCBtX2lzVGltZW91dCA6IDE7CisKK3ByaXZhdGU6CisgICAg
Y29uc3QgUmVzb3VyY2VFcnJvciYgYXNSZXNvdXJjZUVycm9yKCkgY29uc3Q7CiB9OwogCiBpbmxp
bmUgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNl
RXJyb3ImIGIpIHsgcmV0dXJuIFJlc291cmNlRXJyb3JCYXNlOjpjb21wYXJlKGEsIGIpOyB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1p
bmcuaAppbmRleCA5YmQ5NDVjY2I2ZTFiMDcxZTE4MDRiMjdlYjdiNTEyYWZjYzAzM2ZkLi43NWNl
YzQ5MzY3OTIzYjdmN2UxYjU4NzU3YWMyY2IxYWM2MzZjYmNhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRpbWluZy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKQEAgLTY4LDYg
KzY4LDEyIEBAIHB1YmxpYzoKICAgICAgICAgc2VjdXJlQ29ubmVjdGlvblN0YXJ0ID0gb3RoZXIu
c2VjdXJlQ29ubmVjdGlvblN0YXJ0OwogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQorCisg
ICAgUmVzb3VyY2VMb2FkVGltaW5nIGlzb2xhdGVkQ29weSgpIGNvbnN0CisgICAgeworICAgICAg
ICAvLyBUaGVyZSBhcmUgY3VycmVudGx5IG5vIG1lbWJlcnMgdGhhdCBuZWVkIGlzb2xhdGVkIGNv
cGllcywgc28gd2UgY2FuIHVzZSB0aGUgY29weSBjb25zdHJ1Y3Rvci4KKyAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgIH0KICAgICAKICAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VM
b2FkVGltaW5nJiBvdGhlcikgY29uc3QKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcAppbmRleCAzNGJiNzZh
NDBkNGRmYWM5NzMwNTAyNTI5NmQ1YjhhODNiZmFmYzNhLi5hNDhiZTRmOTg2MmMzZDUyYmM1ZDY1
ZjhlZjU3MmE0MWE0Yjk3Y2JmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKQEAgLTUyLDY1ICs1Miw0MSBAQCBp
bmxpbmUgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBSZXNvdXJjZVJlcXVlc3RCYXNlOjphc1Jlc291
cmNlUmVxdWVzdCgpIGNvbnN0CiBSZXNvdXJjZVJlcXVlc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6
aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdDsKLSAg
ICByZXF1ZXN0LnNldEFzSXNvbGF0ZWRDb3B5KCp0aGlzKTsKKyAgICByZXF1ZXN0LnNldEFzSXNv
bGF0ZWRDb3B5KGFzUmVzb3VyY2VSZXF1ZXN0KCkpOwogICAgIHJldHVybiByZXF1ZXN0OwogfQog
Ci12b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291
cmNlUmVxdWVzdEJhc2UmIG90aGVyKQordm9pZCBSZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lz
b2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG90aGVyKQogewotICAgIGF1dG8gZGF0
YSA9IG90aGVyLmNvcHlEYXRhKCk7Ci0KLSAgICBzZXRVUkwoZGF0YS0+dXJsKTsKLSAgICBzZXRD
YWNoZVBvbGljeShkYXRhLT5jYWNoZVBvbGljeSk7Ci0gICAgc2V0VGltZW91dEludGVydmFsKGRh
dGEtPnRpbWVvdXRJbnRlcnZhbCk7Ci0gICAgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMoZGF0YS0+
Zmlyc3RQYXJ0eUZvckNvb2tpZXMpOwotICAgIHNldEhUVFBNZXRob2QoZGF0YS0+aHR0cE1ldGhv
ZCk7Ci0gICAgc2V0UHJpb3JpdHkoZGF0YS0+cHJpb3JpdHkpOwotICAgIHNldFJlcXVlc3Rlcihk
YXRhLT5yZXF1ZXN0ZXIpOworICAgIHNldFVSTChvdGhlci51cmwoKS5pc29sYXRlZENvcHkoKSk7
CisgICAgc2V0Q2FjaGVQb2xpY3kob3RoZXIuY2FjaGVQb2xpY3koKSk7CisgICAgc2V0VGltZW91
dEludGVydmFsKG90aGVyLnRpbWVvdXRJbnRlcnZhbCgpKTsKKyAgICBzZXRGaXJzdFBhcnR5Rm9y
Q29va2llcyhvdGhlci5maXJzdFBhcnR5Rm9yQ29va2llcygpLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBzZXRIVFRQTWV0aG9kKG90aGVyLmh0dHBNZXRob2QoKS5pc29sYXRlZENvcHkoKSk7CisgICAg
c2V0UHJpb3JpdHkob3RoZXIucHJpb3JpdHkoKSk7CisgICAgc2V0UmVxdWVzdGVyKG90aGVyLnJl
cXVlc3RlcigpKTsKIAogICAgIHVwZGF0ZVJlc291cmNlUmVxdWVzdCgpOwotICAgIG1faHR0cEhl
YWRlckZpZWxkcy5hZG9wdChXVEZNb3ZlKGRhdGEtPmh0dHBIZWFkZXJzKSk7CisgICAgbV9odHRw
SGVhZGVyRmllbGRzID0gb3RoZXIuaHR0cEhlYWRlckZpZWxkcygpLmlzb2xhdGVkQ29weSgpOwog
Ci0gICAgc2l6ZV90IGVuY29kaW5nQ291bnQgPSBkYXRhLT5yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCk7CisgICAgc2l6ZV90IGVuY29kaW5nQ291
bnQgPSBvdGhlci5tX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5LnNpemUoKTsKICAgICBpZiAoZW5jb2RpbmdDb3VudCA+IDApIHsKLSAgICAgICAgU3RyaW5n
IGVuY29kaW5nMSA9IGRhdGEtPnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5WzBdOworICAgICAgICBTdHJpbmcgZW5jb2RpbmcxID0gb3RoZXIubV9yZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVswXS5pc29sYXRlZENvcHko
KTsKICAgICAgICAgU3RyaW5nIGVuY29kaW5nMjsKICAgICAgICAgU3RyaW5nIGVuY29kaW5nMzsK
ICAgICAgICAgaWYgKGVuY29kaW5nQ291bnQgPiAxKSB7Ci0gICAgICAgICAgICBlbmNvZGluZzIg
PSBkYXRhLT5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsx
XTsKKyAgICAgICAgICAgIGVuY29kaW5nMiA9IG90aGVyLm1fcmVzcG9uc2VDb250ZW50RGlzcG9z
aXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMV0uaXNvbGF0ZWRDb3B5KCk7CiAgICAgICAgICAg
ICBpZiAoZW5jb2RpbmdDb3VudCA+IDIpCi0gICAgICAgICAgICAgICAgZW5jb2RpbmczID0gZGF0
YS0+cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbMl07Cisg
ICAgICAgICAgICAgICAgZW5jb2RpbmczID0gb3RoZXIubV9yZXNwb25zZUNvbnRlbnREaXNwb3Np
dGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsyXS5pc29sYXRlZENvcHkoKTsKICAgICAgICAgfQog
ICAgICAgICBBU1NFUlQoZW5jb2RpbmdDb3VudCA8PSAzKTsKICAgICAgICAgc2V0UmVzcG9uc2VD
b250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoZW5jb2RpbmcxLCBlbmNvZGlu
ZzIsIGVuY29kaW5nMyk7CiAgICAgfQotICAgIHNldEhUVFBCb2R5KGRhdGEtPmh0dHBCb2R5LmNv
cHlSZWYoKSk7Ci0gICAgc2V0QWxsb3dDb29raWVzKGRhdGEtPmFsbG93Q29va2llcyk7Ci0KLSAg
ICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVzb3VyY2VSZXF1ZXN0KCkpLmRvUGxh
dGZvcm1BZG9wdChXVEZNb3ZlKGRhdGEpKTsKLX0KKyAgICBpZiAob3RoZXIubV9odHRwQm9keSkK
KyAgICAgICAgc2V0SFRUUEJvZHkob3RoZXIubV9odHRwQm9keS0+aXNvbGF0ZWRDb3B5KCkpOwor
ICAgIHNldEFsbG93Q29va2llcyhvdGhlci5tX2FsbG93Q29va2llcyk7CiAKLXN0ZDo6dW5pcXVl
X3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291cmNlUmVxdWVzdEJhc2U6
OmNvcHlEYXRhKCkgY29uc3QKLXsKLSAgICBhdXRvIGRhdGEgPSBzdGQ6Om1ha2VfdW5pcXVlPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4oKTsKLSAgICBkYXRhLT51cmwgPSB1cmwoKS5p
c29sYXRlZENvcHkoKTsKLSAgICBkYXRhLT5jYWNoZVBvbGljeSA9IG1fY2FjaGVQb2xpY3k7Ci0g
ICAgZGF0YS0+dGltZW91dEludGVydmFsID0gdGltZW91dEludGVydmFsKCk7Ci0gICAgZGF0YS0+
Zmlyc3RQYXJ0eUZvckNvb2tpZXMgPSBmaXJzdFBhcnR5Rm9yQ29va2llcygpLmlzb2xhdGVkQ29w
eSgpOwotICAgIGRhdGEtPmh0dHBNZXRob2QgPSBodHRwTWV0aG9kKCkuaXNvbGF0ZWRDb3B5KCk7
Ci0gICAgZGF0YS0+aHR0cEhlYWRlcnMgPSBodHRwSGVhZGVyRmllbGRzKCkuY29weURhdGEoKTsK
LSAgICBkYXRhLT5wcmlvcml0eSA9IG1fcHJpb3JpdHk7Ci0gICAgZGF0YS0+cmVxdWVzdGVyID0g
bV9yZXF1ZXN0ZXI7Ci0KLSAgICBkYXRhLT5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29k
aW5nRmFsbGJhY2tBcnJheS5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fcmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuc2l6ZSgpKTsKLSAgICBzaXplX3QgZW5j
b2RpbmdBcnJheVNpemUgPSBtX3Jlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxs
YmFja0FycmF5LnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgZW5j
b2RpbmdBcnJheVNpemU7ICsraW5kZXgpIHsKLSAgICAgICAgZGF0YS0+cmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkuYXBwZW5kKG1fcmVzcG9uc2VDb250ZW50
RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXlbaW5kZXhdLmlzb2xhdGVkQ29weSgpKTsK
LSAgICB9Ci0gICAgaWYgKG1faHR0cEJvZHkpCi0gICAgICAgIGRhdGEtPmh0dHBCb2R5ID0gbV9o
dHRwQm9keS0+ZGVlcENvcHkoKTsKLSAgICBkYXRhLT5hbGxvd0Nvb2tpZXMgPSBtX2FsbG93Q29v
a2llczsKLSAgICByZXR1cm4gYXNSZXNvdXJjZVJlcXVlc3QoKS5kb1BsYXRmb3JtQ29weURhdGEo
V1RGTW92ZShkYXRhKSk7CisgICAgY29uc3RfY2FzdDxSZXNvdXJjZVJlcXVlc3QmPihhc1Jlc291
cmNlUmVxdWVzdCgpKS5kb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkob3RoZXIpOwogfQogCiBi
b29sIFJlc291cmNlUmVxdWVzdEJhc2U6OmlzRW1wdHkoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAppbmRleCA2
YjE2M2NiOTE3MThiODQzMDc1NjUxYjFlYjMxYTk0YWRiMmUzNDM3Li42ZTBiYmUwMjBiOWU4Nzk4
ZGI3MDBlYjRkNTYzZjRhNzA4NmE5NTkwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaApAQCAtNDgsMTQgKzQ4LDEzIEBA
IGVudW0gSFRUUEJvZHlVcGRhdGVQb2xpY3kgewogfTsKIAogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0
Owotc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YTsKIAogLy8gRG8gbm90IHVz
ZSB0aGlzIHR5cGUgZGlyZWN0bHkuICBVc2UgUmVzb3VyY2VSZXF1ZXN0IGluc3RlYWQuCiBjbGFz
cyBSZXNvdXJjZVJlcXVlc3RCYXNlIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKICAgICBSZXNvdXJjZVJlcXVlc3QgaXNvbGF0ZWRDb3B5KCkgY29uc3Q7Ci0gICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3RC
YXNlJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRBc0lzb2xhdGVkQ29weShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgaXNOdWxsKCkgY29u
c3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc0VtcHR5KCkgY29uc3Q7CkBAIC0yMjAsOSAr
MjE5LDYgQEAgcHJvdGVjdGVkOgogcHJpdmF0ZToKICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IGFzUmVzb3VyY2VSZXF1ZXN0KCkgY29uc3Q7CiAKLSAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUg
ZGF0YSBzdWl0YWJsZSBmb3IgcGFzc2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAgICBzdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBjb3B5RGF0YSgpIGNvbnN0
OwotCiAgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIGRvdWJsZSBzX2RlZmF1bHRUaW1lb3V0SW50
ZXJ2YWw7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIHN0YXRpYyBib29sIHNfZGVmYXVsdEFsbG93
Q29va2llczsKQEAgLTIzNCwyMCArMjMwLDYgQEAgYm9vbCBlcXVhbElnbm9yaW5nSGVhZGVyRmll
bGRzKGNvbnN0IFJlc291cmNlUmVxdWVzdEJhc2UmLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuIFJlc291cmNlUmVxdWVzdEJhc2U6OmNvbXBhcmUoYSwg
Yik7IH0KIGlubGluZSBib29sIG9wZXJhdG9yIT0oUmVzb3VyY2VSZXF1ZXN0JiBhLCBjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmIGIpIHsgcmV0dXJuICEoYSA9PSBiKTsgfQogCi1zdHJ1Y3QgQ3Jvc3NU
aHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSB7Ci0gICAgVVJMIHVybDsKLSAgICBSZXNvdXJj
ZVJlcXVlc3RDYWNoZVBvbGljeSBjYWNoZVBvbGljeTsKLSAgICBkb3VibGUgdGltZW91dEludGVy
dmFsOwotICAgIFVSTCBmaXJzdFBhcnR5Rm9yQ29va2llczsKLSAgICBTdHJpbmcgaHR0cE1ldGhv
ZDsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4gaHR0
cEhlYWRlcnM7Ci0gICAgVmVjdG9yPFN0cmluZz4gcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25F
bmNvZGluZ0ZhbGxiYWNrQXJyYXk7Ci0gICAgUmVmUHRyPEZvcm1EYXRhPiBodHRwQm9keTsKLSAg
ICBib29sIGFsbG93Q29va2llczsKLSAgICBSZXNvdXJjZUxvYWRQcmlvcml0eSBwcmlvcml0eTsK
LSAgICBSZXNvdXJjZVJlcXVlc3RCYXNlOjpSZXF1ZXN0ZXIgcmVxdWVzdGVyOwotfTsKLQogV0VC
Q09SRV9FWFBPUlQgdW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNvdW50
UGVySG9zdCgpOwogI2lmIFBMQVRGT1JNKElPUykKIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW5pdGlh
bGl6ZUhUVFBDb25uZWN0aW9uU2V0dGluZ3NPblN0YXJ0dXAoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKaW5k
ZXggMzFmZjRmYTE5NDMwMmZkMzZmODRkOGMxYWIyNGE4MTBhMzNhNDE4ZC4uNWI1Mjg3NjA2YzNj
OTk3NTQ1ZTQ0MGRiNTE1ZGE1ZTZiNGNhNDdjZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAKQEAgLTY2LDQy
ICs2NiwyNCBAQCBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6UmVzb3VyY2VSZXNwb25zZUJhc2UoY29u
c3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cAogUmVzb3VyY2VSZXNwb25zZSBSZXNv
dXJjZVJlc3BvbnNlQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKICAgICBSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlOwotICAgIGF1dG8gZGF0YSA9IGNvcHlEYXRhKCk7CiAKLSAgICByZXNw
b25zZS5zZXRVUkwoZGF0YS0+bV91cmwpOwotICAgIHJlc3BvbnNlLnNldE1pbWVUeXBlKGRhdGEt
Pm1fbWltZVR5cGUpOwotICAgIHJlc3BvbnNlLnNldEV4cGVjdGVkQ29udGVudExlbmd0aChkYXRh
LT5tX2V4cGVjdGVkQ29udGVudExlbmd0aCk7Ci0gICAgcmVzcG9uc2Uuc2V0VGV4dEVuY29kaW5n
TmFtZShkYXRhLT5tX3RleHRFbmNvZGluZ05hbWUpOworICAgIHJlc3BvbnNlLnNldFVSTCh1cmwo
KS5pc29sYXRlZENvcHkoKSk7CisgICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUobWltZVR5cGUoKS5p
c29sYXRlZENvcHkoKSk7CisgICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGV4
cGVjdGVkQ29udGVudExlbmd0aCgpKTsKKyAgICByZXNwb25zZS5zZXRUZXh0RW5jb2RpbmdOYW1l
KHRleHRFbmNvZGluZ05hbWUoKS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzQ29kZShkYXRhLT5tX2h0dHBTdGF0dXNDb2RlKTsKLSAgICByZXNwb25zZS5zZXRI
VFRQU3RhdHVzVGV4dChkYXRhLT5tX2h0dHBTdGF0dXNUZXh0KTsKLSAgICByZXNwb25zZS5zZXRI
VFRQVmVyc2lvbihkYXRhLT5tX2h0dHBWZXJzaW9uKTsKKyAgICByZXNwb25zZS5zZXRIVFRQU3Rh
dHVzQ29kZShodHRwU3RhdHVzQ29kZSgpKTsKKyAgICByZXNwb25zZS5zZXRIVFRQU3RhdHVzVGV4
dChodHRwU3RhdHVzVGV4dCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXNwb25zZS5zZXRIVFRQ
VmVyc2lvbihodHRwVmVyc2lvbigpLmlzb2xhdGVkQ29weSgpKTsKIAogICAgIHJlc3BvbnNlLmxh
enlJbml0KEFsbEZpZWxkcyk7Ci0gICAgcmVzcG9uc2UubV9odHRwSGVhZGVyRmllbGRzLmFkb3B0
KFdURk1vdmUoZGF0YS0+bV9odHRwSGVhZGVycykpOwotICAgIHJlc3BvbnNlLm1fcmVzb3VyY2VM
b2FkVGltaW5nID0gZGF0YS0+bV9yZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgcmVzcG9uc2UubV90
eXBlID0gZGF0YS0+bV90eXBlOwotICAgIHJlc3BvbnNlLmRvUGxhdGZvcm1BZG9wdChXVEZNb3Zl
KGRhdGEpKTsKKyAgICByZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVsZHMgPSBodHRwSGVhZGVyRmll
bGRzKCkuaXNvbGF0ZWRDb3B5KCk7CisgICAgcmVzcG9uc2UubV9yZXNvdXJjZUxvYWRUaW1pbmcg
PSBtX3Jlc291cmNlTG9hZFRpbWluZy5pc29sYXRlZENvcHkoKTsKKyAgICByZXNwb25zZS5tX3R5
cGUgPSBtX3R5cGU7CiAKICAgICByZXR1cm4gcmVzcG9uc2U7CiB9CiAKLXN0ZDo6dW5pcXVlX3B0
cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6
Y29weURhdGEoKSBjb25zdAotewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4oKTsKLSAgICBkYXRhLT5tX3VybCA9IHVybCgp
Lmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPm1fbWltZVR5cGUgPSBtaW1lVHlwZSgpLmlzb2xh
dGVkQ29weSgpOwotICAgIGRhdGEtPm1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoID0gZXhwZWN0ZWRD
b250ZW50TGVuZ3RoKCk7Ci0gICAgZGF0YS0+bV90ZXh0RW5jb2RpbmdOYW1lID0gdGV4dEVuY29k
aW5nTmFtZSgpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPm1faHR0cFN0YXR1c0NvZGUgPSBo
dHRwU3RhdHVzQ29kZSgpOwotICAgIGRhdGEtPm1faHR0cFN0YXR1c1RleHQgPSBodHRwU3RhdHVz
VGV4dCgpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPm1faHR0cFZlcnNpb24gPSBodHRwVmVy
c2lvbigpLmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPm1faHR0cEhlYWRlcnMgPSBodHRwSGVh
ZGVyRmllbGRzKCkuY29weURhdGEoKTsKLSAgICBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZyA9
IG1fcmVzb3VyY2VMb2FkVGltaW5nOwotICAgIGRhdGEtPm1fdHlwZSA9IG1fdHlwZTsKLSAgICBy
ZXR1cm4gYXNSZXNvdXJjZVJlc3BvbnNlKCkuZG9QbGF0Zm9ybUNvcHlEYXRhKFdURk1vdmUoZGF0
YSkpOwotfQotCiAvLyBGSVhNRTogTmFtZSBkb2VzIG5vdCBtYWtlIGl0IGNsZWFyIHRoaXMgaXMg
dHJ1ZSBmb3IgSFRUUFMhCiBib29sIFJlc291cmNlUmVzcG9uc2VCYXNlOjppc0hUVFAoKSBjb25z
dAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJj
ZVJlc3BvbnNlQmFzZS5oCmluZGV4IDVmZmYzNTk5NDkxNDEyODgzMmRlNzYwMDlhY2U1N2JiZjI2
NDIzM2MuLmFkNTEwN2Y3ZjdjNTI4NWYyNjBiYzg3OWY0MWU3MTE1YmRlMzg3ZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2Uu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VC
YXNlLmgKQEAgLTQwLDcgKzQwLDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVz
b3VyY2VSZXNwb25zZTsKLXN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhOwog
CiAvLyBEbyBub3QgdXNlIHRoaXMgY2xhc3MgZGlyZWN0bHksIHVzZSB0aGUgY2xhc3MgUmVzcG9u
c2VSZXNwb25zZSBpbnN0ZWFkCiBjbGFzcyBSZXNvdXJjZVJlc3BvbnNlQmFzZSB7CkBAIC0xNTks
OSArMTU4LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHBhcnNlQ2FjaGVDb250cm9sRGlyZWN0aXZl
cygpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlSGVhZGVyUGFyc2VkU3RhdGUoSFRUUEhlYWRlck5h
bWUpOwogCi0gICAgLy8gR2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3Np
bmcgdG8gYW5vdGhlciB0aHJlYWQuCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IGNvcHlEYXRhKCkgY29uc3Q7Ci0KIHByb3RlY3RlZDoKICAgICBi
b29sIG1faXNOdWxsOwogICAgIFVSTCBtX3VybDsKQEAgLTI3NCwyMSArMjcwLDQgQEAgYm9vbCBS
ZXNvdXJjZVJlc3BvbnNlQmFzZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIFJlc291cmNlUmVz
cG9uc2VCYXNlJiByZXNwb24KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RydWN0IENyb3NzVGhy
ZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlIHsKLSAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSk7IFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOwotcHVibGljOgotICAgIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKCkg
eyB9Ci0gICAgVVJMIG1fdXJsOwotICAgIFN0cmluZyBtX21pbWVUeXBlOwotICAgIGxvbmcgbG9u
ZyBtX2V4cGVjdGVkQ29udGVudExlbmd0aDsKLSAgICBTdHJpbmcgbV90ZXh0RW5jb2RpbmdOYW1l
OwotICAgIGludCBtX2h0dHBTdGF0dXNDb2RlOwotICAgIFN0cmluZyBtX2h0dHBTdGF0dXNUZXh0
OwotICAgIFN0cmluZyBtX2h0dHBWZXJzaW9uOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBtX2h0dHBIZWFkZXJzOwotICAgIFJlc291cmNlTG9hZFRp
bWluZyBtX3Jlc291cmNlTG9hZFRpbWluZzsKLSAgICBSZXNvdXJjZVJlc3BvbnNlQmFzZTo6VHlw
ZSBtX3R5cGU7Ci0gICAgYm9vbCBtX2lzUmVkaXJlY3RlZDsKLX07Ci0KIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2Yv
UmVzb3VyY2VFcnJvci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZUVycm9yLmgKaW5kZXggYzM2YmRjYTcyYjMxMTA0Y2JlMDQyNGYyOGZmZDNkNDNiYTRkYjk2
YS4uMmNhMDRlZWYyODI2OWY5ODJhZmNmMDZiN2I5YmUxMjA3ZTg4MmI1ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVycm9yLmgKQEAgLTgz
LDcgKzgzLDkgQEAgcHJpdmF0ZToKICAgICBmcmllbmQgY2xhc3MgUmVzb3VyY2VFcnJvckJhc2U7
CiAKICAgICB2b2lkIHBsYXRmb3JtTGF6eUluaXQoKTsKLSAgICB2b2lkIHBsYXRmb3JtQ29weShS
ZXNvdXJjZUVycm9yJikgY29uc3Q7CisKKyAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYpOworCiAgICAgYm9vbCBtX2RhdGFJc1VwVG9EYXRlOwogI2lm
IFVTRShDRk5FVFdPUkspCiAgICAgbXV0YWJsZSBSZXRhaW5QdHI8Q0ZFcnJvclJlZj4gbV9wbGF0
Zm9ybUVycm9yOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yQ0YuY3BwCmluZGV4IDYwYmZiMzY1OTFlMDdjMWJmYmVhYjZiMWUzYjU2
ZmFiOTg0Nzg0NzMuLmQ1YjRlZTQ3ZTM5ZDg2NWNhNDgyNTU1Y2VjOWNjMzI3ZDhhNTUzZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJv
ckNGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
RXJyb3JDRi5jcHAKQEAgLTExOSwxMiArMTE5LDEzIEBAIHZvaWQgUmVzb3VyY2VFcnJvcjo6cGxh
dGZvcm1MYXp5SW5pdCgpCiAgICAgbV9kYXRhSXNVcFRvRGF0ZSA9IHRydWU7CiB9CiAKLXZvaWQg
UmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db3B5KFJlc291cmNlRXJyb3ImIGVycm9yQ29weSkgY29u
c3QKKwordm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJl
c291cmNlRXJyb3ImIG90aGVyKQogewogI2lmIFBMQVRGT1JNKFdJTikKLSAgICBlcnJvckNvcHku
bV9jZXJ0aWZpY2F0ZSA9IG1fY2VydGlmaWNhdGU7CisgICAgbV9jZXJ0aWZpY2F0ZSA9IG90aGVy
Lm1fY2VydGlmaWNhdGU7CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShlcnJvckNvcHkpOworICAg
IFVOVVNFRF9QQVJBTShvdGhlcik7CiAjZW5kaWYKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggYzc0M2Y2NWYy
YjZjYWNjZWNiMDUzN2VjNGNjZGUyN2NlZjcxYzdhMi4uOGZlOGY5MDA3ODM0MmM1YzhlZGE5Nzlj
OTRhMTk1MWJiNDRjYjg0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCkBAIC0xMjYsOCArMTI2LDcgQEAgcHJpdmF0ZToK
ICAgICB2b2lkIGRvVXBkYXRlUGxhdGZvcm1IVFRQQm9keSgpOwogICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZUhUVFBCb2R5KCk7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIGNvbnN0OwotICAgIHZvaWQgZG9QbGF0Zm9ybUFk
b3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+KTsKKyAg
ICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
KTsKIAogI2lmIFVTRShDRk5FVFdPUkspCiAgICAgUmV0YWluUHRyPENGVVJMUmVxdWVzdFJlZj4g
bV9jZlJlcXVlc3Q7CkBAIC0xNDIsMTIgKzE0MSw2IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIGJv
b2wgc19odHRwUGlwZWxpbmluZ0VuYWJsZWQ7CiB9OwogCi1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNv
dXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YUJh
c2UgewotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgU3RyaW5nIG1fY2FjaGVQ
YXJ0aXRpb247Ci0jZW5kaWYKLX07Ci0KIGlubGluZSBib29sIFJlc291cmNlUmVxdWVzdDo6cmVz
b3VyY2VQcmlvcml0aWVzRW5hYmxlZCgpCiB7CiAjaWYgUExBVEZPUk0oTUFDKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3RDRk5l
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcAppbmRleCBhYzg3YjJhMzg0MjcyZGQzYWU3NTgyZWMwZDhjNGQ5M2VjZDdjNWY1
Li45MGU0MGYxMmJmNDE4NTNmZWIzZjcwOGRhMGUxYjIyNjk4MDdlN2Y5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVz
dENGTmV0LmNwcApAQCAtMzY2LDIzICszNjYsMTYgQEAgU3RyaW5nIFJlc291cmNlUmVxdWVzdDo6
cGFydGl0aW9uTmFtZShjb25zdCBTdHJpbmcmIGRvbWFpbikKIH0KICNlbmRpZgogCi1zdGQ6OnVu
aXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBSZXNvdXJjZVJlcXVlc3Q6
OmRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJl
cXVlc3REYXRhPiBkYXRhKSBjb25zdAordm9pZCBSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1T
ZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIG90aGVyKQogewogI2lmIEVO
QUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgZGF0YS0+bV9jYWNoZVBhcnRpdGlvbiA9IG1f
Y2FjaGVQYXJ0aXRpb247Ci0jZW5kaWYKLSAgICByZXR1cm4gZGF0YTsKLX0KLQotdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKQotewotI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCi0gICAgbV9jYWNoZVBhcnRpdGlvbiA9IGRhdGEtPm1fY2FjaGVQYXJ0aXRpb247CisgICAg
bV9jYWNoZVBhcnRpdGlvbiA9IG90aGVyLm1fY2FjaGVQYXJ0aXRpb24uaXNvbGF0ZWRDb3B5KCk7
CiAjZWxzZQotICAgIFVOVVNFRF9QQVJBTShkYXRhKTsKKyAgICBVTlVTRURfUEFSQU0ob3RoZXIp
OwogI2VuZGlmCiB9CiAKKwogLy8gRklYTUU6IEl0IGlzIGNvbmZ1c2luZyB0aGF0IHRoaXMgZnVu
Y3Rpb24gYm90aCBzZXRzIGNvbm5lY3Rpb24gY291bnQgYW5kIGRldGVybWluZXMgbWF4aW11bSBy
ZXF1ZXN0IGNvdW50IGF0IG5ldHdvcmsgbGF5ZXIuIFRoaXMgY2FuIGFuZCBzaG91bGQgYmUgZG9u
ZSBzZXBhcmF0ZWx5LgogdW5zaWduZWQgaW5pdGlhbGl6ZU1heGltdW1IVFRQQ29ubmVjdGlvbkNv
dW50UGVySG9zdCgpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IDgzOTQ2Y2ZhNTg4OGYyOTI5NmExOTcxZDUz
MWM5NWNjZTE4OWMzMDYuLjdkZjBlNzAzYmU0Y2NmOGM2NDhhZGFmNmY2ZGJmOGVkMzMzZDhkMWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VS
ZXNwb25zZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VSZXNwb25zZS5oCkBAIC0xMDAsOCArMTAwLDggQEAgcHJpdmF0ZToKICAgICBTdHJpbmcgcGxh
dGZvcm1TdWdnZXN0ZWRGaWxlbmFtZSgpIGNvbnN0OwogICAgIENlcnRpZmljYXRlSW5mbyBwbGF0
Zm9ybUNlcnRpZmljYXRlSW5mbygpIGNvbnN0OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1
ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1
cm4gZGF0YTsgfQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9z
c1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPikgeyB9CisgICAgdm9pZCBkb1BsYXRmb3JtU2V0
QXNJc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYpIGNvbnN0OworCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCBpbml0TlNVUkxSZXNwb25zZSgpIGNvbnN0OwogI2VuZGlm
CkBAIC0xMTksNyArMTE5LDQgQEAgcHJpdmF0ZToKICNlbmRpZgogfTsKIAotc3RydWN0IENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJl
c3BvbnNlRGF0YUJhc2UgewotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKaW5k
ZXggYzMxZGQ0MjUxZjY3YTFjZWY2YWI0OTI5M2U1OTQ1YTc3ZWFlMmI1Mi4uZWVjNDYyZDVmNmZj
N2E0YzgwMmVkY2QyYjI3OTNhMGUyNzRjOTRjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCkBAIC01NCw2ICs1NCw5IEBA
IHB1YmxpYzoKICAgICBib29sIGhhc1NTTENvbm5lY3RFcnJvcigpIGNvbnN0IHsgcmV0dXJuIGVy
cm9yQ29kZSgpID09IENVUkxFX1NTTF9DT05ORUNUX0VSUk9SOyB9CiAKIHByaXZhdGU6CisgICAg
ZnJpZW5kIGNsYXNzIFJlc291cmNlRXJyb3JCYXNlOworICAgIHZvaWQgZG9QbGF0Zm9ybUlzb2xh
dGVkQ29weShjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CisKICAgICB1bnNpZ25lZCBtX3NzbEVy
cm9yczsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCA2NTRkMDJmYWFkNmY0OWQwMDFmZmE1M2NlZGMz
YmUxMTY2YzBlYTM3Li43ZGJmNjRkZmI2ODIyNTcyZWEyZmI5NmVmZjZlM2ZiYzhjZGU5ZTFkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VS
ZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291
cmNlUmVxdWVzdC5oCkBAIC03OCwxMyArNzgsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9V
cGRhdGVSZXNvdXJjZUhUVFBCb2R5KCkgeyB9CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0
dXJuIGRhdGE7IH0KLSAgICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRy
PENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQotIAotICAgICAgICBzdGF0aWMg
Ym9vbCBzX2h0dHBQaXBlbGluaW5nRW5hYmxlZDsKLSAgICB9OworICAgICAgICB2b2lkIGRvUGxh
dGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSB7IH0KIAotICAg
IHN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhQmFzZSB7CisgICAgICAgIHN0YXRpYyBib29sIHNfaHR0cFBp
cGVsaW5pbmdFbmFibGVkOwogICAgIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3Bv
bnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNw
b25zZS5oCmluZGV4IDQzMDdmNmU0MGNlMTk2MTQzNThlNGYwM2QwNDljM2NlZGYwZjI4YTMuLmVh
MTg0MGZiM2VkMTg5NzQyYzA2MDI1ZjQzMGJkNWM3NDQzZGQxOTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaApA
QCAtNTksOCArNTksNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNv
dXJjZVJlc3BvbnNlQmFzZTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0K
LSAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YT4pIHsgfQogICAgIFN0cmluZyBwbGF0Zm9ybVN1Z2dlc3RlZEZpbGVu
YW1lKCkgY29uc3QKICAgICB7CiAgICAgICAgIHJldHVybiBmaWxlbmFtZUZyb21IVFRQQ29udGVu
dERpc3Bvc2l0aW9uKGh0dHBIZWFkZXJGaWVsZChIVFRQSGVhZGVyTmFtZTo6Q29udGVudERpc3Bv
c2l0aW9uKSk7CkBAIC02OSw5ICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Jlc3BvbnNl
RmlyZWQ7CiB9OwogCi1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1
YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Ci19OwotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFj
Lm1tCmluZGV4IDYwYjBkZmYzZjYxMWNhMTRkZjZmNDY3ZjcyN2M1MWQ1MjljNDM3NGQuLjUyMDc5
YmQxZjUzNWRmYmM5MjI2MTMxMWE1MWRjMzc0NWEyMThhYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JNYWMubW0KKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQpAQCAt
MjgxLDYgKzI4MSwxMCBAQCBib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFyZShjb25z
dCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJgogICAgIHJldHVybiBhLm5z
RXJyb3IoKSA9PSBiLm5zRXJyb3IoKTsKIH0KIAordm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRm
b3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKQoreworfQorCiBOU0Vycm9yICpS
ZXNvdXJjZUVycm9yOjpuc0Vycm9yKCkgY29uc3QKIHsKICAgICBpZiAobV9pc051bGwpIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJv
ci5oCmluZGV4IDQ0N2IwMDI3NDhhNjNmNWFjNDA3NmFiM2Q5YzNmMmE1MjM1ZmI2ZmMuLmM0ZDdh
ZGE3ZjE4Y2Y2NWQ3ODM3MGVmY2QzYWFiMjg3MjcyYzdhYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaApAQCAtNjcsNyAr
NjcsOCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgcGxhdGZvcm1Db21wYXJlKGNvbnN0IFJl
c291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgcGxhdGZvcm1Db3B5KFJlc291cmNlRXJyb3ImKSBjb25zdDsKKyAgICBmcmllbmQgY2xh
c3MgUmVzb3VyY2VFcnJvckJhc2U7CisgICAgdm9pZCBkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNv
bnN0IFJlc291cmNlRXJyb3ImKTsKIAogICAgIHVuc2lnbmVkIG1fdGxzRXJyb3JzOwogICAgIEdS
ZWZQdHI8R1Rsc0NlcnRpZmljYXRlPiBtX2NlcnRpZmljYXRlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
aW5kZXggYWQ2YjhlNzA4NjczYWViOWE1NjU4ZTRjY2I4YzM1MTI5OWVmZWU5ZS4uZGI2ZmQ5NWQ2
MjRjMjk4MzhhOTUwZWQ5ZjJlMGU1YzAyNjliN2EzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCkBA
IC05NywxMCArOTcsMTAgQEAgUmVzb3VyY2VFcnJvciBSZXNvdXJjZUVycm9yOjp0aW1lb3V0RXJy
b3IoY29uc3QgVVJMJiBmYWlsaW5nVVJMKQogICAgIHJldHVybiBlcnJvcjsKIH0KIAotdm9pZCBS
ZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvcHkoUmVzb3VyY2VFcnJvciYgZXJyb3JDb3B5KSBjb25z
dAordm9pZCBSZXNvdXJjZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291
cmNlRXJyb3ImIG90aGVyKQogewotICAgIGVycm9yQ29weS5tX2NlcnRpZmljYXRlID0gbV9jZXJ0
aWZpY2F0ZTsKLSAgICBlcnJvckNvcHkubV90bHNFcnJvcnMgPSBtX3Rsc0Vycm9yczsKKyAgICBt
X2NlcnRpZmljYXRlID0gb3RoZXIubV9jZXJ0aWZpY2F0ZTsKKyAgICBtX3Rsc0Vycm9ycyA9IG90
aGVyLm1fdGxzRXJyb3JzOwogfQogCiBib29sIFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29tcGFy
ZShjb25zdCBSZXNvdXJjZUVycm9yJiBhLCBjb25zdCBSZXNvdXJjZUVycm9yJiBiKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVz
dC5oCmluZGV4IGExNzFlOTk3YmZjMTI1NmJmZjE5N2ViOTdjOTM4MTZmNWRkMGI3NzAuLjhhMjM1
YmI0ZGQ4MTE5MWU3MDY2MTYzYTM1MjlhYjM5ZjZhMjUxYTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTEy
MCwxMSArMTIwLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIGRvVXBkYXRl
UGxhdGZvcm1IVFRQQm9keSgpIHsgfQogICAgICAgICB2b2lkIGRvVXBkYXRlUmVzb3VyY2VIVFRQ
Qm9keSgpIHsgfQogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJl
YWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkYXRhKSBjb25zdCB7IHJldHVybiBkYXRhOyB9Ci0gICAg
ICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291
cmNlUmVxdWVzdERhdGE+KSB7IH0KLSAgICB9OwotCi0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFC
YXNlIHsKKyAgICAgICAgdm9pZCBkb1BsYXRmb3JtU2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikgeyB9CiAgICAgfTsKIAogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA0
MywgMSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9S
ZXNvdXJjZVJlc3BvbnNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAv
UmVzb3VyY2VSZXNwb25zZS5oCmluZGV4IGZmOGJlMmFkOTM1MTk4ZTRjNmY2NDJiODA3NmU1Mzdk
OGYxMWYwODguLjI3ZjliNTNiMGNjZTZkZmY4MDNmNWQ0MWQ5ZTk1ODZjMWNkZGM3YTcgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlc3Bv
bnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVzcG9uc2UuaApAQCAtOTAsOSArOTAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgZG9VcGRhdGVS
ZXNvdXJjZVJlc3BvbnNlKCkgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmlsZW5h
bWUoKSBjb25zdDsKICAgICBDZXJ0aWZpY2F0ZUluZm8gcGxhdGZvcm1DZXJ0aWZpY2F0ZUluZm8o
KSBjb25zdDsKLQotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9u
c2VEYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAgICB2b2lk
IGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3Bv
bnNlRGF0YT4pIHsgfQogfTsKIAogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KQEAgLTExMiw5ICsx
MDksNiBAQCBib29sIFJlc291cmNlUmVzcG9uc2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyLCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RydWN0
IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNv
dXJjZVJlc3BvbnNlRGF0YUJhc2UgewotfTsKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gUmVzb3VyY2VSZXNwb25zZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280368</attachid>
            <date>2016-06-02 14:29:22 -0700</date>
            <delta_ts>2016-06-02 15:42:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-158313-20160602143042.patch</filename>
            <type>text/plain</type>
            <size>37365</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAxNjAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VlZWM4ZmZjNDRiMTFm
YjIyNGQ2YTE2YzhkYTgyN2FkZTIzYzcyNi4uMTM4MDIwNzk2MGRmMjEzMTE1ZjZhYTA5ZDU0OWQ2
NTE4ODU0ZjAwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDk1IEBACiAyMDE2LTA2LTAyICBCcmFk
eSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KIAorICAgICAgICBNb2Rlcm5pemUgaG93IG1h
bnkgcGxhdGZvcm0vbmV0d29yayBjbGFzc2VzIGRvIGlzb2xhdGVkQ29weSgpLgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU4MzEzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgQWxleCBDaHJpc3RlbnNlbi4KKworICAgICAgICBObyBuZXcgdGVzdHMgKFJl
ZmFjdG9yLCBubyBiZWhhdmlvciBjaGFuZ2UpLgorCisgICAgICAgICogbG9hZGVyL1dvcmtlclRo
cmVhZGFibGVMb2FkZXIuaDoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YTo6aXNvbGF0ZWRDb3B5KToK
KyAgICAgICAgKFdlYkNvcmU6OkZvcm1EYXRhRWxlbWVudDo6aXNvbGF0ZWRDb3B5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZvcm1EYXRhOjpGb3JtRGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpGb3JtRGF0YTo6ZGVlcENvcHkpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL25l
dHdvcmsvRm9ybURhdGEuaDoKKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9I
VFRQSGVhZGVyTWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUVFBIZWFkZXJNYXA6Omlzb2xh
dGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjpjb3B5RGF0YSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpIVFRQSGVhZGVyTWFwOjphZG9wdCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVyTWFwLmg6CisgICAgICAgIAor
ICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VFcnJvckJhc2U6OmFzUmVzb3VyY2VFcnJvcik6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKiBw
bGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JCYXNlLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yQmFzZTo6cGxhdGZvcm1Db3B5KTogRGVsZXRlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmg6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRUaW1pbmc6Omlzb2xhdGVkQ29weSk6IE5vdCBzdHJpY3RseSBuZWVkZWQgZm9y
IG5vdywgYnV0IG1ha2VzIGl0IG9idmlvdXMKKyAgICAgICAgICB0aGF0IGNoYW5nZXMgd2lsbCBi
ZSBuZWVkZWQgaWYgbmV3IG1lbWJlcnMgYXJlIGFkZGVkIGxhdGVyLgorCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdEJhc2U6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZVJlcXVlc3RCYXNlOjpzZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3RCYXNlOjpjb3B5RGF0YSk6IERlbGV0ZWQuCisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmg6CisgICAgICAgIAorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVzb3VyY2VSZXNwb25zZUJhc2U6Omlzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZTo6Y29weURhdGEpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25zZUJhc2UuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlOjpDcm9zc1RocmVhZFJlc291
cmNlUmVzcG9uc2VEYXRhQmFzZSk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBsYXRm
b3JtL25ldHdvcmsvY2YvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VFcnJvckNGLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VF
cnJvcjo6cGxhdGZvcm1Db3B5KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZv
cm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3
b3JrL2NmL1Jlc291cmNlUmVxdWVzdENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KTogRGVsZXRlZC4K
KyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlc3BvbnNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQ29weURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0
Zm9ybUFkb3B0KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlRXJyb3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJyb3I6
OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXF1ZXN0Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3Q6OmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weSk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1Db3B5RGF0YSk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OmRvUGxhdGZvcm1BZG9wdCk6IERlbGV0ZWQuCisg
ICAgICAgIAorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJlc3BvbnNl
Lmg6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlOjpkb1BsYXRmb3JtQ29weURh
dGEpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZTo6ZG9QbGF0
Zm9ybUFkb3B0KTogRGVsZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29y
ay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlRXJy
b3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkpOgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdv
cmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yOjpkb1BsYXRmb3JtSXNvbGF0ZWRDb3B5KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291
cmNlRXJyb3I6OnBsYXRmb3JtQ29weSk6IERlbGV0ZWQuCisgICAgICAgIAorICAgICAgICAqIHBs
YXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KTogRGVs
ZXRlZC4KKyAgICAgICAgCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
UmVzcG9uc2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2U6OmRvUGxhdGZv
cm1Db3B5RGF0YSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
Ojpkb1BsYXRmb3JtQWRvcHQpOiBEZWxldGVkLgorCisyMDE2LTA2LTAyICBCcmFkeSBFaWRzb24g
IDxiZWlkc29uQGFwcGxlLmNvbT4KKwogICAgICAgICBPdmVyaGF1bCBjcm9zcy10aHJlYWQgdXNl
IG9mIFJlc291cmNlUmVxdWVzdCwgUmVzb3VyY2VSZXNwb25zZSwgYW5kIFJlc291cmNlRXJyb3Iu
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTgyOTMK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2Fk
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Xb3JrZXJUaHJlYWRhYmxlTG9hZGVyLmgKaW5k
ZXggMDY2ODNlYTU5YWNlZWJhYmNiMWNlYTI4YWFhNDNjMGQwMTk3MGYzNS4uNjZiZTBlODUyZTli
OTUzZjg2MjM4YWIwNWUwMTA3OWU2YzQ3YTNhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1dvcmtlclRocmVhZGFibGVMb2FkZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvV29ya2VyVGhyZWFkYWJsZUxvYWRlci5oCkBAIC00NSw4ICs0NSw2IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiAgICAgY2xhc3MgV29ya2VyR2xv
YmFsU2NvcGU7CiAgICAgY2xhc3MgV29ya2VyTG9hZGVyUHJveHk7Ci0gICAgc3RydWN0IENyb3Nz
VGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7Ci0gICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YTsKIAogICAgIGNsYXNzIFdvcmtlclRocmVhZGFibGVMb2FkZXIgOiBwdWJs
aWMgUmVmQ291bnRlZDxXb3JrZXJUaHJlYWRhYmxlTG9hZGVyPiwgcHVibGljIFRocmVhZGFibGVM
b2FkZXIgewogICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggODg1YTk4MThjZmI0MjY4NzMy
NjQ2ZTEwMDhmNjUwNTY5Y2E5ZDlhOS4uZTI3ZTJiMDkwNWE0MjVlM2U3NzA3YjU3N2RkYWExODA0
YWU1OTFhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5j
cHAKQEAgLTM5LDkgKzM5LDYgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogaW5saW5lIEZvcm1E
YXRhOjpGb3JtRGF0YSgpCi0gICAgOiBtX2lkZW50aWZpZXIoMCkKLSAgICAsIG1fYWx3YXlzU3Ry
ZWFtKGZhbHNlKQotICAgICwgbV9jb250YWluc1Bhc3N3b3JkRGF0YShmYWxzZSkKIHsKIH0KIApA
QCAtMTE1LDI5ICsxMTIsMzQgQEAgUmVmPEZvcm1EYXRhPiBGb3JtRGF0YTo6Y29weSgpIGNvbnN0
CiAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRm9ybURhdGEoKnRoaXMpKTsKIH0KIAotUmVmPEZv
cm1EYXRhPiBGb3JtRGF0YTo6ZGVlcENvcHkoKSBjb25zdAorUmVmPEZvcm1EYXRhPiBGb3JtRGF0
YTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIHsKLSAgICBSZWY8Rm9ybURhdGE+IGZvcm1EYXRhKGNy
ZWF0ZSgpKTsKKyAgICAvLyBGSVhNRTogaXNvbGF0ZWRDb3B5KCkgKGhpc3RvcmljYWxseSBkZWVw
Q29weSgpKSBvbmx5IGNvcGllcyBjZXJ0YWluIHZhbHVlcyBmcm9tIGB0aGlzYC4gV2h5IGlzIHRo
YXQ/CisgICAgYXV0byBmb3JtRGF0YSA9IGNyZWF0ZSgpOwogCiAgICAgZm9ybURhdGEtPm1fYWx3
YXlzU3RyZWFtID0gbV9hbHdheXNTdHJlYW07CiAKICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fZWxlbWVudHMuc2l6ZSgpKTsKLSAgICBmb3IgKGNvbnN0
IEZvcm1EYXRhRWxlbWVudCYgZWxlbWVudCA6IG1fZWxlbWVudHMpIHsKLSAgICAgICAgc3dpdGNo
IChlbGVtZW50Lm1fdHlwZSkgewotICAgICAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6
RGF0YToKLSAgICAgICAgICAgIGZvcm1EYXRhLT5tX2VsZW1lbnRzLnVuY2hlY2tlZEFwcGVuZChG
b3JtRGF0YUVsZW1lbnQoZWxlbWVudC5tX2RhdGEpKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjYXNlIEZvcm1EYXRhRWxlbWVudDo6VHlwZTo6RW5jb2RlZEZpbGU6Ci0gICAgICAgICAg
ICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNrZWRBcHBlbmQoRm9ybURhdGFFbGVtZW50KGVs
ZW1lbnQubV9maWxlbmFtZSwgZWxlbWVudC5tX2ZpbGVTdGFydCwgZWxlbWVudC5tX2ZpbGVMZW5n
dGgsIGVsZW1lbnQubV9leHBlY3RlZEZpbGVNb2RpZmljYXRpb25UaW1lLCBlbGVtZW50Lm1fc2hv
dWxkR2VuZXJhdGVGaWxlKSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBGb3Jt
RGF0YUVsZW1lbnQ6OlR5cGU6OkVuY29kZWRCbG9iOgotICAgICAgICAgICAgZm9ybURhdGEtPm1f
ZWxlbWVudHMudW5jaGVja2VkQXBwZW5kKEZvcm1EYXRhRWxlbWVudChlbGVtZW50Lm1fdXJsKSk7
Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVs
ZW1lbnQgOiBtX2VsZW1lbnRzKQorICAgICAgICBmb3JtRGF0YS0+bV9lbGVtZW50cy51bmNoZWNr
ZWRBcHBlbmQoZWxlbWVudC5pc29sYXRlZENvcHkoKSk7CisKICAgICByZXR1cm4gZm9ybURhdGE7
CiB9CiAKK0Zvcm1EYXRhRWxlbWVudCBGb3JtRGF0YUVsZW1lbnQ6Omlzb2xhdGVkQ29weSgpIGNv
bnN0Cit7CisgICAgc3dpdGNoIChtX3R5cGUpIHsKKyAgICBjYXNlIFR5cGU6OkRhdGE6CisgICAg
ICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQobV9kYXRhKTsKKyAgICBjYXNlIFR5cGU6OkVuY29k
ZWRGaWxlOgorICAgICAgICByZXR1cm4gRm9ybURhdGFFbGVtZW50KG1fZmlsZW5hbWUuaXNvbGF0
ZWRDb3B5KCksIG1fZmlsZVN0YXJ0LCBtX2ZpbGVMZW5ndGgsIG1fZXhwZWN0ZWRGaWxlTW9kaWZp
Y2F0aW9uVGltZSwgbV9zaG91bGRHZW5lcmF0ZUZpbGUpOworICAgIGNhc2UgVHlwZTo6RW5jb2Rl
ZEJsb2I6CisgICAgICAgIHJldHVybiBGb3JtRGF0YUVsZW1lbnQobV91cmwuaXNvbGF0ZWRDb3B5
KCkpOworICAgIH0KKworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKIHZv
aWQgRm9ybURhdGE6OmFwcGVuZERhdGEoY29uc3Qgdm9pZCogZGF0YSwgc2l6ZV90IHNpemUpCiB7
CiAgICAgbWVtY3B5KGV4cGFuZERhdGFTdG9yZShzaXplKSwgZGF0YSwgc2l6ZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zvcm1EYXRhLmgKaW5kZXggYjczNGJiMTI1MDRiZGEx
MDg1NWM0N2M4Y2YzODExZGFjMmI5YjkzMi4uN2U0NGRjYWY5NTlmODE5NDY3NTYxODA3MzkyMDU2
NWU0ZGM1MjMyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEu
aApAQCAtNjksNiArNjksOCBAQCBwdWJsaWM6CiAgICAgewogICAgIH0KIAorICAgIEZvcm1EYXRh
RWxlbWVudCBpc29sYXRlZENvcHkoKSBjb25zdDsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVu
Y29kZXI+CiAgICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIERlY29kZXI+CkBAIC0yMDUsNyArMjA3LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1F
OiBCb3RoIHRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIGEgZGVlcCBjb3B5IG9mIG1fZWxlbWVudHMs
IGJ1dCBkaWZmZXIgaW4gaGFuZGxpbmcgb2Ygb3RoZXIgZGF0YSBtZW1iZXJzLgogICAgIC8vIEhv
dyBtdWNoIG9mIHRoYXQgaXMgaW50ZW50aW9uYWw/IFdlIG5lZWQgYmV0dGVyIG5hbWVzIHRoYXQg
ZXhwbGFpbiB0aGUgZGlmZmVyZW5jZS4KICAgICBSZWY8Rm9ybURhdGE+IGNvcHkoKSBjb25zdDsK
LSAgICBSZWY8Rm9ybURhdGE+IGRlZXBDb3B5KCkgY29uc3Q7CisgICAgUmVmPEZvcm1EYXRhPiBp
c29sYXRlZENvcHkoKSBjb25zdDsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIEVuY29kZXI+CiAg
ICAgdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtMjYzLDEwICsyNjUsMTAgQEAgcHJp
dmF0ZToKIAogICAgIFZlY3RvcjxGb3JtRGF0YUVsZW1lbnQ+IG1fZWxlbWVudHM7CiAKLSAgICBp
bnQ2NF90IG1faWRlbnRpZmllcjsKLSAgICBib29sIG1fYWx3YXlzU3RyZWFtOworICAgIGludDY0
X3QgbV9pZGVudGlmaWVyIHsgMCB9OworICAgIGJvb2wgbV9hbHdheXNTdHJlYW0geyBmYWxzZSB9
OwogICAgIFZlY3RvcjxjaGFyPiBtX2JvdW5kYXJ5OwotICAgIGJvb2wgbV9jb250YWluc1Bhc3N3
b3JkRGF0YTsKKyAgICBib29sIG1fY29udGFpbnNQYXNzd29yZERhdGEgeyBmYWxzZSB9OwogfTsK
IAogaW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBGb3JtRGF0YSYgYSwgY29uc3QgRm9ybURh
dGEmIGIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQSGVhZGVy
TWFwLmNwcAppbmRleCA1NjUxZTk4MTliNWJkNTU4NzEwODk5NjliOTk4MjZjYWNhYTJiZmU2Li5l
MjlkZDgzNjc5NGE2MTU3MWUwZWFiODczZTJmZDkyOGRhZmViYWMxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBIZWFkZXJNYXAuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5jcHAKQEAgLTQ0LDMxICs0
NCwxNyBAQCBIVFRQSGVhZGVyTWFwOjp+SFRUUEhlYWRlck1hcCgpCiB7CiB9CiAKLXN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBIVFRQSGVhZGVyTWFwOjpjb3B5
RGF0YSgpIGNvbnN0CitIVFRQSGVhZGVyTWFwIEhUVFBIZWFkZXJNYXA6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxDcm9zc1RocmVhZEhU
VFBIZWFkZXJNYXBEYXRhPigpOworICAgIEhUVFBIZWFkZXJNYXAgbWFwOwogCi0gICAgZGF0YS0+
Y29tbW9uSGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fY29tbW9uSGVhZGVycy5zaXpl
KCkpOwotICAgIGZvciAoY29uc3QgYXV0byYgaGVhZGVyIDogbV9jb21tb25IZWFkZXJzKQotICAg
ICAgICBkYXRhLT5jb21tb25IZWFkZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1ha2VfcGFpciho
ZWFkZXIua2V5LCBoZWFkZXIudmFsdWUuaXNvbGF0ZWRDb3B5KCkpKTsKKyAgICBmb3IgKGF1dG8m
IGhlYWRlciA6IG1fY29tbW9uSGVhZGVycykKKyAgICAgICAgbWFwLm1fY29tbW9uSGVhZGVycy5z
ZXQoaGVhZGVyLmtleSwgaGVhZGVyLnZhbHVlLmlzb2xhdGVkQ29weSgpKTsKIAotICAgIGRhdGEt
PnVuY29tbW9uSGVhZGVycy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KG1fdW5jb21tb25IZWFkZXJz
LnNpemUoKSk7Ci0gICAgZm9yIChjb25zdCBhdXRvJiBoZWFkZXIgOiBtX3VuY29tbW9uSGVhZGVy
cykKLSAgICAgICAgZGF0YS0+dW5jb21tb25IZWFkZXJzLnVuY2hlY2tlZEFwcGVuZChzdGQ6Om1h
a2VfcGFpcihoZWFkZXIua2V5Lmlzb2xhdGVkQ29weSgpLCBoZWFkZXIudmFsdWUuaXNvbGF0ZWRD
b3B5KCkpKTsKKyAgICBmb3IgKGF1dG8mIGhlYWRlciA6IG1fdW5jb21tb25IZWFkZXJzKQorICAg
ICAgICBtYXAubV91bmNvbW1vbkhlYWRlcnMuc2V0KGhlYWRlci5rZXkuaXNvbGF0ZWRDb3B5KCks
IGhlYWRlci52YWx1ZS5pc29sYXRlZENvcHkoKSk7CiAKLSAgICByZXR1cm4gZGF0YTsKLX0KLQot
dm9pZCBIVFRQSGVhZGVyTWFwOjphZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRIVFRQ
SGVhZGVyTWFwRGF0YT4gZGF0YSkKLXsKLSAgICBtX2NvbW1vbkhlYWRlcnMuY2xlYXIoKTsKLSAg
ICBtX3VuY29tbW9uSGVhZGVycy5jbGVhcigpOwotCi0gICAgZm9yIChhdXRvJiBoZWFkZXIgOiBk
YXRhLT5jb21tb25IZWFkZXJzKQotICAgICAgICBtX2NvbW1vbkhlYWRlcnMuYWRkKGhlYWRlci5m
aXJzdCwgV1RGTW92ZShoZWFkZXIuc2Vjb25kKSk7Ci0KLSAgICBmb3IgKGF1dG8mIGhlYWRlciA6
IGRhdGEtPnVuY29tbW9uSGVhZGVycykKLSAgICAgICAgbV91bmNvbW1vbkhlYWRlcnMuYWRkKFdU
Rk1vdmUoaGVhZGVyLmZpcnN0KSwgV1RGTW92ZShoZWFkZXIuc2Vjb25kKSk7CisgICAgcmV0dXJu
IG1hcDsKIH0KIAogU3RyaW5nIEhUVFBIZWFkZXJNYXA6OmdldChjb25zdCBTdHJpbmcmIG5hbWUp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBI
ZWFkZXJNYXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1h
cC5oCmluZGV4IGQzNDU2OTc1NTJiNmE1MzlhNzU1YmNmODJlMmE2MzI0MzBlM2Q3YTYuLmU3OWE0
NGE5YzZiNTRmYzJiNTA2Yzc5NTM5NDJjNjUzYTQ3Y2FjNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvSFRUUEhlYWRlck1hcC5oCkBAIC0yNCw4ICsyNCw3IEBACiAg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLiAKICAqLwogCi0jaWZuZGVmIEhUVFBIZWFkZXJNYXBfaAotI2RlZmluZSBI
VFRQSGVhZGVyTWFwX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVz
LmgiCiAjaW5jbHVkZSA8dXRpbGl0eT4KQEAgLTM4LDExICszNyw2IEBACiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAotc3RydWN0IENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGEgewotICAgIFZl
Y3RvcjxzdGQ6OnBhaXI8SFRUUEhlYWRlck5hbWUsIFN0cmluZz4+IGNvbW1vbkhlYWRlcnM7Ci0g
ICAgVmVjdG9yPHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+IHVuY29tbW9uSGVhZGVyczsKLX07
Ci0KIC8vIEZJWE1FOiBOb3QgZXZlcnkgaGVhZGVyIGZpdHMgaW50byBhIG1hcC4gTm90YWJseSwg
bXVsdGlwbGUgU2V0LUNvb2tpZSBoZWFkZXIgZmllbGRzIGFyZSBuZWVkZWQgdG8gc2V0IG11bHRp
cGxlIGNvb2tpZXMuCiAKIGNsYXNzIEhUVFBIZWFkZXJNYXAgewpAQCAtMTI0LDggKzExOCw3IEBA
IHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB+SFRUUEhlYWRlck1hcCgpOwogCiAgICAgLy8g
R2V0cyBhIGNvcHkgb2YgdGhlIGRhdGEgc3VpdGFibGUgZm9yIHBhc3NpbmcgdG8gYW5vdGhlciB0
aHJlYWQuCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkSFRUUEhlYWRlck1hcERhdGE+
IGNvcHlEYXRhKCkgY29uc3Q7Ci0gICAgdm9pZCBhZG9wdChzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NU
aHJlYWRIVFRQSGVhZGVyTWFwRGF0YT4pOworICAgIEhUVFBIZWFkZXJNYXAgaXNvbGF0ZWRDb3B5
KCkgY29uc3Q7CiAKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2NvbW1vbkhl
YWRlcnMuaXNFbXB0eSgpICYmIG1fdW5jb21tb25IZWFkZXJzLmlzRW1wdHkoKTsgfQogICAgIGlu
dCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9jb21tb25IZWFkZXJzLnNpemUoKSArIG1fdW5jb21t
b25IZWFkZXJzLnNpemUoKTsgfQpAQCAtMjE1LDUgKzIwOCwzIEBAIGJvb2wgSFRUUEhlYWRlck1h
cDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIsIEhUVFBIZWFkZXJNYXAmIGhlYWRlck1hcCkKIH0K
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gSFRUUEhlYWRlck1hcF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlRXJyb3JC
YXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJh
c2UuY3BwCmluZGV4IDEwYmJiYWE2YzUwOTUxMGRiNzNkNGI3Y2RkNGQxZjdkZWZmN2MxOWQuLjBl
ZmQwNGU4MjM0NTZmMTZiZDMzMzI3NjU0ZDczZmFjZGUwNjZiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuY3BwCkBAIC0z
MSw2ICszMSwxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IGNoYXIqIGNvbnN0IGVy
cm9yRG9tYWluV2ViS2l0SW50ZXJuYWwgPSAiV2ViS2l0SW50ZXJuYWwiOwogCitpbmxpbmUgY29u
c3QgUmVzb3VyY2VFcnJvciYgUmVzb3VyY2VFcnJvckJhc2U6OmFzUmVzb3VyY2VFcnJvcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuICpzdGF0aWNfY2FzdDxjb25zdCBSZXNvdXJjZUVycm9yKj4odGhp
cyk7Cit9CisKIFJlc291cmNlRXJyb3IgUmVzb3VyY2VFcnJvckJhc2U6Omlzb2xhdGVkQ29weSgp
IGNvbnN0CiB7CiAgICAgbGF6eUluaXQoKTsKQEAgLTQzLDcgKzQ4LDkgQEAgUmVzb3VyY2VFcnJv
ciBSZXNvdXJjZUVycm9yQmFzZTo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKICAgICBlcnJvckNvcHku
bV9pc051bGwgPSBtX2lzTnVsbDsKICAgICBlcnJvckNvcHkubV9pc0NhbmNlbGxhdGlvbiA9IG1f
aXNDYW5jZWxsYXRpb247CiAgICAgZXJyb3JDb3B5Lm1faXNUaW1lb3V0ID0gbV9pc1RpbWVvdXQ7
Ci0gICAgcGxhdGZvcm1Db3B5KGVycm9yQ29weSk7CisKKyAgICBlcnJvckNvcHkuZG9QbGF0Zm9y
bUlzb2xhdGVkQ29weShhc1Jlc291cmNlRXJyb3IoKSk7CisKICAgICByZXR1cm4gZXJyb3JDb3B5
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlRXJyb3JCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNl
RXJyb3JCYXNlLmgKaW5kZXggNzdmNGQ2MDVlNTAyY2E3MWE5N2Q2YzNiYWFjZDZkMDA4ZjZmYTMy
OC4uYmI2YTNhNWMzMjcwYmRlMjJiOWQwMjljM2RkYWVhN2I4ZjUwMjRmMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUVycm9yQmFzZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VFcnJvckJhc2UuaApAQCAt
NzgsOSArNzgsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgLy8gVGhlIFJlc291cmNlRXJyb3Igc3ViY2xh
c3MgbWF5ICJzaGFkb3ciIHRoaXMgbWV0aG9kIHRvIGxhemlseSBpbml0aWFsaXplIHBsYXRmb3Jt
IHNwZWNpZmljIGZpZWxkcwogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpIHt9CiAKLSAgICAv
LyBUaGUgUmVzb3VyY2VFcnJvciBzdWJjbGFzcyBtYXkgInNoYWRvdyIgdGhpcyBtZXRob2QgdG8g
Y29weSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWVsZHMKLSAgICB2b2lkIHBsYXRmb3JtQ29weShSZXNv
dXJjZUVycm9yJikgY29uc3Qge30KLQogICAgIC8vIFRoZSBSZXNvdXJjZUVycm9yIHN1YmNsYXNz
IG1heSAic2hhZG93IiB0aGlzIG1ldGhvZCB0byBjb21wYXJlIHBsYXRmb3JtIHNwZWNpZmljIGZp
ZWxkcwogICAgIHN0YXRpYyBib29sIHBsYXRmb3JtQ29tcGFyZShjb25zdCBSZXNvdXJjZUVycm9y
JiwgY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgcmV0dXJuIHRydWU7IH0KIApAQCAtOTEsNiArODgs
OSBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBtX2lzTnVsbCA6IDE7CiAgICAgYm9vbCBtX2lzQ2Fu
Y2VsbGF0aW9uIDogMTsKICAgICBib29sIG1faXNUaW1lb3V0IDogMTsKKworcHJpdmF0ZToKKyAg
ICBjb25zdCBSZXNvdXJjZUVycm9yJiBhc1Jlc291cmNlRXJyb3IoKSBjb25zdDsKIH07CiAKIGlu
bGluZSBib29sIG9wZXJhdG9yPT0oY29uc3QgUmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3Vy
Y2VFcnJvciYgYikgeyByZXR1cm4gUmVzb3VyY2VFcnJvckJhc2U6OmNvbXBhcmUoYSwgYik7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2Fk
VGltaW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlTG9hZFRp
bWluZy5oCmluZGV4IDliZDk0NWNjYjZlMWIwNzFlMTgwNGIyN2ViN2I1MTJhZmNjMDMzZmQuLjc1
Y2VjNDkzNjc5MjNiN2Y3ZTFiNTg3NTdhYzJjYjFhYzYzNmNiY2EgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VMb2FkVGltaW5nLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZUxvYWRUaW1pbmcuaApAQCAtNjgs
NiArNjgsMTIgQEAgcHVibGljOgogICAgICAgICBzZWN1cmVDb25uZWN0aW9uU3RhcnQgPSBvdGhl
ci5zZWN1cmVDb25uZWN0aW9uU3RhcnQ7CiAgICAgICAgIHJldHVybiAqdGhpczsKICAgICB9CisK
KyAgICBSZXNvdXJjZUxvYWRUaW1pbmcgaXNvbGF0ZWRDb3B5KCkgY29uc3QKKyAgICB7CisgICAg
ICAgIC8vIFRoZXJlIGFyZSBjdXJyZW50bHkgbm8gbWVtYmVycyB0aGF0IG5lZWQgaXNvbGF0ZWQg
Y29waWVzLCBzbyB3ZSBjYW4gdXNlIHRoZSBjb3B5IGNvbnN0cnVjdG9yLgorICAgICAgICByZXR1
cm4gKnRoaXM7CisgICAgfQogICAgIAogICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJj
ZUxvYWRUaW1pbmcmIG90aGVyKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuY3BwCmluZGV4IDM0YmI3
NmE0MGQ0ZGZhYzk3MzA1MDI1Mjk2ZDViOGE4M2JmYWZjM2EuLmE0OGJlNGY5ODYyYzNkNTJiYzVk
NjVmOGVmNTcyYTQxYTRiOTdjYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbmV0d29yay9SZXNvdXJjZVJlcXVlc3RCYXNlLmNwcApAQCAtNTIsNjUgKzUyLDQxIEBA
IGlubGluZSBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIFJlc291cmNlUmVxdWVzdEJhc2U6OmFzUmVz
b3VyY2VSZXF1ZXN0KCkgY29uc3QKIFJlc291cmNlUmVxdWVzdCBSZXNvdXJjZVJlcXVlc3RCYXNl
Ojppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0Owot
ICAgIHJlcXVlc3Quc2V0QXNJc29sYXRlZENvcHkoKnRoaXMpOworICAgIHJlcXVlc3Quc2V0QXNJ
c29sYXRlZENvcHkoYXNSZXNvdXJjZVJlcXVlc3QoKSk7CiAgICAgcmV0dXJuIHJlcXVlc3Q7CiB9
CiAKLXZvaWQgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6c2V0QXNJc29sYXRlZENvcHkoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0QmFzZSYgb3RoZXIpCit2b2lkIFJlc291cmNlUmVxdWVzdEJhc2U6OnNldEFz
SXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiB7Ci0gICAgYXV0byBk
YXRhID0gb3RoZXIuY29weURhdGEoKTsKLQotICAgIHNldFVSTChkYXRhLT51cmwpOwotICAgIHNl
dENhY2hlUG9saWN5KGRhdGEtPmNhY2hlUG9saWN5KTsKLSAgICBzZXRUaW1lb3V0SW50ZXJ2YWwo
ZGF0YS0+dGltZW91dEludGVydmFsKTsKLSAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhkYXRh
LT5maXJzdFBhcnR5Rm9yQ29va2llcyk7Ci0gICAgc2V0SFRUUE1ldGhvZChkYXRhLT5odHRwTWV0
aG9kKTsKLSAgICBzZXRQcmlvcml0eShkYXRhLT5wcmlvcml0eSk7Ci0gICAgc2V0UmVxdWVzdGVy
KGRhdGEtPnJlcXVlc3Rlcik7CisgICAgc2V0VVJMKG90aGVyLnVybCgpLmlzb2xhdGVkQ29weSgp
KTsKKyAgICBzZXRDYWNoZVBvbGljeShvdGhlci5jYWNoZVBvbGljeSgpKTsKKyAgICBzZXRUaW1l
b3V0SW50ZXJ2YWwob3RoZXIudGltZW91dEludGVydmFsKCkpOworICAgIHNldEZpcnN0UGFydHlG
b3JDb29raWVzKG90aGVyLmZpcnN0UGFydHlGb3JDb29raWVzKCkuaXNvbGF0ZWRDb3B5KCkpOwor
ICAgIHNldEhUVFBNZXRob2Qob3RoZXIuaHR0cE1ldGhvZCgpLmlzb2xhdGVkQ29weSgpKTsKKyAg
ICBzZXRQcmlvcml0eShvdGhlci5wcmlvcml0eSgpKTsKKyAgICBzZXRSZXF1ZXN0ZXIob3RoZXIu
cmVxdWVzdGVyKCkpOwogCiAgICAgdXBkYXRlUmVzb3VyY2VSZXF1ZXN0KCk7Ci0gICAgbV9odHRw
SGVhZGVyRmllbGRzLmFkb3B0KFdURk1vdmUoZGF0YS0+aHR0cEhlYWRlcnMpKTsKKyAgICBtX2h0
dHBIZWFkZXJGaWVsZHMgPSBvdGhlci5odHRwSGVhZGVyRmllbGRzKCkuaXNvbGF0ZWRDb3B5KCk7
CiAKLSAgICBzaXplX3QgZW5jb2RpbmdDb3VudCA9IGRhdGEtPnJlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5LnNpemUoKTsKKyAgICBzaXplX3QgZW5jb2RpbmdD
b3VudCA9IG90aGVyLm1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNr
QXJyYXkuc2l6ZSgpOwogICAgIGlmIChlbmNvZGluZ0NvdW50ID4gMCkgewotICAgICAgICBTdHJp
bmcgZW5jb2RpbmcxID0gZGF0YS0+cmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXlbMF07CisgICAgICAgIFN0cmluZyBlbmNvZGluZzEgPSBvdGhlci5tX3Jlc3Bv
bnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzBdLmlzb2xhdGVkQ29w
eSgpOwogICAgICAgICBTdHJpbmcgZW5jb2RpbmcyOwogICAgICAgICBTdHJpbmcgZW5jb2Rpbmcz
OwogICAgICAgICBpZiAoZW5jb2RpbmdDb3VudCA+IDEpIHsKLSAgICAgICAgICAgIGVuY29kaW5n
MiA9IGRhdGEtPnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5
WzFdOworICAgICAgICAgICAgZW5jb2RpbmcyID0gb3RoZXIubV9yZXNwb25zZUNvbnRlbnREaXNw
b3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsxXS5pc29sYXRlZENvcHkoKTsKICAgICAgICAg
ICAgIGlmIChlbmNvZGluZ0NvdW50ID4gMikKLSAgICAgICAgICAgICAgICBlbmNvZGluZzMgPSBk
YXRhLT5yZXNwb25zZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVsyXTsK
KyAgICAgICAgICAgICAgICBlbmNvZGluZzMgPSBvdGhlci5tX3Jlc3BvbnNlQ29udGVudERpc3Bv
c2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5WzJdLmlzb2xhdGVkQ29weSgpOwogICAgICAgICB9
CiAgICAgICAgIEFTU0VSVChlbmNvZGluZ0NvdW50IDw9IDMpOwogICAgICAgICBzZXRSZXNwb25z
ZUNvbnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheShlbmNvZGluZzEsIGVuY29k
aW5nMiwgZW5jb2RpbmczKTsKICAgICB9Ci0gICAgc2V0SFRUUEJvZHkoZGF0YS0+aHR0cEJvZHku
Y29weVJlZigpKTsKLSAgICBzZXRBbGxvd0Nvb2tpZXMoZGF0YS0+YWxsb3dDb29raWVzKTsKLQot
ICAgIGNvbnN0X2Nhc3Q8UmVzb3VyY2VSZXF1ZXN0Jj4oYXNSZXNvdXJjZVJlcXVlc3QoKSkuZG9Q
bGF0Zm9ybUFkb3B0KFdURk1vdmUoZGF0YSkpOwotfQorICAgIGlmIChvdGhlci5tX2h0dHBCb2R5
KQorICAgICAgICBzZXRIVFRQQm9keShvdGhlci5tX2h0dHBCb2R5LT5pc29sYXRlZENvcHkoKSk7
CisgICAgc2V0QWxsb3dDb29raWVzKG90aGVyLm1fYWxsb3dDb29raWVzKTsKIAotc3RkOjp1bmlx
dWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gUmVzb3VyY2VSZXF1ZXN0QmFz
ZTo6Y29weURhdGEoKSBjb25zdAotewotICAgIGF1dG8gZGF0YSA9IHN0ZDo6bWFrZV91bmlxdWU8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPigpOwotICAgIGRhdGEtPnVybCA9IHVybCgp
Lmlzb2xhdGVkQ29weSgpOwotICAgIGRhdGEtPmNhY2hlUG9saWN5ID0gbV9jYWNoZVBvbGljeTsK
LSAgICBkYXRhLT50aW1lb3V0SW50ZXJ2YWwgPSB0aW1lb3V0SW50ZXJ2YWwoKTsKLSAgICBkYXRh
LT5maXJzdFBhcnR5Rm9yQ29va2llcyA9IGZpcnN0UGFydHlGb3JDb29raWVzKCkuaXNvbGF0ZWRD
b3B5KCk7Ci0gICAgZGF0YS0+aHR0cE1ldGhvZCA9IGh0dHBNZXRob2QoKS5pc29sYXRlZENvcHko
KTsKLSAgICBkYXRhLT5odHRwSGVhZGVycyA9IGh0dHBIZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgp
OwotICAgIGRhdGEtPnByaW9yaXR5ID0gbV9wcmlvcml0eTsKLSAgICBkYXRhLT5yZXF1ZXN0ZXIg
PSBtX3JlcXVlc3RlcjsKLQotICAgIGRhdGEtPnJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5j
b2RpbmdGYWxsYmFja0FycmF5LnJlc2VydmVJbml0aWFsQ2FwYWNpdHkobV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5zaXplKCkpOwotICAgIHNpemVfdCBl
bmNvZGluZ0FycmF5U2l6ZSA9IG1fcmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0Zh
bGxiYWNrQXJyYXkuc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBl
bmNvZGluZ0FycmF5U2l6ZTsgKytpbmRleCkgewotICAgICAgICBkYXRhLT5yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheS5hcHBlbmQobV9yZXNwb25zZUNvbnRl
bnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheVtpbmRleF0uaXNvbGF0ZWRDb3B5KCkp
OwotICAgIH0KLSAgICBpZiAobV9odHRwQm9keSkKLSAgICAgICAgZGF0YS0+aHR0cEJvZHkgPSBt
X2h0dHBCb2R5LT5kZWVwQ29weSgpOwotICAgIGRhdGEtPmFsbG93Q29va2llcyA9IG1fYWxsb3dD
b29raWVzOwotICAgIHJldHVybiBhc1Jlc291cmNlUmVxdWVzdCgpLmRvUGxhdGZvcm1Db3B5RGF0
YShXVEZNb3ZlKGRhdGEpKTsKKyAgICBjb25zdF9jYXN0PFJlc291cmNlUmVxdWVzdCY+KGFzUmVz
b3VyY2VSZXF1ZXN0KCkpLmRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShvdGhlcik7CiB9CiAK
IGJvb2wgUmVzb3VyY2VSZXF1ZXN0QmFzZTo6aXNFbXB0eSgpIGNvbnN0CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVxdWVzdEJhc2UuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCmluZGV4
IDZiMTYzY2I5MTcxOGI4NDMwNzU2NTFiMWViMzFhOTRhZGIyZTM0MzcuLjZlMGJiZTAyMGI5ZTg3
OThkYjcwMGViNGQ1NjNmNGE3MDg2YTk1OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXF1ZXN0QmFzZS5oCkBAIC00OCwxNCArNDgsMTMg
QEAgZW51bSBIVFRQQm9keVVwZGF0ZVBvbGljeSB7CiB9OwogCiBjbGFzcyBSZXNvdXJjZVJlcXVl
c3Q7Ci1zdHJ1Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhOwogCiAvLyBEbyBub3Qg
dXNlIHRoaXMgdHlwZSBkaXJlY3RseS4gIFVzZSBSZXNvdXJjZVJlcXVlc3QgaW5zdGVhZC4KIGNs
YXNzIFJlc291cmNlUmVxdWVzdEJhc2UgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwog
cHVibGljOgogICAgIFJlc291cmNlUmVxdWVzdCBpc29sYXRlZENvcHkoKSBjb25zdDsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVz
dEJhc2UmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0
IFJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBpc051bGwoKSBj
b25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBib29sIGlzRW1wdHkoKSBjb25zdDsKQEAgLTIyMCw5
ICsyMTksNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgYXNSZXNvdXJjZVJlcXVlc3QoKSBjb25zdDsKIAotICAgIC8vIEdldHMgYSBjb3B5IG9mIHRo
ZSBkYXRhIHN1aXRhYmxlIGZvciBwYXNzaW5nIHRvIGFub3RoZXIgdGhyZWFkLgotICAgIHN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGNvcHlEYXRhKCkgY29u
c3Q7Ci0KICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgZG91YmxlIHNfZGVmYXVsdFRpbWVvdXRJ
bnRlcnZhbDsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIGJvb2wgc19kZWZhdWx0QWxs
b3dDb29raWVzOwpAQCAtMjM0LDIwICsyMzAsNiBAQCBib29sIGVxdWFsSWdub3JpbmdIZWFkZXJG
aWVsZHMoY29uc3QgUmVzb3VyY2VSZXF1ZXN0QmFzZSYsIGNvbnN0IFJlc291cmNlUmVxdWVzdAog
aW5saW5lIGJvb2wgb3BlcmF0b3I9PShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gUmVzb3VyY2VSZXF1ZXN0QmFzZTo6Y29tcGFyZShh
LCBiKTsgfQogaW5saW5lIGJvb2wgb3BlcmF0b3IhPShSZXNvdXJjZVJlcXVlc3QmIGEsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgYikgeyByZXR1cm4gIShhID09IGIpOyB9CiAKLXN0cnVjdCBDcm9z
c1RocmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlIHsKLSAgICBVUkwgdXJsOwotICAgIFJlc291
cmNlUmVxdWVzdENhY2hlUG9saWN5IGNhY2hlUG9saWN5OwotICAgIGRvdWJsZSB0aW1lb3V0SW50
ZXJ2YWw7Ci0gICAgVVJMIGZpcnN0UGFydHlGb3JDb29raWVzOwotICAgIFN0cmluZyBodHRwTWV0
aG9kOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZEhUVFBIZWFkZXJNYXBEYXRhPiBo
dHRwSGVhZGVyczsKLSAgICBWZWN0b3I8U3RyaW5nPiByZXNwb25zZUNvbnRlbnREaXNwb3NpdGlv
bkVuY29kaW5nRmFsbGJhY2tBcnJheTsKLSAgICBSZWZQdHI8Rm9ybURhdGE+IGh0dHBCb2R5Owot
ICAgIGJvb2wgYWxsb3dDb29raWVzOwotICAgIFJlc291cmNlTG9hZFByaW9yaXR5IHByaW9yaXR5
OwotICAgIFJlc291cmNlUmVxdWVzdEJhc2U6OlJlcXVlc3RlciByZXF1ZXN0ZXI7Ci19OwotCiBX
RUJDT1JFX0VYUE9SVCB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9uQ291
bnRQZXJIb3N0KCk7CiAjaWYgUExBVEZPUk0oSU9TKQogV0VCQ09SRV9FWFBPUlQgdm9pZCBpbml0
aWFsaXplSFRUUENvbm5lY3Rpb25TZXR0aW5nc09uU3RhcnR1cCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFzZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApp
bmRleCAzMWZmNGZhMTk0MzAyZmQzNmY4NGQ4YzFhYjI0YTgxMGEzM2E0MThkLi41YjUyODc2MDZj
M2M5OTc1NDVlNDQwZGI1MTVkYTVlNmI0Y2E0N2NlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291cmNlUmVzcG9uc2VCYXNlLmNwcApAQCAtNjYs
NDIgKzY2LDI0IEBAIFJlc291cmNlUmVzcG9uc2VCYXNlOjpSZXNvdXJjZVJlc3BvbnNlQmFzZShj
b25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBtaW1lVHlwCiBSZXNvdXJjZVJlc3BvbnNlIFJl
c291cmNlUmVzcG9uc2VCYXNlOjppc29sYXRlZENvcHkoKSBjb25zdAogewogICAgIFJlc291cmNl
UmVzcG9uc2UgcmVzcG9uc2U7Ci0gICAgYXV0byBkYXRhID0gY29weURhdGEoKTsKIAotICAgIHJl
c3BvbnNlLnNldFVSTChkYXRhLT5tX3VybCk7Ci0gICAgcmVzcG9uc2Uuc2V0TWltZVR5cGUoZGF0
YS0+bV9taW1lVHlwZSk7Ci0gICAgcmVzcG9uc2Uuc2V0RXhwZWN0ZWRDb250ZW50TGVuZ3RoKGRh
dGEtPm1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoKTsKLSAgICByZXNwb25zZS5zZXRUZXh0RW5jb2Rp
bmdOYW1lKGRhdGEtPm1fdGV4dEVuY29kaW5nTmFtZSk7CisgICAgcmVzcG9uc2Uuc2V0VVJMKHVy
bCgpLmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXNwb25zZS5zZXRNaW1lVHlwZShtaW1lVHlwZSgp
Lmlzb2xhdGVkQ29weSgpKTsKKyAgICByZXNwb25zZS5zZXRFeHBlY3RlZENvbnRlbnRMZW5ndGgo
ZXhwZWN0ZWRDb250ZW50TGVuZ3RoKCkpOworICAgIHJlc3BvbnNlLnNldFRleHRFbmNvZGluZ05h
bWUodGV4dEVuY29kaW5nTmFtZSgpLmlzb2xhdGVkQ29weSgpKTsKIAotICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNDb2RlKGRhdGEtPm1faHR0cFN0YXR1c0NvZGUpOwotICAgIHJlc3BvbnNlLnNl
dEhUVFBTdGF0dXNUZXh0KGRhdGEtPm1faHR0cFN0YXR1c1RleHQpOwotICAgIHJlc3BvbnNlLnNl
dEhUVFBWZXJzaW9uKGRhdGEtPm1faHR0cFZlcnNpb24pOworICAgIHJlc3BvbnNlLnNldEhUVFBT
dGF0dXNDb2RlKGh0dHBTdGF0dXNDb2RlKCkpOworICAgIHJlc3BvbnNlLnNldEhUVFBTdGF0dXNU
ZXh0KGh0dHBTdGF0dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCkpOworICAgIHJlc3BvbnNlLnNldEhU
VFBWZXJzaW9uKGh0dHBWZXJzaW9uKCkuaXNvbGF0ZWRDb3B5KCkpOwogCiAgICAgcmVzcG9uc2Uu
bGF6eUluaXQoQWxsRmllbGRzKTsKLSAgICByZXNwb25zZS5tX2h0dHBIZWFkZXJGaWVsZHMuYWRv
cHQoV1RGTW92ZShkYXRhLT5tX2h0dHBIZWFkZXJzKSk7Ci0gICAgcmVzcG9uc2UubV9yZXNvdXJj
ZUxvYWRUaW1pbmcgPSBkYXRhLT5tX3Jlc291cmNlTG9hZFRpbWluZzsKLSAgICByZXNwb25zZS5t
X3R5cGUgPSBkYXRhLT5tX3R5cGU7Ci0gICAgcmVzcG9uc2UuZG9QbGF0Zm9ybUFkb3B0KFdURk1v
dmUoZGF0YSkpOworICAgIHJlc3BvbnNlLm1faHR0cEhlYWRlckZpZWxkcyA9IGh0dHBIZWFkZXJG
aWVsZHMoKS5pc29sYXRlZENvcHkoKTsKKyAgICByZXNwb25zZS5tX3Jlc291cmNlTG9hZFRpbWlu
ZyA9IG1fcmVzb3VyY2VMb2FkVGltaW5nLmlzb2xhdGVkQ29weSgpOworICAgIHJlc3BvbnNlLm1f
dHlwZSA9IG1fdHlwZTsKIAogICAgIHJldHVybiByZXNwb25zZTsKIH0KIAotc3RkOjp1bmlxdWVf
cHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+IFJlc291cmNlUmVzcG9uc2VCYXNl
Ojpjb3B5RGF0YSgpIGNvbnN0Ci17Ci0gICAgYXV0byBkYXRhID0gc3RkOjptYWtlX3VuaXF1ZTxD
cm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPigpOwotICAgIGRhdGEtPm1fdXJsID0gdXJs
KCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9taW1lVHlwZSA9IG1pbWVUeXBlKCkuaXNv
bGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9leHBlY3RlZENvbnRlbnRMZW5ndGggPSBleHBlY3Rl
ZENvbnRlbnRMZW5ndGgoKTsKLSAgICBkYXRhLT5tX3RleHRFbmNvZGluZ05hbWUgPSB0ZXh0RW5j
b2RpbmdOYW1lKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRwU3RhdHVzQ29kZSA9
IGh0dHBTdGF0dXNDb2RlKCk7Ci0gICAgZGF0YS0+bV9odHRwU3RhdHVzVGV4dCA9IGh0dHBTdGF0
dXNUZXh0KCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRwVmVyc2lvbiA9IGh0dHBW
ZXJzaW9uKCkuaXNvbGF0ZWRDb3B5KCk7Ci0gICAgZGF0YS0+bV9odHRwSGVhZGVycyA9IGh0dHBI
ZWFkZXJGaWVsZHMoKS5jb3B5RGF0YSgpOwotICAgIGRhdGEtPm1fcmVzb3VyY2VMb2FkVGltaW5n
ID0gbV9yZXNvdXJjZUxvYWRUaW1pbmc7Ci0gICAgZGF0YS0+bV90eXBlID0gbV90eXBlOwotICAg
IHJldHVybiBhc1Jlc291cmNlUmVzcG9uc2UoKS5kb1BsYXRmb3JtQ29weURhdGEoV1RGTW92ZShk
YXRhKSk7Ci19Ci0KIC8vIEZJWE1FOiBOYW1lIGRvZXMgbm90IG1ha2UgaXQgY2xlYXIgdGhpcyBp
cyB0cnVlIGZvciBIVFRQUyEKIGJvb2wgUmVzb3VyY2VSZXNwb25zZUJhc2U6OmlzSFRUUCgpIGNv
bnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL1Jlc291
cmNlUmVzcG9uc2VCYXNlLmgKaW5kZXggNWZmZjM1OTk0OTE0MTI4ODMyZGU3NjAwOWFjZTU3YmJm
MjY0MjMzYy4uYWQ1MTA3ZjdmN2M1Mjg1ZjI2MGJjODc5ZjQxZTcxMTViZGUzODdmZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9SZXNvdXJjZVJlc3BvbnNlQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvUmVzb3VyY2VSZXNwb25z
ZUJhc2UuaApAQCAtNDAsNyArNDAsNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBS
ZXNvdXJjZVJlc3BvbnNlOwotc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE7
CiAKIC8vIERvIG5vdCB1c2UgdGhpcyBjbGFzcyBkaXJlY3RseSwgdXNlIHRoZSBjbGFzcyBSZXNw
b25zZVJlc3BvbnNlIGluc3RlYWQKIGNsYXNzIFJlc291cmNlUmVzcG9uc2VCYXNlIHsKQEAgLTE1
OSw5ICsxNTgsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VDYWNoZUNvbnRyb2xEaXJlY3Rp
dmVzKCkgY29uc3Q7CiAgICAgdm9pZCB1cGRhdGVIZWFkZXJQYXJzZWRTdGF0ZShIVFRQSGVhZGVy
TmFtZSk7CiAKLSAgICAvLyBHZXRzIGEgY29weSBvZiB0aGUgZGF0YSBzdWl0YWJsZSBmb3IgcGFz
c2luZyB0byBhbm90aGVyIHRocmVhZC4KLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlc3BvbnNlRGF0YT4gY29weURhdGEoKSBjb25zdDsKLQogcHJvdGVjdGVkOgogICAg
IGJvb2wgbV9pc051bGw7CiAgICAgVVJMIG1fdXJsOwpAQCAtMjc0LDIxICsyNzAsNCBAQCBib29s
IFJlc291cmNlUmVzcG9uc2VCYXNlOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgUmVzb3VyY2VS
ZXNwb25zZUJhc2UmIHJlc3BvbgogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1Y3QgQ3Jvc3NU
aHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2UgewotICAgIFdURl9NQUtFX05PTkNPUFlBQkxF
KENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlKTsgV1RGX01BS0VfRkFTVF9BTExP
Q0FURUQ7Ci1wdWJsaWM6Ci0gICAgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YUJhc2Uo
KSB7IH0KLSAgICBVUkwgbV91cmw7Ci0gICAgU3RyaW5nIG1fbWltZVR5cGU7Ci0gICAgbG9uZyBs
b25nIG1fZXhwZWN0ZWRDb250ZW50TGVuZ3RoOwotICAgIFN0cmluZyBtX3RleHRFbmNvZGluZ05h
bWU7Ci0gICAgaW50IG1faHR0cFN0YXR1c0NvZGU7Ci0gICAgU3RyaW5nIG1faHR0cFN0YXR1c1Rl
eHQ7Ci0gICAgU3RyaW5nIG1faHR0cFZlcnNpb247Ci0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3Nz
VGhyZWFkSFRUUEhlYWRlck1hcERhdGE+IG1faHR0cEhlYWRlcnM7Ci0gICAgUmVzb3VyY2VMb2Fk
VGltaW5nIG1fcmVzb3VyY2VMb2FkVGltaW5nOwotICAgIFJlc291cmNlUmVzcG9uc2VCYXNlOjpU
eXBlIG1fdHlwZTsKLSAgICBib29sIG1faXNSZWRpcmVjdGVkOwotfTsKLQogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUVycm9yLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jl
c291cmNlRXJyb3IuaAppbmRleCBjMzZiZGNhNzJiMzExMDRjYmUwNDI0ZjI4ZmZkM2Q0M2JhNGRi
OTZhLi4yY2EwNGVlZjI4MjY5Zjk4MmFmY2YwNmI3YjliZTEyMDdlODgyYjVlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlRXJyb3IuaApAQCAt
ODMsNyArODMsOSBAQCBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBSZXNvdXJjZUVycm9yQmFz
ZTsKIAogICAgIHZvaWQgcGxhdGZvcm1MYXp5SW5pdCgpOwotICAgIHZvaWQgcGxhdGZvcm1Db3B5
KFJlc291cmNlRXJyb3ImKSBjb25zdDsKKworICAgIHZvaWQgZG9QbGF0Zm9ybUlzb2xhdGVkQ29w
eShjb25zdCBSZXNvdXJjZUVycm9yJik7CisKICAgICBib29sIG1fZGF0YUlzVXBUb0RhdGU7CiAj
aWYgVVNFKENGTkVUV09SSykKICAgICBtdXRhYmxlIFJldGFpblB0cjxDRkVycm9yUmVmPiBtX3Bs
YXRmb3JtRXJyb3I7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L2NmL1Jlc291cmNlRXJyb3JDRi5jcHAKaW5kZXggNjBiZmIzNjU5MWUwN2MxYmZiZWFiNmIxZTNi
NTZmYWI5ODQ3ODQ3My4uZDViNGVlNDdlMzlkODY1Y2E0ODI1NTVjZWM5Y2MzMjdkOGE1NTNkYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUVy
cm9yQ0YuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VFcnJvckNGLmNwcApAQCAtMTE5LDEyICsxMTksMTMgQEAgdm9pZCBSZXNvdXJjZUVycm9yOjpw
bGF0Zm9ybUxhenlJbml0KCkKICAgICBtX2RhdGFJc1VwVG9EYXRlID0gdHJ1ZTsKIH0KIAotdm9p
ZCBSZXNvdXJjZUVycm9yOjpwbGF0Zm9ybUNvcHkoUmVzb3VyY2VFcnJvciYgZXJyb3JDb3B5KSBj
b25zdAorCit2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3Qg
UmVzb3VyY2VFcnJvciYgb3RoZXIpCiB7CiAjaWYgUExBVEZPUk0oV0lOKQotICAgIGVycm9yQ29w
eS5tX2NlcnRpZmljYXRlID0gbV9jZXJ0aWZpY2F0ZTsKKyAgICBtX2NlcnRpZmljYXRlID0gb3Ro
ZXIubV9jZXJ0aWZpY2F0ZTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGVycm9yQ29weSk7Cisg
ICAgVU5VU0VEX1BBUkFNKG90aGVyKTsKICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZVJlcXVlc3QuaAppbmRleCBjNzQzZjY1
ZjJiNmNhY2NlY2IwNTM3ZWM0Y2NkZTI3Y2VmNzFjN2EyLi44ZmU4ZjkwMDc4MzQyYzVjOGVkYTk3
OWM5NGExOTUxYmI0NGNiODQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9u
ZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0LmgKQEAgLTEyNiw4ICsxMjYsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgZG9VcGRhdGVQbGF0Zm9ybUhUVFBCb2R5KCk7CiAgICAgdm9pZCBkb1VwZGF0
ZVJlc291cmNlSFRUUEJvZHkoKTsKIAotICAgIHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgY29uc3Q7Ci0gICAgdm9pZCBkb1BsYXRmb3Jt
QWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4pOwor
ICAgIHZvaWQgZG9QbGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpOwogCiAjaWYgVVNFKENGTkVUV09SSykKICAgICBSZXRhaW5QdHI8Q0ZVUkxSZXF1ZXN0UmVm
PiBtX2NmUmVxdWVzdDsKQEAgLTE0MiwxMiArMTQxLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMg
Ym9vbCBzX2h0dHBQaXBlbGluaW5nRW5hYmxlZDsKIH07CiAKLXN0cnVjdCBDcm9zc1RocmVhZFJl
c291cmNlUmVxdWVzdERhdGEgOiBwdWJsaWMgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRh
QmFzZSB7Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBTdHJpbmcgbV9jYWNo
ZVBhcnRpdGlvbjsKLSNlbmRpZgotfTsKLQogaW5saW5lIGJvb2wgUmVzb3VyY2VSZXF1ZXN0Ojpy
ZXNvdXJjZVByaW9yaXRpZXNFbmFibGVkKCkKIHsKICNpZiBQTEFURk9STShNQUMpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlUmVxdWVzdENG
TmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwCmluZGV4IGFjODdiMmEzODQyNzJkZDNhZTc1ODJlYzBkOGM0ZDkzZWNkN2M1
ZjUuLjkwZTQwZjEyYmY0MTg1M2ZlYjNmNzA4ZGEwZTFiMjI2OTgwN2U3ZjkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1ZXN0Q0ZOZXQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VSZXF1
ZXN0Q0ZOZXQuY3BwCkBAIC0zNjYsMjMgKzM2NiwxNiBAQCBTdHJpbmcgUmVzb3VyY2VSZXF1ZXN0
OjpwYXJ0aXRpb25OYW1lKGNvbnN0IFN0cmluZyYgZG9tYWluKQogfQogI2VuZGlmCiAKLXN0ZDo6
dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVxdWVzdERhdGE+IFJlc291cmNlUmVxdWVz
dDo6ZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNl
UmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0Cit2b2lkIFJlc291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9y
bVNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgb3RoZXIpCiB7CiAjaWYg
RU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICBkYXRhLT5tX2NhY2hlUGFydGl0aW9uID0g
bV9jYWNoZVBhcnRpdGlvbjsKLSNlbmRpZgotICAgIHJldHVybiBkYXRhOwotfQotCi12b2lkIFJl
c291cmNlUmVxdWVzdDo6ZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVh
ZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpCi17Ci0jaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKLSAgICBtX2NhY2hlUGFydGl0aW9uID0gZGF0YS0+bV9jYWNoZVBhcnRpdGlvbjsKKyAg
ICBtX2NhY2hlUGFydGl0aW9uID0gb3RoZXIubV9jYWNoZVBhcnRpdGlvbi5pc29sYXRlZENvcHko
KTsKICNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGRhdGEpOworICAgIFVOVVNFRF9QQVJBTShvdGhl
cik7CiAjZW5kaWYKIH0KIAorCiAvLyBGSVhNRTogSXQgaXMgY29uZnVzaW5nIHRoYXQgdGhpcyBm
dW5jdGlvbiBib3RoIHNldHMgY29ubmVjdGlvbiBjb3VudCBhbmQgZGV0ZXJtaW5lcyBtYXhpbXVt
IHJlcXVlc3QgY291bnQgYXQgbmV0d29yayBsYXllci4gVGhpcyBjYW4gYW5kIHNob3VsZCBiZSBk
b25lIHNlcGFyYXRlbHkuCiB1bnNpZ25lZCBpbml0aWFsaXplTWF4aW11bUhUVFBDb25uZWN0aW9u
Q291bnRQZXJIb3N0KCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvUmVzb3VyY2VSZXNwb25zZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jZi9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggODM5NDZjZmE1ODg4ZjI5Mjk2YTE5NzFk
NTMxYzk1Y2NlMTg5YzMwNi4uN2RmMGU3MDNiZTRjY2Y4YzY0OGFkYWY2ZjZkYmY4ZWQzMzNkOGQx
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZVJlc3BvbnNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNv
dXJjZVJlc3BvbnNlLmgKQEAgLTEwMCw4ICsxMDAsOCBAQCBwcml2YXRlOgogICAgIFN0cmluZyBw
bGF0Zm9ybVN1Z2dlc3RlZEZpbGVuYW1lKCkgY29uc3Q7CiAgICAgQ2VydGlmaWNhdGVJbmZvIHBs
YXRmb3JtQ2VydGlmaWNhdGVJbmZvKCkgY29uc3Q7CiAKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5p
cXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhPiBkYXRhKSBjb25zdCB7IHJl
dHVybiBkYXRhOyB9Ci0gICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENy
b3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGE+KSB7IH0KKyAgICB2b2lkIGRvUGxhdGZvcm1T
ZXRBc0lzb2xhdGVkQ29weShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJikgY29uc3Q7CisKICNpZiBQ
TEFURk9STShDT0NPQSkKICAgICB2b2lkIGluaXROU1VSTFJlc3BvbnNlKCkgY29uc3Q7CiAjZW5k
aWYKQEAgLTExOSw3ICsxMTksNCBAQCBwcml2YXRlOgogI2VuZGlmCiB9OwogCi1zdHJ1Y3QgQ3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJlc291cmNl
UmVzcG9uc2VEYXRhQmFzZSB7Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlRXJyb3IuaApp
bmRleCBjMzFkZDQyNTFmNjdhMWNlZjZhYjQ5MjkzZTU5NDVhNzdlYWUyYjUyLi5lZWM0NjJkNWY2
ZmM3YTRjODAyZWRjZDJiMjc5M2EwZTI3NGM5NGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VFcnJvci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUVycm9yLmgKQEAgLTU0LDYgKzU0LDkg
QEAgcHVibGljOgogICAgIGJvb2wgaGFzU1NMQ29ubmVjdEVycm9yKCkgY29uc3QgeyByZXR1cm4g
ZXJyb3JDb2RlKCkgPT0gQ1VSTEVfU1NMX0NPTk5FQ1RfRVJST1I7IH0KIAogcHJpdmF0ZToKKyAg
ICBmcmllbmQgY2xhc3MgUmVzb3VyY2VFcnJvckJhc2U7CisgICAgdm9pZCBkb1BsYXRmb3JtSXNv
bGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KKwogICAgIHVuc2lnbmVkIG1fc3Ns
RXJyb3JzOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jdXJsL1Jlc291cmNlUmVxdWVzdC5oCmluZGV4IDY1NGQwMmZhYWQ2ZjQ5ZDAwMWZmYTUzY2Vk
YzNiZTExNjZjMGVhMzcuLjdkYmY2NGRmYjY4MjI1NzJlYTJmYjk2ZWZmNmUzZmJjOGNkZTllMWQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJj
ZVJlcXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VSZXF1ZXN0LmgKQEAgLTc4LDEzICs3OCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAg
ICAgICAgdm9pZCBkb1VwZGF0ZVBsYXRmb3JtSFRUUEJvZHkoKSB7IH0KICAgICAgICAgdm9pZCBk
b1VwZGF0ZVJlc291cmNlSFRUUEJvZHkoKSB7IH0KIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPiBkb1BsYXRmb3JtQ29weURhdGEoc3RkOjp1
bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YT4gZGF0YSkgY29uc3QgeyBy
ZXR1cm4gZGF0YTsgfQotICAgICAgICB2b2lkIGRvUGxhdGZvcm1BZG9wdChzdGQ6OnVuaXF1ZV9w
dHI8Q3Jvc3NUaHJlYWRSZXNvdXJjZVJlcXVlc3REYXRhPikgeyB9Ci0gCi0gICAgICAgIHN0YXRp
YyBib29sIHNfaHR0cFBpcGVsaW5pbmdFbmFibGVkOwotICAgIH07CisgICAgICAgIHZvaWQgZG9Q
bGF0Zm9ybVNldEFzSXNvbGF0ZWRDb3B5KGNvbnN0IFJlc291cmNlUmVxdWVzdCYpIHsgfQogCi0g
ICAgc3RydWN0IENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0YSA6IHB1YmxpYyBDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGFCYXNlIHsKKyAgICAgICAgc3RhdGljIGJvb2wgc19odHRw
UGlwZWxpbmluZ0VuYWJsZWQ7CiAgICAgfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVz
cG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZVJl
c3BvbnNlLmgKaW5kZXggNDMwN2Y2ZTQwY2UxOTYxNDM1OGU0ZjAzZDA0OWMzY2VkZjBmMjhhMy4u
ZWExODQwZmIzZWQxODk3NDJjMDYwMjVmNDMwYmQ1Yzc0NDNkZDE5MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlUmVzcG9uc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VSZXNwb25zZS5o
CkBAIC01OSw4ICs1OSw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFJl
c291cmNlUmVzcG9uc2VCYXNlOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXNwb25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jv
c3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsg
fQotICAgIHZvaWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhPikgeyB9CiAgICAgU3RyaW5nIHBsYXRmb3JtU3VnZ2VzdGVkRmls
ZW5hbWUoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIGZpbGVuYW1lRnJvbUhUVFBDb250
ZW50RGlzcG9zaXRpb24oaHR0cEhlYWRlckZpZWxkKEhUVFBIZWFkZXJOYW1lOjpDb250ZW50RGlz
cG9zaXRpb24pKTsKQEAgLTY5LDkgKzY3LDYgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcmVzcG9u
c2VGaXJlZDsKIH07CiAKLXN0cnVjdCBDcm9zc1RocmVhZFJlc291cmNlUmVzcG9uc2VEYXRhIDog
cHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXNwb25zZURhdGFCYXNlIHsKLX07Ci0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFJlc291cmNlUmVzcG9uc2VfaApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlRXJyb3JN
YWMubW0KaW5kZXggNjBiMGRmZjNmNjExY2ExNGRmNmY0NjdmNzI3YzUxZDUyOWM0Mzc0ZC4uNTIw
NzliZDFmNTM1ZGZiYzkyMjYxMzExYTUxZGMzNzQ1YTIxOGFjMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VFcnJvck1hYy5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUVycm9yTWFjLm1tCkBA
IC0yODEsNiArMjgxLDEwIEBAIGJvb2wgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21wYXJlKGNv
bnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImCiAgICAgcmV0dXJuIGEu
bnNFcnJvcigpID09IGIubnNFcnJvcigpOwogfQogCit2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxh
dGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVzb3VyY2VFcnJvciYpCit7Cit9CisKIE5TRXJyb3Ig
KlJlc291cmNlRXJyb3I6Om5zRXJyb3IoKSBjb25zdAogewogICAgIGlmIChtX2lzTnVsbCkgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
RXJyb3IuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVy
cm9yLmgKaW5kZXggNDQ3YjAwMjc0OGE2M2Y1YWM0MDc2YWIzZDljM2YyYTUyMzVmYjZmYy4uYzRk
N2FkYTdmMThjZjY1ZDc4MzcwZWZjZDNhYWIyODcyNzJjN2FhMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3IuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvci5oCkBAIC02Nyw3
ICs2Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBwbGF0Zm9ybUNvbXBhcmUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgYSwgY29uc3QgUmVzb3VyY2VFcnJvciYgYik7CiAKIHByaXZhdGU6Ci0g
ICAgdm9pZCBwbGF0Zm9ybUNvcHkoUmVzb3VyY2VFcnJvciYpIGNvbnN0OworICAgIGZyaWVuZCBj
bGFzcyBSZXNvdXJjZUVycm9yQmFzZTsKKyAgICB2b2lkIGRvUGxhdGZvcm1Jc29sYXRlZENvcHko
Y29uc3QgUmVzb3VyY2VFcnJvciYpOwogCiAgICAgdW5zaWduZWQgbV90bHNFcnJvcnM7CiAgICAg
R1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IG1fY2VydGlmaWNhdGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNw
cAppbmRleCBhZDZiOGU3MDg2NzNhZWI5YTU2NThlNGNjYjhjMzUxMjk5ZWZlZTllLi5kYjZmZDk1
ZDYyNGMyOTgzOGE5NTBlZDlmMmUwZTVjMDI2OWI3YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VFcnJvclNvdXAuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZUVycm9yU291cC5jcHAK
QEAgLTk3LDEwICs5NywxMCBAQCBSZXNvdXJjZUVycm9yIFJlc291cmNlRXJyb3I6OnRpbWVvdXRF
cnJvcihjb25zdCBVUkwmIGZhaWxpbmdVUkwpCiAgICAgcmV0dXJuIGVycm9yOwogfQogCi12b2lk
IFJlc291cmNlRXJyb3I6OnBsYXRmb3JtQ29weShSZXNvdXJjZUVycm9yJiBlcnJvckNvcHkpIGNv
bnN0Cit2b2lkIFJlc291cmNlRXJyb3I6OmRvUGxhdGZvcm1Jc29sYXRlZENvcHkoY29uc3QgUmVz
b3VyY2VFcnJvciYgb3RoZXIpCiB7Ci0gICAgZXJyb3JDb3B5Lm1fY2VydGlmaWNhdGUgPSBtX2Nl
cnRpZmljYXRlOwotICAgIGVycm9yQ29weS5tX3Rsc0Vycm9ycyA9IG1fdGxzRXJyb3JzOworICAg
IG1fY2VydGlmaWNhdGUgPSBvdGhlci5tX2NlcnRpZmljYXRlOworICAgIG1fdGxzRXJyb3JzID0g
b3RoZXIubV90bHNFcnJvcnM7CiB9CiAKIGJvb2wgUmVzb3VyY2VFcnJvcjo6cGxhdGZvcm1Db21w
YXJlKGNvbnN0IFJlc291cmNlRXJyb3ImIGEsIGNvbnN0IFJlc291cmNlRXJyb3ImIGIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1
ZXN0LmgKaW5kZXggYTE3MWU5OTdiZmMxMjU2YmZmMTk3ZWI5N2M5MzgxNmY1ZGQwYjc3MC4uOGEy
MzViYjRkZDgxMTkxZTcwNjYxNjNhMzUyOWFiMzlmNmEyNTFhNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVxdWVzdC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApAQCAt
MTIwLDExICsxMjAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgZG9VcGRh
dGVQbGF0Zm9ybUhUVFBCb2R5KCkgeyB9CiAgICAgICAgIHZvaWQgZG9VcGRhdGVSZXNvdXJjZUhU
VFBCb2R5KCkgeyB9CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3Vy
Y2VSZXF1ZXN0RGF0YT4gZG9QbGF0Zm9ybUNvcHlEYXRhKHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1Ro
cmVhZFJlc291cmNlUmVxdWVzdERhdGE+IGRhdGEpIGNvbnN0IHsgcmV0dXJuIGRhdGE7IH0KLSAg
ICAgICAgdm9pZCBkb1BsYXRmb3JtQWRvcHQoc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVz
b3VyY2VSZXF1ZXN0RGF0YT4pIHsgfQotICAgIH07Ci0KLSAgICBzdHJ1Y3QgQ3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlcXVlc3REYXRhIDogcHVibGljIENyb3NzVGhyZWFkUmVzb3VyY2VSZXF1ZXN0RGF0
YUJhc2UgeworICAgICAgICB2b2lkIGRvUGxhdGZvcm1TZXRBc0lzb2xhdGVkQ29weShjb25zdCBS
ZXNvdXJjZVJlcXVlc3QmKSB7IH0KICAgICB9OwogCiAjaWYgU09VUF9DSEVDS19WRVJTSU9OKDIs
IDQzLCAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3Vw
L1Jlc291cmNlUmVzcG9uc2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlc3BvbnNlLmgKaW5kZXggZmY4YmUyYWQ5MzUxOThlNGM2ZjY0MmI4MDc2ZTUz
N2Q4ZjExZjA4OC4uMjdmOWI1M2IwY2NlNmRmZjgwM2Y1ZDQxZDllOTU4NmMxY2RkYzdhNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNlUmVz
cG9uc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3Vy
Y2VSZXNwb25zZS5oCkBAIC05MCw5ICs5MCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBkb1VwZGF0
ZVJlc291cmNlUmVzcG9uc2UoKSB7IH0KICAgICBTdHJpbmcgcGxhdGZvcm1TdWdnZXN0ZWRGaWxl
bmFtZSgpIGNvbnN0OwogICAgIENlcnRpZmljYXRlSW5mbyBwbGF0Zm9ybUNlcnRpZmljYXRlSW5m
bygpIGNvbnN0OwotCi0gICAgc3RkOjp1bmlxdWVfcHRyPENyb3NzVGhyZWFkUmVzb3VyY2VSZXNw
b25zZURhdGE+IGRvUGxhdGZvcm1Db3B5RGF0YShzdGQ6OnVuaXF1ZV9wdHI8Q3Jvc3NUaHJlYWRS
ZXNvdXJjZVJlc3BvbnNlRGF0YT4gZGF0YSkgY29uc3QgeyByZXR1cm4gZGF0YTsgfQotICAgIHZv
aWQgZG9QbGF0Zm9ybUFkb3B0KHN0ZDo6dW5pcXVlX3B0cjxDcm9zc1RocmVhZFJlc291cmNlUmVz
cG9uc2VEYXRhPikgeyB9CiB9OwogCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgpAQCAtMTEyLDkg
KzEwOSw2IEBAIGJvb2wgUmVzb3VyY2VSZXNwb25zZTo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIs
IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKQogICAgIHJldHVybiB0cnVlOwogfQogCi1zdHJ1
Y3QgQ3Jvc3NUaHJlYWRSZXNvdXJjZVJlc3BvbnNlRGF0YSA6IHB1YmxpYyBDcm9zc1RocmVhZFJl
c291cmNlUmVzcG9uc2VEYXRhQmFzZSB7Ci19OwotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAK
ICNlbmRpZiAvLyBSZXNvdXJjZVJlc3BvbnNlX2gK
</data>

          </attachment>
      

    </bug>

</bugzilla>