<?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>165517</bug_id>
          
          <creation_ts>2016-12-06 23:01:27 -0800</creation_ts>
          <short_desc>Add SPI for sending WebsiteSettings to WebProcess during navigation</short_desc>
          <delta_ts>2016-12-16 23:47:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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=165992</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1257198</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-06 23:01:27 -0800</bug_when>
    <thetext>Add SPI for sending WebsiteSettings to WebProcess during navigation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257210</commentid>
    <comment_count>1</comment_count>
      <attachid>296383</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-07 00:43:18 -0800</bug_when>
    <thetext>Created attachment 296383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257213</commentid>
    <comment_count>2</comment_count>
      <attachid>296385</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-07 01:11:45 -0800</bug_when>
    <thetext>Created attachment 296385
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257263</commentid>
    <comment_count>3</comment_count>
      <attachid>296396</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-07 10:19:51 -0800</bug_when>
    <thetext>Created attachment 296396
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257361</commentid>
    <comment_count>4</comment_count>
      <attachid>296396</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-12-07 14:02:58 -0800</bug_when>
    <thetext>Comment on attachment 296396
Patch

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

&gt; Source/WebCore/loader/DocumentLoader.h:235
&gt; +    std::optional&lt;bool&gt; userContentExtensionsDisabled() const { return m_userContentExtensionsDisabled; }
&gt; +    void setUserContentExtensionsDisabled(std::optional&lt;bool&gt; disabled) { m_userContentExtensionsDisabled = disabled; }

Using std::optional&lt;bool&gt; is pretty confusing, it seems like you should be able to just have it be a boolean (and using enabled by default seems easier to understand too).

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePolicies.h:33
&gt; +@property (nonatomic) BOOL contentBlockersDisabled;

Again, I think this should be contentBlockersEnabled.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257493</commentid>
    <comment_count>5</comment_count>
      <attachid>296449</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-07 17:24:55 -0800</bug_when>
    <thetext>Created attachment 296449
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257564</commentid>
    <comment_count>6</comment_count>
      <attachid>296470</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-07 20:14:42 -0800</bug_when>
    <thetext>Created attachment 296470
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257812</commentid>
    <comment_count>7</comment_count>
      <attachid>296470</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2016-12-08 12:28:30 -0800</bug_when>
    <thetext>Comment on attachment 296470
Patch

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

&gt; Source/WebKit2/UIProcess/API/APIWebsitePolicies.h:37
&gt; +    explicit WebsitePolicies() = default;
&gt; +    virtual ~WebsitePolicies() = default;

I&apos;d put these out of line so we won&apos;t end up emitting a vtable wherever we use RefPtr&lt;WebsitePolicies&gt;.

&gt; Source/WebKit2/UIProcess/API/APIWebsitePolicies.h:45
&gt; +    

Extra newline here.

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:68
&gt; +- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

It&apos;s a little ugly that we now have an extra parameter here that only makes sense for calling it with WKNavigationActionPolicyAllow.

I think if we want to make this API, we should use an object instead, similar to WebPolicyListener (or whatever it&apos;s called)..

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKWebsitePoliciesInternal.h:44
&gt; +    @package

@package shouldn&apos;t be indented.

&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:819
&gt; +    // Only setUserContentExtensionsEnabled if it hasn&apos;t already been disabled by reloading without content blockers.
&gt; +    if (documentLoader-&gt;userContentExtensionsEnabled())
&gt; +        documentLoader-&gt;setUserContentExtensionsEnabled(websitePolicies.contentBlockersEnabled);

Does that mean that it&apos;s impossible to implement &quot;reload _with_ content blockers&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257820</commentid>
    <comment_count>8</comment_count>
      <attachid>296470</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-08 12:42:15 -0800</bug_when>
    <thetext>Comment on attachment 296470
Patch

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

&gt;&gt; Source/WebKit2/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:819
&gt;&gt; +        documentLoader-&gt;setUserContentExtensionsEnabled(websitePolicies.contentBlockersEnabled);
&gt; 
&gt; Does that mean that it&apos;s impossible to implement &quot;reload _with_ content blockers&quot;?

yes.  we would definitely need optional bools for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257822</commentid>
    <comment_count>9</comment_count>
      <attachid>296470</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-08 12:45:34 -0800</bug_when>
    <thetext>Comment on attachment 296470
Patch

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

&gt;&gt; Source/WebKit2/UIProcess/API/Cocoa/WKNavigationDelegatePrivate.h:68
&gt;&gt; +- (void)_webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy, _WKWebsitePolicies *))decisionHandler WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));
&gt; 
&gt; It&apos;s a little ugly that we now have an extra parameter here that only makes sense for calling it with WKNavigationActionPolicyAllow.
&gt; 
&gt; I think if we want to make this API, we should use an object instead, similar to WebPolicyListener (or whatever it&apos;s called)..

Ok, I&apos;ll land this as-is.  If we make it API, we would need to rename it anyways.  The _ is the only difference between this and an existing selector&apos;s name.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1257824</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-08 12:53:16 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/209558</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296383</attachid>
            <date>2016-12-07 00:43:18 -0800</date>
            <delta_ts>2016-12-07 01:11:40 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165517-20161207004238.patch</filename>
            <type>text/plain</type>
            <size>106161</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEyLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBkdXJpbmcgbmF2aWdhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTE3
CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgYWRkIHRoZSBhYmlsaXR5IGZvciB0aGUgbmF2aWdhdGlv
biBjbGllbnQgdG8gc2VuZCBzZXR0aW5ncyB0byB0aGUgV2ViUHJvY2VzcyAKKyAgICAgICAgYmFz
ZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgbmF2aWdhdGVkIHRvLiBUaGlzIGFw
cHJvYWNoIGFkZHMgbm8gbmV3IElQQyAKKyAgICAgICAgbWVzc2FnZXMgYW5kIGFsbG93cyB0aGUg
YXBwbGljYXRpb24gdG8gZGVjaWRlIHdoYXQgc2V0dGluZ3MgdG8gdXNlIGR1cmluZyBuYXZpZ2F0
aW9uIAorICAgICAgICBpbnN0ZWFkIG9mIGRlY2xhcmF0aXZlbHkgYmVmb3JlIG5hdmlnYXRpb24u
IFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBzZXR0aW5nLCAKKyAgICAgICAgd2hldGhlciB0
byBkaXNhYmxlIGNvbnRlbnQgYmxvY2tlcnMsIGJ1dCB0aGlzIGluZnJhc3RydWN0dXJlIGNhbiBi
ZSB1c2VkIGZvciBtb3JlIHNldHRpbmdzLgorCisgICAgICAgIEluIG9yZGVyIHRvIG5vdCBjb25m
bGljdCB3aXRoIHRoZSBleGlzdGluZyBhYmlsaXR5IHRvIHJlbG9hZCB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMsIAorICAgICAgICBvbmx5IHNldCB0aGUgYm9vbCAod2hpY2ggaXMgbm93IGEgc3Rk
OjpvcHRpb25hbDxib29sPiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIGl0J3MgYWxyZWFkeSBiZWVu
IHNldCkKKyAgICAgICAgb24gdGhlIERvY3VtZW50TG9hZGVyIGRpc2FibGluZyBjb250ZW50IGJs
b2NrZXJzIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHNldCBieSByZWxvYWRpbmcKKyAgICAg
ICAgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6dXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlk
ZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50UHJvdmlkZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGVudEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1
dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKwogMjAxNi0xMi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFVzZSB0YXAgYW5kIHBpbmNoIGdlc3R1cmVz
IG9uIGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzEsOCArMjMxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExv
YWRpbmdQbHVnSW5zKCk7CiAgICAgdm9pZCBzdG9wTG9hZGluZ1N1YnJlc291cmNlcygpOwogCi0g
ICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VyQ29udGVudEV4
dGVuc2lvbnNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25z
RGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzYWJsZWQpIHsgbV91c2VyQ29udGVudEV4dGVuc2lvbnNEaXNh
YmxlZCA9IGRpc2FibGVkOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlTG9hZGVyKFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxv
YWRlciopOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+PiBtX3BlbmRpbmdOYW1lZENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIHVpbnQzMl90Pj4+IG1fcGVuZGluZ0NvbnRlbnRFeHRlbnNpb25EaXNwbGF5Tm9uZVNlbGVj
dG9yczsKICNlbmRpZgotICAgIGJvb2wgbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIHsg
dHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNE
aXNhYmxlZDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faGFzRXZlckJlZW5BdHRhY2hl
ZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NjIsNyArMTU2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tl
cnNEaXNhYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVu
ZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JV
UkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwor
ICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoY29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRl
ci0+cmVxdWVzdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSA9IG51bGxBdG9tKTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3Jt
U3VibWlzc2lvbj4pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRU
b0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFs
c2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwogCiAgICAgdm9pZCBvcGVuKENhY2hl
ZEZyYW1lQmFzZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJv
dmlkZXIuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwyMSArODgsMjQgQEAgdm9p
ZCBVc2VyQ29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlSW5qZQogfQogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBib29sIGNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChj
b25zdCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCitzdGF0aWMgYm9vbCBjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKGNvbnN0IERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikK
IHsKICAgICBpZiAoYXV0byBmcmFtZSA9IGRvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZTsKICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQoKTsKLSAgICAgICAgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVyID0g
ZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbWFpbkRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVk
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5z
aW9uc0Rpc2FibGVkKCk7CisgICAgICAgIGVsc2UgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IG1haW5Eb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRGlz
YWJsZWQoKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuICp2YWx1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBD
b250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBVc2VyQ29udGVudFByb3ZpZGVyOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRl
cikKIHsKLSAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9jdW1l
bnRMb2FkZXIpKQorICAgIGlmIChjb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcikpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdXNlckNv
bnRlbnRFeHRlbnNpb25CYWNrZW5kKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zvckxv
YWQodXJsLCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CkBAIC0xMTAs
NyArMTEzLDcgQEAgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgVXNlckNvbgogCiBW
ZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0
aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJ
bmZvLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewotICAgIGlm
ICghY29udGVudEV4dGVuc2lvbnNFbmFibGVkKGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikpCisg
ICAgaWYgKGNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIw
OTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBVc2VySW5wdXRCcmlkZ2U6OmxvYWRS
ZXF1ZXN0KGNvbnN0IAogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVl
c3QpOwogfQogCi12b2lkIFVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUoRnJhbWUqIGZyYW1l
LCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0
U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwg
Ym9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZChlbmRU
b0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgZnJhbWUtPmxvYWRlcigp
LnJlbG9hZChlbmRUb0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2
b2lkIFVzZXJJbnB1dEJyaWRnZTo6c3RvcExvYWRpbmdGcmFtZShGcmFtZSogZnJhbWUsIElucHV0
U291cmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxUeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtODgsNyArODks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ug
c291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVs
b2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBJbnB1dFNvdXJjZSA9IElu
cHV0U291cmNlOjpVc2VyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMb2FkaW5nRnJh
bWUoRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2Ugc291cmNlID0gSW5w
dXRTb3VyY2U6OlVzZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDAgQEAK
KzIwMTYtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgU1BJIGZvciBzZW5kaW5nIFdlYnNpdGVTZXR0aW5ncyB0byBXZWJQcm9j
ZXNzIGR1cmluZyBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU1MTcKKyAgICAgICAgPHJkYXI6Ly8yOTM0MTA2OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJ
T2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzOjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVQb2xpY2llczo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UpOgorICAgICAgICAoV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZWxv
YWQpOgorICAgICAgICAoV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vycyk6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNT
ZXRDb250ZW50QmxvY2tlcnNEaXNhYmxlZCk6CisgICAgICAgIChXS1dlYnNpdGVQb2xpY2llc0dl
dENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciByZWxvYWRdKToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dL
V2Vic2l0ZVBvbGljaWVzIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IHNldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9s
aWNpZXMgY29udGVudEJsb2NrZXJzRGlzYWJsZWRdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBv
bGljaWVzIGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBMaW5rKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHk6OmNvbnRpbnVlU3VibWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk6OnVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eTo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk6Omlnbm9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
Ni0xMi0wNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjA5NDIyLgpJbmRleDogU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC00NzMsNiArNDc0LDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2luZG93RmVhdHVyZXNSZWYuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYg
KzIyMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTaXplLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0K
IAogICAgIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgV2Vic2l0ZVBvbGljaWVzIHsKKworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQg
eyBmYWxzZSB9OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYnNpdGVQb2xpY2llcyYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQ7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgV2Vic2l0ZVBvbGljaWVzJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY29udGVudEJsb2NrZXJzRGlzYWJsZWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpdGVkTGlua1N0b3JlLAog
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAg
ICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KgogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJy
YXRpb24qIFdLVmlicmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3
cG9ydEF0dHJpYnV0ZXMqIFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9s
aWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBX
S1dpbmRvd0ZlYXR1cmVzUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNz
aW9uTGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmgiCiAKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXMuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqIGZyYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMzUsNyArMzcsNyBAQCBXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHk6OldlYkZvcm1TCiAKIHZvaWQgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5Ojpjb250aW51ZVN1Ym1pc3Npb24oKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6UG9saWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeVVzZSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNw
cAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
TGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQCB2b2lk
IFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgbV9mcmFtZSA9IG51bGxw
dHI7CiB9CiAKLXZvaWQgV2ViRnJhbWVMaXN0ZW5lclByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24pCit2b2lkIFdlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9u
KGFjdGlvbiwgbV9saXN0ZW5lcklELCBtX25hdmlnYXRpb24uZ2V0KCkpOworICAgIG1fZnJhbWUt
PnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICBtX2ZyYW1lID0gbnVsbHB0
cjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxp
c3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJGcmFtZUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCkBAIC0zNiw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViRnJhbWVQcm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIGNsYXNzIFdlYkZyYW1l
TGlzdGVuZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdCB7CiBwdWJsaWM6CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxpc3RlbmVyUHJveHkoV2Vi
RnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCi0gICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbik7CisgICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2Vic2l0ZVBvbGljaWVzJiYpOwog
CiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZyYW1lOwpAQCAtNTksNSAr
NTksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC0zNSwxOSArMzYsMTkgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpXZWJGcmFt
ZVBvbAogewogfQogCi12b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKCkKK3Zv
aWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojp1c2UoV2Vic2l0ZVBvbGljaWVzJiYgd2Vi
aXN0ZVBvbGljaWVzKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeVVzZSwg
V1RGTW92ZSh3ZWJpc3RlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk6OmRvd25sb2FkKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeURvd25sb2FkKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeURvd25sb2FkLCB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eTo6aWdub3JlKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUlnbm9yZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lJ
Z25vcmUsIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIK
IApAQCAtNDAsMTIgKzM5LDEyIEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSA6
IHB1YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZTo6RnJh
bWVQb2xpY3lMaXN0ZW5lcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQorICAgIHN0YXRpYyBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBjcmVh
dGUoV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eShmcmFt
ZSwgbGlzdGVuZXJJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpKTsKICAgICB9CiAKLSAgICB2b2lk
IHVzZSgpOworICAgIHZvaWQgdXNlKFdlYnNpdGVQb2xpY2llcyYmKTsKICAgICB2b2lkIGRvd25s
b2FkKCk7CiAgICAgdm9pZCBpZ25vcmUoKTsKIApAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9f
Q09DT0EKLQotI2VuZGlmIC8vIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hh
bmdlVGl0bGUoY29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24pCit2b2lk
IFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2FjdGl2ZUxpc3RlbmVyKTsKICAg
ICBBU1NFUlQobV9hY3RpdmVMaXN0ZW5lci0+bGlzdGVuZXJJRCgpID09IGxpc3RlbmVySUQpOwot
ICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIHRoaXMsIGxpc3RlbmVy
SUQsIG5hdmlnYXRpb24pOworICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rp
b24sICp0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cykpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZyYW1lUHJveHk6OnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMjUwLDggKzI1
MCw3IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBtX2Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29s
IHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjb25z
dCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICBwYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgICAgICAgICBw
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFtZVByb3h5X2gK
LSNkZWZpbmUgV2ViRnJhbWVQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFN0YXRlLmgiCkBAIC01Myw2ICs1Miw3IEBAIGNs
YXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5
IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiA9IG51bGxw
dHIpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIFdlYnNpdGVQb2xpY2ll
cyYmKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIHNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkmIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KHVpbnQ2NF90IGxpc3Rl
bmVySUQpOwogCkBAIC0xNDksNSArMTQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViRnJhbWVQcm94eV9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0CiAgICAgLy8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRl
IGFueXdoZXJlLgogICAgIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSA9IHRvSW1wbChuYXZp
Z2F0aW9uQWN0aW9uUmVmKS0+c291cmNlRnJhbWUoKTsKICAgICBpZiAoc291cmNlRnJhbWUgJiYg
IXNvdXJjZUZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5lclJl
ZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3QKIAogICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1h
aW4gaW5zcGVjdG9yIGZpbGUuCiAgICAgaWYgKFdlYkluc3BlY3RvclByb3h5Ojppc01haW5PclRl
c3RJbnNwZWN0b3JQYWdlKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5l
clJlZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc0LDcgKzExNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFdl
YnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI5NCwxMCArMjI5NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTM2MTAsNyArMzYxMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UKICAgICAgICAgbV9mcmFtZVNl
dExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJhbWUgOiAwOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wm
IHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRf
dCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNl
aXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBv
bGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBvbGljaWVzJiB3ZWJz
aXRlUG9saWNpZXMpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIApAQCAtMzY3OCw2ICszNjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0
aW9uSXNWYWxpZCkgewogICAgICAgICBwb2xpY3lBY3Rpb24gPSBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWN0aW9uOwogICAgICAgICBkb3dubG9hZElEID0gbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeURvd25sb2FkSUQ7CisgICAgICAgIHdlYnNpdGVQb2xpY2llcyA9IG1fc3luY05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1l
VHJhY2tlci5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CkBAIC0zOTAsNyArMzkxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJl
bG9hZEZyb21PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRGlzYWJs
ZWQpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CkBAIC04MDMsNyArODA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsK
ICNlbmRpZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5JiwgdWludDY0X3QgbGlzdGVuZXJJRCwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uSUQsIFdlYnNpdGVQb2xpY2llcyYmKTsKIAogICAg
IHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwogCkBAIC0xMjQy
LDcgKzEyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdh
dGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7CisgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5h
dGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3du
bG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERv
d25sb2FkSUQmKTsKQEAgLTE3NjMsNiArMTc2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKICAgICBEb3dubG9h
ZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAgIFdlYnNpdGVQ
b2xpY2llcyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOwogICAg
IGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBt
ZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCi0g
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2
aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luYXRpbmdGcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQ
b2xpY2llcykKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSU5hdmlnYXRpb25DbGll
bnRfaAotI2RlZmluZSBBUElOYXZpZ2F0aW9uQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRl
ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTk1LDEyICs5NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgp
OworICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0
ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9CiAgICAgCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMTcsNSArMTE3LDMgQEAgcHVibGlj
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElOYXZpZ2F0aW9uQ2xp
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwg
QVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8V2ViS2l0OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7
Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCwgUmVm
PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9i
amVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVy
LT51c2UoeyB9KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CiB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
KworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2ll
czo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlUG9saWNpZXMo
KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCituYW1lc3BhY2UgQVBJIHsKKworY2xh
c3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpXZWJzaXRlUG9saWNpZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVQb2xp
Y2llcz4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+V2Vic2l0ZVBvbGljaWVzKCkgPSBkZWZhdWx0
OworICAgIAorICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZDsgfQorICAgIHZvaWQg
c2V0Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkgeyBtX3dlYnNpdGVQb2xp
Y2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IGRpc2FibGVkOyB9CisgICAgCisgICAgY29u
c3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcygpIHsgcmV0dXJuIG1f
d2Vic2l0ZVBvbGljaWVzOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYnNpdGVQb2xpY2llcygp
ID0gZGVmYXVsdDsKKyAgICAKKyAgICBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyBtX3dlYnNpdGVQ
b2xpY2llczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQCBjbGFz
cyBVc2VyQ29udGVudEV4dGVuc2lvbjsKIGNsYXNzIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU7
CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKK2NsYXNzIFdlYnNp
dGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xMTAsNiArMTExLDcg
QEAgY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTsKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1
dGVzOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYsIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcikKQEAgLTE2NSw2ICsxNjcsNyBAQCBXS19BRERf
QVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6CiBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmll
d3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBBUEk6OldlYnNpdGVEYXRhU3RvcmUpCitXS19B
RERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6V2luZG93RmVh
dHVyZXMpCiAKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAorI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1l
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIApAQCAtMzksNyArNDEsMTIgQEAgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3Rl
bmVyR2V0VHlwZUlEKAogCiB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXJSZWYpCiB7Ci0gICAgdG9JbXBsKHBvbGljeUxp
c3RlbmVyUmVmKS0+dXNlKCk7CisgICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+dXNlKHsg
fSk7Cit9CisKK3ZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXRlUG9saWNpZXNS
ZWYgd2Vic2l0ZVBvbGljaWVzKQoreworICAgIHRvSW1wbChwb2xpY3lMaXN0ZW5lclJlZiktPnVz
ZSh7dG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPndlYnNpdGVQb2xpY2llcygpLmNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkfSk7CiB9CiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJfaAotI2RlZmluZSBXS0ZyYW1lUG9saWN5TGlzdGVuZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAgLTM0LDEyICszMywxMSBA
QCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
ckdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2Uo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKLVdLX0VYUE9SVCB2b2lk
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBw
b2xpY3lMaXN0ZW5lcik7Ci1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25v
cmUoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKK1dLX0VYUE9SVCB2
b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOwor
V0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9y
ZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJz
aXRlUG9saWNpZXNSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5k
aWYgLyogV0tGcmFtZVBvbGljeUxpc3RlbmVyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDIy
ICsyNDIsMjAgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZVJlZgogdm9p
ZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxv
YWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChy
ZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250
ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRG
cm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
ID0gZmFsc2U7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiBj
b250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IHRydWU7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxv
YWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2b2lk
IFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3Qg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZEZy
b21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2Uo
V0tQYWdlUmVmIHBhZ2VSZWYpCkBAIC0xMzQ4LDcgKzEzNDYsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1l
UHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIApAQCAtMTM2Niw3ICsxMzY0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xMzc4LDcgKzEzNzYsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7
CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS1dlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBv
bGljaWVzLmgiCisKK1dLVHlwZUlEIFdLV2Vic2l0ZVBvbGljaWVzR2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVQb2xpY2llczo6QVBJVHlwZSk7Cit9
CisKK1dLV2Vic2l0ZVBvbGljaWVzUmVmIFdLV2Vic2l0ZVBvbGljaWVzQ3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpLmxl
YWtSZWYoKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlUG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNE
aXNhYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9saWNpZXMsIGJvb2wgZGlzYWJs
ZWQpCit7CisgICAgV2ViS2l0Ojp0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+c2V0Q29udGVudEJs
b2NrZXJzRGlzYWJsZWQoZGlzYWJsZWQpOworfQorCitib29sIFdLV2Vic2l0ZVBvbGljaWVzR2V0
Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGlj
aWVzKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5jb250
ZW50QmxvY2tlcnNEaXNhYmxlZCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1dlYnNpdGVQb2xpY2llc0dldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgV0tXZWJzaXRlUG9saWNpZXNSZWYgV0tXZWJzaXRlUG9saWNpZXND
cmVhdGUoKTsKKworV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlUG9saWNpZXNHZXRDb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVQb2xpY2llc1NldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKFdLV2Vic2l0ZVBvbGljaWVz
UmVmLCBib29sKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTg4LDE1ICsxODgsMTMgQEAgLSAodm9pZClzdG9wTG9hZGlu
ZwogLSAodm9pZClyZWxvYWQKIHsKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBm
YWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAg
IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7
CisgICAgX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiAtICh2b2lk
KXJlbG9hZEZyb21PcmlnaW4KIHsKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0
cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAg
X3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsK
KyAgICBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDggQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKK0BjbGFzcyBfV0tX
ZWJzaXRlUG9saWNpZXM7CisKIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kg
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKIHN0YXRpYyBjb25zdCBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBp
b3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExp
bmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdyArIDIpOwogCkBAIC02Myw2ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSAKIC0gKHZvaWQpX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6
KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06
KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHdpbGxTbmFwc2hvdEJhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqKWl0ZW07CiAtICh2b2lkKV93ZWJWaWV3RGlkUmVtb3ZlTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMiksIGlvcygxMC4wKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5T
U3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODE1LDggKzgxNSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9y
d2FyZAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRG
cm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
ID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21P
cmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKICAgICBpZiAoIW5hdmlnYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTgyNiw4ICs4MjUsNyBAQCAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KIHsKICAgICBj
b25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJl
bG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBhdXRv
IG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiAgICAg
aWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zMzc4LDggKzMzNzYs
OCBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIC0gKFdLTmF2aWdhdGlvbiAqKV9y
ZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRGcm9t
T3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0g
ZmFsc2U7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3Jp
Z2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkID0gdHJ1ZTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKTsKICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBfV0tXZWJzaXRlUG9saWNpZXMgOiBOU09iamVjdAorCitAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZDsKKworQGVuZAorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGlj
aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gX1dLV2Vic2l0ZVBvbGljaWVz
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF93ZWJzaXRlUG9saWNpZXMtPkFQSTo6V2Vic2l0
ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCk7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2Nd
OworfQorCistICh2b2lkKXNldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkOihCT09MKWNvbnRlbnRC
bG9ja2Vyc0Rpc2FibGVkCit7CisgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQoY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOworfQorCistIChCT09MKWNvbnRl
bnRCbG9ja2Vyc0Rpc2FibGVkCit7CisgICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmNvbnRl
bnRCbG9ja2Vyc0Rpc2FibGVkKCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sK
KyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBjb250ZW50
QmxvY2tlcnNEaXNhYmxlZCA9ICVkPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBz
ZWxmLCBzZWxmLmNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkXTsKK30KKworLSAoQVBJOjpPYmplY3Qm
KV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl93ZWJzaXRlUG9saWNpZXM7Cit9CisKK0BlbmQK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVQb2xpY2llc0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGlj
aWVzSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLV2Vic2l0ZVBvbGljaWVzICp3cmFwcGVy
KEFQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCit7CisgICAgQVNTRVJUKFt3
ZWJzaXRlUG9saWNpZXMud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS1dlYnNpdGVQb2xpY2ll
cyBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xp
Y2llcy53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tXZWJzaXRlUG9saWNpZXMg
KCkgPFdLT2JqZWN0PiB7CisgICAgQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+IF93ZWJzaXRlUG9saWNpZXM7Cit9CitAZW5kCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzUsOCArNDM1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cmVsb2FkQnJvd3NpbgogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2Uuc2V0KHBhZ2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBi
b29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHBhZ2UtPnJlbG9hZChyZWxv
YWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBwYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
aW5zcGVjdEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsRW5hYmxlQXV0b0Nh
cHR1cmluZywgUmVmPEluc3BlY3RCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHBy
aXZhdGU6CiAKICAgICBzdHJ1Y3QgewogICAgICAgICBib29sIHdlYlZpZXdEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJW
aWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcldlYnNpdGVQ
b2xpY2llcyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZURlY2lzaW9uSGFuZGxlciA6IDE7CiAKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlk
U3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gOiAxOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmgiCisjaW1w
b3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVk
ZW50aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oPgpAQCAtMTM3LDYgKzEzOCw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjopXTsKKyAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25E
ZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRl
Y2lzaW9uSGFuZGxlcjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZURlY2lzaW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjopXTsKIAogICAgIG1fbmF2aWdhdGlv
bkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uOildOwpAQCAtMjY1LDcgKzI2Nyw3IEBAIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6fk5hdmkKIHsKIH0KIAotc3RhdGljIHZvaWQgdHJ5QXBwTGlu
ayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBT
dHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNv
bXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgdHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFN0cmluZyYgY3VycmVudE1h
aW5GcmFtZVVSTCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
QXBwTGlua3MoKSkgewpAQCAtMjg5LDE4ICsyOTEsMTkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OgogewogICAgIFN0cmluZyBtYWluRnJhbWVVUkxTdHJpbmcgPSB3
ZWJQYWdlUHJveHkubWFpbkZyYW1lKCktPnVybCgpOwogCi0gICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIpIHsKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcgorICAgICAgICAmJiAhbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzKSB7CiAgICAgICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9ICZuYXZp
Z2F0aW9uQWN0aW9uOwogICAgICAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiBsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7CiAKLSAgICAgICAgdHJ5QXBwTGlu
ayhsb2NhbE5hdmlnYXRpb25BY3Rpb24sIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVu
ZXIsIGxvY2FsTmF2aWdhdGlvbkFjdGlvbl0gKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIHsKKyAg
ICAgICAgdHJ5QXBwTGluayhXVEZNb3ZlKGxvY2FsTmF2aWdhdGlvbkFjdGlvbiksIG1haW5GcmFt
ZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXIsIGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9IFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0aW9uKV0gKGJvb2wgZm9sbG93
ZWRMaW5rVG9BcHApIHsKICAgICAgICAgICAgIGlmIChmb2xsb3dlZExpbmtUb0FwcCkgewogICAg
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFsb2NhbE5hdmlnYXRpb25B
Y3Rpb24tPnRhcmdldEZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51
c2UoKTsKKyAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoeyB9KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTMwOSw3ICszMTIsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgICAgICAgICAgICAgaWYg
KGxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMjksMjEgKzMzMiwyNiBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IGxv
Y2FsTmF2aWdhdGlvbkFjdGlvbiA9ICZuYXZpZ2F0aW9uQWN0aW9uOwotICAgIFJlZlB0cjxXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVy
KTsKLSAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVj
aXNpb25IYW5kbGVyOikpOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFw
cGVyKG5hdmlnYXRpb25BY3Rpb24pIGRlY2lzaW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uLCBjaGVja2VyLCBtYWluRnJhbWVVUkxTdHJpbmddKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIHsKKyAgICBib29sIGRlbGVnYXRlSGFzV2Vi
c2l0ZVBvbGljaWVzID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVy
V2Vic2l0ZVBvbGljaWVzOworICAgIAorICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMgPyBAc2Vs
ZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhh
bmRsZXI6KSA6IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246ZGVjaXNpb25IYW5kbGVyOikpOworICAgIAorICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyV2l0
aFBvbGljaWVzID0gW2xvY2FsTGlzdGVuZXIgPSBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5PihXVEZNb3ZlKGxpc3RlbmVyKSksIGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9IFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0aW9uKSwgY2hlY2tlciA9IFdU
Rk1vdmUoY2hlY2tlciksIG1haW5GcmFtZVVSTFN0cmluZ10oV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5IGFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMpIG11
dGFibGUgewogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKIAor
ICAgICAgICBXZWJzaXRlUG9saWNpZXMgcG9saWNpZXM7CisgICAgICAgIGlmICh3ZWJzaXRlUG9s
aWNpZXMpCisgICAgICAgICAgICBwb2xpY2llcyA9IHdlYnNpdGVQb2xpY2llcy0+X3dlYnNpdGVQ
b2xpY2llcy0+d2Vic2l0ZVBvbGljaWVzKCk7CisKICAgICAgICAgc3dpdGNoIChhY3Rpb25Qb2xp
Y3kpIHsKICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdzoKLSAgICAg
ICAgICAgIHRyeUFwcExpbmsobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLCBtYWluRnJhbWVVUkxTdHJp
bmcsIFtsb2NhbExpc3RlbmVyXShib29sIGZvbGxvd2VkTGlua1RvQXBwKSB7CisgICAgICAgICAg
ICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxOYXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJM
U3RyaW5nLCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHBvbGljaWVz
ID0gV1RGTW92ZShwb2xpY2llcyldKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGlmIChmb2xsb3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgICAg
ICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVz
ZSgpOworICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZShXVEZNb3ZlKHBvbGljaWVz
KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1
NiwxNyArMzY0LDIzIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdzd2l0Y2giCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eURvd25sb2FkOgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgICAgICAgICAgbG9j
YWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3
aXRjaCIKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0
VHJ5aW5nQXBwTGluazoKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKFdU
Rk1vdmUocG9saWNpZXMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfV07
CisgICAgfTsKKyAgICAKKyAgICBpZiAoZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMpCisgICAg
ICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRl
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRl
Y2lzaW9uSGFuZGxlcldpdGhQb2xpY2llc107CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzID0gW2RlY2lzaW9uSGFuZGxlcldpdGhQb2xpY2ll
c10gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIG11dGFibGUgeworICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzKGFjdGlvblBvbGljeSwgbmlsKTsK
KyAgICAgICAgfTsKKyAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBw
ZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlcldpdGhv
dXRQb2xpY2llc107CisgICAgfQogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
QEAgLTM3OCwxNCArMzkyLDE0IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKICAgICAgICAgICAgIEJPT0wgZXhpc3RzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnVybC5wYXRoIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9y
eV07CiAKICAgICAgICAgICAgIGlmIChleGlzdHMgJiYgIWlzRGlyZWN0b3J5ICYmIG5hdmlnYXRp
b25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUoKSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hv
d01JTUVUeXBlKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5p
Z25vcmUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDAyLDcgKzQxNiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIAogICAgICAgICBzd2l0Y2ggKHJlc3BvbnNl
UG9saWN5KSB7CiAgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdzoK
LSAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsOgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgxLDYgKzEwODEsMTMgQEAKIAkJNUM3NzA2NzQxRDExMzgzODAwMTI3MDBG
IC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNzcwNjczMUQxMTFEOEIwMDEyNzAwRiAvKiBXZWJTb2NrZXRQcm92
aWRlci5jcHAgKi87IH07CiAJCTVDNzk0MzlCMUQ3NjJENjIwMDMxMDJENCAvKiBXZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM3OTQzOUExRDc2MkNERjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2Eu
bW0gKi87IH07CiAJCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4NUM3
ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi87IH07CisJCTVDOUU1
NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTY4MDFERjdGMDU1MDBDOUVF
MzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovOyB9OworCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQ
b2xpY2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4QTFERjBE
RDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICovOyB9OworCQk1Q0IyMzc4QzFE
RjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCAqLzsgfTsKKwkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0IyMzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLzsgfTsK
KwkJNUNCMjM3OTIxREYwRTJFRTAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEYxREYwRTFC
ODAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovOyB9OwogCQk1Q0JDOUI4RDFDNjUy
NzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2su
aCAqLzsgfTsKIAkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQz
MDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLzsgfTsKQEAgLTMxOTIsNiArMzE5OSwxNCBAQAogCQk1
Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OERDMUQwRjQxQTAwMDlE
MkY2RCAvKiBXZWJTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJTb2NrZXRQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0
RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5
RTU2N0YxREY3OTMwOTAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGlj
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RTU2ODExREY3RjA1NTAw
QzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tXZWJzaXRlUG9saWNpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIz
NzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IyMzc4RjFERjBFMUI4MDAxMTdBQTMg
LyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Iy
Mzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3
b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Rh
dGFUYXNrLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNF
ODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBpbmdMb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwOSw2ICs0NzI0LDcgQEAKIAkJCQkz
NzYwODgxRDE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi8sCiAJCQkJODM2
MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8s
CiAJCQkJODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oICovLAorCQkJCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMu
aCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAg
Ki8sCiAJCQkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8sCiAJCQkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovLApAQCAtNTI4MSw2ICs1Mjk3LDkg
QEAKIAkJCQkxQUUyODY3NjFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLmgg
Ki8sCiAJCQkJMUFFMjg2NzUxQzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5t
bSAqLywKIAkJCQkxQUUyODY3RjFDN0Y5MkJGMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXpl
SW50ZXJuYWwuaCAqLywKKwkJCQk1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0
ZVBvbGljaWVzLmggKi8sCisJCQkJNUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNp
dGVQb2xpY2llcy5tbSAqLywKKwkJCQk1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0Yg
LyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCiAJCQkJN0NFRkE5NjAxQUMw
OTk5MzAwQjkxMEZEIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVDb2NvYS5tbSAqLywK
IAkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tICovLApAQCAtNjM2Niw2ICs2Mzg1LDggQEAKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFD
NEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBF
RDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRB
MzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKKwkJCQk1Q0IyMzc5MDFERjBF
MUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1Q0IyMzc4RjFE
RjBFMUI4MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIx
QjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKIAkJCQkxQTY1NjNF
MzFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCAqLywKIAkJCSk7CkBAIC02
NTAxLDYgKzY1MjIsOCBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJT
Y3JpcHRSZWYuaCAqLywKIAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmggKi8sCisJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8q
IFdLV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMg
LyogV0tXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTdDMERGNDFCN0QxRjEwMDBBOUI4NDgg
LyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgKi8sCiAJCQkJMUE3QzBERjUxQjdEMUYxMDAwQTlC
ODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuaCAqLywKIAkJCSk7CkBAIC03NzUyLDYgKzc3NzUs
NyBAQAogCQkJCTFBQzc1QTFCMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0ND
MDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IyMzc5MjFE
RjBFMkVFMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVk
QnVuZGxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTgsNiArODA4Miw3IEBACiAJCQkJNTE4MzQ1
OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjIzNzhDMURGMERFNkUw
MDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAy
RjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTA1MjM3MDFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkz
Q0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtODI2MCw2ICs4Mjg1LDcgQEAKIAkJCQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0QgLyogV0tE
ZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzJEQjJGMUE2NzdE
NEEwMEM2OTdDNSAvKiBXS0RpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM0MDc1RkExMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwNzE2MjYwRkY0MDA3MDU0
RjUgLyogV0tET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMDkxNjI2MEZG
NDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEIx
NjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTg0
NzMsNiArODQ5OSw3IEBACiAJCQkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0QxMjJEMThB
NEI2RUIwMDY2RDlDQyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGNzUwNkIyMTg1OTE2M0UwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI3
MTg1OTE2NUEwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1MTYxQTk4OTAwMDBENDZEMyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzMzVCQzAxODVC
ODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC05Mjg1LDYgKzkzMTIsNyBAQAogCQkJCTMxRUEyNUQyMTM0Rjc4QzAwMDVCMTQ1
MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0
OUYxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERjU4QzYzNjEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQURDQjg2QTE4OTgzMUIz
MDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCQzNERjUxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkzMjMsNiArOTM1MSw3IEBACiAJCQkJNTE3Q0YwRTMx
NjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjZFQzFDMjNGODA5MDBENDExODMgLyogTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRB
OTQ0QkQxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQzQjYgLyogTmV0d29y
a1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJG
MDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUwOSw2ICs5NTM4LDcgQEAKIAkJCQk3MjhF
ODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzRBQkVEMDFBQThFOUYwMDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEFCRUQ0MUFBOEZDQjgwMDg4QUEzNyAv
KiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDOUU1NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29u
bmVjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3MDA3
MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1lLmg+CkBA
IC04MDcsMTEgKzgwOCwxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgUmVmPFdlYkZyYW1lPiBwcm90
ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZSogb3JpZ2luYXRpbmdDb3JlRnJhbWUg
PSBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxs
cHRyOwotICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUgPyBvcmln
aW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShvcmlnaW5hdGluZ0NvcmVGcmFtZSksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5
KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93
bmxvYWRJRCkpKSB7CisgICAgV2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llczsKKyAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCks
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFt
ZS0+ZnJhbWVJRCgpIDogMCwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUob3JpZ2luYXRp
bmdDb3JlRnJhbWUpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBv
bGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdl
YnNpdGVQb2xpY2llcykpKSB7CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkIGlm
IGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gc2V0IGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMuCisgICAgaWYgKCFkb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25z
RGlzYWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5z
aW9uc0Rpc2FibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCk7CisK
ICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90
IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2
aWdhdGlvbiBwb2xpY3kgcmVwbHkuCiAgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQogICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGlj
X2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25s
b2FkSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAgICAgbV9wYWdlLT5zZXRE
ZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlbG9hZCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVy
KHRoaXMpOwogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklE
OwogCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUu
Z2V0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1
dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVsb2FkRnJv
bU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29yZVBhZ2UoKS0+dXNlcklu
cHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRG
cm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Z29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVt
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNDIsNyArMTA0Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNv
cmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50
KTsKLSAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJv
bU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJv
b2wgcmVsb2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0Zv
cndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2so
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBOYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVu
dFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAotICAgIFJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQorICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVs
b2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNEaXNhYmxl
ZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKICAgICBTdG9wTG9hZGluZygpCiAKICAgICBTdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDk0NTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMi0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIHNlbmRpbmcgV2Vic2l0ZVNl
dHRpbmdzIHRvIFdlYlByb2Nlc3MgZHVyaW5nIG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUxNworICAgICAgICA8cmRhcjovLzI5
MzQxMDY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hl
Y2suaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvV2Vic2l0ZVBvbGljaWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVz
RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dlYnNpdGVQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoVEVTVCk6CisKIDIwMTYtMTItMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBTREtST09UIHZhbHVlcyBpbiB4Y2NvbmZpZyBm
aWxlcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAKIAkJNUM5RTU5NDExRDNFQjVBQzAw
RTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFw
cGxpY2F0aW9uQ2FjaGUuZGIgKi87IH07CiAJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYyRSAvKiBB
cHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTkzRjFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRp
b25DYWNoZS5kYi1zaG0gKi87IH07CiAJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBs
aWNhdGlvbkNhY2hlLmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25D
YWNoZS5kYi13YWwgKi87IH07CisJCTVDQ0U5N0YxMURGNjBEQ0QwMDlDMDBGNyAvKiBXZWJzaXRl
UG9saWNpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NFOTdGMDFERjYwRDhFMDA5QzAwRjcgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovOyB9Owor
CQk1Q0NFOTdGMzFERjYyNDQ0MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0U5
N0YyMURGNjIzRjYwMDlDMDBGNyAvKiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgKi87IH07CiAJ
CTVFNEIxRDJFMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0QjFEMkMx
RDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0gKi87IH07CiAJ
CTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0
RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovOyB9OwogCQk3NjQzMjJENzFCNjFDQ0MzMDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAv
KiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9OwpAQCAtNTgzLDYgKzU4NSw3
IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTVDQ0U5N0YzMURGNjI0NDQwMDlDMDBGNyAv
KiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIy
NzBGRUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8qIGVub3Jt
b3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5
RDNDNDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtOTc3LDYgKzk4MCw4IEBACiAJCTVDOUU1OTNFMUQz
RUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IEFwcGxpY2F0aW9uQ2Fj
aGUuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1OTNGMUQzRUIxREUwMEUz
QzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQXBwbGljYXRpb25DYWNoZS5k
Yi1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTk0MDFEM0VCMURFMDBF
M0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkFwcGxpY2F0aW9uQ2FjaGUu
ZGItd2FsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRTk3RjAxREY2MEQ4RTAw
OUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDRTk3RjIxREY2MjNGNjAwOUMwMEY3IC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9IGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbDsg
cGF0aCA9IFRlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVjay5odG1sOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CiAJCTVFNEIxRDJDMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9s
bFZpZXdEZWxlZ2F0ZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbTsgcGF0aCA9IC4uL2lvcy9XS1Njcm9s
bFZpZXdEZWxlZ2F0ZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTYw
OTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZUFkZElt
YWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVGMzEzM0Yx
OEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ3MCw2ICsxNDc1LDcgQEAKIAkJCQk3Q0NCOTkyMDFEM0I0MUY2MDAzOTIy
RjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbSAqLywKIAkJCQk5
M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9Db250cm9sc01hbmFnZXIubW0gKi8sCiAJ
CQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5t
bSAqLywKKwkJCQk1Q0NFOTdGMDFERjYwRDhFMDA5QzAwRjcgLyogV2Vic2l0ZVBvbGljaWVzLm1t
ICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5t
bSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywK
IAkJCQkzN0I0N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8sCkBAIC0xNTY3
LDYgKzE1NzMsNyBAQAogCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0NFOTdGMjFE
RjYyM0Y2MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sICovLAogCQkJCUY0QzJB
QjIxMURENkQ5NDEwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgKi8s
CiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRt
bCAqLywKIAkJCQlGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1u
b3ctcGxheWluZy5odG1sICovLApAQCAtMjQ2MSw2ICsyNDY4LDcgQEAKIAkJCQkzNzVFMEUxNzFE
NjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNF
MEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNUNDRTk3RjExREY2MERDRDAwOUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRl
clNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBBNjUw
NzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9j
b250ZW50QmxvY2tlckNoZWNrLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgICAgIGZ1bmN0aW9uIHNlbmRNZXNzYWdlKCkgeyBhbGVydChnZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW4iKSkuZGlzcGxheSA9PSAibm9uZSIg
PyAiY29udGVudCBibG9ja2VycyBlbmFibGVkIiA6ImNvbnRlbnQgYmxvY2tlcnMgZGlzYWJsZWQi
KTsgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJz
ZW5kTWVzc2FnZSgpIj4KKyAgICAgICAgPHAgY2xhc3M9ImhpZGRlbiI+CisgICAgICAgICAgICBU
aGlzIHRleHQgc2hvdWxkIGFjdHVhbGx5IGJlIHZpc2libGUgaW4gc3BpdGUgb2YgdGhlIGNvbnRl
bnQgYmxvY2tlcgorICAgICAgICAgICAgYmVjYXVzZSBjb250ZW50IGJsb2NrZXJzIHNob3VsZCBi
ZSBkaXNhYmxlZC4KKyAgICAgICAgPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVQb2xpY2llcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgZG9uZUNvbXBpbGluZzsKK3N0
YXRpYyBib29sIHJlY2VpdmVkQWxlcnQ7CitzdGF0aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CisKK0Bp
bnRlcmZhY2UgV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYnNpdGVQ
b2xpY2llc0RlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICAvLyBfd2ViVmlldzpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjogc2hvdWxkIGJlIGNhbGxlZCBpbnN0
ZWFkIGlmIGl0IGlzIGltcGxlbWVudGVkLgorICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxX
aXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJ
bmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgc3dpdGNoIChhbGVydENvdW50KyspIHsKKyAgICBjYXNlIDA6CisgICAg
ICAgIC8vIEZJWE1FOiBUaGUgZmlyc3QgY29udGVudCBibG9ja2VyIHNob3VsZCBiZSBlbmFibGVk
IGhlcmUuCisgICAgICAgIC8vIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWRkQ29udGVudEV4
dGVuc2lvbiBpc24ndCBiZWluZyBjYWxsZWQgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLy8g
dW50aWwgYWZ0ZXIgdGhlIGZpcnN0IG1haW4gcmVzb3VyY2Ugc3RhcnRzIGxvYWRpbmcsIHNvIHdl
IG5lZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIC8vIFdlYlByb2Nlc3MgYmVm
b3JlIGxvYWRpbmcgaWYgd2UgaGF2ZSBpbnN0YWxsZWQgY29udGVudCBibG9ja2Vycy4KKyAgICAg
ICAgLy8gU2VlIHJkYXI6Ly9wcm9ibGVtLzI3Nzg4NzU1CisgICAgICAgIEVYUEVDVF9TVFJFUSgi
Y29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvci4KKyAgICAg
ICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGVuYWJsZWQiLCBtZXNzYWdlLlVURjhT
dHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8vIEFmdGVyIGhh
dmluZyBzZXQgd2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkIHRvIHRydWUu
CisgICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3Nh
Z2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgLy8g
QWZ0ZXIgaGF2aW5nIHJlbG9hZGVkIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KKyAgICAgICAg
RVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRpc2FibGVkIiwgbWVzc2FnZS5VVEY4U3Ry
aW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVhQRUNUX1RSVUUo
ZmFsc2UpOworICAgIH0KKyAgICByZWNlaXZlZEFsZXJ0ID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmln
YXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfV0tX
ZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHN3aXRjaCAoYWxlcnRDb3VudCkgeworICAg
IGNhc2UgMDoKKyAgICAgICAgLy8gVmVyaWZ5IGFuIGV4aXN0aW5nIGJ1ZyB0aGUgZmlyc3QgdGlt
ZSBhIHBhZ2UgaXMgbG9hZGVkIGluIGEgbmV3IFdlYlByb2Nlc3MuCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMToKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBjb250ZW50IGJsb2NrZXJzIGJlaGF2
ZSBjb3JyZWN0bHkgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICAvLyBWZXJpZnkgZGlzYWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMg
d29ya3MgY29ycmVjdGx5LgorICAgICAgICB3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJz
RGlzYWJsZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIC8v
IFZlcmlmeSBlbmFibGluZyBjb250ZW50IGJsb2NrZXJzIGhhcyBubyBlZmZlY3Qgd2hlbiByZWxv
YWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgICAgICB3ZWJzaXRlUG9saWNpZXMu
Y29udGVudEJsb2NrZXJzRGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIH0KKyAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7Cit9
CisKK0BlbmQKKworVEVTVChXZWJLaXQyLCBXZWJzaXRlUG9saWNpZXNDb250ZW50QmxvY2tlcnNE
aXNhYmxlZCkKK3sKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0
b3JlXSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOworCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKwor
ICAgIGRvbmVDb21waWxpbmcgPSBmYWxzZTsKKyAgICBOU1N0cmluZyogY29udGVudEJsb2NrZXIg
PSBAIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rv
clwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKlwifX1dIjsK
KyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBjb21waWxl
Q29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJXZWJzaXRlUG9saWNpZXNUZXN0IiBlbmNv
ZGVkQ29udGVudEV4dGVuc2lvbjpjb250ZW50QmxvY2tlciBjb21wbGV0aW9uSGFuZGxlcjpeKF9X
S1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGVycm9yID09IG5pbCk7CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIF9hZGRVc2VyQ29udGVudEZpbHRlcjpmaWx0ZXJdOworICAgICAgICBk
b25lQ29tcGlsaW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmVDb21waWxpbmcpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiY29udGVudEJsb2NrZXJDaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIGFsZXJ0
Q291bnQgPSAwOworICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
QWxlcnQpOworCisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlbG9h
ZF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKKworICAg
IHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICByZWNlaXZlZEFsZXJ0
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICBbW19X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfcmVtb3ZlQWxsQ29udGVu
dEV4dGVuc2lvbnNdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296385</attachid>
            <date>2016-12-07 01:11:45 -0800</date>
            <delta_ts>2016-12-07 10:19:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165517-20161207011104.patch</filename>
            <type>text/plain</type>
            <size>106994</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEyLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBkdXJpbmcgbmF2aWdhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTE3
CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgYWRkIHRoZSBhYmlsaXR5IGZvciB0aGUgbmF2aWdhdGlv
biBjbGllbnQgdG8gc2VuZCBzZXR0aW5ncyB0byB0aGUgV2ViUHJvY2VzcyAKKyAgICAgICAgYmFz
ZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgbmF2aWdhdGVkIHRvLiBUaGlzIGFw
cHJvYWNoIGFkZHMgbm8gbmV3IElQQyAKKyAgICAgICAgbWVzc2FnZXMgYW5kIGFsbG93cyB0aGUg
YXBwbGljYXRpb24gdG8gZGVjaWRlIHdoYXQgc2V0dGluZ3MgdG8gdXNlIGR1cmluZyBuYXZpZ2F0
aW9uIAorICAgICAgICBpbnN0ZWFkIG9mIGRlY2xhcmF0aXZlbHkgYmVmb3JlIG5hdmlnYXRpb24u
IFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBzZXR0aW5nLCAKKyAgICAgICAgd2hldGhlciB0
byBkaXNhYmxlIGNvbnRlbnQgYmxvY2tlcnMsIGJ1dCB0aGlzIGluZnJhc3RydWN0dXJlIGNhbiBi
ZSB1c2VkIGZvciBtb3JlIHNldHRpbmdzLgorCisgICAgICAgIEluIG9yZGVyIHRvIG5vdCBjb25m
bGljdCB3aXRoIHRoZSBleGlzdGluZyBhYmlsaXR5IHRvIHJlbG9hZCB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMsIAorICAgICAgICBvbmx5IHNldCB0aGUgYm9vbCAod2hpY2ggaXMgbm93IGEgc3Rk
OjpvcHRpb25hbDxib29sPiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIGl0J3MgYWxyZWFkeSBiZWVu
IHNldCkKKyAgICAgICAgb24gdGhlIERvY3VtZW50TG9hZGVyIGRpc2FibGluZyBjb250ZW50IGJs
b2NrZXJzIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHNldCBieSByZWxvYWRpbmcKKyAgICAg
ICAgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6dXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlk
ZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50UHJvdmlkZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGVudEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1
dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKwogMjAxNi0xMi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFVzZSB0YXAgYW5kIHBpbmNoIGdlc3R1cmVz
IG9uIGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzEsOCArMjMxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExv
YWRpbmdQbHVnSW5zKCk7CiAgICAgdm9pZCBzdG9wTG9hZGluZ1N1YnJlc291cmNlcygpOwogCi0g
ICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VyQ29udGVudEV4
dGVuc2lvbnNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25z
RGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzYWJsZWQpIHsgbV91c2VyQ29udGVudEV4dGVuc2lvbnNEaXNh
YmxlZCA9IGRpc2FibGVkOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlTG9hZGVyKFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxv
YWRlciopOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+PiBtX3BlbmRpbmdOYW1lZENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIHVpbnQzMl90Pj4+IG1fcGVuZGluZ0NvbnRlbnRFeHRlbnNpb25EaXNwbGF5Tm9uZVNlbGVj
dG9yczsKICNlbmRpZgotICAgIGJvb2wgbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIHsg
dHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNE
aXNhYmxlZDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faGFzRXZlckJlZW5BdHRhY2hl
ZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NjIsNyArMTU2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tl
cnNEaXNhYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVu
ZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JV
UkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwor
ICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoY29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRl
ci0+cmVxdWVzdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSA9IG51bGxBdG9tKTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3Jt
U3VibWlzc2lvbj4pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRU
b0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFs
c2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwogCiAgICAgdm9pZCBvcGVuKENhY2hl
ZEZyYW1lQmFzZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJv
dmlkZXIuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwyMSArODgsMjQgQEAgdm9p
ZCBVc2VyQ29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlSW5qZQogfQogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBib29sIGNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChj
b25zdCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCitzdGF0aWMgYm9vbCBjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKGNvbnN0IERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikK
IHsKICAgICBpZiAoYXV0byBmcmFtZSA9IGRvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZTsKICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQoKTsKLSAgICAgICAgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVyID0g
ZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbWFpbkRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVk
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5z
aW9uc0Rpc2FibGVkKCk7CisgICAgICAgIGVsc2UgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IG1haW5Eb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRGlz
YWJsZWQoKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuICp2YWx1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBD
b250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBVc2VyQ29udGVudFByb3ZpZGVyOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRl
cikKIHsKLSAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9jdW1l
bnRMb2FkZXIpKQorICAgIGlmIChjb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcikpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdXNlckNv
bnRlbnRFeHRlbnNpb25CYWNrZW5kKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zvckxv
YWQodXJsLCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CkBAIC0xMTAs
NyArMTEzLDcgQEAgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgVXNlckNvbgogCiBW
ZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0
aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJ
bmZvLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewotICAgIGlm
ICghY29udGVudEV4dGVuc2lvbnNFbmFibGVkKGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikpCisg
ICAgaWYgKGNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIw
OTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBVc2VySW5wdXRCcmlkZ2U6OmxvYWRS
ZXF1ZXN0KGNvbnN0IAogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVl
c3QpOwogfQogCi12b2lkIFVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUoRnJhbWUqIGZyYW1l
LCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0
U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwg
Ym9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZChlbmRU
b0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgZnJhbWUtPmxvYWRlcigp
LnJlbG9hZChlbmRUb0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2
b2lkIFVzZXJJbnB1dEJyaWRnZTo6c3RvcExvYWRpbmdGcmFtZShGcmFtZSogZnJhbWUsIElucHV0
U291cmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxUeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtODgsNyArODks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ug
c291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVs
b2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBJbnB1dFNvdXJjZSA9IElu
cHV0U291cmNlOjpVc2VyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMb2FkaW5nRnJh
bWUoRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2Ugc291cmNlID0gSW5w
dXRTb3VyY2U6OlVzZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDAgQEAK
KzIwMTYtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgU1BJIGZvciBzZW5kaW5nIFdlYnNpdGVTZXR0aW5ncyB0byBXZWJQcm9j
ZXNzIGR1cmluZyBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU1MTcKKyAgICAgICAgPHJkYXI6Ly8yOTM0MTA2OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJ
T2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzOjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVQb2xpY2llczo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UpOgorICAgICAgICAoV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZWxv
YWQpOgorICAgICAgICAoV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vycyk6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNT
ZXRDb250ZW50QmxvY2tlcnNEaXNhYmxlZCk6CisgICAgICAgIChXS1dlYnNpdGVQb2xpY2llc0dl
dENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciByZWxvYWRdKToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dL
V2Vic2l0ZVBvbGljaWVzIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IHNldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9s
aWNpZXMgY29udGVudEJsb2NrZXJzRGlzYWJsZWRdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBv
bGljaWVzIGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBMaW5rKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHk6OmNvbnRpbnVlU3VibWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk6OnVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eTo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk6Omlnbm9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
Ni0xMi0wNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjA5NDIyLgpJbmRleDogU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC00NzMsNiArNDc0LDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2luZG93RmVhdHVyZXNSZWYuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYg
KzIyMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTaXplLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0K
IAogICAgIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgV2Vic2l0ZVBvbGljaWVzIHsKKworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQg
eyBmYWxzZSB9OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYnNpdGVQb2xpY2llcyYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQ7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgV2Vic2l0ZVBvbGljaWVzJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY29udGVudEJsb2NrZXJzRGlzYWJsZWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpdGVkTGlua1N0b3JlLAog
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAg
ICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KgogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJy
YXRpb24qIFdLVmlicmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3
cG9ydEF0dHJpYnV0ZXMqIFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9s
aWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBX
S1dpbmRvd0ZlYXR1cmVzUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNz
aW9uTGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmgiCiAKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXMuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqIGZyYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMzUsNyArMzcsNyBAQCBXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHk6OldlYkZvcm1TCiAKIHZvaWQgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5Ojpjb250aW51ZVN1Ym1pc3Npb24oKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6UG9saWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeVVzZSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNw
cAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
TGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQCB2b2lk
IFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgbV9mcmFtZSA9IG51bGxw
dHI7CiB9CiAKLXZvaWQgV2ViRnJhbWVMaXN0ZW5lclByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24pCit2b2lkIFdlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9u
KGFjdGlvbiwgbV9saXN0ZW5lcklELCBtX25hdmlnYXRpb24uZ2V0KCkpOworICAgIG1fZnJhbWUt
PnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICBtX2ZyYW1lID0gbnVsbHB0
cjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxp
c3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJGcmFtZUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCkBAIC0zNiw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViRnJhbWVQcm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIGNsYXNzIFdlYkZyYW1l
TGlzdGVuZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdCB7CiBwdWJsaWM6CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxpc3RlbmVyUHJveHkoV2Vi
RnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCi0gICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbik7CisgICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2Vic2l0ZVBvbGljaWVzJiYpOwog
CiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZyYW1lOwpAQCAtNTksNSAr
NTksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC0zNSwxOSArMzYsMTkgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpXZWJGcmFt
ZVBvbAogewogfQogCi12b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKCkKK3Zv
aWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojp1c2UoV2Vic2l0ZVBvbGljaWVzJiYgd2Vi
aXN0ZVBvbGljaWVzKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeVVzZSwg
V1RGTW92ZSh3ZWJpc3RlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk6OmRvd25sb2FkKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeURvd25sb2FkKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeURvd25sb2FkLCB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eTo6aWdub3JlKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUlnbm9yZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lJ
Z25vcmUsIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIK
IApAQCAtNDAsMTIgKzM5LDEyIEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSA6
IHB1YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZTo6RnJh
bWVQb2xpY3lMaXN0ZW5lcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQorICAgIHN0YXRpYyBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBjcmVh
dGUoV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eShmcmFt
ZSwgbGlzdGVuZXJJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpKTsKICAgICB9CiAKLSAgICB2b2lk
IHVzZSgpOworICAgIHZvaWQgdXNlKFdlYnNpdGVQb2xpY2llcyYmKTsKICAgICB2b2lkIGRvd25s
b2FkKCk7CiAgICAgdm9pZCBpZ25vcmUoKTsKIApAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9f
Q09DT0EKLQotI2VuZGlmIC8vIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hh
bmdlVGl0bGUoY29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24pCit2b2lk
IFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2FjdGl2ZUxpc3RlbmVyKTsKICAg
ICBBU1NFUlQobV9hY3RpdmVMaXN0ZW5lci0+bGlzdGVuZXJJRCgpID09IGxpc3RlbmVySUQpOwot
ICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIHRoaXMsIGxpc3RlbmVy
SUQsIG5hdmlnYXRpb24pOworICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rp
b24sICp0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cykpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZyYW1lUHJveHk6OnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMjUwLDggKzI1
MCw3IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBtX2Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29s
IHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjb25z
dCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICBwYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgICAgICAgICBw
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFtZVByb3h5X2gK
LSNkZWZpbmUgV2ViRnJhbWVQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFN0YXRlLmgiCkBAIC01Myw2ICs1Miw3IEBAIGNs
YXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5
IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiA9IG51bGxw
dHIpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIFdlYnNpdGVQb2xpY2ll
cyYmKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIHNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkmIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KHVpbnQ2NF90IGxpc3Rl
bmVySUQpOwogCkBAIC0xNDksNSArMTQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViRnJhbWVQcm94eV9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0CiAgICAgLy8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRl
IGFueXdoZXJlLgogICAgIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSA9IHRvSW1wbChuYXZp
Z2F0aW9uQWN0aW9uUmVmKS0+c291cmNlRnJhbWUoKTsKICAgICBpZiAoc291cmNlRnJhbWUgJiYg
IXNvdXJjZUZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5lclJl
ZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3QKIAogICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1h
aW4gaW5zcGVjdG9yIGZpbGUuCiAgICAgaWYgKFdlYkluc3BlY3RvclByb3h5Ojppc01haW5PclRl
c3RJbnNwZWN0b3JQYWdlKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5l
clJlZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc0LDcgKzExNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFdl
YnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI5NCwxMCArMjI5NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTM2MTAsNyArMzYxMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UKICAgICAgICAgbV9mcmFtZVNl
dExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJhbWUgOiAwOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wm
IHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRf
dCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNl
aXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBv
bGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBvbGljaWVzJiB3ZWJz
aXRlUG9saWNpZXMpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIApAQCAtMzY3OCw2ICszNjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0
aW9uSXNWYWxpZCkgewogICAgICAgICBwb2xpY3lBY3Rpb24gPSBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWN0aW9uOwogICAgICAgICBkb3dubG9hZElEID0gbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeURvd25sb2FkSUQ7CisgICAgICAgIHdlYnNpdGVQb2xpY2llcyA9IG1fc3luY05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1l
VHJhY2tlci5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CkBAIC0zOTAsNyArMzkxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJl
bG9hZEZyb21PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRGlzYWJs
ZWQpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CkBAIC04MDMsNyArODA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsK
ICNlbmRpZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5JiwgdWludDY0X3QgbGlzdGVuZXJJRCwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uSUQsIFdlYnNpdGVQb2xpY2llcyYmKTsKIAogICAg
IHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwogCkBAIC0xMjQy
LDcgKzEyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdh
dGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7CisgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5h
dGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3du
bG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERv
d25sb2FkSUQmKTsKQEAgLTE3NjMsNiArMTc2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKICAgICBEb3dubG9h
ZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAgIFdlYnNpdGVQ
b2xpY2llcyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOwogICAg
IGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBt
ZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCi0g
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2
aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luYXRpbmdGcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQ
b2xpY2llcykKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSU5hdmlnYXRpb25DbGll
bnRfaAotI2RlZmluZSBBUElOYXZpZ2F0aW9uQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRl
ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTk1LDEyICs5NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgp
OworICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0
ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9CiAgICAgCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMTcsNSArMTE3LDMgQEAgcHVibGlj
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElOYXZpZ2F0aW9uQ2xp
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwg
QVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8V2ViS2l0OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7
Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCwgUmVm
PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9i
amVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVy
LT51c2UoeyB9KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CiB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
KworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2ll
czo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlUG9saWNpZXMo
KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCituYW1lc3BhY2UgQVBJIHsKKworY2xh
c3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpXZWJzaXRlUG9saWNpZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVQb2xp
Y2llcz4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+V2Vic2l0ZVBvbGljaWVzKCkgPSBkZWZhdWx0
OworICAgIAorICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZDsgfQorICAgIHZvaWQg
c2V0Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkgeyBtX3dlYnNpdGVQb2xp
Y2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IGRpc2FibGVkOyB9CisgICAgCisgICAgY29u
c3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcygpIHsgcmV0dXJuIG1f
d2Vic2l0ZVBvbGljaWVzOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYnNpdGVQb2xpY2llcygp
ID0gZGVmYXVsdDsKKyAgICAKKyAgICBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyBtX3dlYnNpdGVQ
b2xpY2llczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQCBjbGFz
cyBVc2VyQ29udGVudEV4dGVuc2lvbjsKIGNsYXNzIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU7
CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKK2NsYXNzIFdlYnNp
dGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xMTAsNiArMTExLDcg
QEAgY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTsKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1
dGVzOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYsIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcikKQEAgLTE2NSw2ICsxNjcsNyBAQCBXS19BRERf
QVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6CiBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmll
d3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBBUEk6OldlYnNpdGVEYXRhU3RvcmUpCitXS19B
RERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6V2luZG93RmVh
dHVyZXMpCiAKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAorI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1l
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIApAQCAtMzksNyArNDEsMTIgQEAgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3Rl
bmVyR2V0VHlwZUlEKAogCiB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXJSZWYpCiB7Ci0gICAgdG9JbXBsKHBvbGljeUxp
c3RlbmVyUmVmKS0+dXNlKCk7CisgICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+dXNlKHsg
fSk7Cit9CisKK3ZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXRlUG9saWNpZXNS
ZWYgd2Vic2l0ZVBvbGljaWVzKQoreworICAgIHRvSW1wbChwb2xpY3lMaXN0ZW5lclJlZiktPnVz
ZSh7dG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPndlYnNpdGVQb2xpY2llcygpLmNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkfSk7CiB9CiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJfaAotI2RlZmluZSBXS0ZyYW1lUG9saWN5TGlzdGVuZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAgLTM0LDEyICszMywxMSBA
QCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
ckdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2Uo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKLVdLX0VYUE9SVCB2b2lk
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBw
b2xpY3lMaXN0ZW5lcik7Ci1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25v
cmUoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKK1dLX0VYUE9SVCB2
b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOwor
V0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9y
ZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJz
aXRlUG9saWNpZXNSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5k
aWYgLyogV0tGcmFtZVBvbGljeUxpc3RlbmVyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDIy
ICsyNDIsMjAgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZVJlZgogdm9p
ZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxv
YWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChy
ZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250
ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRG
cm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
ID0gZmFsc2U7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiBj
b250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IHRydWU7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxv
YWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2b2lk
IFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3Qg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZEZy
b21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2Uo
V0tQYWdlUmVmIHBhZ2VSZWYpCkBAIC0xMzQ4LDcgKzEzNDYsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1l
UHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIApAQCAtMTM2Niw3ICsxMzY0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xMzc4LDcgKzEzNzYsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7
CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS1dlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBv
bGljaWVzLmgiCisKK1dLVHlwZUlEIFdLV2Vic2l0ZVBvbGljaWVzR2V0VHlwZUlEKCkKK3sKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSShBUEk6OldlYnNpdGVQb2xpY2llczo6QVBJVHlwZSk7Cit9
CisKK1dLV2Vic2l0ZVBvbGljaWVzUmVmIFdLV2Vic2l0ZVBvbGljaWVzQ3JlYXRlKCkKK3sKKyAg
ICByZXR1cm4gV2ViS2l0Ojp0b0FQSSgmQVBJOjpXZWJzaXRlUG9saWNpZXM6OmNyZWF0ZSgpLmxl
YWtSZWYoKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlUG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNE
aXNhYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9saWNpZXMsIGJvb2wgZGlzYWJs
ZWQpCit7CisgICAgV2ViS2l0Ojp0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+c2V0Q29udGVudEJs
b2NrZXJzRGlzYWJsZWQoZGlzYWJsZWQpOworfQorCitib29sIFdLV2Vic2l0ZVBvbGljaWVzR2V0
Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBvbGlj
aWVzKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5jb250
ZW50QmxvY2tlcnNEaXNhYmxlZCgpOworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSA8V2ViS2l0L1dLQmFzZS5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIg
eworI2VuZGlmCisKK1dLX0VYUE9SVCBXS1R5cGVJRCBXS1dlYnNpdGVQb2xpY2llc0dldFR5cGVJ
RCgpOworCitXS19FWFBPUlQgV0tXZWJzaXRlUG9saWNpZXNSZWYgV0tXZWJzaXRlUG9saWNpZXND
cmVhdGUoKTsKKworV0tfRVhQT1JUIGJvb2wgV0tXZWJzaXRlUG9saWNpZXNHZXRDb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1dl
YnNpdGVQb2xpY2llc1NldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKFdLV2Vic2l0ZVBvbGljaWVz
UmVmLCBib29sKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVy
Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tC
cm93c2luZ0NvbnRleHRDb250cm9sbGVyLm1tCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5t
bQkod29ya2luZyBjb3B5KQpAQCAtMTg4LDE1ICsxODgsMTMgQEAgLSAodm9pZClzdG9wTG9hZGlu
ZwogLSAodm9pZClyZWxvYWQKIHsKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBm
YWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAg
IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7
CisgICAgX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiAtICh2b2lk
KXJlbG9hZEZyb21PcmlnaW4KIHsKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0
cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAg
X3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsK
KyAgICBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIC0gKE5TU3Ry
aW5nICopYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVs
ZWdhdGVQcml2YXRlLmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMxLDYgKzMxLDggQEAKIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKK0BjbGFzcyBfV0tX
ZWJzaXRlUG9saWNpZXM7CisKIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kg
X1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkID0gKFdLTmF2aWdhdGlvbkFjdGlvblBv
bGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAxKTsKIHN0YXRpYyBjb25zdCBX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTEpLCBp
b3MoOS4wKSkgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93V2l0aG91dFRyeWluZ0FwcExp
bmsgPSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdyArIDIpOwogCkBAIC02Myw2ICs2NSw3IEBAIHN0YXRpYyBjb25zdCBXS05hdmlnYXRpb25S
ZXNwb25zZVBvbGljeSAKIC0gKHZvaWQpX3dlYlZpZXdXaWxsRW5kTmF2aWdhdGlvbkdlc3R1cmU6
KFdLV2ViVmlldyAqKXdlYlZpZXcgd2l0aE5hdmlnYXRpb25Ub0JhY2tGb3J3YXJkTGlzdEl0ZW06
KFdLQmFja0ZvcndhcmRMaXN0SXRlbSAqKWl0ZW07CiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHdpbGxTbmFwc2hvdEJhY2tGb3J3YXJkTGlzdEl0ZW06KFdLQmFja0Zvcndh
cmRMaXN0SXRlbSAqKWl0ZW07CiAtICh2b2lkKV93ZWJWaWV3RGlkUmVtb3ZlTmF2aWdhdGlvbkdl
c3R1cmVTbmFwc2hvdDooV0tXZWJWaWV3ICopd2ViVmlldyBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMiksIGlvcygxMC4wKSk7CistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJW
aWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAq
KW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKICNpZiBU
QVJHRVRfT1NfSVBIT05FCiAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRp
ZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJhbWVXaXRoRmlsZU5hbWU6KE5T
U3RyaW5nICopZmlsZU5hbWUgdXRpOihOU1N0cmluZyAqKXV0aTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQko
d29ya2luZyBjb3B5KQpAQCAtODE1LDggKzgxNSw3IEBAIC0gKFdLTmF2aWdhdGlvbiAqKWdvRm9y
d2FyZAogLSAoV0tOYXZpZ2F0aW9uICopcmVsb2FkCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRG
cm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
ID0gdHJ1ZTsKLSAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21P
cmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9w
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKICAgICBpZiAoIW5hdmlnYXRpb24p
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTgyNiw4ICs4MjUsNyBAQCAtIChXS05hdmlnYXRp
b24gKilyZWxvYWQKIC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZEZyb21PcmlnaW4KIHsKICAgICBj
b25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSB0cnVlOwotICAgIGNvbnN0IGJvb2wgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJl
bG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBhdXRv
IG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiAgICAg
aWYgKCFuYXZpZ2F0aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogCkBAIC0zMzc4LDggKzMzNzYs
OCBAQCAtICh2b2lkKV9raWxsV2ViQ29udGVudFByb2Nlc3MKIC0gKFdLTmF2aWdhdGlvbiAqKV9y
ZWxvYWRXaXRob3V0Q29udGVudEJsb2NrZXJzCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRGcm9t
T3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0g
ZmFsc2U7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3Jp
Z2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkID0gdHJ1ZTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+cmVsb2Fk
KHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKTsKICAgICBpZiAoIW5h
dmlnYXRpb24pCiAgICAgICAgIHJldHVybiBuaWw7CiAgICAgCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgJ
KG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDM3IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCisjaWYgV0tfQVBJX0VOQUJM
RUQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKQorQGludGVyZmFjZSBfV0tXZWJzaXRlUG9saWNpZXMgOiBOU09iamVjdAorCitAcHJvcGVy
dHkgKG5vbmF0b21pYykgQk9PTCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZDsKKworQGVuZAorCisj
ZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGlj
aWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1w
b3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gX1dLV2Vic2l0ZVBvbGljaWVz
CisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF93ZWJzaXRlUG9saWNpZXMtPkFQSTo6V2Vic2l0
ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCk7CisgICAgCisgICAgW3N1cGVyIGRlYWxsb2Nd
OworfQorCistICh2b2lkKXNldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkOihCT09MKWNvbnRlbnRC
bG9ja2Vyc0Rpc2FibGVkCit7CisgICAgX3dlYnNpdGVQb2xpY2llcy0+c2V0Q29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQoY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOworfQorCistIChCT09MKWNvbnRl
bnRCbG9ja2Vyc0Rpc2FibGVkCit7CisgICAgcmV0dXJuIF93ZWJzaXRlUG9saWNpZXMtPmNvbnRl
bnRCbG9ja2Vyc0Rpc2FibGVkKCk7Cit9CisKKy0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KK3sK
KyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBjb250ZW50
QmxvY2tlcnNEaXNhYmxlZCA9ICVkPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBz
ZWxmLCBzZWxmLmNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkXTsKK30KKworLSAoQVBJOjpPYmplY3Qm
KV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl93ZWJzaXRlUG9saWNpZXM7Cit9CisKK0BlbmQK
KworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVQb2xpY2llc0ludGVybmFsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGlj
aWVzSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAor
CisjaW1wb3J0ICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNpbXBvcnQgIldLT2JqZWN0LmgiCisK
K25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLV2Vic2l0ZVBvbGljaWVzICp3cmFwcGVy
KEFQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCit7CisgICAgQVNTRVJUKFt3
ZWJzaXRlUG9saWNpZXMud3JhcHBlcigpIGlzS2luZE9mQ2xhc3M6W19XS1dlYnNpdGVQb2xpY2ll
cyBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS1dlYnNpdGVQb2xpY2llcyAqKXdlYnNpdGVQb2xp
Y2llcy53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFjZSBfV0tXZWJzaXRlUG9saWNpZXMg
KCkgPFdLT2JqZWN0PiB7CisgICAgQHBhY2thZ2UKKyAgICBBUEk6Ok9iamVjdFN0b3JhZ2U8QVBJ
OjpXZWJzaXRlUG9saWNpZXM+IF93ZWJzaXRlUG9saWNpZXM7Cit9CitAZW5kCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNl
c3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0
aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00MzUsOCArNDM1LDcgQEAgdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lv
bjo6cmVsb2FkQnJvd3NpbgogICAgIG1fcGVuZGluZ05hdmlnYXRpb25JbkJyb3dzaW5nQ29udGV4
dENhbGxiYWNrc1BlclBhZ2Uuc2V0KHBhZ2UtPnBhZ2VJRCgpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7
CiAKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICBjb25zdCBi
b29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHBhZ2UtPnJlbG9hZChyZWxv
YWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBwYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKIH0KIAogdm9pZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6
aW5zcGVjdEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsRW5hYmxlQXV0b0Nh
cHR1cmluZywgUmVmPEluc3BlY3RCcm93c2luZ0NvbnRleHRDYWxsYmFjaz4mJiBjYWxsYmFjaykK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0
YXRlLmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTYyLDYgKzE2Miw3IEBAIHBy
aXZhdGU6CiAKICAgICBzdHJ1Y3QgewogICAgICAgICBib29sIHdlYlZpZXdEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyIDogMTsKKyAgICAgICAgYm9vbCB3ZWJW
aWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcldlYnNpdGVQ
b2xpY2llcyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25SZXNwb25zZURlY2lzaW9uSGFuZGxlciA6IDE7CiAKICAgICAgICAgYm9vbCB3ZWJWaWV3RGlk
U3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gOiAxOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1wb3J0ICJfV0tGcmFtZUhhbmRsZUlu
dGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50c0ludGVybmFsLmgi
CiAjaW1wb3J0ICJfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZUludGVybmFsLmgiCisjaW1w
b3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgogI2ltcG9ydCA8V2ViQ29yZS9DcmVk
ZW50aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgogI2ltcG9y
dCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5oPgpAQCAtMTM3LDYgKzEzOCw3IEBA
IHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWcKICAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyID0g
W2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjopXTsKKyAgICBtX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25E
ZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXMgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVj
dG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRl
Y2lzaW9uSGFuZGxlcjopXTsKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZURlY2lzaW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjopXTsKIAogICAgIG1fbmF2aWdhdGlv
bkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gPSBb
ZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRpZFN0YXJ0UHJv
dmlzaW9uYWxOYXZpZ2F0aW9uOildOwpAQCAtMjY1LDcgKzI2Nyw3IEBAIE5hdmlnYXRpb25TdGF0
ZTo6TmF2aWdhdGlvbkNsaWVudDo6fk5hdmkKIHsKIH0KIAotc3RhdGljIHZvaWQgdHJ5QXBwTGlu
ayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBT
dHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+IGNv
bXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgdHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZp
Z2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFN0cmluZyYgY3VycmVudE1h
aW5GcmFtZVVSTCwgRnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
QXBwTGlua3MoKSkgewpAQCAtMjczLDExICsyNzUsOSBAQCBzdGF0aWMgdm9pZCB0cnlBcHBMaW5r
KFJlZlB0cjxBUEk6Ok5hdmlnCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBhdXRvKiBs
b2NhbENvbXBsZXRpb25IYW5kbGVyID0gbmV3IHN0ZDo6ZnVuY3Rpb248dm9pZCAoYm9vbCk+KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5h
dmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwoKSBjb21wbGV0aW9uSGFuZGxlcjpbbG9jYWxD
b21wbGV0aW9uSGFuZGxlcl0oQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIHsKLSAgICAgICAgZGlz
cGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2xvY2FsQ29tcGxldGlvbkhh
bmRsZXIsIHN1Y2Nlc3NdIHsKLSAgICAgICAgICAgICgqbG9jYWxDb21wbGV0aW9uSGFuZGxlciko
c3VjY2Vzcyk7Ci0gICAgICAgICAgICBkZWxldGUgbG9jYWxDb21wbGV0aW9uSGFuZGxlcjsKKyAg
ICBbTFNBcHBMaW5rIG9wZW5XaXRoVVJMOm5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwo
KSBjb21wbGV0aW9uSGFuZGxlcjpbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oQk9PTCBzdWNjZXNzLCBOU0Vycm9yICopIHsKKyAgICAgICAgZGlzcGF0Y2hf
YXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlciksIHN1Y2Nlc3NdIHsKKyAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHN1Y2Nlc3MpOwogICAgICAgICB9KTsKICAgICB9XTsKICNlbHNlCkBAIC0yODks
MTggKzI4OSwxOSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiB7
CiAgICAgU3RyaW5nIG1haW5GcmFtZVVSTFN0cmluZyA9IHdlYlBhZ2VQcm94eS5tYWluRnJhbWUo
KS0+dXJsKCk7CiAKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVn
YXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9u
SGFuZGxlcikgeworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdh
dGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25I
YW5kbGVyCisgICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0
ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhh
bmRsZXJXZWJzaXRlUG9saWNpZXMpIHsKICAgICAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFj
dGlvbj4gbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0gJm5hdmlnYXRpb25BY3Rpb247CiAgICAgICAg
IFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZN
b3ZlKGxpc3RlbmVyKTsKIAotICAgICAgICB0cnlBcHBMaW5rKGxvY2FsTmF2aWdhdGlvbkFjdGlv
biwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0
aW9uXSAoYm9vbCBmb2xsb3dlZExpbmtUb0FwcCkgeworICAgICAgICB0cnlBcHBMaW5rKFdURk1v
dmUobG9jYWxOYXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0
ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4oJm5hdmlnYXRpb25BY3Rpb24pXSAoYm9vbCBmb2xsb3dlZExpbmtUb0FwcCkgewogICAgICAg
ICAgICAgaWYgKGZvbGxvd2VkTGlua1RvQXBwKSB7CiAgICAgICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+aWdub3JlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoIWxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+dGFyZ2V0RnJhbWUoKSkg
ewotICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgICAgIH0KIApAQCAtMzA5LDcgKzMxMCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZp
Z2F0aW9uQ2xpZW50OjoKICAgICAgICAgICAgICAgICBpZiAobG9jYWxOYXZpZ2F0aW9uQWN0aW9u
LT5zaG91bGRQZXJmb3JtRG93bmxvYWQoKSkKICAgICAgICAgICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAg
ICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3Rl
bmVyLT51c2UoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAK
QEAgLTMyOSwyMSArMzMwLDI2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0g
Jm5hdmlnYXRpb25BY3Rpb247Ci0gICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eT4gbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpOwotICAgIFJlZlB0cjxDb21wbGV0
aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAg
W25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikg
ZGVjaXNpb25IYW5kbGVyOltsb2NhbExpc3RlbmVyLCBsb2NhbE5hdmlnYXRpb25BY3Rpb24sIGNo
ZWNrZXIsIG1haW5GcmFtZVVSTFN0cmluZ10oV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlv
blBvbGljeSkgeworICAgIGJvb2wgZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMgPSBtX25hdmln
YXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXM7CisgICAg
CisgICAgUmVmUHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
LCBkZWxlZ2F0ZUhhc1dlYnNpdGVQb2xpY2llcyA/IEBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjopIDogQHNlbGVjdG9yKHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7
CisgICAgCisgICAgYXV0byBkZWNpc2lvbkhhbmRsZXJXaXRoUG9saWNpZXMgPSBbbG9jYWxMaXN0
ZW5lciA9IFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+KFdURk1vdmUobGlzdGVu
ZXIpKSwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlv
bj4oJm5hdmlnYXRpb25BY3Rpb24pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgbWFpbkZy
YW1lVVJMU3RyaW5nXShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0aW9uUG9saWN5LCBfV0tX
ZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNoZWNr
ZXItPmRpZENhbGxDb21wbGV0aW9uSGFuZGxlcigpOwogCisgICAgICAgIFdlYnNpdGVQb2xpY2ll
cyBwb2xpY2llczsKKyAgICAgICAgaWYgKHdlYnNpdGVQb2xpY2llcykKKyAgICAgICAgICAgIHBv
bGljaWVzID0gd2Vic2l0ZVBvbGljaWVzLT5fd2Vic2l0ZVBvbGljaWVzLT53ZWJzaXRlUG9saWNp
ZXMoKTsKKwogICAgICAgICBzd2l0Y2ggKGFjdGlvblBvbGljeSkgewogICAgICAgICBjYXNlIFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93OgotICAgICAgICAgICAgdHJ5QXBwTGluayhsb2Nh
bE5hdmlnYXRpb25BY3Rpb24sIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXJdKGJv
b2wgZm9sbG93ZWRMaW5rVG9BcHApIHsKKyAgICAgICAgICAgIHRyeUFwcExpbmsoV1RGTW92ZShs
b2NhbE5hdmlnYXRpb25BY3Rpb24pLCBtYWluRnJhbWVVUkxTdHJpbmcsIFtsb2NhbExpc3RlbmVy
ID0gV1RGTW92ZShsb2NhbExpc3RlbmVyKSwgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKV0o
Ym9vbCBmb2xsb3dlZExpbmtUb0FwcCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGZv
bGxvd2VkTGlua1RvQXBwKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmln
bm9yZSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICAgICAg
bG9jYWxMaXN0ZW5lci0+dXNlKFdURk1vdmUocG9saWNpZXMpKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICAKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMzU2LDE3ICszNjIsMjMgQEAgdm9pZCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIHB1c2gKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaCIKICAg
ICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6Ci0jcHJhZ21hIGNs
YW5nIGRpYWdub3N0aWMgcG9wCiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgp
OwogICAgICAgICAgICAgYnJlYWs7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1Xc3dpdGNoIgogICAgICAgICBjYXNlIF9X
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgogI3ByYWdt
YSBjbGFuZyBkaWFnbm9zdGljIHBvcAotICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKCk7
CisgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoV1RGTW92ZShwb2xpY2llcykpOwogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICB9XTsKKyAgICB9OworICAgIAorICAgIGlm
IChkZWxlZ2F0ZUhhc1dlYnNpdGVQb2xpY2llcykKKyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9u
U3RhdGUubV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihu
YXZpZ2F0aW9uQWN0aW9uKSBkZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyV2l0aFBvbGlj
aWVzXTsKKyAgICBlbHNlIHsKKyAgICAgICAgYXV0byBkZWNpc2lvbkhhbmRsZXJXaXRob3V0UG9s
aWNpZXMgPSBbZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzXSAoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5IGFjdGlvblBvbGljeSkgbXV0YWJsZSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRs
ZXJXaXRoUG9saWNpZXMoYWN0aW9uUG9saWN5LCBuaWwpOworICAgICAgICB9OworICAgICAgICBb
bmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBk
ZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzXTsKKyAgICB9CiB9
CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9u
c2UmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKQpAQCAtMzc4LDE0ICszOTAsMTQgQEAg
dm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogICAgICAgICAgICAgQk9P
TCBleGlzdHMgPSBbW05TRmlsZU1hbmFnZXIgZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBh
dGg6dXJsLnBhdGggaXNEaXJlY3Rvcnk6JmlzRGlyZWN0b3J5XTsKIAogICAgICAgICAgICAgaWYg
KGV4aXN0cyAmJiAhaXNEaXJlY3RvcnkgJiYgbmF2aWdhdGlvblJlc3BvbnNlLmNhblNob3dNSU1F
VHlwZSgpKQotICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgICAgICAg
ICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
bGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAg
ICAgICAgaWYgKG5hdmlnYXRpb25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUoKSkKLSAgICAgICAg
ICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgbGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICByZXR1
cm47CkBAIC00MDIsNyArNDE0LDcgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25D
bGllbnQ6OgogCiAgICAgICAgIHN3aXRjaCAocmVzcG9uc2VQb2xpY3kpIHsKICAgICAgICAgY2Fz
ZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93OgotICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoeyB9KTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lD
YW5jZWw6CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQy
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTEwODEsNiArMTA4
MSwxMyBAQAogCQk1Qzc3MDY3NDFEMTEzODM4MDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3NzA2
NzMxRDExMUQ4QjAwMTI3MDBGIC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNUM3
OTQzOUIxRDc2MkQ2MjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzc5NDM5QTFENzYyQ0RG
MDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLzsgfTsKIAkJNUM4NUM3ODgx
QzNGMjNDRTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0RkEgLyog
UGVuZGluZ0Rvd25sb2FkLmNwcCAqLzsgfTsKKwkJNUM5RTU2ODIxREY3RjFBQjAwQzlFRTMzIC8q
IFdLV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDOUU1NjgwMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2ll
cy5jcHAgKi87IH07CisJCTVDOUU1NjgzMURGN0YxQjMwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xp
Y2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5
RTU2ODExREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJNUNCMjM3OEIxREYwREU1MzAw
MTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gKi87IH07CisJCTVDQjIzNzhDMURGMERFNkUwMDExN0FBMyAvKiBfV0tX
ZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0IyMzc4
RTFERjBFMEQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzhEMURGMEUwQzIw
MDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovOyB9OworCQk1Q0IyMzc5
MTFERjBFMkU2MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzkwMURGMEUxREQwMDExN0FB
MyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovOyB9OworCQk1Q0IyMzc5MjFERjBFMkVFMDAx
MTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4RjFERjBFMUI4MDAxMTdBQTMgLyogQVBJV2Vic2l0
ZVBvbGljaWVzLmggKi87IH07CiAJCTVDQkM5QjhEMUM2NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3Jr
RGF0YVRhc2tDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQkM5QjhCMUM2NTI1NzMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5t
bSAqLzsgfTsKIAkJNUNCQzlCOEUxQzY1MkNBMDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkx
QzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovOyB9OwogCQk1Q0U4NUIyMDFD
ODhFNjRCMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTg1QjFGMUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5o
ICovOyB9OwpAQCAtMzE5Miw2ICszMTk5LDE0IEBACiAJCTVDNzk0MzlBMUQ3NjJDREYwMDMxMDJE
NCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4REMxRDBGNDFBMDAwOUQyRjZEIC8qIFdlYlNvY2tldFByb3Zp
ZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFdlYlNvY2tldFByb3ZpZGVy
Lmg7IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tldFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTVDODVDNzg2MUMzRjIzQzUwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gUGVuZGluZ0Rvd25sb2Fk
LmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFNTY3RjFERjc5MzA5MDBDOUVFMzMg
LyogV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdl
YnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFNTY4MDFE
RjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9s
aWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNp
ZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMjM3ODkxREYwREQ0MzAwMTE3
QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBfV0tXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8q
IF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTVDQjIzNzhGMURGMEUxQjgwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJV2Vic2l0ZVBvbGljaWVzLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIzNzkwMURGMEUxREQwMDExN0FBMyAv
KiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gQVBJV2Vic2l0ZVBvbGljaWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2suaDsgcGF0aCA9IE5ldHdv
cmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tDb2Nv
YS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0Ug
LyogUGluZ0xvYWQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0xvYWQu
aDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL1BpbmdMb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC00NzA5LDYgKzQ3MjQsNyBAQAogCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZDODJD
NyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLywKIAkJCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkg
LyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmNwcCAqLywKIAkJCQk4MzYwMzQ5RTFBQ0IzNEQ2
MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2VyLmggKi8sCisJCQkJNUM5RTU2N0Yx
REY3OTMwOTAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCUMwMzM3REQ3MTI3
QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2ZW50LmNwcCAqLywKIAkJCQk3QzA2NUYyOTFDOENE
OTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLywK
IAkJCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVy
RGF0YVR5cGVzLmggKi8sCkBAIC01MjgxLDYgKzUyOTcsOSBAQAogCQkJCTFBRTI4Njc2MUM3RTc2
NTEwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemUuaCAqLywKIAkJCQkxQUUyODY3NTFDN0U3
NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLm1tICovLAogCQkJCTFBRTI4NjdGMUM3
RjkyQkYwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0YVNpemVJbnRlcm5hbC5oICovLAorCQkJCTVD
QjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLywKKwkJCQk1
Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICovLAorCQkJ
CTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5o
ICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgwMEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0
VmFsdWVDb2NvYS5tbSAqLywKIAkJCQk3Q0VGQTk2MDFBQzA5OTkzMDBCOTEwRkQgLyogQVBJVXNl
ckNvbnRlbnRFeHRlbnNpb25TdG9yZUNvY29hLm1tICovLAogCQkJCTFBMzYzNUFCMUEzMTQ1RTUw
MEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlQ29jb2EubW0gKi8sCkBAIC02MzY2LDYgKzYz
ODUsOCBAQAogCQkJCTFBRTI4NjgyMUM3RjkzODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJl
Y29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEzMTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0
YVN0b3JlLmNwcCAqLywKIAkJCQkxQTM2MzVBODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0
ZURhdGFTdG9yZS5oICovLAorCQkJCTVDQjIzNzkwMURGMEUxREQwMDExN0FBMyAvKiBBUElXZWJz
aXRlUG9saWNpZXMuY3BwICovLAorCQkJCTVDQjIzNzhGMURGMEUxQjgwMDExN0FBMyAvKiBBUElX
ZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJ
V2luZG93RmVhdHVyZXMuY3BwICovLAogCQkJCTFBNjU2M0UzMUI3QThDNTAwMDlDRjc4NyAvKiBB
UElXaW5kb3dGZWF0dXJlcy5oICovLAogCQkJKTsKQEAgLTY1MDEsNiArNjUyMiw4IEBACiAJCQkJ
N0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8qIFdLVXNlclNjcmlwdFJlZi5oICovLAogCQkJCTFB
NTcxMDlDMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwICovLAog
CQkJCTFBNTcxMDlEMUFCQTAwMjcwMDJGQUJCRSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCAq
LywKKwkJCQk1QzlFNTY4MDFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3Bw
ICovLAorCQkJCTVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5o
ICovLAogCQkJCTFBN0MwREY0MUI3RDFGMTAwMEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVm
LmNwcCAqLywKIAkJCQkxQTdDMERGNTFCN0QxRjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJl
c1JlZi5oICovLAogCQkJKTsKQEAgLTc3NTIsNiArNzc3NSw3IEBACiAJCQkJMUFDNzVBMUIxQjMz
NjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rpb25EaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBp
biBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNCMTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRp
ZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjIzNzkyMURGMEUyRUUwMDExN0FBMyAvKiBBUElX
ZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhG
OUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5
MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNzZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzIwNEVFMzExQzgzRTk4MDA4RjMzNzUgLyogSW5qZWN0ZWRCdW5kbGUuaCBpbiBIZWFkZXJzICov
LApAQCAtODA1OCw2ICs4MDgyLDcgQEAKIAkJCQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyog
V2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QTEzMkVD
NzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFiYXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAog
CQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEwQyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNUNCMjM3OEMxREYwREU2RTAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQ
b2xpY2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8q
IFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUy
MzcwMUM3MzlENDIwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTUxMDUyMzdBMUM3M0RBNzcwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9u
VG9DbGllbnRNZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCkBAIC04MjYwLDYgKzgyODUsNyBAQAog
CQkJCTM3N0VBRDQ1MTdFMkM1MUEwMDJEMTkzRCAvKiBXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJODM3MkRCMkYxQTY3N0Q0QTAwQzY5N0M1IC8qIFdLRGlhZ25v
c3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzQwNzVGQTEyNEZG
MDI3MDA2OEYyMEEgLyogV0tEaWN0aW9uYXJ5LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IyMzc4
RTFERjBFMEQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFk
ZXJzICovLAogCQkJCUJDMDE3RDA3MTYyNjBGRjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwOTE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01FbGVt
ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwQjE2MjYwRkY0MDA3MDU0RjUgLyogV0tE
T01JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICovLApAQCAtODQ3Myw2ICs4NDk5LDcgQEAKIAkJCQkx
Rjc1MDZCODE4NTkxNjVEMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVJbnRlcm5h
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzczRDEyMkQxOEE0QjZFQjAwNjZEOUNDIC8qIFdLV2Vi
UHJvY2Vzc1BsdWdJbkZyYW1lUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjIx
ODU5MTYzRTAwRUMwRkY3IC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHQuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTVDOUU1NjgzMURGN0YxQjMwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xp
Y2llcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUY3NTA2QjcxODU5MTY1QTAwRUMwRkY3IC8qIFdL
V2ViUHJvY2Vzc1BsdWdJbkhpdFRlc3RSZXN1bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkM5ODlEODUxNjFBOTg5MDAwMEQ0NkQzIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjMzNUJDMDE4NUI4NEYwMDAxQTIwMUEgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luTG9hZERlbGVnYXRlLmggaW4gSGVhZGVycyAqLywKQEAgLTkyODUsNiArOTMx
Miw3IEBACiAJCQkJMzFFQTI1RDIxMzRGNzhDMDAwNUIxNDUyIC8qIE5hdGl2ZVdlYk1vdXNlRXZl
bnRNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDQ5RjE4ODRFNEYwMDBFRDg2REIgLyog
TmF0aXZlV2ViVG91Y2hFdmVudElPUy5tbSBpbiBTb3VyY2VzICovLAogCQkJCURGNThDNjM2MTM3
MUFDQTAwMEY5QTM3QyAvKiBOYXRpdmVXZWJXaGVlbEV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNUNCMjM3OEIxREYwREU1MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5tbSBp
biBTb3VyY2VzICovLAogCQkJCTFBRENCODZBMTg5ODMxQjMwMDIyRUU1QSAvKiBOYXZpZ2F0aW9u
QWN0aW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQUJDM0RGNTE4OTlFNDM3MDA0RjA2
MjYgLyogTmF2aWdhdGlvblN0YXRlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUE2RkJBMkIxMUU2
ODYyNzAwREIxMzcxIC8qIE5ldHNjYXBlQnJvd3NlckZ1bmNzLmNwcCBpbiBTb3VyY2VzICovLApA
QCAtOTMyMyw2ICs5MzUxLDcgQEAKIAkJCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0
d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTVDMTQyNkVDMUMyM0Y4MDkwMEQ0MTE4MyAvKiBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyREE5NDRCRDE4ODUxMUU3MDBFRDg2REIg
LyogTmV0d29ya1Byb2Nlc3NJT1MubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0IyMzc5MTFERjBF
MkU2MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTUxNzk1NTY3MTYyODc2Q0IwMEZBNDNCNiAvKiBOZXR3b3JrUHJvY2Vzc01hYy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTUxNjMxOTk0MTYyODlBNjAwMEUyMkYwMCAvKiBOZXR3b3JrUHJvY2Vzc01l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlFMTRBOTU0OTE2RTAxNkE0MDA2
OERFODIgLyogTmV0d29ya1Byb2Nlc3NQbGF0Zm9ybVN0cmF0ZWdpZXMuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05NTA5LDYgKzk1MzgsNyBAQAogCQkJCTcyOEU4NkYyMTc5NTE4OEMwMDg3ODc5RSAv
KiBXZWJDb2xvclBpY2tlck1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDNEFCRUQwMUFBOEU5
RjAwMDg4QUEzNyAvKiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb24uY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0M0QUJFRDQxQUE4RkNCODAwODhBQTM3IC8qIFdlYkNvbXBpbGVkQ29udGVudEV4
dGVuc2lvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNUM5RTU2ODIxREY3RjFBQjAwQzlF
RTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDNEE2MjhG
MTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUJDNEE2MjkxMTQ3MzEyQkUwMDZDNjgxQSAvKiBXZWJDb25uZWN0aW9uQ2xpZW50LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTFBMUZFQzFDMTYyN0I0NTcwMDcwMEY2RCAvKiBXZWJDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMu
aCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNz
YWdlcy5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0FQSUNhc3QuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdC5oPgog
I2luY2x1ZGUgPFdlYkNvcmUvQ2FjaGVkRnJhbWUuaD4KQEAgLTgwNywxMSArODA4LDE2IEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAvLyBOb3RpZnkgdGhl
IFVJUHJvY2Vzcy4KICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3QoKm1fZnJhbWUpOwogICAgIFdl
YkNvcmU6OkZyYW1lKiBvcmlnaW5hdGluZ0NvcmVGcmFtZSA9IG9yaWdpbmF0aW5nRnJhbWUgPyBv
cmlnaW5hdGluZ0ZyYW1lLT5jb3JlRnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgaWYgKCF3ZWJQYWdl
LT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9u
QWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSA/IG9yaWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQo
KSA6IDAsIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKG9yaWdpbmF0aW5nQ29yZUZyYW1l
KSwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJ
RCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IG5ld05hdmlnYXRpb25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSkpIHsKKyAgICBXZWJz
aXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzOworICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiht
X2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFt
ZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IG9yaWdpbmF0aW5nRnJhbWUgPyBvcmlnaW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBTZWN1
cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShvcmlnaW5hdGluZ0NvcmVGcmFtZSksIG5hdmlnYXRp
b25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRh
KFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRh
dGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0
aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKICAg
ICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGlj
eUlnbm9yZSwgMCwgeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIC8vIE9ubHkg
c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVl
biBzZXQgYnkgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KKyAgICBpZiAoIWRv
Y3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lvbnNEaXNhYmxlZCgpKQorICAgICAgICBk
b2N1bWVudExvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQod2Vic2l0ZVBv
bGljaWVzLmNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKTsKKwogICAgIC8vIFdlIGNhbGwgdGhpcyBz
eW5jaHJvbm91c2x5IGJlY2F1c2UgV2ViQ29yZSBjYW5ub3QgZ3JhY2VmdWxseSBoYW5kbGUgYSBm
cmFtZSBsb2FkIHdpdGhvdXQgYSBzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSByZXBseS4K
ICAgICBpZiAocmVjZWl2ZWRQb2xpY3lBY3Rpb24pCiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2Vp
dmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBzdGF0aWNfY2FzdDxQb2xpY3lBY3Rpb24+KHBv
bGljeUFjdGlvbiksIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCk7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyNTAsNyArMTI1MCw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0RGVmZXJz
TG9hZGluZyhib29sIGRlZmUKICAgICBtX3BhZ2UtPnNldERlZmVyc0xvYWRpbmcoZGVmZXJzTG9h
ZGluZyk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIGNvbnN0
IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSkKK3ZvaWQg
V2ViUGFnZTo6cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3Jp
Z2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBjb25zdCBT
YW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCiB7CiAgICAg
U2VuZFN0b3BSZXNwb25zaXZlbmVzc1RpbWVyIHN0b3BwZXIodGhpcyk7CiAKQEAgLTEyNTgsNyAr
MTI1OCw3IEBAIHZvaWQgV2ViUGFnZTo6cmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb24KICAgICBt
X3BlbmRpbmdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uSUQ7CiAKICAgICBtX3NhbmRib3hFeHRl
bnNpb25UcmFja2VyLmJlZ2luTG9hZChtX21haW5GcmFtZS5nZXQoKSwgc2FuZGJveEV4dGVuc2lv
bkhhbmRsZSk7Ci0gICAgY29yZVBhZ2UoKS0+dXNlcklucHV0QnJpZGdlKCkucmVsb2FkRnJhbWUo
bV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tl
cnNFbmFibGVkKTsKKyAgICBjb3JlUGFnZSgpLT51c2VySW5wdXRCcmlkZ2UoKS5yZWxvYWRGcmFt
ZShtX21haW5GcmFtZS0+Y29yZUZyYW1lKCksIHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpnb0ZvcndhcmQodWludDY0X3QgbmF2
aWdhdGlvbklELCB1aW50NjRfdCBiYWNrRm9yd2FyZEl0ZW1JRCkKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkod29ya2luZyBjb3B5
KQpAQCAtMTA0Miw3ICsxMDQyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWRTdHJpbmcoY29u
c3QgTG9hZFBhcmFtZXRlcnMmKTsKICAgICB2b2lkIGxvYWRBbHRlcm5hdGVIVE1MU3RyaW5nKGNv
bnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBuYXZpZ2F0ZVRvUERGTGlua1dpdGhTaW11
bGF0ZWRDbGljayhjb25zdCBTdHJpbmcmIHVybCwgV2ViQ29yZTo6SW50UG9pbnQgZG9jdW1lbnRQ
b2ludCwgV2ViQ29yZTo6SW50UG9pbnQgc2NyZWVuUG9pbnQpOwotICAgIHZvaWQgcmVsb2FkKHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQsIGNvbnN0IFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSYpOworICAgIHZv
aWQgcmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBz
dGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBjb25zdCBTYW5kYm94
RXh0ZW5zaW9uOjpIYW5kbGUmKTsKICAgICB2b2lkIGdvRm9yd2FyZCh1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIHVpbnQ2NF90KTsKICAgICB2b2lkIGdvQmFjayh1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IHVpbnQ2NF90KTsKICAgICB2b2lkIGdvVG9CYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgbmF2aWdh
dGlvbklELCB1aW50NjRfdCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdv
cmtpbmcgY29weSkKQEAgLTEzNyw3ICsxMzcsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2Fj
eVJlY2VpdmVyIHsKIAogICAgIE5hdmlnYXRlVG9QREZMaW5rV2l0aFNpbXVsYXRlZENsaWNrKFN0
cmluZyB1cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBv
aW50IHNjcmVlblBvaW50KQogCi0gICAgUmVsb2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9v
bCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIFdlYktpdDo6
U2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpCisgICAgUmVs
b2FkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBzdGQ6Om9w
dGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRl
bnNpb246OkhhbmRsZSBzYW5kYm94RXh0ZW5zaW9uSGFuZGxlKQogICAgIFN0b3BMb2FkaW5nKCkK
IAogICAgIFN0b3BMb2FkaW5nRnJhbWUodWludDY0X3QgZnJhbWVJRCkKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ1MSkK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2
LTEyLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgQWRkIFNQSSBmb3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBk
dXJpbmcgbmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1NTE3CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RX
ZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVjay5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlUG9saWNpZXMubW06
IEFkZGVkLgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAo
LVtXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVz
RGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRp
YXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwogMjAx
Ni0xMi0wNiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBD
b3JyZWN0IFNES1JPT1QgdmFsdWVzIGluIHhjY29uZmlnIGZpbGVzCkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagkocmV2aXNpb24gMjA5NDUxKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE2
OCw2ICsxNjgsOCBAQAogCQk1QzlFNTk0MTFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25D
YWNoZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLzsg
fTsKIAkJNUM5RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2ht
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLzsgfTsK
IAkJNUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1
OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLzsgfTsKKwkJ
NUNDRTk3RjExREY2MERDRDAwOUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0U5N0YwMURGNjBEOEUwMDlD
MDBGNyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi87IH07CisJCTVDQ0U5N0YzMURGNjI0NDQwMDlD
MDBGNyAvKiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNDRTk3RjIxREY2MjNGNjAwOUMwMEY3IC8q
IGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbCAqLzsgfTsKIAkJNUU0QjFEMkUxRDQwNEM2MTAwMDUz
NjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1RTRCMUQyQzFENDA0QzYxMDAwNTM2MjEgLyogV0tT
Y3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbSAqLzsgfTsKIAkJNkJGRDI5NEMxRDVFNkMxRDAwOEVD
OTY4IC8qIEhhc2hDb3VudGVkU2V0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDdBMzhEN0U1MUM3NTJENUYwMDRGMTU3RCAvKiBIYXNoQ291bnRlZFNl
dC5jcHAgKi87IH07CiAJCTc2NDMyMkQ3MUI2MUNDQzMwMDI0RjgwMSAvKiBXb3JkQm91bmRhcnlU
eXBpbmdBdHRyaWJ1dGVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNzY0MzIyRDUxQjYxQ0NBNDAwMjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0
dHJpYnV0ZXMubW0gKi87IH07CkBAIC01ODMsNiArNTg1LDcgQEAKIAkJCWRzdFBhdGggPSBUZXN0
V2ViS2l0QVBJLnJlc291cmNlczsKIAkJCWRzdFN1YmZvbGRlclNwZWMgPSA3OwogCQkJZmlsZXMg
PSAoCisJCQkJNUNDRTk3RjMxREY2MjQ0NDAwOUMwMEY3IC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2su
aHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QjI3MEZFRTFEREMyQzBCMDAyRDUzRjMg
LyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJ
CQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTgzNDlEM0M0MURCOTcyOEUwMDRBOUY2NSAv
KiBsaW5rLXdpdGgtZG93bmxvYWQtYXR0cmlidXRlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8s
CkBAIC05NzcsNiArOTgwLDggQEAKIAkJNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxp
Y2F0aW9uQ2FjaGUuZGIgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gQXBwbGljYXRpb25DYWNoZS5kYjsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2Fj
aGUuZGItc2htICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSI7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTVDOUU1OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNh
Y2hlLmRiLXdhbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IGZpbGU7IHBhdGggPSAiQXBwbGljYXRpb25DYWNoZS5kYi13YWwiOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1Q0NFOTdGMDFERjYwRDhFMDA5QzAwRjcgLyogV2Vic2l0ZVBvbGlj
aWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vic2l0ZVBv
bGljaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0NFOTdGMjFERjYyM0Y2
MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBuYW1lID0gY29udGVudEJsb2NrZXJDaGVjay5odG1sOyBwYXRoID0gVGVzdHMvV2ViS2l0Mi9j
b250ZW50QmxvY2tlckNoZWNrLmh0bWw7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9PVDsgfTsKIAkJ
NUU0QjFEMkMxRDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IG5hbWUgPSBXS1Njcm9sbFZpZXdEZWxl
Z2F0ZUNyYXNoLm1tOyBwYXRoID0gLi4vaW9zL1dLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1NjA5MTc3MTkyNTlDNTkwMDlFRjA2RSAv
KiBNZW1vcnlDYWNoZUFkZEltYWdlVG9DYWNoZUlPUy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLm9iamNwcDsgcGF0aCA9IE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NUYzMTMzRjE4QzE3MUI3MDA0MUNBRUMgLyogRXBo
ZW1lcmFsU2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3Rv
cnlDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDcwLDYgKzE0
NzUsNyBAQAogCQkJCTdDQ0I5OTIwMUQzQjQxRjYwMDM5MjJGNiAvKiBVc2VySW5pdGlhdGVkQWN0
aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1tICovLAogCQkJCTkzRTk0M0YxMUNEM0U4N0UwMEFDMDhD
MiAvKiBWaWRlb0NvbnRyb2xzTWFuYWdlci5tbSAqLywKIAkJCQk1MTcxNEVCNjFDRjhDN0E0MDA0
NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJREJDbGVhbnVwLm1tICovLAorCQkJCTVDQ0U5N0YwMURG
NjBEOEUwMDlDMDBGNyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNG
RkIwRTAwRTM5NjdCIC8qIFdLQmFja0ZvcndhcmRMaXN0Lm1tICovLAogCQkJCTM3NUUwRTE1MUQ2
NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVtYmVyLm1tICovLAogCQkJCTM3QjQ3RTJFMUQ2NEU3Q0Ew
MDVGNEVGRiAvKiBXS09iamVjdC5tbSAqLywKQEAgLTE1NjcsNiArMTU3Myw3IEBACiAJCUExNkY2
NkI4MUM0MEU5RTEwMEJENEQyNCAvKiBSZXNvdXJjZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhHcm91
cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTVDQ0U5N0YyMURGNjIzRjYwMDlDMDBGNyAvKiBjb250
ZW50QmxvY2tlckNoZWNrLmh0bWwgKi8sCiAJCQkJRjRDMkFCMjExREQ2RDk0MTAwRTA2RDVCIC8q
IGVub3Jtb3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCAqLywKIAkJCQlGNDE1MDg2QzFEQTA0MEMx
MDA0NEJFOUIgLyogcGxheS1hdWRpby1vbi1jbGljay5odG1sICovLAogCQkJCUY0RjEzNzkxMUQ5
QjY4MzIwMDJCRUM1NyAvKiBsYXJnZS12aWRlby10ZXN0LW5vdy1wbGF5aW5nLmh0bWwgKi8sCkBA
IC0yNDYxLDYgKzI0NjgsNyBAQAogCQkJCTM3NUUwRTE3MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05T
TnVtYmVyLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8q
IEZpbmRJblBhZ2UubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGNDFBNDExQUU2MDA0NDdD
NEMgLyogRmluZE1hdGNoZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1Q0NFOTdGMTFERjYwRENE
MDA5QzAwRjcgLyogV2Vic2l0ZVBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0Uw
NDAxRDBBNjNFMzAwRkVCQ0YzIC8qIEZpcnN0UmVzcG9uZGVyU2Nyb2xsaW5nUG9zaXRpb24ubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCQzFEMEE2NTA3MDBGRUJDRjMgLyogRml4ZWRMYXlv
dXRTaXplLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjUxQTQxMUFFNjAwNDQ3QzRDIC8q
IEZvcmNlUmVwYWludC5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Mi9jb250ZW50QmxvY2tlckNoZWNrLmh0bWwKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hlY2suaHRt
bAkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29u
dGVudEJsb2NrZXJDaGVjay5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzxo
dG1sPgorICAgIDxoZWFkPgorICAgICAgICA8c2NyaXB0PgorICAgICAgICAgICAgZnVuY3Rpb24g
c2VuZE1lc3NhZ2UoKSB7IGFsZXJ0KGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQucXVlcnlTZWxl
Y3RvcigiLmhpZGRlbiIpKS5kaXNwbGF5ID09ICJub25lIiA/ICJjb250ZW50IGJsb2NrZXJzIGVu
YWJsZWQiIDoiY29udGVudCBibG9ja2VycyBkaXNhYmxlZCIpOyB9CisgICAgICAgIDwvc2NyaXB0
PgorICAgIDwvaGVhZD4KKyAgICA8Ym9keSBvbmxvYWQ9InNlbmRNZXNzYWdlKCkiPgorICAgICAg
ICA8cCBjbGFzcz0iaGlkZGVuIj4KKyAgICAgICAgICAgIFRoaXMgdGV4dCBzaG91bGQgYWN0dWFs
bHkgYmUgdmlzaWJsZSBpbiBzcGl0ZSBvZiB0aGUgY29udGVudCBibG9ja2VyCisgICAgICAgICAg
ICBiZWNhdXNlIGNvbnRlbnQgYmxvY2tlcnMgc2hvdWxkIGJlIGRpc2FibGVkLgorICAgICAgICA8
L3A+CisgICAgPC9ib2R5PgorPC9odG1sPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVQb2xpY2llcy5tbQkobm9uZXhp
c3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRl
UG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisj
aW1wb3J0IDxXZWJLaXQvV0tVc2VyQ29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250
ZW50RXh0ZW5zaW9uU3RvcmVQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBv
bGljaWVzLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxF
RAorCitzdGF0aWMgYm9vbCBkb25lQ29tcGlsaW5nOworc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVy
dDsKK3N0YXRpYyBzaXplX3QgYWxlcnRDb3VudDsKKworQGludGVyZmFjZSBXZWJzaXRlUG9saWNp
ZXNEZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRl
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUKKworLSAo
dm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25I
YW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxl
cgoreworICAgIC8vIF93ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVj
aXNpb25IYW5kbGVyOiBzaG91bGQgYmUgY2FsbGVkIGluc3RlYWQgaWYgaXQgaXMgaW1wbGVtZW50
ZWQuCisgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmln
YXRpb25BY3Rpb25Qb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAq
KW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBzd2l0Y2gg
KGFsZXJ0Q291bnQrKykgeworICAgIGNhc2UgMDoKKyAgICAgICAgLy8gRklYTUU6IFRoZSBmaXJz
dCBjb250ZW50IGJsb2NrZXIgc2hvdWxkIGJlIGVuYWJsZWQgaGVyZS4KKyAgICAgICAgLy8gQ29u
dGVudEV4dGVuc2lvbnNCYWNrZW5kOjphZGRDb250ZW50RXh0ZW5zaW9uIGlzbid0IGJlaW5nIGNh
bGxlZCBpbiB0aGUgV2ViUHJvY2VzcworICAgICAgICAvLyB1bnRpbCBhZnRlciB0aGUgZmlyc3Qg
bWFpbiByZXNvdXJjZSBzdGFydHMgbG9hZGluZywgc28gd2UgbmVlZCB0byBzZW5kIGEgbWVzc2Fn
ZSB0byB0aGUKKyAgICAgICAgLy8gV2ViUHJvY2VzcyBiZWZvcmUgbG9hZGluZyBpZiB3ZSBoYXZl
IGluc3RhbGxlZCBjb250ZW50IGJsb2NrZXJzLgorICAgICAgICAvLyBTZWUgcmRhcjovL3Byb2Js
ZW0vMjc3ODg3NTUKKyAgICAgICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRpc2Fi
bGVkIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgor
ICAgICAgICAvLyBEZWZhdWx0IGJlaGF2aW9yLgorICAgICAgICBFWFBFQ1RfU1RSRVEoImNvbnRl
bnQgYmxvY2tlcnMgZW5hYmxlZCIsIG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFr
OworICAgIGNhc2UgMjoKKyAgICAgICAgLy8gQWZ0ZXIgaGF2aW5nIHNldCB3ZWJzaXRlUG9saWNp
ZXMuY29udGVudEJsb2NrZXJzRGlzYWJsZWQgdG8gdHJ1ZS4KKyAgICAgICAgRVhQRUNUX1NUUkVR
KCJjb250ZW50IGJsb2NrZXJzIGRpc2FibGVkIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSAzOgorICAgICAgICAvLyBBZnRlciBoYXZpbmcgcmVsb2FkZWQg
d2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgICAgICBFWFBFQ1RfU1RSRVEoImNvbnRlbnQg
YmxvY2tlcnMgZGlzYWJsZWQiLCBtZXNzYWdlLlVURjhTdHJpbmcpOworICAgICAgICBicmVhazsK
KyAgICBkZWZhdWx0OgorICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgfQorICAgIHJl
Y2VpdmVkQWxlcnQgPSB0cnVlOworICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKKy0gKHZv
aWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhh
bmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGlj
aWVzICopKWRlY2lzaW9uSGFuZGxlcgoreworICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0
ZVBvbGljaWVzID0gW1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFz
ZV07CisgICAgc3dpdGNoIChhbGVydENvdW50KSB7CisgICAgY2FzZSAwOgorICAgICAgICAvLyBW
ZXJpZnkgYW4gZXhpc3RpbmcgYnVnIHRoZSBmaXJzdCB0aW1lIGEgcGFnZSBpcyBsb2FkZWQgaW4g
YSBuZXcgV2ViUHJvY2Vzcy4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICAv
LyBWZXJpZnkgdGhlIGNvbnRlbnQgYmxvY2tlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRoZSBk
ZWZhdWx0IGJlaGF2aW9yLgorICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8v
IFZlcmlmeSBkaXNhYmxpbmcgY29udGVudCBibG9ja2VycyB3b3JrcyBjb3JyZWN0bHkuCisgICAg
ICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IHRydWU7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRl
bnQgYmxvY2tlcnMgaGFzIG5vIGVmZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMuCisgICAgICAgIHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxl
ZCA9IGZhbHNlOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBFWFBFQ1Rf
VFJVRShmYWxzZSk7CisgICAgfQorICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rp
b25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsKK30KKworQGVuZAorCitURVNUKFdlYktp
dDIsIFdlYnNpdGVQb2xpY2llc0NvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKQoreworICAgIFtbX1dL
VXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50
RXh0ZW5zaW9uc107CisKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgZG9uZUNvbXBpbGluZyA9IGZh
bHNlOworICAgIE5TU3RyaW5nKiBjb250ZW50QmxvY2tlciA9IEAiW3tcImFjdGlvblwiOntcInR5
cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVcIixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJp
Z2dlclwiOntcInVybC1maWx0ZXJcIjpcIi4qXCJ9fV0iOworICAgIFtbX1dLVXNlckNvbnRlbnRF
eHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRl
bnRpZmllcjpAIldlYnNpdGVQb2xpY2llc1Rlc3QiIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNv
bnRlbnRCbG9ja2VyIGNvbXBsZXRpb25IYW5kbGVyOl4oX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmZp
bHRlciwgTlNFcnJvciAqZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgPT0gbmls
KTsKKyAgICAgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVz
ZXJDb250ZW50RmlsdGVyOmZpbHRlcl07CisgICAgICAgIGRvbmVDb21waWxpbmcgPSB0cnVlOwor
ICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZUNvbXBpbGluZyk7CisK
KyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKV0pOworCisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJzaXRlUG9saWNp
ZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJl
cXVlc3RXaXRoVVJMOltbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJjb250
ZW50QmxvY2tlckNoZWNrIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVz
dFdlYktpdEFQSS5yZXNvdXJjZXMiXV07CisgICAgYWxlcnRDb3VudCA9IDA7CisgICAgcmVjZWl2
ZWRBbGVydCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICByZWNlaXZl
ZEFsZXJ0ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgcmVsb2FkXTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkQWxlcnQpOworCisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZEFsZXJ0KTsKKworICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyBfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vyc107CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKKworICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25T
dG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107Cit9CisKKyNl
bmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296396</attachid>
            <date>2016-12-07 10:19:51 -0800</date>
            <delta_ts>2016-12-07 17:24:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165517-20161207101911.patch</filename>
            <type>text/plain</type>
            <size>106161</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE2LTEyLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBkdXJpbmcgbmF2aWdhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTE3
CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgV2UgYWRkIHRoZSBhYmlsaXR5IGZvciB0aGUgbmF2aWdhdGlv
biBjbGllbnQgdG8gc2VuZCBzZXR0aW5ncyB0byB0aGUgV2ViUHJvY2VzcyAKKyAgICAgICAgYmFz
ZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgbmF2aWdhdGVkIHRvLiBUaGlzIGFw
cHJvYWNoIGFkZHMgbm8gbmV3IElQQyAKKyAgICAgICAgbWVzc2FnZXMgYW5kIGFsbG93cyB0aGUg
YXBwbGljYXRpb24gdG8gZGVjaWRlIHdoYXQgc2V0dGluZ3MgdG8gdXNlIGR1cmluZyBuYXZpZ2F0
aW9uIAorICAgICAgICBpbnN0ZWFkIG9mIGRlY2xhcmF0aXZlbHkgYmVmb3JlIG5hdmlnYXRpb24u
IFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBzZXR0aW5nLCAKKyAgICAgICAgd2hldGhlciB0
byBkaXNhYmxlIGNvbnRlbnQgYmxvY2tlcnMsIGJ1dCB0aGlzIGluZnJhc3RydWN0dXJlIGNhbiBi
ZSB1c2VkIGZvciBtb3JlIHNldHRpbmdzLgorCisgICAgICAgIEluIG9yZGVyIHRvIG5vdCBjb25m
bGljdCB3aXRoIHRoZSBleGlzdGluZyBhYmlsaXR5IHRvIHJlbG9hZCB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMsIAorICAgICAgICBvbmx5IHNldCB0aGUgYm9vbCAod2hpY2ggaXMgbm93IGEgc3Rk
OjpvcHRpb25hbDxib29sPiBzbyB3ZSBjYW4gZGV0ZXJtaW5lIGlmIGl0J3MgYWxyZWFkeSBiZWVu
IHNldCkKKyAgICAgICAgb24gdGhlIERvY3VtZW50TG9hZGVyIGRpc2FibGluZyBjb250ZW50IGJs
b2NrZXJzIGlmIGl0IGhhcyBub3QgYWxyZWFkeSBiZWVuIHNldCBieSByZWxvYWRpbmcKKyAgICAg
ICAgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorCisgICAgICAgIENvdmVyZWQgYnkgbmV3IEFQ
SSB0ZXN0cy4KKworICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNEaXNhYmxlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6dXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlcjo6c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCk6IERlbGV0ZWQuCisgICAg
ICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9h
ZGVyOjpyZWxvYWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAgICAgICAq
IHBhZ2UvVXNlckNvbnRlbnRQcm92aWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKToKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJDb250ZW50UHJvdmlk
ZXI6OnByb2Nlc3NDb250ZW50RXh0ZW5zaW9uUnVsZXNGb3JMb2FkKToKKyAgICAgICAgKFdlYkNv
cmU6OlVzZXJDb250ZW50UHJvdmlkZXI6OmFjdGlvbnNGb3JSZXNvdXJjZUxvYWQpOgorICAgICAg
ICAoV2ViQ29yZTo6Y29udGVudEV4dGVuc2lvbnNFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiByZXBsYXkvVXNlcklucHV0QnJpZGdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJJbnB1
dEJyaWRnZTo6cmVsb2FkRnJhbWUpOgorICAgICAgICAqIHJlcGxheS9Vc2VySW5wdXRCcmlkZ2Uu
aDoKKwogMjAxNi0xMi0wNiAgQW50b2luZSBRdWludCAgPGdyYW91dHNAYXBwbGUuY29tPgogCiAg
ICAgICAgIFtNb2Rlcm4gTWVkaWEgQ29udHJvbHNdIFVzZSB0YXAgYW5kIHBpbmNoIGdlc3R1cmVz
IG9uIGlPUwpJbmRleDogU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMzEsOCArMjMxLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RvcExv
YWRpbmdQbHVnSW5zKCk7CiAgICAgdm9pZCBzdG9wTG9hZGluZ1N1YnJlc291cmNlcygpOwogCi0g
ICAgYm9vbCB1c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV91
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkOyB9Ci0gICAgdm9pZCBzZXRVc2VyQ29udGVudEV4
dGVuc2lvbnNFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX3VzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQgPSBlbmFibGVkOyB9CisgICAgc3RkOjpvcHRpb25hbDxib29sPiB1c2VyQ29udGVudEV4
dGVuc2lvbnNEaXNhYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fdXNlckNvbnRlbnRFeHRlbnNpb25z
RGlzYWJsZWQ7IH0KKyAgICB2b2lkIHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKHN0
ZDo6b3B0aW9uYWw8Ym9vbD4gZGlzYWJsZWQpIHsgbV91c2VyQ29udGVudEV4dGVuc2lvbnNEaXNh
YmxlZCA9IGRpc2FibGVkOyB9CiAKICAgICB2b2lkIGFkZFN1YnJlc291cmNlTG9hZGVyKFJlc291
cmNlTG9hZGVyKik7CiAgICAgdm9pZCByZW1vdmVTdWJyZXNvdXJjZUxvYWRlcihSZXNvdXJjZUxv
YWRlciopOwpAQCAtNDcyLDcgKzQ3Miw3IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxTdHJpbmcs
IFJlZlB0cjxTdHlsZVNoZWV0Q29udGVudHM+PiBtX3BlbmRpbmdOYW1lZENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0czsKICAgICBIYXNoTWFwPFN0cmluZywgVmVjdG9yPHN0ZDo6cGFpcjxTdHJp
bmcsIHVpbnQzMl90Pj4+IG1fcGVuZGluZ0NvbnRlbnRFeHRlbnNpb25EaXNwbGF5Tm9uZVNlbGVj
dG9yczsKICNlbmRpZgotICAgIGJvb2wgbV91c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIHsg
dHJ1ZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV91c2VyQ29udGVudEV4dGVuc2lvbnNE
aXNhYmxlZDsKIAogI2lmbmRlZiBOREVCVUcKICAgICBib29sIG1faGFzRXZlckJlZW5BdHRhY2hl
ZCB7IGZhbHNlIH07CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1NjIsNyArMTU2Miw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJl
bG9hZFdpdGhPdmVycmlkZUVuY28KICAgICBsb2FkV2l0aERvY3VtZW50TG9hZGVyKGxvYWRlci5w
dHIoKSwgRnJhbWVMb2FkVHlwZTo6UmVsb2FkLCAwLCBBbGxvd05hdmlnYXRpb25Ub0ludmFsaWRV
Ukw6Olllcyk7CiB9CiAKLXZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVuZFRvRW5kUmVs
b2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpCit2b2lkIEZyYW1lTG9hZGVyOjpyZWxv
YWQoYm9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tl
cnNEaXNhYmxlZCkKIHsKICAgICBpZiAoIW1fZG9jdW1lbnRMb2FkZXIpCiAgICAgICAgIHJldHVy
bjsKQEAgLTE1ODMsNyArMTU4Myw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnJlbG9hZChib29sIGVu
ZFRvRW5kUmUKICAgICBSZWY8RG9jdW1lbnRMb2FkZXI+IGxvYWRlciA9IG1fY2xpZW50LmNyZWF0
ZURvY3VtZW50TG9hZGVyKGluaXRpYWxSZXF1ZXN0LCBkZWZhdWx0U3Vic3RpdHV0ZURhdGFGb3JV
UkwoaW5pdGlhbFJlcXVlc3QudXJsKCkpKTsKICAgICBhcHBseVNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3lUb05ld0RvY3VtZW50TG9hZGVyKGxvYWRlciwgbV9kb2N1bWVudExvYWRlci0+c2hv
dWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeVRvUHJvcGFnYXRlKCkpOwogCi0gICAgbG9hZGVyLT5z
ZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwor
ICAgIGxvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoY29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQpOwogICAgIAogICAgIFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCA9IGxvYWRl
ci0+cmVxdWVzdCgpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEyMSw3ICsxMjEsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCB1cmxTZWxlY3RlZChjb25zdCBVUkwmLCBjb25zdCBTdHJpbmcmIHRhcmdldCwgRXZl
bnQqLCBMb2NrSGlzdG9yeSwgTG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
LCBTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5LCBzdGQ6Om9wdGlvbmFsPE5ld0ZyYW1lT3Bl
bmVyUG9saWN5PiA9IHN0ZDo6bnVsbG9wdCwgY29uc3QgQXRvbWljU3RyaW5nJiBkb3dubG9hZEF0
dHJpYnV0ZSA9IG51bGxBdG9tKTsKICAgICB2b2lkIHN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3Jt
U3VibWlzc2lvbj4pOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWQoYm9vbCBlbmRU
b0VuZFJlbG9hZCA9IGZhbHNlLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlKTsK
KyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlbG9hZChib29sIGVuZFRvRW5kUmVsb2FkID0gZmFs
c2UsIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHN0ZDo6bnVs
bG9wdCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZWxvYWRXaXRoT3ZlcnJpZGVFbmNvZGlu
Zyhjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcpOwogCiAgICAgdm9pZCBvcGVuKENhY2hl
ZEZyYW1lQmFzZSYpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudFByb3Zp
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50UHJv
dmlkZXIuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJD
b250ZW50UHJvdmlkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OCwyMSArODgsMjQgQEAgdm9p
ZCBVc2VyQ29udGVudFByb3ZpZGVyOjppbnZhbGlkYXRlSW5qZQogfQogCiAjaWYgRU5BQkxFKENP
TlRFTlRfRVhURU5TSU9OUykKLXN0YXRpYyBib29sIGNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChj
b25zdCBEb2N1bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCitzdGF0aWMgYm9vbCBjb250ZW50
RXh0ZW5zaW9uc0Rpc2FibGVkKGNvbnN0IERvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRlcikK
IHsKICAgICBpZiAoYXV0byBmcmFtZSA9IGRvY3VtZW50TG9hZGVyLmZyYW1lKCkpIHsKKyAgICAg
ICAgc3RkOjpvcHRpb25hbDxib29sPiB2YWx1ZTsKICAgICAgICAgaWYgKGZyYW1lLT5pc01haW5G
cmFtZSgpKQotICAgICAgICAgICAgcmV0dXJuIGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQoKTsKLSAgICAgICAgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVyID0g
ZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCi0gICAgICAgICAg
ICByZXR1cm4gbWFpbkRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVk
KCk7CisgICAgICAgICAgICB2YWx1ZSA9IGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5z
aW9uc0Rpc2FibGVkKCk7CisgICAgICAgIGVsc2UgaWYgKGF1dG8gbWFpbkRvY3VtZW50TG9hZGVy
ID0gZnJhbWUtPm1haW5GcmFtZSgpLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAg
ICAgICB2YWx1ZSA9IG1haW5Eb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRGlz
YWJsZWQoKTsKKyAgICAgICAgaWYgKHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuICp2YWx1ZTsK
ICAgICB9CiAKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICByZXR1cm4gZmFsc2U7CiB9CiAgICAgCiBD
b250ZW50RXh0ZW5zaW9uczo6QmxvY2tlZFN0YXR1cyBVc2VyQ29udGVudFByb3ZpZGVyOjpwcm9j
ZXNzQ29udGVudEV4dGVuc2lvblJ1bGVzRm9yTG9hZChjb25zdCBVUkwmIHVybCwgUmVzb3VyY2VU
eXBlIHJlc291cmNlVHlwZSwgRG9jdW1lbnRMb2FkZXImIGluaXRpYXRpbmdEb2N1bWVudExvYWRl
cikKIHsKLSAgICBpZiAoIWNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZChpbml0aWF0aW5nRG9jdW1l
bnRMb2FkZXIpKQorICAgIGlmIChjb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkKGluaXRpYXRpbmdE
b2N1bWVudExvYWRlcikpCiAgICAgICAgIHJldHVybiB7IH07CiAKICAgICByZXR1cm4gdXNlckNv
bnRlbnRFeHRlbnNpb25CYWNrZW5kKCkucHJvY2Vzc0NvbnRlbnRFeHRlbnNpb25SdWxlc0Zvckxv
YWQodXJsLCByZXNvdXJjZVR5cGUsIGluaXRpYXRpbmdEb2N1bWVudExvYWRlcik7CkBAIC0xMTAs
NyArMTEzLDcgQEAgQ29udGVudEV4dGVuc2lvbnM6OkJsb2NrZWRTdGF0dXMgVXNlckNvbgogCiBW
ZWN0b3I8Q29udGVudEV4dGVuc2lvbnM6OkFjdGlvbj4gVXNlckNvbnRlbnRQcm92aWRlcjo6YWN0
aW9uc0ZvclJlc291cmNlTG9hZChjb25zdCBSZXNvdXJjZUxvYWRJbmZvJiByZXNvdXJjZUxvYWRJ
bmZvLCBEb2N1bWVudExvYWRlciYgaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKQogewotICAgIGlm
ICghY29udGVudEV4dGVuc2lvbnNFbmFibGVkKGluaXRpYXRpbmdEb2N1bWVudExvYWRlcikpCisg
ICAgaWYgKGNvbnRlbnRFeHRlbnNpb25zRGlzYWJsZWQoaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVy
KSkKICAgICAgICAgcmV0dXJuIHsgfTsKIAogICAgIHJldHVybiB1c2VyQ29udGVudEV4dGVuc2lv
bkJhY2tlbmQoKS5hY3Rpb25zRm9yUmVzb3VyY2VMb2FkKHJlc291cmNlTG9hZEluZm8pOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5jcHAJKHJldmlzaW9uIDIw
OTQ1MSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNDIsOSArMjQyLDkgQEAgdm9pZCBVc2VySW5wdXRCcmlkZ2U6OmxvYWRS
ZXF1ZXN0KGNvbnN0IAogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKHJlcXVl
c3QpOwogfQogCi12b2lkIFVzZXJJbnB1dEJyaWRnZTo6cmVsb2FkRnJhbWUoRnJhbWUqIGZyYW1l
LCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQsIElucHV0
U291cmNlKQordm9pZCBVc2VySW5wdXRCcmlkZ2U6OnJlbG9hZEZyYW1lKEZyYW1lKiBmcmFtZSwg
Ym9vbCBlbmRUb0VuZFJlbG9hZCwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCwgSW5wdXRTb3VyY2UpCiB7Ci0gICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZChlbmRU
b0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgZnJhbWUtPmxvYWRlcigp
LnJlbG9hZChlbmRUb0VuZFJlbG9hZCwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2
b2lkIFVzZXJJbnB1dEJyaWRnZTo6c3RvcExvYWRpbmdGcmFtZShGcmFtZSogZnJhbWUsIElucHV0
U291cmNlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlcGxheS9Vc2VySW5wdXRCcmlkZ2UuaAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYkNvcmUvcmVwbGF5L1VzZXJJbnB1dEJyaWRnZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJTY3JvbGxUeXBl
cy5oIgogI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25h
bC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIGNsYXNzIElucHV0Q3Vyc29yOwpAQCAtODgsNyArODks
NyBAQCBwdWJsaWM6CiAKICAgICAvLyBOYXZpZ2F0aW9uIEFQSXMuCiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBsb2FkUmVxdWVzdChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiwgSW5wdXRTb3VyY2Ug
c291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVs
b2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBib29sIGNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQsIElucHV0U291cmNlID0gSW5wdXRTb3VyY2U6OlVzZXIpOworICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVsb2FkRnJhbWUoRnJhbWUqLCBib29sIGVuZFRvRW5kUmVsb2FkLCBzdGQ6
Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkLCBJbnB1dFNvdXJjZSA9IElu
cHV0U291cmNlOjpVc2VyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3BMb2FkaW5nRnJh
bWUoRnJhbWUqLCBJbnB1dFNvdXJjZSBzb3VyY2UgPSBJbnB1dFNvdXJjZTo6VXNlcik7CiAgICAg
V0VCQ09SRV9FWFBPUlQgYm9vbCB0cnlDbG9zZVBhZ2UoSW5wdXRTb3VyY2Ugc291cmNlID0gSW5w
dXRTb3VyY2U6OlVzZXIpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMDAgQEAK
KzIwMTYtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4K
KworICAgICAgICBBZGQgU1BJIGZvciBzZW5kaW5nIFdlYnNpdGVTZXR0aW5ncyB0byBXZWJQcm9j
ZXNzIGR1cmluZyBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjU1MTcKKyAgICAgICAgPHJkYXI6Ly8yOTM0MTA2OD4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIFBsYXRmb3JtTWFjLmNtYWtlOgorICAgICAgICAqIFNoYXJlZC9BUEkvQVBJ
T2JqZWN0Lmg6CisgICAgICAgICogU2hhcmVkL0FQSS9jL1dLQmFzZS5oOgorICAgICAgICAqIFNo
YXJlZC9XZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYnNpdGVQ
b2xpY2llczo6ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzOjpkZWNv
ZGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlvbkNsaWVudC5oOgorICAg
ICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKToKKyAgICAgICAgKEFQSTo6TmF2aWdhdGlvbkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVu
dC5oOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24pOgorICAgICAgICAoQVBJOjpQb2xpY3lDbGllbnQ6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmNwcDogQWRkZWQuCisgICAgICAgIChBUEk6OldlYnNpdGVQb2xpY2llczo6Y3JlYXRlKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oOiBBZGRlZC4KKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHA6CisgICAgICAgIChXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UpOgorICAgICAgICAoV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVz
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VSZWxv
YWQpOgorICAgICAgICAoV0tQYWdlUmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vycyk6CisgICAg
ICAgIChXS1BhZ2VSZWxvYWRGcm9tT3JpZ2luKToKKyAgICAgICAgKFdLUGFnZVNldFBhZ2VQb2xp
Y3lDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5j
cHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNHZXRUeXBlSUQpOgorICAgICAg
ICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNT
ZXRDb250ZW50QmxvY2tlcnNEaXNhYmxlZCk6CisgICAgICAgIChXS1dlYnNpdGVQb2xpY2llc0dl
dENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tX
ZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW06CisgICAgICAgICgtW1dLQnJvd3NpbmdDb250
ZXh0Q29udHJvbGxlciByZWxvYWRdKToKKyAgICAgICAgKC1bV0tCcm93c2luZ0NvbnRleHRDb250
cm9sbGVyIHJlbG9hZEZyb21PcmlnaW5dKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAoLVtXS1dlYlZpZXcgcmVsb2FkXSk6CisgICAg
ICAgICgtW1dLV2ViVmlldyByZWxvYWRGcm9tT3JpZ2luXSk6CisgICAgICAgICgtW1dLV2ViVmll
dyBfcmVsb2FkV2l0aG91dENvbnRlbnRCbG9ja2Vyc10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bX1dL
V2Vic2l0ZVBvbGljaWVzIGRlYWxsb2NdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IHNldENvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkOl0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9s
aWNpZXMgY29udGVudEJsb2NrZXJzRGlzYWJsZWRdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBv
bGljaWVzIGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBfYXBp
T2JqZWN0XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0
cnlBcHBMaW5rKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktp
dDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHk6OmNvbnRpbnVlU3VibWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZy
YW1lTGlzdGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxp
c3RlbmVyUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk6OnVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94
eTo6ZG93bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHk6Omlnbm9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNy
ZWF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHRlclVuYmxvY2tOYXZp
Z2F0aW9uKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlbG9hZCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViS2l0Mi54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2U6OnJlbG9hZCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoK
KyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAx
Ni0xMi0wNiAgUnlhbiBIYWRkYWQgIDxyeWFuaGFkZGFkQGFwcGxlLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjA5NDIyLgpJbmRleDogU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJ
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC00MjQsNiArNDI0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJVXNlclNjcmlwdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJT
dHlsZVNoZWV0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAK
KyAgICBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0FQSVdpbmRvd0ZlYXR1cmVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGlj
YXRpb25DYWNoZU1hbmFnZXIuY3BwCkBAIC00NzMsNiArNDc0LDcgQEAgc2V0KFdlYktpdDJfU09V
UkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3Mv
QVBJL0MvV0tWaWV3cG9ydEF0dHJpYnV0ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vi
c2l0ZURhdGFTdG9yZVJlZi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2luZG93RmVhdHVyZXNSZWYuY3BwCiAKICAg
ICBVSVByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5j
cHAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDk0NTEpCisrKyBT
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIyLDYg
KzIyMiw3IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLVmlzaXRlZExpbmtTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZURhdGFTaXplLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0
YVN0b3JlLm1tCisgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0K
IAogICAgIFVJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
U2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1
Y3QgV2Vic2l0ZVBvbGljaWVzIHsKKworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQg
eyBmYWxzZSB9OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2Rl
KEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9v
bCBkZWNvZGUoRGVjb2RlciYsIFdlYnNpdGVQb2xpY2llcyYpOworfTsKKwordGVtcGxhdGU8Y2xh
c3MgRW5jb2Rlcj4gdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAoreworICAgIGVuY29kZXIgPDwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQ7Cit9CisK
K3RlbXBsYXRlPGNsYXNzIERlY29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVj
b2RlciYgZGVjb2RlciwgV2Vic2l0ZVBvbGljaWVzJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShyZXN1bHQuY29udGVudEJsb2NrZXJzRGlzYWJsZWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNiArMTU2LDcgQEAgcHVibGljOgogICAgICAgICBWaXNpdGVkTGlua1N0b3JlLAog
ICAgICAgICBXZWJzaXRlRGF0YVJlY29yZCwKICAgICAgICAgV2Vic2l0ZURhdGFTdG9yZSwKKyAg
ICAgICAgV2Vic2l0ZVBvbGljaWVzLAogICAgICAgICBXaW5kb3dGZWF0dXJlcywKIAogI2lmIEVO
QUJMRShNRURJQV9TRVNTSU9OKQpJbmRleDogU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dL
QmFzZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2Uu
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFz
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzksNiArMTM5LDcgQEAgdHlwZWRlZiBjb25zdCBzdHJ1
Y3QgT3BhcXVlV0tVc2VyU2NyaXB0KgogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWJy
YXRpb24qIFdLVmlicmF0aW9uUmVmOwogdHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tWaWV3
cG9ydEF0dHJpYnV0ZXMqIFdLVmlld3BvcnRBdHRyaWJ1dGVzUmVmOwogdHlwZWRlZiBjb25zdCBz
dHJ1Y3QgT3BhcXVlV0tXZWJzaXRlRGF0YVN0b3JlKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWY7Cit0
eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNpdGVQb2xpY2llcyogV0tXZWJzaXRlUG9s
aWNpZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dpbmRvd0ZlYXR1cmVzKiBX
S1dpbmRvd0ZlYXR1cmVzUmVmOwogCiAvKiBXZWJLaXQyIEJ1bmRsZSB0eXBlcyAqLwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eS5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1TdWJtaXNz
aW9uTGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmgiCiAKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNp
ZXMuaCIKKwogbmFtZXNwYWNlIFdlYktpdCB7CiAKIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTo6V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqIGZyYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMzUsNyArMzcsNyBAQCBXZWJGb3JtU3VibWlzc2lv
bkxpc3RlbmVyUHJveHk6OldlYkZvcm1TCiAKIHZvaWQgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5l
clByb3h5Ojpjb250aW51ZVN1Ym1pc3Npb24oKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6UG9saWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeVVzZSwgeyB9KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNw
cAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
TGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ1LDEyICs0NSwxMiBAQCB2b2lk
IFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6aW52YWxpZGF0ZSgpCiAgICAgbV9mcmFtZSA9IG51bGxw
dHI7CiB9CiAKLXZvaWQgV2ViRnJhbWVMaXN0ZW5lclByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24pCit2b2lkIFdlYkZyYW1lTGlzdGVuZXJQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9u
KGFjdGlvbiwgbV9saXN0ZW5lcklELCBtX25hdmlnYXRpb24uZ2V0KCkpOworICAgIG1fZnJhbWUt
PnJlY2VpdmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlv
bi5nZXQoKSwgV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpKTsKICAgICBtX2ZyYW1lID0gbnVsbHB0
cjsKIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxp
c3RlbmVyUHJveHkuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3
IEBACiAgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBX
ZWJGcmFtZUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCkBAIC0zNiw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3Mg
V2ViRnJhbWVQcm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIGNsYXNzIFdlYkZyYW1l
TGlzdGVuZXJQcm94eSA6IHB1YmxpYyBBUEk6Ok9iamVjdCB7CiBwdWJsaWM6CkBAIC01MCw3ICs1
MCw3IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxpc3RlbmVyUHJveHkoV2Vi
RnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogCi0gICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbik7CisgICAgdm9pZCByZWNlaXZlZFBv
bGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2Vic2l0ZVBvbGljaWVzJiYpOwog
CiBwcml2YXRlOgogICAgIFJlZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZyYW1lOwpAQCAtNTksNSAr
NTksMyBAQCBwcml2YXRlOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAv
LyBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAi
V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5
LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CkBAIC0zNSwxOSArMzYsMTkgQEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpXZWJGcmFt
ZVBvbAogewogfQogCi12b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKCkKK3Zv
aWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojp1c2UoV2Vic2l0ZVBvbGljaWVzJiYgd2Vi
aXN0ZVBvbGljaWVzKQogewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9s
aWN5VXNlKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeVVzZSwg
V1RGTW92ZSh3ZWJpc3RlUG9saWNpZXMpKTsKIH0KIAogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3Rl
bmVyUHJveHk6OmRvd25sb2FkKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeURvd25sb2FkKTsKKyAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeURvd25sb2FkLCB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eTo6aWdub3JlKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUlnbm9yZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lJ
Z25vcmUsIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UG9saWN5TGlzdGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJv
eHlfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJXZWJGcmFtZUxpc3RlbmVyUHJveHkuaCIK
IApAQCAtNDAsMTIgKzM5LDEyIEBAIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSA6
IHB1YmwKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgVHlwZSBBUElUeXBlID0gVHlwZTo6RnJh
bWVQb2xpY3lMaXN0ZW5lcjsKIAotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFdlYkZyYW1lUG9saWN5
TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklEKQorICAgIHN0YXRpYyBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBjcmVh
dGUoV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAgICAgewotICAg
ICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eShmcmFt
ZSwgbGlzdGVuZXJJRCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQpKTsKICAgICB9CiAKLSAgICB2b2lk
IHVzZSgpOworICAgIHZvaWQgdXNlKFdlYnNpdGVQb2xpY2llcyYmKTsKICAgICB2b2lkIGRvd25s
b2FkKCk7CiAgICAgdm9pZCBpZ25vcmUoKTsKIApAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAKICN1bmRlZiBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9f
Q09DT0EKLQotI2VuZGlmIC8vIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAyMDk0
NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE3NiwxNCArMTc2LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hh
bmdlVGl0bGUoY29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQ
cm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9u
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24pCit2b2lk
IFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0
aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0
aW9uLCBXZWJzaXRlUG9saWNpZXMmJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX3Bh
Z2UpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChtX2FjdGl2ZUxpc3RlbmVyKTsKICAg
ICBBU1NFUlQobV9hY3RpdmVMaXN0ZW5lci0+bGlzdGVuZXJJRCgpID09IGxpc3RlbmVySUQpOwot
ICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIHRoaXMsIGxpc3RlbmVy
SUQsIG5hdmlnYXRpb24pOworICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rp
b24sICp0aGlzLCBsaXN0ZW5lcklELCBuYXZpZ2F0aW9uLCBXVEZNb3ZlKHdlYnNpdGVQb2xpY2ll
cykpOwogfQogCiBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIFdlYkZyYW1lUHJveHk6OnNl
dFVwUG9saWN5TGlzdGVuZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpAQCAtMjUwLDggKzI1
MCw3IEBAIGJvb2wgV2ViRnJhbWVQcm94eTo6ZGlkSGFuZGxlQ29udGVudEZpbHQKICAgICBtX2Nv
bnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlci5yZXF1ZXN0VW5ibG9ja0FzeW5jKFtwYWdlXShib29s
IHVuYmxvY2tlZCkgewogICAgICAgICBpZiAodW5ibG9ja2VkKSB7CiAgICAgICAgICAgICBjb25z
dCBib29sIHJlbG9hZEZyb21PcmlnaW4gPSBmYWxzZTsKLSAgICAgICAgICAgIGNvbnN0IGJvb2wg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICBwYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgICAgICAgICBw
YWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKICAgICAgICAgfQogICAgIH0pOwog
ICAgIHJldHVybiB0cnVlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1l
UHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
cm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFtZVByb3h5X2gK
LSNkZWZpbmUgV2ViRnJhbWVQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFQSU9i
amVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFN0YXRlLmgiCkBAIC01Myw2ICs1Miw3IEBAIGNs
YXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdlYlBhZ2VQ
cm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNr
PEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8gUG9saWN5
IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBv
bGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiA9IG51bGxw
dHIpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rp
b24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIFdlYnNpdGVQb2xpY2ll
cyYmKTsKICAgICBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkmIHNldFVwUG9saWN5TGlzdGVu
ZXJQcm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICBXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkmIHNldFVwRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5KHVpbnQ2NF90IGxpc3Rl
bmVySUQpOwogCkBAIC0xNDksNSArMTQ5LDMgQEAgcHJpdmF0ZToKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gV2ViRnJhbWVQcm94eV9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMzNCw3ICszMzQsNyBAQCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0CiAgICAgLy8gQWxsb3cgbm9uLW1haW4gZnJhbWVzIHRvIG5hdmlnYXRl
IGFueXdoZXJlLgogICAgIEFQSTo6RnJhbWVJbmZvKiBzb3VyY2VGcmFtZSA9IHRvSW1wbChuYXZp
Z2F0aW9uQWN0aW9uUmVmKS0+c291cmNlRnJhbWUoKTsKICAgICBpZiAoc291cmNlRnJhbWUgJiYg
IXNvdXJjZUZyYW1lLT5pc01haW5GcmFtZSgpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5lclJl
ZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzQ1LDcgKzM0NSw3IEBAIHN0YXRpYyB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3QKIAogICAgIC8vIEFsbG93IGxvYWRpbmcgb2YgdGhlIG1h
aW4gaW5zcGVjdG9yIGZpbGUuCiAgICAgaWYgKFdlYkluc3BlY3RvclByb3h5Ojppc01haW5PclRl
c3RJbnNwZWN0b3JQYWdlKHJlcXVlc3QudXJsKCkpKSB7Ci0gICAgICAgIHRvSW1wbChsaXN0ZW5l
clJlZiktPnVzZSgpOworICAgICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTc0LDcgKzExNzQsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcExvYWRpbmcoKQogICAgIG1fcHJvY2Vzcy0+cmVzcG9u
c2l2ZW5lc3NUaW1lcigpLnN0YXJ0KCk7CiB9CiAKLVJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IFdl
YlBhZ2VQcm94eTo6cmVsb2FkKGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKQorUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gV2ViUGFnZVByb3h5OjpyZWxv
YWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBzdGQ6Om9wdGlvbmFsPGJvb2w+IGNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkKQogewogICAgIFNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlOwogCkBAIC0xMTk3LDcgKzExOTcsNyBAQCBSZWZQdHI8QVBJOjpOYXZpZ2F0
aW9uPiBXZWJQYWdlUHJveHk6OnJlCiAgICAgCiAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZp
Z2F0aW9uU3RhdGUtPmNyZWF0ZVJlbG9hZE5hdmlnYXRpb24oKTsKIAotICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgp
LCByZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBzYW5kYm94RXh0ZW5z
aW9uSGFuZGxlKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVsb2FkKG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpLCByZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCwgc2FuZGJveEV4dGVuc2lvbkhhbmRsZSksIG1fcGFn
ZUlEKTsKICAgICBtX3Byb2Nlc3MtPnJlc3BvbnNpdmVuZXNzVGltZXIoKS5zdGFydCgpOwogCiAg
ICAgcmV0dXJuIFdURk1vdmUobmF2aWdhdGlvbik7CkBAIC0yMjU0LDcgKzIyNTQsNyBAQCB2b2lk
IFdlYlBhZ2VQcm94eTo6Y2VudGVyU2VsZWN0aW9uSW5WaXNpCiAgICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpDZW50ZXJTZWxlY3Rpb25JblZpc2libGVBcmVhKCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9s
aWN5QWN0aW9uIGFjdGlvbiwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbikKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWNl
aXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkmIGZy
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24sIFdl
YnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjI5NCwxMCArMjI5NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlv
blBvbGljeUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBv
bGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gV1RGTW92ZSh3ZWJzaXRlUG9saWNpZXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6
V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5mcmFtZUlEKCksIGxpc3Rl
bmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpIDog
MCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVz
ZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAgLTM2MTAsNyArMzYxMSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1lU2UKICAgICAgICAgbV9mcmFtZVNl
dExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJhbWUgOiAwOwogfQogCi12b2lkIFdlYlBh
Z2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rp
b25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2lu
RGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wm
IHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRf
dCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9hZElEKQordm9pZCBXZWJQYWdlUHJv
eHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29u
c3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBuYXZpZ2F0aW9uQWN0aW9uRGF0
YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNl
aXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QmIHBv
bGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBvbGljaWVzJiB3ZWJz
aXRlUG9saWNpZXMpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdl
Q2xpZW50KTsKIApAQCAtMzY3OCw2ICszNjc5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0
aW9uSXNWYWxpZCkgewogICAgICAgICBwb2xpY3lBY3Rpb24gPSBtX3N5bmNOYXZpZ2F0aW9uQWN0
aW9uUG9saWN5QWN0aW9uOwogICAgICAgICBkb3dubG9hZElEID0gbV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeURvd25sb2FkSUQ7CisgICAgICAgIHdlYnNpdGVQb2xpY2llcyA9IG1fc3luY05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7CiAgICAgfQogfQogCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc0xpZmV0aW1l
VHJhY2tlci5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgPFdlYkNv
cmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvQ29sb3IuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CkBAIC0zOTAsNyArMzkxLDcgQEAgcHVibGljOgogICAg
IHZvaWQgbmF2aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1
cmwsIFdlYkNvcmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNj
cmVlblBvaW50KTsKIAogICAgIHZvaWQgc3RvcExvYWRpbmcoKTsKLSAgICBSZWZQdHI8QVBJOjpO
YXZpZ2F0aW9uPiByZWxvYWQoYm9vbCByZWxvYWRGcm9tT3JpZ2luLCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQpOworICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb24+IHJlbG9hZChib29sIHJl
bG9hZEZyb21PcmlnaW4sIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gY29udGVudEJsb2NrZXJzRGlzYWJs
ZWQpOwogCiAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29Gb3J3YXJkKCk7CiAgICAgUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbj4gZ29CYWNrKCk7CkBAIC04MDMsNyArODA0LDcgQEAgcHVibGlj
OgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJlbnRTZWxlY3Rpb24oKTsK
ICNlbmRpZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2Vi
Q29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5JiwgdWludDY0X3QgbGlzdGVuZXJJRCwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uSUQsIFdlYnNpdGVQb2xpY2llcyYmKTsKIAogICAg
IHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQpOwogCkBAIC0xMjQy
LDcgKzEyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95TmF2aWdhdGlvbih1
aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBO
YXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmln
aW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBV
c2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdh
dGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7CisgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5h
dGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9u
LCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3du
bG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOZXdX
aW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1l
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9p
ZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERv
d25sb2FkSUQmKTsKQEAgLTE3NjMsNiArMTc2NCw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKICAgICBEb3dubG9h
ZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAgIFdlYnNpdGVQ
b2xpY2llcyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOwogICAg
IGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJkRXZlbnQ+IG1fa2V5
RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
bWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTEx
LDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICAjIFBvbGljeSBt
ZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwg
V2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCi0g
ICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1
Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2
NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2
aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4s
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRh
IHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2
aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3du
bG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rp
b25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luYXRpbmdGcmFtZVNlY3Vy
aXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0
OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2
NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQ
b2xpY2llcykKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHJldmlz
aW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJTmF2aWdhdGlv
bkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTQgQEAKICAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSU5hdmlnYXRpb25DbGll
bnRfaAotI2RlZmluZSBBUElOYXZpZ2F0aW9uQ2xpZW50X2gKKyNwcmFnbWEgb25jZQogCiAjaW5j
bHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8uaCIKICNpbmNsdWRl
ICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldlYkV2ZW50LmgiCiAj
aW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0
ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5cGVzLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KQEAgLTk1LDEyICs5NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIEFQSTo6TmF2
aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgp
OworICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogCiAgICAgdmlydHVhbCB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0
ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9CiAgICAgCiAj
aWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMTcsNSArMTE3LDMgQEAgcHVibGlj
OgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElOYXZpZ2F0aW9uQ2xp
ZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUG9saWN5Q2xpZW50
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQb2xpY3lD
bGllbnQuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUgKzUzLDE1IEBAIHB1
YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgY29uc3QgV2Vi
S2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIGNvbnN0
IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwg
QVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8V2ViS2l0OjpXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7
Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwog
ICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCwgUmVm
PFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9i
amVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVy
LT51c2UoeyB9KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHVuYWJsZVRvSW1wbGVtZW50UG9s
aWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CiB9OwpJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNw
cAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIK
KworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxXZWJzaXRlUG9saWNpZXM+IFdlYnNpdGVQb2xpY2ll
czo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJzaXRlUG9saWNpZXMo
KSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEs
NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkFQSU9iamVjdC5o
IgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCituYW1lc3BhY2UgQVBJIHsKKworY2xh
c3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8T2JqZWN0OjpUeXBl
OjpXZWJzaXRlUG9saWNpZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVmPFdlYnNpdGVQb2xp
Y2llcz4gY3JlYXRlKCk7CisgICAgdmlydHVhbCB+V2Vic2l0ZVBvbGljaWVzKCkgPSBkZWZhdWx0
OworICAgIAorICAgIGJvb2wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQoKSBjb25zdCB7IHJldHVy
biBtX3dlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZDsgfQorICAgIHZvaWQg
c2V0Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoYm9vbCBkaXNhYmxlZCkgeyBtX3dlYnNpdGVQb2xp
Y2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IGRpc2FibGVkOyB9CisgICAgCisgICAgY29u
c3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcygpIHsgcmV0dXJuIG1f
d2Vic2l0ZVBvbGljaWVzOyB9CisgICAgCitwcml2YXRlOgorICAgIFdlYnNpdGVQb2xpY2llcygp
ID0gZGVmYXVsdDsKKyAgICAKKyAgICBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyBtX3dlYnNpdGVQ
b2xpY2llczsKK307CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S0FQSUNhc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tBUElDYXN0LmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQy9XS0FQSUNhc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNjcsNiArNjcsNyBAQCBjbGFz
cyBVc2VyQ29udGVudEV4dGVuc2lvbjsKIGNsYXNzIFVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmU7
CiBjbGFzcyBVc2VyU2NyaXB0OwogY2xhc3MgV2Vic2l0ZURhdGFTdG9yZTsKK2NsYXNzIFdlYnNp
dGVQb2xpY2llczsKIGNsYXNzIFdpbmRvd0ZlYXR1cmVzOwogfQogCkBAIC0xMTAsNiArMTExLDcg
QEAgY2xhc3MgV2ViVGV4dENoZWNrZXI7CiBjbGFzcyBXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQ
cm94eTsKIGNsYXNzIFdlYlZpYnJhdGlvblByb3h5OwogY2xhc3MgV2ViVmlld3BvcnRBdHRyaWJ1
dGVzOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VSZWYsIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkpCiBX
S19BRERfQVBJX01BUFBJTkcoV0tBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXJSZWYsIEF1
dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0ZW5lcikKQEAgLTE2NSw2ICsxNjcsNyBAQCBXS19BRERf
QVBJX01BUFBJTkcoV0tVc2VyU2NyaXB0UmVmLCBBUEk6CiBXS19BRERfQVBJX01BUFBJTkcoV0tW
aWJyYXRpb25SZWYsIFdlYlZpYnJhdGlvblByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLVmll
d3BvcnRBdHRyaWJ1dGVzUmVmLCBXZWJWaWV3cG9ydEF0dHJpYnV0ZXMpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tXZWJzaXRlRGF0YVN0b3JlUmVmLCBBUEk6OldlYnNpdGVEYXRhU3RvcmUpCitXS19B
RERfQVBJX01BUFBJTkcoV0tXZWJzaXRlUG9saWNpZXNSZWYsIEFQSTo6V2Vic2l0ZVBvbGljaWVz
KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2luZG93RmVhdHVyZXNSZWYsIEFQSTo6V2luZG93RmVh
dHVyZXMpCiAKIC8qIEVudW0gY29udmVyc2lvbnMgKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCShy
ZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZVBvbGljeUxpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0g
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDEwLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsOSArMjYsMTEgQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXS0ZyYW1lUG9saWN5TGlzdGVuZXIuaCIKIAorI2lu
Y2x1ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgogI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgogI2lu
Y2x1ZGUgIldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oIgogI2luY2x1ZGUgIldlYkZyYW1l
UHJveHkuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKIApAQCAtMzksNyArNDEsMTIgQEAgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3Rl
bmVyR2V0VHlwZUlEKAogCiB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9s
aWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXJSZWYpCiB7Ci0gICAgdG9JbXBsKHBvbGljeUxp
c3RlbmVyUmVmKS0+dXNlKCk7CisgICAgdG9JbXBsKHBvbGljeUxpc3RlbmVyUmVmKS0+dXNlKHsg
fSk7Cit9CisKK3ZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXRlUG9saWNpZXNS
ZWYgd2Vic2l0ZVBvbGljaWVzKQoreworICAgIHRvSW1wbChwb2xpY3lMaXN0ZW5lclJlZiktPnVz
ZSh7dG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPndlYnNpdGVQb2xpY2llcygpLmNvbnRlbnRCbG9j
a2Vyc0Rpc2FibGVkfSk7CiB9CiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVu
ZXIuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAog
LyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJfaAotI2RlZmluZSBXS0ZyYW1lUG9saWN5TGlzdGVuZXJfaAorI3ByYWdt
YSBvbmNlCiAKICNpbmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAgLTM0LDEyICszMywxMSBA
QCBleHRlcm4gIkMiIHsKIAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLRnJhbWVQb2xpY3lMaXN0ZW5l
ckdldFR5cGVJRCgpOwogCi1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2Uo
V0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKLVdLX0VYUE9SVCB2b2lk
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lckRvd25sb2FkKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBw
b2xpY3lMaXN0ZW5lcik7Ci1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25v
cmUoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKK1dLX0VYUE9SVCB2
b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOwor
V0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9y
ZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGlj
eUxpc3RlbmVyVXNlV2l0aFBvbGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJz
aXRlUG9saWNpZXNSZWYpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5k
aWYgLyogV0tGcmFtZVBvbGljeUxpc3RlbmVyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQyLDIy
ICsyNDIsMjAgQEAgdm9pZCBXS1BhZ2VTdG9wTG9hZGluZyhXS1BhZ2VSZWYgcGFnZVJlZgogdm9p
ZCBXS1BhZ2VSZWxvYWQoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxv
YWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFi
bGVkID0gdHJ1ZTsKLSAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICB0b0ltcGwocGFnZVJlZiktPnJlbG9hZChy
ZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiB2b2lkIFdLUGFnZVJlbG9hZFdpdGhvdXRDb250
ZW50QmxvY2tlcnMoV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRG
cm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVk
ID0gZmFsc2U7Ci0gICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29uc3Qgc3RkOjpvcHRpb25hbDxib29sPiBj
b250ZW50QmxvY2tlcnNEaXNhYmxlZCA9IHRydWU7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5yZWxv
YWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRGlzYWJsZWQpOwogfQogCiB2b2lk
IFdLUGFnZVJlbG9hZEZyb21PcmlnaW4oV0tQYWdlUmVmIHBhZ2VSZWYpCiB7CiAgICAgY29uc3Qg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIHRvSW1wbChwYWdlUmVmKS0+cmVsb2FkKHJlbG9hZEZy
b21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAgIHRvSW1wbChwYWdlUmVmKS0+
cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIGJvb2wgV0tQYWdlVHJ5Q2xvc2Uo
V0tQYWdlUmVmIHBhZ2VSZWYpCkBAIC0xMzQ4LDcgKzEzNDYsNyBAQCB2b2lkIFdLUGFnZVNldFBh
Z2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkZyYW1l
UHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
cmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbl9kZXByZWNh
dGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAg
ICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgICAgIH0KIApAQCAtMTM2Niw3ICsxMzY0LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdl
UG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dp
bmRvd0FjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBjb25z
dCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRl
Y2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewotICAgICAgICAgICAgICAgIGxpc3RlbmVy
LT51c2UoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0xMzc4LDcgKzEzNzYsNyBAQCB2b2lk
IFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VSZXNwb25zZSwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCBSZWY8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRh
dGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRl
UG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7
CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXS1dlYnNpdGVQb2xpY2llcy5oIgorCisjaW5jbHVkZSAiQVBJV2Vic2l0
ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBv
bGljaWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CisKK1dLVHlwZUlEIFdLV2Vic2l0
ZVBvbGljaWVzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4gdG9BUEkoQVBJOjpXZWJzaXRlUG9s
aWNpZXM6OkFQSVR5cGUpOworfQorCitXS1dlYnNpdGVQb2xpY2llc1JlZiBXS1dlYnNpdGVQb2xp
Y2llc0NyZWF0ZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKCZBUEk6OldlYnNpdGVQb2xpY2llczo6
Y3JlYXRlKCkubGVha1JlZigpKTsKK30KKwordm9pZCBXS1dlYnNpdGVQb2xpY2llc1NldENvbnRl
bnRCbG9ja2Vyc0Rpc2FibGVkKFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llcywg
Ym9vbCBkaXNhYmxlZCkKK3sKKyAgICB0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+c2V0Q29udGVu
dEJsb2NrZXJzRGlzYWJsZWQoZGlzYWJsZWQpOworfQorCitib29sIFdLV2Vic2l0ZVBvbGljaWVz
R2V0Q29udGVudEJsb2NrZXJzRGlzYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYgd2Vic2l0ZVBv
bGljaWVzKQoreworICAgIHJldHVybiB0b0ltcGwod2Vic2l0ZVBvbGljaWVzKS0+Y29udGVudEJs
b2NrZXJzRGlzYWJsZWQoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
PFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNl
bmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tXZWJzaXRlUG9saWNpZXNHZXRUeXBlSUQoKTsK
KworV0tfRVhQT1JUIFdLV2Vic2l0ZVBvbGljaWVzUmVmIFdLV2Vic2l0ZVBvbGljaWVzQ3JlYXRl
KCk7CisKK1dLX0VYUE9SVCBib29sIFdLV2Vic2l0ZVBvbGljaWVzR2V0Q29udGVudEJsb2NrZXJz
RGlzYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tXZWJzaXRl
UG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNEaXNhYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZiwg
Ym9vbCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3NpbmdDb250ZXh0Q29udHJvbGxlci5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLQnJvd3Np
bmdDb250ZXh0Q29udHJvbGxlci5tbQkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIubW0JKHdv
cmtpbmcgY29weSkKQEAgLTE4OCwxNSArMTg4LDEzIEBAIC0gKHZvaWQpc3RvcExvYWRpbmcKIC0g
KHZvaWQpcmVsb2FkCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBfcGFn
ZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworICAg
IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKIH0KIAogLSAodm9pZClyZWxv
YWRGcm9tT3JpZ2luCiB7CiAgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsK
LSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIF9wYWdl
LT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAg
X3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogfQogCiAtIChOU1N0cmluZyAq
KWFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRl
UHJpdmF0ZS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0zMSw2ICszMSw4IEBACiAKICNpZiBXS19BUElfRU5BQkxFRAogCitAY2xhc3MgX1dLV2Vic2l0
ZVBvbGljaWVzOworCiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IF9XS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kp
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsgMSk7CiBzdGF0aWMgY29uc3QgV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjExKSwgaW9zKDku
MCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rID0g
KFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cg
KyAyKTsKIApAQCAtNjMsNiArNjUsNyBAQCBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9u
c2VQb2xpY3kgCiAtICh2b2lkKV93ZWJWaWV3V2lsbEVuZE5hdmlnYXRpb25HZXN0dXJlOihXS1dl
YlZpZXcgKil3ZWJWaWV3IHdpdGhOYXZpZ2F0aW9uVG9CYWNrRm9yd2FyZExpc3RJdGVtOihXS0Jh
Y2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyB3aWxsU25hcHNob3RCYWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlz
dEl0ZW0gKilpdGVtOwogLSAodm9pZClfd2ViVmlld0RpZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJl
U25hcHNob3Q6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAu
MTIpLCBpb3MoMTAuMCkpOworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAjaWYgVEFSR0VU
X09TX0lQSE9ORQogLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRTdGFy
dExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZyYW1lV2l0aEZpbGVOYW1lOihOU1N0cmlu
ZyAqKWZpbGVOYW1lIHV0aTooTlNTdHJpbmcgKil1dGk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjA5NDUxKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHdvcmtp
bmcgY29weSkKQEAgLTgxNSw4ICs4MTUsNyBAQCAtIChXS05hdmlnYXRpb24gKilnb0ZvcndhcmQK
IC0gKFdLTmF2aWdhdGlvbiAqKXJlbG9hZAogewogICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9y
aWdpbiA9IGZhbHNlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRy
dWU7Ci0gICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2lu
LCBjb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKyAgICBhdXRvIG5hdmlnYXRpb24gPSBfcGFnZS0+
cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiAgICAgaWYgKCFuYXZpZ2F0aW9uKQogICAg
ICAgICByZXR1cm4gbmlsOwogCkBAIC04MjYsOCArODI1LDcgQEAgLSAoV0tOYXZpZ2F0aW9uICop
cmVsb2FkCiAtIChXS05hdmlnYXRpb24gKilyZWxvYWRGcm9tT3JpZ2luCiB7CiAgICAgY29uc3Qg
Ym9vbCByZWxvYWRGcm9tT3JpZ2luID0gdHJ1ZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQgPSB0cnVlOwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQo
cmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgYXV0byBuYXZp
Z2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCB7IH0pOwogICAgIGlmICgh
bmF2aWdhdGlvbikKICAgICAgICAgcmV0dXJuIG5pbDsKIApAQCAtMzM3OCw4ICszMzc2LDggQEAg
LSAodm9pZClfa2lsbFdlYkNvbnRlbnRQcm9jZXNzCiAtIChXS05hdmlnYXRpb24gKilfcmVsb2Fk
V2l0aG91dENvbnRlbnRCbG9ja2VycwogewogICAgIGNvbnN0IGJvb2wgcmVsb2FkRnJvbU9yaWdp
biA9IGZhbHNlOwotICAgIGNvbnN0IGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNl
OwotICAgIGF1dG8gbmF2aWdhdGlvbiA9IF9wYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwg
Y29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCA9IHRydWU7CisgICAgYXV0byBuYXZpZ2F0aW9uID0gX3BhZ2UtPnJlbG9hZChyZWxv
YWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCk7CiAgICAgaWYgKCFuYXZpZ2F0
aW9uKQogICAgICAgICByZXR1cm4gbmlsOwogICAgIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5oCShub25l
eGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0
ZVBvbGljaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisK
K1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkK
K0BpbnRlcmZhY2UgX1dLV2Vic2l0ZVBvbGljaWVzIDogTlNPYmplY3QKKworQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgY29udGVudEJsb2NrZXJzRGlzYWJsZWQ7CisKK0BlbmQKKworI2VuZGlm
IC8vIFdLX0FQSV9FTkFCTEVECkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgorCisjaWYg
V0tfQVBJX0VOQUJMRUQKKworQGltcGxlbWVudGF0aW9uIF9XS1dlYnNpdGVQb2xpY2llcworCist
ICh2b2lkKWRlYWxsb2MKK3sKKyAgICBfd2Vic2l0ZVBvbGljaWVzLT5BUEk6OldlYnNpdGVQb2xp
Y2llczo6fldlYnNpdGVQb2xpY2llcygpOworICAgIAorICAgIFtzdXBlciBkZWFsbG9jXTsKK30K
KworLSAodm9pZClzZXRDb250ZW50QmxvY2tlcnNEaXNhYmxlZDooQk9PTCljb250ZW50QmxvY2tl
cnNEaXNhYmxlZAoreworICAgIF93ZWJzaXRlUG9saWNpZXMtPnNldENvbnRlbnRCbG9ja2Vyc0Rp
c2FibGVkKGNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkKTsKK30KKworLSAoQk9PTCljb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZAoreworICAgIHJldHVybiBfd2Vic2l0ZVBvbGljaWVzLT5jb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZCgpOworfQorCistIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCit7CisgICAg
cmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgY29udGVudEJsb2Nr
ZXJzRGlzYWJsZWQgPSAlZD4iLCBOU1N0cmluZ0Zyb21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwg
c2VsZi5jb250ZW50QmxvY2tlcnNEaXNhYmxlZF07Cit9CisKKy0gKEFQSTo6T2JqZWN0JilfYXBp
T2JqZWN0Cit7CisgICAgcmV0dXJuICpfd2Vic2l0ZVBvbGljaWVzOworfQorCitAZW5kCisKKyNl
bmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXNJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaAkobm9uZXhpc3RlbnQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llc0lu
dGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llcy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2lt
cG9ydCAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW1wb3J0ICJXS09iamVjdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworaW5saW5lIF9XS1dlYnNpdGVQb2xpY2llcyAqd3JhcHBlcihBUEk6
OldlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQoreworICAgIEFTU0VSVChbd2Vic2l0
ZVBvbGljaWVzLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tXZWJzaXRlUG9saWNpZXMgY2xh
c3NdXSk7CisgICAgcmV0dXJuIChfV0tXZWJzaXRlUG9saWNpZXMgKil3ZWJzaXRlUG9saWNpZXMu
d3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLV2Vic2l0ZVBvbGljaWVzICgpIDxX
S09iamVjdD4geworICAgIEBwYWNrYWdlCisgICAgQVBJOjpPYmplY3RTdG9yYWdlPEFQSTo6V2Vi
c2l0ZVBvbGljaWVzPiBfd2Vic2l0ZVBvbGljaWVzOworfQorQGVuZAorCisjZW5kaWYKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9u
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQXV0b21hdGlvbi9X
ZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNDM1LDggKzQzNSw3IEBAIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246OnJl
bG9hZEJyb3dzaW4KICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5Ccm93c2luZ0NvbnRleHRDYWxs
YmFja3NQZXJQYWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92ZShjYWxsYmFjaykpOwogCiAg
ICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7Ci0gICAgY29uc3QgYm9vbCBj
b250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJv
bU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgcGFnZS0+cmVsb2FkKHJlbG9h
ZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIHZvaWQgV2ViQXV0b21hdGlvblNlc3Npb246Omluc3Bl
Y3RCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25hbEVuYWJsZUF1dG9DYXB0dXJp
bmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+JiYgY2FsbGJhY2spCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5o
CShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2
aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2ICsxNjIsNyBAQCBwcml2YXRl
OgogCiAgICAgc3RydWN0IHsKICAgICAgICAgYm9vbCB3ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlciA6IDE7CisgICAgICAgIGJvb2wgd2ViVmlld0Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNp
ZXMgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVz
cG9uc2VEZWNpc2lvbkhhbmRsZXIgOiAxOwogCiAgICAgICAgIGJvb2wgd2ViVmlld0RpZFN0YXJ0
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uIDogMTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCAiX1dLRnJhbWVIYW5kbGVJbnRlcm5h
bC5oIgogI2ltcG9ydCAiX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVudHNJbnRlcm5hbC5oIgogI2lt
cG9ydCAiX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVJbnRlcm5hbC5oIgorI2ltcG9ydCAi
X1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCIKICNpbXBvcnQgPFdlYkNvcmUvQ3JlZGVudGlh
bC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KICNpbXBvcnQgPFdl
YkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KQEAgLTEzNyw2ICsxMzgsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnCiAgICAgbV9uYXZpZ2F0aW9uRGVs
ZWdhdGUgPSBkZWxlZ2F0ZTsKIAogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlciA9IFtkZWxl
Z2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV07CisgICAgbV9uYXZpZ2F0aW9uRGVs
ZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNp
b25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lv
bkhhbmRsZXI6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2VEZWNpc2lvbkhhbmRsZXIgPSBbZGVsZWdhdGUg
cmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KV07CiAKICAgICBtX25hdmlnYXRpb25EZWxl
Z2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uID0gW2RlbGVn
YXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmlldzpkaWRTdGFydFByb3Zpc2lv
bmFsTmF2aWdhdGlvbjopXTsKQEAgLTI2NSw3ICsyNjcsNyBAQCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6On5OYXZpCiB7CiB9CiAKLXN0YXRpYyB2b2lkIHRyeUFwcExpbmsoUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgU3RyaW5n
JiBjdXJyZW50TWFpbkZyYW1lVVJMLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKGJvb2wpPiBjb21wbGV0
aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIHRyeUFwcExpbmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlv
bkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBTdHJpbmcmIGN1cnJlbnRNYWluRnJh
bWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxldGlvbkhhbmRsZXIpCiB7CiAj
aWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
QXBwTGlua3MoKSkgewpAQCAtMjg5LDE4ICsyOTEsMTkgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
Ok5hdmlnYXRpb25DbGllbnQ6OgogewogICAgIFN0cmluZyBtYWluRnJhbWVVUkxTdHJpbmcgPSB3
ZWJQYWdlUHJveHkubWFpbkZyYW1lKCktPnVybCgpOwogCi0gICAgaWYgKCFtX25hdmlnYXRpb25T
dGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIpIHsKKyAgICBpZiAoIW1fbmF2aWdhdGlvblN0
YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcgorICAgICAgICAmJiAhbV9uYXZpZ2F0aW9uU3Rh
dGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzKSB7CiAgICAgICAgIFJl
ZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9ICZuYXZp
Z2F0aW9uQWN0aW9uOwogICAgICAgICBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
PiBsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7CiAKLSAgICAgICAgdHJ5QXBwTGlu
ayhsb2NhbE5hdmlnYXRpb25BY3Rpb24sIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVu
ZXIsIGxvY2FsTmF2aWdhdGlvbkFjdGlvbl0gKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIHsKKyAg
ICAgICAgdHJ5QXBwTGluayhXVEZNb3ZlKGxvY2FsTmF2aWdhdGlvbkFjdGlvbiksIG1haW5GcmFt
ZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXIsIGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9IFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0aW9uKV0gKGJvb2wgZm9sbG93
ZWRMaW5rVG9BcHApIHsKICAgICAgICAgICAgIGlmIChmb2xsb3dlZExpbmtUb0FwcCkgewogICAg
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFsb2NhbE5hdmlnYXRpb25B
Y3Rpb24tPnRhcmdldEZyYW1lKCkpIHsKLSAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51
c2UoKTsKKyAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoeyB9KTsKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTMwOSw3ICszMTIsNyBAQCB2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgICAgICAgICAgICAgaWYg
KGxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURvd25sb2FkKCkpCiAgICAgICAg
ICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7CiAgICAgICAgICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2UoKTsKKyAgICAgICAg
ICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMjksMjEgKzMzMiwyNiBAQCB2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUp
CiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IGxv
Y2FsTmF2aWdhdGlvbkFjdGlvbiA9ICZuYXZpZ2F0aW9uQWN0aW9uOwotICAgIFJlZlB0cjxXZWJG
cmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3RlbmVy
KTsKLSAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcj4gY2hlY2tlciA9IENv
bXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0
KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVj
aXNpb25IYW5kbGVyOikpOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmln
YXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp3cmFw
cGVyKG5hdmlnYXRpb25BY3Rpb24pIGRlY2lzaW9uSGFuZGxlcjpbbG9jYWxMaXN0ZW5lciwgbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uLCBjaGVja2VyLCBtYWluRnJhbWVVUkxTdHJpbmddKFdLTmF2aWdh
dGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIHsKKyAgICBib29sIGRlbGVnYXRlSGFzV2Vi
c2l0ZVBvbGljaWVzID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRo
b2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVy
V2Vic2l0ZVBvbGljaWVzOworICAgIAorICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxlckNhbGxD
aGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3JlYXRlKG5h
dmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMgPyBAc2Vs
ZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhh
bmRsZXI6KSA6IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246ZGVjaXNpb25IYW5kbGVyOikpOworICAgIAorICAgIGF1dG8gZGVjaXNpb25IYW5kbGVyV2l0
aFBvbGljaWVzID0gW2xvY2FsTGlzdGVuZXIgPSBSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5PihXVEZNb3ZlKGxpc3RlbmVyKSksIGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9IFJlZlB0
cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0aW9uKSwgY2hlY2tlciA9IFdU
Rk1vdmUoY2hlY2tlciksIG1haW5GcmFtZVVSTFN0cmluZ10oV0tOYXZpZ2F0aW9uQWN0aW9uUG9s
aWN5IGFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMpIG11
dGFibGUgewogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxldGlvbkhhbmRsZXIoKTsKIAor
ICAgICAgICBXZWJzaXRlUG9saWNpZXMgcG9saWNpZXM7CisgICAgICAgIGlmICh3ZWJzaXRlUG9s
aWNpZXMpCisgICAgICAgICAgICBwb2xpY2llcyA9IHdlYnNpdGVQb2xpY2llcy0+X3dlYnNpdGVQ
b2xpY2llcy0+d2Vic2l0ZVBvbGljaWVzKCk7CisKICAgICAgICAgc3dpdGNoIChhY3Rpb25Qb2xp
Y3kpIHsKICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdzoKLSAgICAg
ICAgICAgIHRyeUFwcExpbmsobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLCBtYWluRnJhbWVVUkxTdHJp
bmcsIFtsb2NhbExpc3RlbmVyXShib29sIGZvbGxvd2VkTGlua1RvQXBwKSB7CisgICAgICAgICAg
ICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxOYXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJM
U3RyaW5nLCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxMaXN0ZW5lciksIHBvbGljaWVz
ID0gV1RGTW92ZShwb2xpY2llcyldKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIG11dGFibGUgewog
ICAgICAgICAgICAgICAgIGlmIChmb2xsb3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgICAg
ICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVz
ZSgpOworICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZShXVEZNb3ZlKHBvbGljaWVz
KSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgICAgICBicmVhazsKQEAgLTM1
NiwxNyArMzY0LDIzIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoK
ICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMg
aWdub3JlZCAiLVdzd2l0Y2giCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFjdGlvblBvbGlj
eURvd25sb2FkOgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgICAgICAgICAgbG9j
YWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwotI3ByYWdtYSBjbGFu
ZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3
aXRjaCIKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0
VHJ5aW5nQXBwTGluazoKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKFdU
Rk1vdmUocG9saWNpZXMpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfV07
CisgICAgfTsKKyAgICAKKyAgICBpZiAoZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMpCisgICAg
ICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRl
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRl
Y2lzaW9uSGFuZGxlcldpdGhQb2xpY2llc107CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzID0gW2RlY2lzaW9uSGFuZGxlcldpdGhQb2xpY2ll
c10gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIG11dGFibGUgeworICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzKGFjdGlvblBvbGljeSwgbmlsKTsK
KyAgICAgICAgfTsKKyAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBw
ZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlcldpdGhv
dXRQb2xpY2llc107CisgICAgfQogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
QEAgLTM3OCwxNCArMzkyLDE0IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKICAgICAgICAgICAgIEJPT0wgZXhpc3RzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnVybC5wYXRoIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9y
eV07CiAKICAgICAgICAgICAgIGlmIChleGlzdHMgJiYgIWlzRGlyZWN0b3J5ICYmIG5hdmlnYXRp
b25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUoKSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hv
d01JTUVUeXBlKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5p
Z25vcmUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDAyLDcgKzQxNiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIAogICAgICAgICBzd2l0Y2ggKHJlc3BvbnNl
UG9saWN5KSB7CiAgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdzoK
LSAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsOgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgxLDYgKzEwODEsMTMgQEAKIAkJNUM3NzA2NzQxRDExMzgzODAwMTI3MDBG
IC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNzcwNjczMUQxMTFEOEIwMDEyNzAwRiAvKiBXZWJTb2NrZXRQcm92
aWRlci5jcHAgKi87IH07CiAJCTVDNzk0MzlCMUQ3NjJENjIwMDMxMDJENCAvKiBXZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM3OTQzOUExRDc2MkNERjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2Eu
bW0gKi87IH07CiAJCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4NUM3
ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi87IH07CisJCTVDOUU1
NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTY4MDFERjdGMDU1MDBDOUVF
MzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovOyB9OworCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQ
b2xpY2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4QTFERjBE
RDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICovOyB9OworCQk1Q0IyMzc4QzFE
RjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCAqLzsgfTsKKwkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0IyMzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLzsgfTsK
KwkJNUNCMjM3OTIxREYwRTJFRTAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEYxREYwRTFC
ODAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovOyB9OwogCQk1Q0JDOUI4RDFDNjUy
NzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2su
aCAqLzsgfTsKIAkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQz
MDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLzsgfTsKQEAgLTMxOTIsNiArMzE5OSwxNCBAQAogCQk1
Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OERDMUQwRjQxQTAwMDlE
MkY2RCAvKiBXZWJTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJTb2NrZXRQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0
RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5
RTU2N0YxREY3OTMwOTAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGlj
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RTU2ODExREY3RjA1NTAw
QzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tXZWJzaXRlUG9saWNpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIz
NzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IyMzc4RjFERjBFMUI4MDAxMTdBQTMg
LyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Iy
Mzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3
b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Rh
dGFUYXNrLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNF
ODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBpbmdMb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwOSw2ICs0NzI0LDcgQEAKIAkJCQkz
NzYwODgxRDE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi8sCiAJCQkJODM2
MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8s
CiAJCQkJODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oICovLAorCQkJCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMu
aCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAg
Ki8sCiAJCQkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8sCiAJCQkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovLApAQCAtNTI4MSw2ICs1Mjk3LDkg
QEAKIAkJCQkxQUUyODY3NjFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLmgg
Ki8sCiAJCQkJMUFFMjg2NzUxQzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5t
bSAqLywKIAkJCQkxQUUyODY3RjFDN0Y5MkJGMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXpl
SW50ZXJuYWwuaCAqLywKKwkJCQk1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0
ZVBvbGljaWVzLmggKi8sCisJCQkJNUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNp
dGVQb2xpY2llcy5tbSAqLywKKwkJCQk1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0Yg
LyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCiAJCQkJN0NFRkE5NjAxQUMw
OTk5MzAwQjkxMEZEIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVDb2NvYS5tbSAqLywK
IAkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tICovLApAQCAtNjM2Niw2ICs2Mzg1LDggQEAKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFD
NEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBF
RDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRB
MzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKKwkJCQk1Q0IyMzc5MDFERjBF
MUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1Q0IyMzc4RjFE
RjBFMUI4MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIx
QjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKIAkJCQkxQTY1NjNF
MzFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCAqLywKIAkJCSk7CkBAIC02
NTAxLDYgKzY1MjIsOCBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJT
Y3JpcHRSZWYuaCAqLywKIAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmggKi8sCisJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8q
IFdLV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMg
LyogV0tXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTdDMERGNDFCN0QxRjEwMDBBOUI4NDgg
LyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgKi8sCiAJCQkJMUE3QzBERjUxQjdEMUYxMDAwQTlC
ODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuaCAqLywKIAkJCSk7CkBAIC03NzUyLDYgKzc3NzUs
NyBAQAogCQkJCTFBQzc1QTFCMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0ND
MDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IyMzc5MjFE
RjBFMkVFMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVk
QnVuZGxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTgsNiArODA4Miw3IEBACiAJCQkJNTE4MzQ1
OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjIzNzhDMURGMERFNkUw
MDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAy
RjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTA1MjM3MDFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkz
Q0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtODI2MCw2ICs4Mjg1LDcgQEAKIAkJCQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0QgLyogV0tE
ZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzJEQjJGMUE2NzdE
NEEwMEM2OTdDNSAvKiBXS0RpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM0MDc1RkExMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwNzE2MjYwRkY0MDA3MDU0
RjUgLyogV0tET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMDkxNjI2MEZG
NDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEIx
NjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTg0
NzMsNiArODQ5OSw3IEBACiAJCQkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0QxMjJEMThB
NEI2RUIwMDY2RDlDQyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGNzUwNkIyMTg1OTE2M0UwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI3
MTg1OTE2NUEwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1MTYxQTk4OTAwMDBENDZEMyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzMzVCQzAxODVC
ODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC05Mjg1LDYgKzkzMTIsNyBAQAogCQkJCTMxRUEyNUQyMTM0Rjc4QzAwMDVCMTQ1
MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0
OUYxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERjU4QzYzNjEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQURDQjg2QTE4OTgzMUIz
MDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCQzNERjUxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkzMjMsNiArOTM1MSw3IEBACiAJCQkJNTE3Q0YwRTMx
NjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjZFQzFDMjNGODA5MDBENDExODMgLyogTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRB
OTQ0QkQxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQzQjYgLyogTmV0d29y
a1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJG
MDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUwOSw2ICs5NTM4LDcgQEAKIAkJCQk3MjhF
ODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzRBQkVEMDFBQThFOUYwMDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEFCRUQ0MUFBOEZDQjgwMDg4QUEzNyAv
KiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDOUU1NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29u
bmVjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3MDA3
MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1lLmg+CkBA
IC04MDcsMTEgKzgwOCwxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgUmVmPFdlYkZyYW1lPiBwcm90
ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZSogb3JpZ2luYXRpbmdDb3JlRnJhbWUg
PSBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxs
cHRyOwotICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUgPyBvcmln
aW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShvcmlnaW5hdGluZ0NvcmVGcmFtZSksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5
KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93
bmxvYWRJRCkpKSB7CisgICAgV2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llczsKKyAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCks
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFt
ZS0+ZnJhbWVJRCgpIDogMCwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUob3JpZ2luYXRp
bmdDb3JlRnJhbWUpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBv
bGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdl
YnNpdGVQb2xpY2llcykpKSB7CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Rpc2FibGVkIGlm
IGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gc2V0IGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQg
YmxvY2tlcnMuCisgICAgaWYgKCFkb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25z
RGlzYWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5z
aW9uc0Rpc2FibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNEaXNhYmxlZCk7CisK
ICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90
IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2
aWdhdGlvbiBwb2xpY3kgcmVwbHkuCiAgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQogICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGlj
X2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25s
b2FkSUQpOwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjUwLDcgKzEyNTAsNyBAQCB2
b2lkIFdlYlBhZ2U6OnNldERlZmVyc0xvYWRpbmcoYm9vbCBkZWZlCiAgICAgbV9wYWdlLT5zZXRE
ZWZlcnNMb2FkaW5nKGRlZmVyc0xvYWRpbmcpOwogfQogCi12b2lkIFdlYlBhZ2U6OnJlbG9hZCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50
QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUmIHNhbmRib3hF
eHRlbnNpb25IYW5kbGUpCit2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50Qmxv
Y2tlcnNEaXNhYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJiBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQogewogICAgIFNlbmRTdG9wUmVzcG9uc2l2ZW5lc3NUaW1lciBzdG9wcGVy
KHRoaXMpOwogCkBAIC0xMjU4LDcgKzEyNTgsNyBAQCB2b2lkIFdlYlBhZ2U6OnJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uCiAgICAgbV9wZW5kaW5nTmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbklE
OwogCiAgICAgbV9zYW5kYm94RXh0ZW5zaW9uVHJhY2tlci5iZWdpbkxvYWQobV9tYWluRnJhbWUu
Z2V0KCksIHNhbmRib3hFeHRlbnNpb25IYW5kbGUpOwotICAgIGNvcmVQYWdlKCktPnVzZXJJbnB1
dEJyaWRnZSgpLnJlbG9hZEZyYW1lKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKSwgcmVsb2FkRnJv
bU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAgY29yZVBhZ2UoKS0+dXNlcklu
cHV0QnJpZGdlKCkucmVsb2FkRnJhbWUobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLCByZWxvYWRG
cm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNEaXNhYmxlZCk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6
Z29Gb3J3YXJkKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QgYmFja0ZvcndhcmRJdGVt
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJ
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwNDIsNyArMTA0Miw3IEBAIHByaXZhdGU6CiAg
ICAgdm9pZCBsb2FkU3RyaW5nKGNvbnN0IExvYWRQYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBsb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZyhjb25zdCBMb2FkUGFyYW1ldGVycyYpOwogICAgIHZvaWQgbmF2
aWdhdGVUb1BERkxpbmtXaXRoU2ltdWxhdGVkQ2xpY2soY29uc3QgU3RyaW5nJiB1cmwsIFdlYkNv
cmU6OkludFBvaW50IGRvY3VtZW50UG9pbnQsIFdlYkNvcmU6OkludFBvaW50IHNjcmVlblBvaW50
KTsKLSAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJv
bU9yaWdpbiwgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkLCBjb25zdCBTYW5kYm94RXh0ZW5z
aW9uOjpIYW5kbGUmKTsKKyAgICB2b2lkIHJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJv
b2wgcmVsb2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNE
aXNhYmxlZCwgY29uc3QgU2FuZGJveEV4dGVuc2lvbjo6SGFuZGxlJik7CiAgICAgdm9pZCBnb0Zv
cndhcmQodWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb0JhY2so
dWludDY0X3QgbmF2aWdhdGlvbklELCB1aW50NjRfdCk7CiAgICAgdm9pZCBnb1RvQmFja0Zvcndh
cmRJdGVtKHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDY0X3QpOwpJbmRleDogU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4J
KHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC0xMzcsNyArMTM3LDcgQEAgbWVz
c2FnZXMgLT4gV2ViUGFnZSBMZWdhY3lSZWNlaXZlciB7CiAKICAgICBOYXZpZ2F0ZVRvUERGTGlu
a1dpdGhTaW11bGF0ZWRDbGljayhTdHJpbmcgdXJsLCBXZWJDb3JlOjpJbnRQb2ludCBkb2N1bWVu
dFBvaW50LCBXZWJDb3JlOjpJbnRQb2ludCBzY3JlZW5Qb2ludCkKIAotICAgIFJlbG9hZCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVsb2FkRnJvbU9yaWdpbiwgYm9vbCBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkLCBXZWJLaXQ6OlNhbmRib3hFeHRlbnNpb246OkhhbmRsZSBzYW5kYm94RXh0
ZW5zaW9uSGFuZGxlKQorICAgIFJlbG9hZCh1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGJvb2wgcmVs
b2FkRnJvbU9yaWdpbiwgc3RkOjpvcHRpb25hbDxib29sPiBjb250ZW50QmxvY2tlcnNEaXNhYmxl
ZCwgV2ViS2l0OjpTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgc2FuZGJveEV4dGVuc2lvbkhhbmRs
ZSkKICAgICBTdG9wTG9hZGluZygpCiAKICAgICBTdG9wTG9hZGluZ0ZyYW1lKHVpbnQ2NF90IGZy
YW1lSUQpCkluZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdl
TG9nCShyZXZpc2lvbiAyMDk0NTEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkK
QEAgLTEsMyArMSwxOSBAQAorMjAxNi0xMi0wNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgZm9yIHNlbmRpbmcgV2Vic2l0ZVNl
dHRpbmdzIHRvIFdlYlByb2Nlc3MgZHVyaW5nIG5hdmlnYXRpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTUxNworICAgICAgICA8cmRhcjovLzI5
MzQxMDY4PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hl
Y2suaHRtbDogQWRkZWQuCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29j
b2EvV2Vic2l0ZVBvbGljaWVzLm1tOiBBZGRlZC4KKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVz
RGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9u
SGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgX3dlYlZpZXc6
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAg
ICAgICgtW1dlYnNpdGVQb2xpY2llc0RlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0
UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoVEVTVCk6CisKIDIwMTYtMTItMDYgIEFsZXhleSBQcm9za3VyeWFrb3YgIDxhcEBh
cHBsZS5jb20+CiAKICAgICAgICAgQ29ycmVjdCBTREtST09UIHZhbHVlcyBpbiB4Y2NvbmZpZyBm
aWxlcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CSh3b3JraW5nIGNvcHkpCkBAIC0xNjgsNiArMTY4LDggQEAKIAkJNUM5RTU5NDExRDNFQjVBQzAw
RTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGIgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5M0UxRDNFQjFERTAwRTNDNjJFIC8qIEFw
cGxpY2F0aW9uQ2FjaGUuZGIgKi87IH07CiAJCTVDOUU1OTQyMUQzRUI1QUMwMEUzQzYyRSAvKiBB
cHBsaWNhdGlvbkNhY2hlLmRiLXNobSBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTkzRjFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRp
b25DYWNoZS5kYi1zaG0gKi87IH07CiAJCTVDOUU1OTQzMUQzRUI1QUMwMEUzQzYyRSAvKiBBcHBs
aWNhdGlvbkNhY2hlLmRiLXdhbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTk0MDFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25D
YWNoZS5kYi13YWwgKi87IH07CisJCTVDQ0U5N0YxMURGNjBEQ0QwMDlDMDBGNyAvKiBXZWJzaXRl
UG9saWNpZXMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Q0NFOTdGMDFERjYwRDhFMDA5QzAwRjcgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovOyB9Owor
CQk1Q0NFOTdGMzFERjYyNDQ0MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQ0U5
N0YyMURGNjIzRjYwMDlDMDBGNyAvKiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgKi87IH07CiAJ
CTVFNEIxRDJFMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUU0QjFEMkMx
RDQwNEM2MTAwMDUzNjIxIC8qIFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW0gKi87IH07CiAJ
CTZCRkQyOTRDMUQ1RTZDMUQwMDhFQzk2OCAvKiBIYXNoQ291bnRlZFNldC5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3QTM4RDdFNTFDNzUyRDVGMDA0
RjE1N0QgLyogSGFzaENvdW50ZWRTZXQuY3BwICovOyB9OwogCQk3NjQzMjJENzFCNjFDQ0MzMDAy
NEY4MDEgLyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDc2NDMyMkQ1MUI2MUNDQTQwMDI0RjgwMSAv
KiBXb3JkQm91bmRhcnlUeXBpbmdBdHRyaWJ1dGVzLm1tICovOyB9OwpAQCAtNTgzLDYgKzU4NSw3
IEBACiAJCQlkc3RQYXRoID0gVGVzdFdlYktpdEFQSS5yZXNvdXJjZXM7CiAJCQlkc3RTdWJmb2xk
ZXJTcGVjID0gNzsKIAkJCWZpbGVzID0gKAorCQkJCTVDQ0U5N0YzMURGNjI0NDQwMDlDMDBGNyAv
KiBjb250ZW50QmxvY2tlckNoZWNrLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJOUIy
NzBGRUUxRERDMkMwQjAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgaW4g
Q29weSBSZXNvdXJjZXMgKi8sCiAJCQkJRjRDMkFCMjIxREQ2RDk1RTAwRTA2RDVCIC8qIGVub3Jt
b3VzLXZpZGVvLXdpdGgtc291bmQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk4MzQ5
RDNDNDFEQjk3MjhFMDA0QTlGNjUgLyogbGluay13aXRoLWRvd25sb2FkLWF0dHJpYnV0ZS5odG1s
IGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtOTc3LDYgKzk4MCw4IEBACiAJCTVDOUU1OTNFMUQz
RUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9IEFwcGxpY2F0aW9uQ2Fj
aGUuZGI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDOUU1OTNGMUQzRUIxREUwMEUz
QzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSAiQXBwbGljYXRpb25DYWNoZS5k
Yi1zaG0iOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTk0MDFEM0VCMURFMDBF
M0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi13YWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkFwcGxpY2F0aW9uQ2FjaGUu
ZGItd2FsIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNDRTk3RjAxREY2MEQ4RTAw
OUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9i
amNwcDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUNDRTk3RjIxREY2MjNGNjAwOUMwMEY3IC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRt
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQuaHRtbDsgbmFtZSA9IGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbDsg
cGF0aCA9IFRlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVjay5odG1sOyBzb3VyY2VUcmVl
ID0gU09VUkNFX1JPT1Q7IH07CiAJCTVFNEIxRDJDMUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9s
bFZpZXdEZWxlZ2F0ZUNyYXNoLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBu
YW1lID0gV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5tbTsgcGF0aCA9IC4uL2lvcy9XS1Njcm9s
bFZpZXdEZWxlZ2F0ZUNyYXNoLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3NTYw
OTE3NzE5MjU5QzU5MDA5RUYwNkUgLyogTWVtb3J5Q2FjaGVBZGRJbWFnZVRvQ2FjaGVJT1MubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlDYWNoZUFkZElt
YWdlVG9DYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzVGMzEzM0Yx
OEMxNzFCNzAwNDFDQUVDIC8qIEVwaGVtZXJhbFNlc3Npb25QdXNoU3RhdGVOb0hpc3RvcnlDYWxs
YmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFcGhlbWVyYWxT
ZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2FsbGJhY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwpAQCAtMTQ3MCw2ICsxNDc1LDcgQEAKIAkJCQk3Q0NCOTkyMDFEM0I0MUY2MDAzOTIy
RjYgLyogVXNlckluaXRpYXRlZEFjdGlvbkluTmF2aWdhdGlvbkFjdGlvbi5tbSAqLywKIAkJCQk5
M0U5NDNGMTFDRDNFODdFMDBBQzA4QzIgLyogVmlkZW9Db250cm9sc01hbmFnZXIubW0gKi8sCiAJ
CQkJNTE3MTRFQjYxQ0Y4QzdBNDAwNDcyM0M0IC8qIFdlYlByb2Nlc3NLaWxsSURCQ2xlYW51cC5t
bSAqLywKKwkJCQk1Q0NFOTdGMDFERjYwRDhFMDA5QzAwRjcgLyogV2Vic2l0ZVBvbGljaWVzLm1t
ICovLAogCQkJCTFGODM1NzFBMUQzRkZCMEUwMEUzOTY3QiAvKiBXS0JhY2tGb3J3YXJkTGlzdC5t
bSAqLywKIAkJCQkzNzVFMEUxNTFENjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSAqLywK
IAkJCQkzN0I0N0UyRTFENjRFN0NBMDA1RjRFRkYgLyogV0tPYmplY3QubW0gKi8sCkBAIC0xNTY3
LDYgKzE1NzMsNyBAQAogCQlBMTZGNjZCODFDNDBFOUUxMDBCRDREMjQgLyogUmVzb3VyY2VzICov
ID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1Q0NFOTdGMjFE
RjYyM0Y2MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sICovLAogCQkJCUY0QzJB
QjIxMURENkQ5NDEwMEUwNkQ1QiAvKiBlbm9ybW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgKi8s
CiAJCQkJRjQxNTA4NkMxREEwNDBDMTAwNDRCRTlCIC8qIHBsYXktYXVkaW8tb24tY2xpY2suaHRt
bCAqLywKIAkJCQlGNEYxMzc5MTFEOUI2ODMyMDAyQkVDNTcgLyogbGFyZ2UtdmlkZW8tdGVzdC1u
b3ctcGxheWluZy5odG1sICovLApAQCAtMjQ2MSw2ICsyNDY4LDcgQEAKIAkJCQkzNzVFMEUxNzFE
NjY2NzQ0MDBFRkVDMkMgLyogV0tOU051bWJlci5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNF
MEJCMUQwQTY1MDAwMEZFQkNGMyAvKiBGaW5kSW5QYWdlLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8s
CisJCQkJNUNDRTk3RjExREY2MERDRDAwOUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRl
clNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkMxRDBBNjUw
NzAwRkVCQ0YzIC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUY1MUE0MTFBRTYwMDQ0N0M0QyAvKiBGb3JjZVJlcGFpbnQuY3BwIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVj
ay5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9j
b250ZW50QmxvY2tlckNoZWNrLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDEzIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4K
KyAgICAgICAgICAgIGZ1bmN0aW9uIHNlbmRNZXNzYWdlKCkgeyBhbGVydChnZXRDb21wdXRlZFN0
eWxlKGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW4iKSkuZGlzcGxheSA9PSAibm9uZSIg
PyAiY29udGVudCBibG9ja2VycyBlbmFibGVkIiA6ImNvbnRlbnQgYmxvY2tlcnMgZGlzYWJsZWQi
KTsgfQorICAgICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJz
ZW5kTWVzc2FnZSgpIj4KKyAgICAgICAgPHAgY2xhc3M9ImhpZGRlbiI+CisgICAgICAgICAgICBU
aGlzIHRleHQgc2hvdWxkIGFjdHVhbGx5IGJlIHZpc2libGUgaW4gc3BpdGUgb2YgdGhlIGNvbnRl
bnQgYmxvY2tlcgorICAgICAgICAgICAgYmVjYXVzZSBjb250ZW50IGJsb2NrZXJzIHNob3VsZCBi
ZSBkaXNhYmxlZC4KKyAgICAgICAgPC9wPgorICAgIDwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL1dlYnNpdGVQb2xpY2llcy5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJz
aXRlUG9saWNpZXMubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAg
KzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQ
bGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLVXNlckNvbnRlbnRDb250cm9s
bGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld1ByaXZhdGUuaD4KKyNpbXBv
cnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGljIGJvb2wgZG9uZUNvbXBpbGluZzsKK3N0
YXRpYyBib29sIHJlY2VpdmVkQWxlcnQ7CitzdGF0aWMgc2l6ZV90IGFsZXJ0Q291bnQ7CisKK0Bp
bnRlcmZhY2UgV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9u
RGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYnNpdGVQ
b2xpY2llc0RlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBk
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZp
Z2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICAvLyBfd2ViVmlldzpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjogc2hvdWxkIGJlIGNhbGxlZCBpbnN0
ZWFkIGlmIGl0IGlzIGltcGxlbWVudGVkLgorICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsKKyAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgcnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxX
aXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGluaXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJ
bmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKHZvaWQpKWNvbXBsZXRpb25I
YW5kbGVyCit7CisgICAgc3dpdGNoIChhbGVydENvdW50KyspIHsKKyAgICBjYXNlIDA6CisgICAg
ICAgIC8vIEZJWE1FOiBUaGUgZmlyc3QgY29udGVudCBibG9ja2VyIHNob3VsZCBiZSBlbmFibGVk
IGhlcmUuCisgICAgICAgIC8vIENvbnRlbnRFeHRlbnNpb25zQmFja2VuZDo6YWRkQ29udGVudEV4
dGVuc2lvbiBpc24ndCBiZWluZyBjYWxsZWQgaW4gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgLy8g
dW50aWwgYWZ0ZXIgdGhlIGZpcnN0IG1haW4gcmVzb3VyY2Ugc3RhcnRzIGxvYWRpbmcsIHNvIHdl
IG5lZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlCisgICAgICAgIC8vIFdlYlByb2Nlc3MgYmVm
b3JlIGxvYWRpbmcgaWYgd2UgaGF2ZSBpbnN0YWxsZWQgY29udGVudCBibG9ja2Vycy4KKyAgICAg
ICAgLy8gU2VlIHJkYXI6Ly9wcm9ibGVtLzI3Nzg4NzU1CisgICAgICAgIEVYUEVDVF9TVFJFUSgi
Y29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8gRGVmYXVsdCBiZWhhdmlvci4KKyAgICAg
ICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGVuYWJsZWQiLCBtZXNzYWdlLlVURjhT
dHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8vIEFmdGVyIGhh
dmluZyBzZXQgd2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0Rpc2FibGVkIHRvIHRydWUu
CisgICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3Nh
Z2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgICAgLy8g
QWZ0ZXIgaGF2aW5nIHJlbG9hZGVkIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KKyAgICAgICAg
RVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRpc2FibGVkIiwgbWVzc2FnZS5VVEY4U3Ry
aW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVhQRUNUX1RSVUUo
ZmFsc2UpOworICAgIH0KKyAgICByZWNlaXZlZEFsZXJ0ID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9u
SGFuZGxlcigpOworfQorCistICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmln
YXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBfV0tX
ZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9IFtbW19XS1dlYnNpdGVQb2xpY2llcyBh
bGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHN3aXRjaCAoYWxlcnRDb3VudCkgeworICAg
IGNhc2UgMDoKKyAgICAgICAgLy8gVmVyaWZ5IGFuIGV4aXN0aW5nIGJ1ZyB0aGUgZmlyc3QgdGlt
ZSBhIHBhZ2UgaXMgbG9hZGVkIGluIGEgbmV3IFdlYlByb2Nlc3MuCisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMToKKyAgICAgICAgLy8gVmVyaWZ5IHRoZSBjb250ZW50IGJsb2NrZXJzIGJlaGF2
ZSBjb3JyZWN0bHkgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSAyOgorICAgICAgICAvLyBWZXJpZnkgZGlzYWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMg
d29ya3MgY29ycmVjdGx5LgorICAgICAgICB3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJz
RGlzYWJsZWQgPSB0cnVlOworICAgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICAgIC8v
IFZlcmlmeSBlbmFibGluZyBjb250ZW50IGJsb2NrZXJzIGhhcyBubyBlZmZlY3Qgd2hlbiByZWxv
YWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgorICAgICAgICB3ZWJzaXRlUG9saWNpZXMu
Y29udGVudEJsb2NrZXJzRGlzYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVm
YXVsdDoKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIH0KKyAgICBkZWNpc2lvbkhh
bmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQb2xpY2llcyk7Cit9
CisKK0BlbmQKKworVEVTVChXZWJLaXQyLCBXZWJzaXRlUG9saWNpZXNDb250ZW50QmxvY2tlcnNE
aXNhYmxlZCkKK3sKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0
b3JlXSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOworCisgICAgYXV0byBjb25maWd1cmF0
aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKwor
ICAgIGRvbmVDb21waWxpbmcgPSBmYWxzZTsKKyAgICBOU1N0cmluZyogY29udGVudEJsb2NrZXIg
PSBAIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlzcGxheS1ub25lXCIsXCJzZWxlY3Rv
clwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwtZmlsdGVyXCI6XCIuKlwifX1dIjsK
KyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBjb21waWxl
Q29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJXZWJzaXRlUG9saWNpZXNUZXN0IiBlbmNv
ZGVkQ29udGVudEV4dGVuc2lvbjpjb250ZW50QmxvY2tlciBjb21wbGV0aW9uSGFuZGxlcjpeKF9X
S1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIEVY
UEVDVF9UUlVFKGVycm9yID09IG5pbCk7CisgICAgICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29u
dGVudENvbnRyb2xsZXJdIF9hZGRVc2VyQ29udGVudEZpbHRlcjpmaWx0ZXJdOworICAgICAgICBk
b25lQ29tcGlsaW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmVDb21waWxpbmcpOworCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBh
ZG9wdE5TKFtbV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2Vi
VmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3
IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1
ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbW05TQnVuZGxlIG1haW5CdW5kbGVd
IFVSTEZvclJlc291cmNlOkAiY29udGVudEJsb2NrZXJDaGVjayIgd2l0aEV4dGVuc2lvbjpAImh0
bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl1dOworICAgIGFsZXJ0
Q291bnQgPSAwOworICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVk
QWxlcnQpOworCisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlbG9h
ZF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKKworICAg
IHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyByZWxvYWRdOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICByZWNlaXZlZEFsZXJ0
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlbG9hZFdpdGhvdXRDb250ZW50QmxvY2tlcnNdOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICBbW19X
S1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfcmVtb3ZlQWxsQ29udGVu
dEV4dGVuc2lvbnNdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296449</attachid>
            <date>2016-12-07 17:24:55 -0800</date>
            <delta_ts>2016-12-07 20:14:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165517-20161207172416.patch</filename>
            <type>text/plain</type>
            <size>88455</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTUwMikKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBkdXJpbmcgbmF2aWdhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTE3
CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgV2UgYWRkIHRoZSBhYmlsaXR5
IGZvciB0aGUgbmF2aWdhdGlvbiBjbGllbnQgdG8gc2VuZCBzZXR0aW5ncyB0byB0aGUgV2ViUHJv
Y2VzcyAKKyAgICAgICAgYmFzZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgbmF2
aWdhdGVkIHRvLiBUaGlzIGFwcHJvYWNoIGFkZHMgbm8gbmV3IElQQyAKKyAgICAgICAgbWVzc2Fn
ZXMgYW5kIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gZGVjaWRlIHdoYXQgc2V0dGluZ3MgdG8g
dXNlIGR1cmluZyBuYXZpZ2F0aW9uIAorICAgICAgICBpbnN0ZWFkIG9mIGRlY2xhcmF0aXZlbHkg
YmVmb3JlIG5hdmlnYXRpb24uIFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBzZXR0aW5nLCAK
KyAgICAgICAgd2hldGhlciB0byBkaXNhYmxlIGNvbnRlbnQgYmxvY2tlcnMsIGJ1dCB0aGlzIGlu
ZnJhc3RydWN0dXJlIGNhbiBiZSB1c2VkIGZvciBtb3JlIHNldHRpbmdzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
U2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlUG9saWNpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVz
OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclVzZSk6CisgICAgICAgIChXS0ZyYW1lUG9saWN5TGlzdGVuZXJV
c2VXaXRoUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJzaXRlUG9saWNp
ZXNHZXRUeXBlSUQpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAg
ICAoV0tXZWJzaXRlUG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKToKKyAgICAgICAg
KFdLV2Vic2l0ZVBvbGljaWVzR2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW06IEFkZGVkLgor
ICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tX
ZWJzaXRlUG9saWNpZXMgaW5pdF0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgc2V0
Q29udGVudEJsb2NrZXJzRW5hYmxlZDpdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWRdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBfYXBpT2JqZWN0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0cnlBcHBM
aW5rKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJv
eHk6OmNvbnRpbnVlU3VibWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlz
dGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlz
dGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6
OnVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZG93
bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6Omln
bm9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTYtMTItMDcg
IEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgogCiAgICAgICAgIE5ldHdvcmsgZXZl
bnQgcmVjb3JkL3JlcGxheQpJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDIwOTQ1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00
MjQsNiArNDI0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
VXNlclNjcmlwdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVVzZXJTdHlsZVNoZWV0LmNwcAog
ICAgIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAKKyAgICBVSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0FQSVdpbmRvd0Zl
YXR1cmVzLmNwcAogCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLQXBwbGljYXRpb25DYWNoZU1hbmFn
ZXIuY3BwCkBAIC00NzMsNiArNDc0LDcgQEAgc2V0KFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJv
Y2Vzcy9BUEkvQy9XS1ZpYnJhdGlvbi5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tWaWV3cG9y
dEF0dHJpYnV0ZXMuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZURhdGFTdG9yZVJl
Zi5jcHAKKyAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3BwCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLV2luZG93RmVhdHVyZXNSZWYuY3BwCiAKICAgICBVSVByb2Nlc3MvQXV0
aGVudGljYXRpb24vQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eS5jcHAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1BsYXRmb3JtTWFjLmNtYWtlCShyZXZpc2lvbiAyMDk0NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9Q
bGF0Zm9ybU1hYy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMjIzLDYgKzIyMyw3IEBAIGxpc3Qo
QVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLVmlzaXRl
ZExpbmtTdG9yZS5tbQogICAgIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZURhdGFTaXpl
Lm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlRGF0YVN0b3JlLm1tCisgICAg
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KIAogICAgIFVJUHJvY2Vz
cy9BUEkvbWFjL1dLVmlldy5tbQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0
ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVQ
b2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRl
UG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2Vic2l0ZVBvbGlj
aWVzIHsKKworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCB7IHRydWUgfTsKKyAgICAK
KyAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7
CisgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIGJvb2wgZGVjb2RlKERlY29kZXIm
LCBXZWJzaXRlUG9saWNpZXMmKTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQg
V2Vic2l0ZVBvbGljaWVzOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBl
bmNvZGVyIDw8IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+IGJvb2wgV2Vic2l0ZVBvbGljaWVzOjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2Vi
c2l0ZVBvbGljaWVzJiByZXN1bHQpCit7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQu
Y29udGVudEJsb2NrZXJzRW5hYmxlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL0FQSU9iamVjdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1No
YXJlZC9BUEkvQVBJT2JqZWN0LmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQy
L1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsNyBA
QCBwdWJsaWM6CiAgICAgICAgIFZpc2l0ZWRMaW5rU3RvcmUsCiAgICAgICAgIFdlYnNpdGVEYXRh
UmVjb3JkLAogICAgICAgICBXZWJzaXRlRGF0YVN0b3JlLAorICAgICAgICBXZWJzaXRlUG9saWNp
ZXMsCiAgICAgICAgIFdpbmRvd0ZlYXR1cmVzLAogCiAjaWYgRU5BQkxFKE1FRElBX1NFU1NJT04p
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvU2hhcmVkL0FQSS9jL1dLQmFzZS5oCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTEzOSw2ICsxMzksNyBAQCB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1VzZXJTY3Jp
cHQqCiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpYnJhdGlvbiogV0tWaWJyYXRpb25S
ZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1ZpZXdwb3J0QXR0cmlidXRlcyogV0tW
aWV3cG9ydEF0dHJpYnV0ZXNSZWY7CiB0eXBlZGVmIGNvbnN0IHN0cnVjdCBPcGFxdWVXS1dlYnNp
dGVEYXRhU3RvcmUqIFdLV2Vic2l0ZURhdGFTdG9yZVJlZjsKK3R5cGVkZWYgY29uc3Qgc3RydWN0
IE9wYXF1ZVdLV2Vic2l0ZVBvbGljaWVzKiBXS1dlYnNpdGVQb2xpY2llc1JlZjsKIHR5cGVkZWYg
Y29uc3Qgc3RydWN0IE9wYXF1ZVdLV2luZG93RmVhdHVyZXMqIFdLV2luZG93RmVhdHVyZXNSZWY7
CiAKIC8qIFdlYktpdDIgQnVuZGxlIHR5cGVzICovCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNw
cAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZvcm1T
dWJtaXNzaW9uTGlzdGVuZXJQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2LDYgKzI2LDgg
QEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJGb3JtU3VibWlzc2lvbkxpc3Rl
bmVyUHJveHkuaCIKIAorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCiBuYW1lc3BhY2Ug
V2ViS2l0IHsKIAogV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5OjpXZWJGb3JtU3VibWlz
c2lvbkxpc3RlbmVyUHJveHkoV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpCkBAIC0zNSw3ICszNyw3IEBAIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTo6V2Vi
Rm9ybVMKIAogdm9pZCBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk6OmNvbnRpbnVlU3Vi
bWlzc2lvbigpCiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lV
c2UpOworICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5VXNlLCB7IH0p
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuY3BwCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDUsMTIgKzQ1LDEyIEBAIHZvaWQgV2ViRnJhbWVMaXN0ZW5lclBy
b3h5OjppbnZhbGlkYXRlKCkKICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKIH0KIAotdm9pZCBXZWJG
cmFtZUxpc3RlbmVyUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5
QWN0aW9uIGFjdGlvbikKK3ZvaWQgV2ViRnJhbWVMaXN0ZW5lclByb3h5OjpyZWNlaXZlZFBvbGlj
eURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIGNvbnN0IFdlYnNpdGVQb2xp
Y2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9mcmFtZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIG1fbGlz
dGVuZXJJRCwgbV9uYXZpZ2F0aW9uLmdldCgpKTsKKyAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGlj
eURlY2lzaW9uKGFjdGlvbiwgbV9saXN0ZW5lcklELCBtX25hdmlnYXRpb24uZ2V0KCksIHdlYnNp
dGVQb2xpY2llcyk7CiAgICAgbV9mcmFtZSA9IG51bGxwdHI7CiB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9u
IDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJv
eHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRnJhbWVMaXN0ZW5lclByb3h5X2gK
LSNkZWZpbmUgV2ViRnJhbWVMaXN0ZW5lclByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVk
ZSAiQVBJTmF2aWdhdGlvbi5oIgogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgpAQCAtMzYsNiArMzUs
NyBAQAogbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNzIFdlYkZyYW1lUHJveHk7CitzdHJ1Y3Qg
V2Vic2l0ZVBvbGljaWVzOwogCiBjbGFzcyBXZWJGcmFtZUxpc3RlbmVyUHJveHkgOiBwdWJsaWMg
QVBJOjpPYmplY3QgewogcHVibGljOgpAQCAtNTAsNyArNTAsNyBAQCBwdWJsaWM6CiBwcm90ZWN0
ZWQ6CiAgICAgV2ViRnJhbWVMaXN0ZW5lclByb3h5KFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBs
aXN0ZW5lcklEKTsKIAotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24pOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQ
b2xpY3lBY3Rpb24sIGNvbnN0IFdlYnNpdGVQb2xpY2llcyYpOwogCiBwcml2YXRlOgogICAgIFJl
ZlB0cjxXZWJGcmFtZVByb3h5PiBtX2ZyYW1lOwpAQCAtNTksNSArNTksMyBAQCBwcml2YXRlOgog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJGcmFtZUxpc3RlbmVy
UHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0
ZW5lclByb3h5LmgiCiAKICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2Vi
c2l0ZVBvbGljaWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCkBAIC0zNSwxOSArMzYsMTkg
QEAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjpXZWJGcmFtZVBvbAogewogfQogCi12b2lk
IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6dXNlKCkKK3ZvaWQgV2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5Ojp1c2UoY29uc3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMp
CiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lVc2UpOworICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5VXNlLCB3ZWJzaXRlUG9saWNp
ZXMpOwogfQogCiB2b2lkIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZG93bmxvYWQoKQog
ewotICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5RG93bmxvYWQpOwor
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5RG93bmxvYWQsIHsgfSk7
CiB9CiAKIHZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5OjppZ25vcmUoKQogewotICAg
IHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlKTsKKyAgICByZWNl
aXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUlnbm9yZSwgeyB9KTsKIH0KIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9o
Ci0jZGVmaW5lIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCisjcHJhZ21hIG9uY2UKIAog
I2luY2x1ZGUgIldlYkZyYW1lTGlzdGVuZXJQcm94eS5oIgogCkBAIC00MCwxMiArMzksMTIgQEAg
Y2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5IDogcHVibAogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBUeXBlIEFQSVR5cGUgPSBUeXBlOjpGcmFtZVBvbGljeUxpc3RlbmVyOwogCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBjcmVhdGUo
V2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQpCisgICAgc3RhdGljIFJl
ZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGNyZWF0ZShXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5KGZyYW1lLCBsaXN0ZW5lcklEKSk7CisgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eShmcmFt
ZSwgbGlzdGVuZXJJRCkpOwogICAgIH0KIAotICAgIHZvaWQgdXNlKCk7CisgICAgdm9pZCB1c2Uo
Y29uc3QgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkb3dubG9hZCgpOwogICAgIHZvaWQg
aWdub3JlKCk7CiAKQEAgLTYyLDUgKzYxLDMgQEAgcHJpdmF0ZToKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAogCiAjdW5kZWYgREVMRUdBVEVfUkVGX0NPVU5USU5HX1RPX0NPQ09BCi0KLSNlbmRpZiAv
LyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHlfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJGcmFtZVByb3h5LmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNzYs
MTQgKzE3NiwxNCBAQCB2b2lkIFdlYkZyYW1lUHJveHk6OmRpZENoYW5nZVRpdGxlKGNvbnN0CiAg
ICAgbV90aXRsZSA9IHRpdGxlOwogfQogCi12b2lkIFdlYkZyYW1lUHJveHk6OnJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uKQordm9pZCBXZWJGcmFtZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiBhY3Rpb24sIHVpbnQ2
NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3QgV2Vic2l0
ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX3BhZ2UpCiAgICAgICAg
IHJldHVybjsKIAogICAgIEFTU0VSVChtX2FjdGl2ZUxpc3RlbmVyKTsKICAgICBBU1NFUlQobV9h
Y3RpdmVMaXN0ZW5lci0+bGlzdGVuZXJJRCgpID09IGxpc3RlbmVySUQpOwotICAgIG1fcGFnZS0+
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sIHRoaXMsIGxpc3RlbmVySUQsIG5hdmlnYXRp
b24pOworICAgIG1fcGFnZS0+cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihhY3Rpb24sICp0aGlzLCBs
aXN0ZW5lcklELCBuYXZpZ2F0aW9uLCB3ZWJzaXRlUG9saWNpZXMpOwogfQogCiBXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkmIFdlYkZyYW1lUHJveHk6OnNldFVwUG9saWN5TGlzdGVuZXJQcm94
eSh1aW50NjRfdCBsaXN0ZW5lcklEKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkZyYW1lUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RnJhbWVQcm94eS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViRnJhbWVQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFtZVBy
b3h5X2gKLSNkZWZpbmUgV2ViRnJhbWVQcm94eV9oCisjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZFN0YXRlLmgiCkBAIC01Myw2ICs1Miw3
IEBAIGNsYXNzIFdlYkNlcnRpZmljYXRlSW5mbzsKIGNsYXNzIFdlYkZvcm1TdWJtaXNzaW9uTGlz
dGVuZXJQcm94eTsKIGNsYXNzIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTsKIGNsYXNzIFdl
YlBhZ2VQcm94eTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIHR5cGVkZWYgR2VuZXJpY0Nh
bGxiYWNrPEFQSTo6RGF0YSo+IERhdGFDYWxsYmFjazsKIApAQCAtMTE1LDcgKzExNSw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKGNvbnN0IFN0cmluZyYpOwogCiAgICAgLy8g
UG9saWN5IG9wZXJhdGlvbnMuCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiA9
IG51bGxwdHIpOworICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24sIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlvbiosIGNvbnN0IFdl
YnNpdGVQb2xpY2llcyYpOwogICAgIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgc2V0VXBQ
b2xpY3lMaXN0ZW5lclByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIFdlYkZvcm1TdWJt
aXNzaW9uTGlzdGVuZXJQcm94eSYgc2V0VXBGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkodWlu
dDY0X3QgbGlzdGVuZXJJRCk7CiAKQEAgLTE0OSw1ICsxNDksMyBAQCBwcml2YXRlOgogfTsKIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBXZWJGcmFtZVByb3h5X2gKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclBy
b3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzM0LDcgKzMzNCw3IEBAIHN0YXRpYyB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3QKICAgICAvLyBBbGxvdyBub24tbWFpbiBmcmFtZXMg
dG8gbmF2aWdhdGUgYW55d2hlcmUuCiAgICAgQVBJOjpGcmFtZUluZm8qIHNvdXJjZUZyYW1lID0g
dG9JbXBsKG5hdmlnYXRpb25BY3Rpb25SZWYpLT5zb3VyY2VGcmFtZSgpOwogICAgIGlmIChzb3Vy
Y2VGcmFtZSAmJiAhc291cmNlRnJhbWUtPmlzTWFpbkZyYW1lKCkpIHsKLSAgICAgICAgdG9JbXBs
KGxpc3RlbmVyUmVmKS0+dXNlKCk7CisgICAgICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPnVzZSh7
IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zNDUsNyArMzQ1LDcgQEAgc3RhdGlj
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdAogCiAgICAgLy8gQWxsb3cgbG9hZGlu
ZyBvZiB0aGUgbWFpbiBpbnNwZWN0b3IgZmlsZS4KICAgICBpZiAoV2ViSW5zcGVjdG9yUHJveHk6
OmlzTWFpbk9yVGVzdEluc3BlY3RvclBhZ2UocmVxdWVzdC51cmwoKSkpIHsKLSAgICAgICAgdG9J
bXBsKGxpc3RlbmVyUmVmKS0+dXNlKCk7CisgICAgICAgIHRvSW1wbChsaXN0ZW5lclJlZiktPnVz
ZSh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyNTQs
NyArMjI1NCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjZW50ZXJTZWxlY3Rpb25JblZpc2kKICAg
ICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNlbnRlclNlbGVjdGlvbkluVmlz
aWJsZUFyZWEoKSwgbV9wYWdlSUQpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQ
b2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24gYWN0aW9uLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwg
dWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uKQordm9pZCBX
ZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oUG9saWN5QWN0aW9uIGFjdGlvbiwg
V2ViRnJhbWVQcm94eSYgZnJhbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIEFQSTo6TmF2aWdhdGlv
biogbmF2aWdhdGlvbiwgY29uc3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7
CiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTIyOTQsMTAgKzIyOTQs
MTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogICAgICAgICBt
X3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCA9IHRydWU7CiAgICAgICAg
IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb24gPSBhY3Rpb247CiAgICAgICAgIG1f
c3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsKKyAgICAg
ICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdlYnNpdGVQb2xpY2llcyA9IHdlYnNpdGVQ
b2xpY2llczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBtX3Byb2Nlc3MtPnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS0+ZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9wcm9jZXNzLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oZnJhbWUuZnJh
bWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0aW9uLT5uYXZp
Z2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCkBAIC0zNjEwLDcg
KzM2MTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVGcmFtZVNlCiAgICAg
ICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSB2YWx1ZSA/IG1fbWFpbkZyYW1lIDogMDsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiBu
YXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBT
ZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVz
ZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmlnYXRp
b25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCkKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90
IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdh
dGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0
YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQs
IHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2FkSUQsIFdlYnNpdGVQ
b2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJv
dGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKQEAgLTM2NzgsNiArMzY3OSw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBpZiAobV9zeW5jTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFjdGlvbklzVmFsaWQpIHsKICAgICAgICAgcG9saWN5QWN0aW9uID0gbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKICAgICAgICAgZG93bmxvYWRJRCA9IG1fc3lu
Y05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAgICAgICB3ZWJzaXRlUG9saWNp
ZXMgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzOwogICAgIH0K
IH0KIApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNp
b24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3
b3JraW5nIGNvcHkpCkBAIC02MCw2ICs2MCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQb3B1cE1lbnVQcm94eS5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3NMaWZldGltZVRyYWNrZXIuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKICNp
bmNsdWRlIDxXZWJDb3JlL0FjdGl2aXR5U3RhdGUuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NvbG9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EcmFnQWN0aW9ucy5oPgpAQCAtODAzLDcgKzgwNCw3IEBA
IHB1YmxpYzoKICAgICB2b2lkIHBlcmZvcm1EaWN0aW9uYXJ5TG9va3VwT2ZDdXJyZW50U2VsZWN0
aW9uKCk7CiAjZW5kaWYKIAotICAgIHZvaWQgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24sIFdlYkZyYW1lUHJveHkqLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6
Ok5hdmlnYXRpb24qIG5hdmlnYXRpb25JRCk7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lz
aW9uKFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSYsIHVpbnQ2NF90IGxpc3Rl
bmVySUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbklELCBjb25zdCBXZWJzaXRlUG9saWNp
ZXMmKTsKIAogICAgIHZvaWQgYmFja0ZvcndhcmRSZW1vdmVkSXRlbSh1aW50NjRfdCBpdGVtSUQp
OwogCkBAIC0xMjQyLDcgKzEyNDMsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0cm95
TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJh
bWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBvcmlnaW5hdGluZ0ZyYW1l
U2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxS
ZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCB1aW50NjRfdCBsaXN0ZW5l
cklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRf
dCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJik7
CisgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1l
SUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdp
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiBvcmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QmLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVk
UG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5
QWN0aW9uLCBEb3dubG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6
U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYpOwogICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jiwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNv
bnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBwb2xp
Y3lBY3Rpb24sIERvd25sb2FkSUQmKTsKQEAgLTE3NjMsNiArMTc2NCw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKICAgICBX
ZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsK
ICAgICBEb3dubG9hZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOwor
ICAgIFdlYnNpdGVQb2xpY2llcyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBv
bGljaWVzOwogICAgIGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uIHsgZmFsc2UgfTsKIAogICAgIERlcXVlPE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQ+IG1fa2V5RXZlbnRRdWV1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjA5NDUxKQorKysgU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMTExLDcgKzExMSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAg
ICAjIFBvbGljeSBtZXNzYWdlcwogICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50
NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQ
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQpCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBm
cmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlP
cmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nRnJhbWVJ
RCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBvcmlnaW5hdGluZ0ZyYW1lU2Vj
dXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJL
aXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWlu
dDY0X3QgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElEKQorICAgIERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5h
dmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5h
dGluZ0ZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luYXRp
bmdGcmFtZVNlY3VyaXR5T3JpZ2luLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxS
ZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lB
Y3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRCwgdWludDY0X3QgcG9saWN5QWN0aW9uLCBX
ZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzIHdlYnNpdGVQb2xpY2llcykKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmlu
ZyBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRh
dGEpCiAgICAgVW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29y
ZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xp
ZW50LmgJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
QVBJTmF2aWdhdGlvbkNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMywxNCArMjMsMTQgQEAK
ICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIEFQSU5h
dmlnYXRpb25DbGllbnRfaAotI2RlZmluZSBBUElOYXZpZ2F0aW9uQ2xpZW50X2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiQVBJRGF0YS5oIgogI2luY2x1ZGUgIlBsdWdpbk1vZHVsZUluZm8u
aCIKICNpbmNsdWRlICJTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZS5oIgogI2luY2x1ZGUgIldl
YkV2ZW50LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCisjaW5j
bHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9GcmFtZUxvYWRlclR5
cGVzLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9MYXlvdXRNaWxlc3RvbmVzLmg+CiAjaW5jbHVkZSA8
d3RmL0ZvcndhcmQuaD4KQEAgLTk1LDEyICs5NSwxMiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIEFQSTo6TmF2aWdhdGlvbkFjdGlvbiYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlz
dGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlz
dGVuZXItPnVzZSgpOworICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogCiAgICAg
dmlydHVhbCB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiwgUmVmPFdlYktpdDo6V2ViRnJh
bWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewot
ICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAg
ICB9CiAgICAgCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xMTcsNSArMTE3
LDMgQEAgcHVibGljOgogfTsKIAogfSAvLyBuYW1lc3BhY2UgQVBJCi0KLSNlbmRpZiAvLyBBUElO
YXZpZ2F0aW9uQ2xpZW50X2gKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJ
UG9saWN5Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9BUElQb2xpY3lDbGllbnQuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9BUElQb2xpY3lDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTMsMTUg
KzUzLDE1IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5
KiwgY29uc3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSYsIFdlYktpdDo6V2ViRnJhbWVQ
cm94eSosIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFdlYkNvcmU6OlJl
c291cmNlUmVxdWVzdCYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgp
OworICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJL
aXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBSZWY8
V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2Jq
ZWN0KikKICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgbGlzdGVuZXIt
PnVzZSh7IH0pOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JiwgYm9vbCwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAg
ICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9CiAgICAgdmlydHVhbCB2b2lkIHVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVBy
b3h5JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CiB9
OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0
ZVBvbGljaWVzLmNwcAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwzNiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJBUElXZWJzaXRl
UG9saWNpZXMuaCIKKworbmFtZXNwYWNlIEFQSSB7CisKK1JlZjxXZWJzaXRlUG9saWNpZXM+IFdl
YnNpdGVQb2xpY2llczo6Y3JlYXRlKCkKK3sKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJz
aXRlUG9saWNpZXMoKSk7Cit9CisKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVN
UExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUg
IkFQSU9iamVjdC5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCituYW1lc3BhY2Ug
QVBJIHsKKworY2xhc3MgV2Vic2l0ZVBvbGljaWVzIGZpbmFsIDogcHVibGljIE9iamVjdEltcGw8
T2JqZWN0OjpUeXBlOjpXZWJzaXRlUG9saWNpZXM+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUmVm
PFdlYnNpdGVQb2xpY2llcz4gY3JlYXRlKCk7CisgICAgZXhwbGljaXQgV2Vic2l0ZVBvbGljaWVz
KCkgPSBkZWZhdWx0OworICAgIHZpcnR1YWwgfldlYnNpdGVQb2xpY2llcygpID0gZGVmYXVsdDsK
KworICAgIGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vi
c2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQ7IH0KKyAgICB2b2lkIHNldENvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQoYm9vbCBlbmFibGVkKSB7IG1fd2Vic2l0ZVBvbGljaWVzLmNvbnRl
bnRCbG9ja2Vyc0VuYWJsZWQgPSBlbmFibGVkOyB9CisgICAgCisgICAgY29uc3QgV2ViS2l0OjpX
ZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcygpIHsgcmV0dXJuIG1fd2Vic2l0ZVBvbGlj
aWVzOyB9CisgICAgCitwcml2YXRlOgorICAgIAorICAgIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVz
IG1fd2Vic2l0ZVBvbGljaWVzOworfTsKKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQy9XS0FQSUNhc3QuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC02Nyw2ICs2
Nyw3IEBAIGNsYXNzIFVzZXJDb250ZW50RXh0ZW5zaW9uOwogY2xhc3MgVXNlckNvbnRlbnRFeHRl
bnNpb25TdG9yZTsKIGNsYXNzIFVzZXJTY3JpcHQ7CiBjbGFzcyBXZWJzaXRlRGF0YVN0b3JlOwor
Y2xhc3MgV2Vic2l0ZVBvbGljaWVzOwogY2xhc3MgV2luZG93RmVhdHVyZXM7CiB9CiAKQEAgLTEx
MCw2ICsxMTEsNyBAQCBjbGFzcyBXZWJUZXh0Q2hlY2tlcjsKIGNsYXNzIFdlYlVzZXJDb250ZW50
Q29udHJvbGxlclByb3h5OwogY2xhc3MgV2ViVmlicmF0aW9uUHJveHk7CiBjbGFzcyBXZWJWaWV3
cG9ydEF0dHJpYnV0ZXM7CitzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzOwogCiBXS19BRERfQVBJX01B
UFBJTkcoV0tBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVJlZiwgQXV0aGVudGljYXRpb25DaGFsbGVu
Z2VQcm94eSkKIFdLX0FERF9BUElfTUFQUElORyhXS0F1dGhlbnRpY2F0aW9uRGVjaXNpb25MaXN0
ZW5lclJlZiwgQXV0aGVudGljYXRpb25EZWNpc2lvbkxpc3RlbmVyKQpAQCAtMTY1LDYgKzE2Nyw3
IEBAIFdLX0FERF9BUElfTUFQUElORyhXS1VzZXJTY3JpcHRSZWYsIEFQSToKIFdLX0FERF9BUElf
TUFQUElORyhXS1ZpYnJhdGlvblJlZiwgV2ViVmlicmF0aW9uUHJveHkpCiBXS19BRERfQVBJX01B
UFBJTkcoV0tWaWV3cG9ydEF0dHJpYnV0ZXNSZWYsIFdlYlZpZXdwb3J0QXR0cmlidXRlcykKIFdL
X0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVEYXRhU3RvcmVSZWYsIEFQSTo6V2Vic2l0ZURhdGFT
dG9yZSkKK1dLX0FERF9BUElfTUFQUElORyhXS1dlYnNpdGVQb2xpY2llc1JlZiwgQVBJOjpXZWJz
aXRlUG9saWNpZXMpCiBXS19BRERfQVBJX01BUFBJTkcoV0tXaW5kb3dGZWF0dXJlc1JlZiwgQVBJ
OjpXaW5kb3dGZWF0dXJlcykKIAogLyogRW51bSBjb252ZXJzaW9ucyAqLwpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0
ZW5lci5jcHAJKHJldmlzaW9uIDIwOTQ1MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw5ICsyNiwx
MSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldLRnJhbWVQb2xpY3lMaXN0ZW5l
ci5oIgogCisjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSAiV0tBUElD
YXN0LmgiCiAjaW5jbHVkZSAiV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViRnJhbWVQcm94eS5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2llcy5oIgogCiB1c2lu
ZyBuYW1lc3BhY2UgV2ViS2l0OwogCkBAIC0zOSw3ICs0MSwxMiBAQCBXS1R5cGVJRCBXS0ZyYW1l
UG9saWN5TGlzdGVuZXJHZXRUeXBlSUQoCiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNl
KFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lclJlZikKIHsKLSAgICB0b0lt
cGwocG9saWN5TGlzdGVuZXJSZWYpLT51c2UoKTsKKyAgICB0b0ltcGwocG9saWN5TGlzdGVuZXJS
ZWYpLT51c2UoeyB9KTsKK30KKwordm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2VXaXRoUG9s
aWNpZXMoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmLCBXS1dlYnNp
dGVQb2xpY2llc1JlZiB3ZWJzaXRlUG9saWNpZXMpCit7CisgICAgdG9JbXBsKHBvbGljeUxpc3Rl
bmVyUmVmKS0+dXNlKHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT53ZWJzaXRlUG9saWNpZXMoKSk7
CiB9CiAKIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGljeUxp
c3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmKQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5TGlzdGVuZXIuaAkocmV2aXNpb24g
MjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lM
aXN0ZW5lci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTAsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXS0ZyYW1lUG9saWN5TGlzdGVuZXJf
aAotI2RlZmluZSBXS0ZyYW1lUG9saWN5TGlzdGVuZXJfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNs
dWRlIDxXZWJLaXQvV0tCYXNlLmg+CiAKQEAgLTM0LDEyICszMywxMSBAQCBleHRlcm4gIkMiIHsK
IAogV0tfRVhQT1JUIFdLVHlwZUlEIFdLRnJhbWVQb2xpY3lMaXN0ZW5lckdldFR5cGVJRCgpOwog
Ci1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJVc2UoV0tGcmFtZVBvbGljeUxp
c3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKLVdLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lckRvd25sb2FkKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiBwb2xpY3lMaXN0ZW5lcik7
Ci1XS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJJZ25vcmUoV0tGcmFtZVBvbGlj
eUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyKTsKK1dLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xp
Y3lMaXN0ZW5lclVzZShXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYpOworV0tfRVhQT1JUIHZvaWQg
V0tGcmFtZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmKTsK
K1dLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShXS0ZyYW1lUG9saWN5
TGlzdGVuZXJSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVyVXNlV2l0
aFBvbGljaWVzKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZiwgV0tXZWJzaXRlUG9saWNpZXNSZWYp
OwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgotCi0jZW5kaWYgLyogV0tGcmFtZVBv
bGljeUxpc3RlbmVyX2ggKi8KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9X
S1BhZ2UuY3BwCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM0OCw3ICsxMzQ4LDcgQEAgdm9p
ZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2b2lkIGRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVBy
b3h5KiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25E
YXRhLCBXZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lLCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQ
cm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb25fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYxICYmICFtX2NsaWVudC5kZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXIt
PnVzZSgpOworICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTEzNjYsNyArMTM2Niw3IEBAIHZvaWQg
V0tQYWdlU2V0UGFnZVBvbGljeUNsaWVudChXS1BhZ2VSZWYKICAgICAgICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgY29uc3QgTmF2aWdhdGlvbkFjdGlvbkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwgY29uc3QgU3RyaW5nJiBm
cmFtZU5hbWUsIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24pIHsKLSAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTM3OCw3ICsx
Mzc4LDcgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAg
ICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJh
bWVQcm94eSYgZnJhbWUsIGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc291cmNlUmVzcG9uc2Us
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBib29sIGNhblNob3dNSU1F
VHlwZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpP
YmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjAgJiYg
IW1fY2xpZW50LmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgbGlz
dGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAkobm9uZXhp
c3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNp
ZXMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5j
bHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV0tXZWJzaXRlUG9saWNpZXMuaCIKKworI2luY2x1
ZGUgIkFQSVdlYnNpdGVQb2xpY2llcy5oIgorI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgorI2luY2x1
ZGUgIldlYnNpdGVQb2xpY2llcy5oIgorCit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OworCitXS1R5
cGVJRCBXS1dlYnNpdGVQb2xpY2llc0dldFR5cGVJRCgpCit7CisgICAgcmV0dXJuIHRvQVBJKEFQ
STo6V2Vic2l0ZVBvbGljaWVzOjpBUElUeXBlKTsKK30KKworV0tXZWJzaXRlUG9saWNpZXNSZWYg
V0tXZWJzaXRlUG9saWNpZXNDcmVhdGUoKQoreworICAgIHJldHVybiB0b0FQSSgmQVBJOjpXZWJz
aXRlUG9saWNpZXM6OmNyZWF0ZSgpLmxlYWtSZWYoKSk7Cit9CisKK3ZvaWQgV0tXZWJzaXRlUG9s
aWNpZXNTZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNp
dGVQb2xpY2llcywgYm9vbCBlbmFibGVkKQoreworICAgIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMp
LT5zZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKGVuYWJsZWQpOworfQorCitib29sIFdLV2Vic2l0
ZVBvbGljaWVzR2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZiB3
ZWJzaXRlUG9saWNpZXMpCit7CisgICAgcmV0dXJuIHRvSW1wbCh3ZWJzaXRlUG9saWNpZXMpLT5j
b250ZW50QmxvY2tlcnNFbmFibGVkKCk7Cit9CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuaAkobm9uZXhpc3RlbnQpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMCwwICsxLDQzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDxXZWJLaXQvV0tCYXNlLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJD
IiB7CisjZW5kaWYKKworV0tfRVhQT1JUIFdLVHlwZUlEIFdLV2Vic2l0ZVBvbGljaWVzR2V0VHlw
ZUlEKCk7CisKK1dLX0VYUE9SVCBXS1dlYnNpdGVQb2xpY2llc1JlZiBXS1dlYnNpdGVQb2xpY2ll
c0NyZWF0ZSgpOworCitXS19FWFBPUlQgYm9vbCBXS1dlYnNpdGVQb2xpY2llc0dldENvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tX
ZWJzaXRlUG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKFdLV2Vic2l0ZVBvbGljaWVz
UmVmLCBib29sKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05h
dmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAkocmV2aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGUuaAko
d29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsOCBAQAogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIAor
QGNsYXNzIF9XS1dlYnNpdGVQb2xpY2llczsKKwogc3RhdGljIGNvbnN0IFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQgPSAoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5KShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdyArIDEpOwogc3Rh
dGljIGNvbnN0IFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMSksIGlvcyg5LjApKSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3dXaXRob3V0
VHJ5aW5nQXBwTGluayA9IChXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFj
dGlvblBvbGljeUFsbG93ICsgMik7CiAKQEAgLTYzLDYgKzY1LDcgQEAgc3RhdGljIGNvbnN0IFdL
TmF2aWdhdGlvblJlc3BvbnNlUG9saWN5IAogLSAodm9pZClfd2ViVmlld1dpbGxFbmROYXZpZ2F0
aW9uR2VzdHVyZTooV0tXZWJWaWV3ICopd2ViVmlldyB3aXRoTmF2aWdhdGlvblRvQmFja0Zvcndh
cmRMaXN0SXRlbTooV0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbTsKIC0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgd2lsbFNuYXBzaG90QmFja0ZvcndhcmRMaXN0SXRlbToo
V0tCYWNrRm9yd2FyZExpc3RJdGVtICopaXRlbTsKIC0gKHZvaWQpX3dlYlZpZXdEaWRSZW1vdmVO
YXZpZ2F0aW9uR2VzdHVyZVNuYXBzaG90OihXS1dlYlZpZXcgKil3ZWJWaWV3IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KDEwLjEyKSwgaW9zKDEwLjApKTsKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0
aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
TmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKWRlY2lzaW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAogI2lmIFRBUkdFVF9PU19JUEhPTkUKIC0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgZGlkU3RhcnRMb2FkRm9yUXVpY2tMb29rRG9jdW1lbnRJbk1haW5GcmFtZVdpdGhG
aWxlTmFtZTooTlNTdHJpbmcgKilmaWxlTmFtZSB1dGk6KE5TU3RyaW5nICopdXRpOwpJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNp
dGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwz
NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworI2lm
IFdLX0FQSV9FTkFCTEVECisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgX1dLV2Vic2l0ZVBvbGljaWVzIDogTlNPYmpl
Y3QKKworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY29udGVudEJsb2NrZXJzRW5hYmxlZDsK
KworQGVuZAorCisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1t
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dL
V2Vic2l0ZVBvbGljaWVzLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llc0lu
dGVybmFsLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCitAaW1wbGVtZW50YXRpb24gX1dLV2Vi
c2l0ZVBvbGljaWVzCisKKy0gKHZvaWQpZGVhbGxvYworeworICAgIF93ZWJzaXRlUG9saWNpZXMt
PkFQSTo6V2Vic2l0ZVBvbGljaWVzOjp+V2Vic2l0ZVBvbGljaWVzKCk7CisgICAgCisgICAgW3N1
cGVyIGRlYWxsb2NdOworfQorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIGlmICghKHNl
bGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAgICByZXR1cm4gbmlsOworICAgIAorICAgIEFQSTo6
T2JqZWN0Ojpjb25zdHJ1Y3RJbldyYXBwZXI8QVBJOjpXZWJzaXRlUG9saWNpZXM+KHNlbGYpOwor
ICAgIAorICAgIHJldHVybiBzZWxmOworfQorCistICh2b2lkKXNldENvbnRlbnRCbG9ja2Vyc0Vu
YWJsZWQ6KEJPT0wpY29udGVudEJsb2NrZXJzRW5hYmxlZAoreworICAgIF93ZWJzaXRlUG9saWNp
ZXMtPnNldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoY29udGVudEJsb2NrZXJzRW5hYmxlZCk7Cit9
CisKKy0gKEJPT0wpY29udGVudEJsb2NrZXJzRW5hYmxlZAoreworICAgIHJldHVybiBfd2Vic2l0
ZVBvbGljaWVzLT5jb250ZW50QmxvY2tlcnNFbmFibGVkKCk7Cit9CisKKy0gKE5TU3RyaW5nICop
ZGVzY3JpcHRpb24KK3sKKyAgICByZXR1cm4gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCI8
JUA6ICVwOyBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gJWQ+IiwgTlNTdHJpbmdGcm9tQ2xhc3Mo
c2VsZi5jbGFzcyksIHNlbGYsIHNlbGYuY29udGVudEJsb2NrZXJzRW5hYmxlZF07Cit9CisKKy0g
KEFQSTo6T2JqZWN0JilfYXBpT2JqZWN0Cit7CisgICAgcmV0dXJuICpfd2Vic2l0ZVBvbGljaWVz
OworfQorCitAZW5kCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwu
aAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19X
S1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw0OSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgIl9XS1dlYnNpdGVQb2xpY2llcy5oIgorCisjaWYgV0tf
QVBJX0VOQUJMRUQKKworI2ltcG9ydCAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW1wb3J0ICJX
S09iamVjdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworaW5saW5lIF9XS1dlYnNpdGVQb2xp
Y2llcyAqd3JhcHBlcihBUEk6OldlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQorewor
ICAgIEFTU0VSVChbd2Vic2l0ZVBvbGljaWVzLndyYXBwZXIoKSBpc0tpbmRPZkNsYXNzOltfV0tX
ZWJzaXRlUG9saWNpZXMgY2xhc3NdXSk7CisgICAgcmV0dXJuIChfV0tXZWJzaXRlUG9saWNpZXMg
Kil3ZWJzaXRlUG9saWNpZXMud3JhcHBlcigpOworfQorCit9CisKK0BpbnRlcmZhY2UgX1dLV2Vi
c2l0ZVBvbGljaWVzICgpIDxXS09iamVjdD4geworICAgIEBwYWNrYWdlCisgICAgQVBJOjpPYmpl
Y3RTdG9yYWdlPEFQSTo6V2Vic2l0ZVBvbGljaWVzPiBfd2Vic2l0ZVBvbGljaWVzOworfQorQGVu
ZAorCisjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dl
YkF1dG9tYXRpb25TZXNzaW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQXV0b21hdGlvbi9XZWJBdXRvbWF0aW9uU2Vzc2lvbi5jcHAJKHJldmlzaW9uIDIwOTQ1
MSkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25T
ZXNzaW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM1LDggKzQzNSw3IEBAIHZvaWQgV2ViQXV0
b21hdGlvblNlc3Npb246OnJlbG9hZEJyb3dzaW4KICAgICBtX3BlbmRpbmdOYXZpZ2F0aW9uSW5C
cm93c2luZ0NvbnRleHRDYWxsYmFja3NQZXJQYWdlLnNldChwYWdlLT5wYWdlSUQoKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogCiAgICAgY29uc3QgYm9vbCByZWxvYWRGcm9tT3JpZ2luID0gZmFsc2U7
Ci0gICAgY29uc3QgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKLSAgICBwYWdl
LT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisgICAg
cGFnZS0+cmVsb2FkKHJlbG9hZEZyb21PcmlnaW4sIHsgfSk7CiB9CiAKIHZvaWQgV2ViQXV0b21h
dGlvblNlc3Npb246Omluc3BlY3RCcm93c2luZ0NvbnRleHQoSW5zcGVjdG9yOjpFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgaGFuZGxlLCBjb25zdCBib29sKiBvcHRpb25h
bEVuYWJsZUF1dG9DYXB0dXJpbmcsIFJlZjxJbnNwZWN0QnJvd3NpbmdDb250ZXh0Q2FsbGJhY2s+
JiYgY2FsbGJhY2spCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29h
L05hdmlnYXRpb25TdGF0ZS5oCShyZXZpc2lvbiAyMDk0NTEpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE2Miw2
ICsxNjIsNyBAQCBwcml2YXRlOgogCiAgICAgc3RydWN0IHsKICAgICAgICAgYm9vbCB3ZWJWaWV3
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlciA6IDE7CisgICAg
ICAgIGJvb2wgd2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhh
bmRsZXJXZWJzaXRlUG9saWNpZXMgOiAxOwogICAgICAgICBib29sIHdlYlZpZXdEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2VEZWNpc2lvbkhhbmRsZXIgOiAxOwogCiAgICAgICAgIGJv
b2wgd2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uIDogMTsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQkocmV2
aXNpb24gMjA5NDUxKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRp
b25TdGF0ZS5tbQkod29ya2luZyBjb3B5KQpAQCAtNjIsNiArNjIsNyBAQAogI2ltcG9ydCAiX1dL
RnJhbWVIYW5kbGVJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLUmVuZGVyaW5nUHJvZ3Jlc3NFdmVu
dHNJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGVJbnRl
cm5hbC5oIgorI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaCIKICNpbXBvcnQg
PFdlYkNvcmUvQ3JlZGVudGlhbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VyaWFsaXplZENyeXB0b0tleVdyYXAuaD4KQEAgLTEz
Nyw2ICsxMzgsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6c2V0TmF2aWdhdGlvbkRlbGVnCiAg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGUgPSBkZWxlZ2F0ZTsKIAogICAgIG1fbmF2aWdhdGlvbkRl
bGVnYXRlTWV0aG9kcy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lz
aW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZp
ZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV07Cisg
ICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzID0gW2RlbGVnYXRlIHJl
c3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KV07CiAgICAgbV9uYXZpZ2F0aW9uRGVsZWdhdGVN
ZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2VEZWNpc2lvbkhh
bmRsZXIgPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcih3ZWJWaWV3OmRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6KV07CiAKICAg
ICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFN0YXJ0UHJvdmlzaW9uYWxO
YXZpZ2F0aW9uID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3Iod2ViVmll
dzpkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjopXTsKQEAgLTI2NSw3ICsyNjcsNyBAQCBO
YXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6On5OYXZpCiB7CiB9CiAKLXN0YXRpYyB2
b2lkIHRyeUFwcExpbmsoUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbmF2aWdhdGlvbkFj
dGlvbiwgY29uc3QgU3RyaW5nJiBjdXJyZW50TWFpbkZyYW1lVVJMLCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKGJvb2wpPiBjb21wbGV0aW9uSGFuZGxlcikKK3N0YXRpYyB2b2lkIHRyeUFwcExpbmsoUmVm
UHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBTdHJp
bmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVuY3Rpb248dm9pZChib29sKT4gY29tcGxl
dGlvbkhhbmRsZXIpCiB7CiAjaWYgSEFWRShBUFBfTElOS1MpCiAgICAgaWYgKCFuYXZpZ2F0aW9u
QWN0aW9uLT5zaG91bGRPcGVuQXBwTGlua3MoKSkgewpAQCAtMjg5LDE4ICsyOTEsMTkgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogewogICAgIFN0cmluZyBtYWlu
RnJhbWVVUkxTdHJpbmcgPSB3ZWJQYWdlUHJveHkubWFpbkZyYW1lKCktPnVybCgpOwogCi0gICAg
aWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmll
d0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXIpIHsKKyAgICBp
ZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcgorICAgICAgICAm
JiAhbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdE
ZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGlj
aWVzKSB7CiAgICAgICAgIFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+IGxvY2FsTmF2aWdh
dGlvbkFjdGlvbiA9ICZuYXZpZ2F0aW9uQWN0aW9uOwogICAgICAgICBSZWZQdHI8V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiBsb2NhbExpc3RlbmVyID0gV1RGTW92ZShsaXN0ZW5lcik7CiAK
LSAgICAgICAgdHJ5QXBwTGluayhsb2NhbE5hdmlnYXRpb25BY3Rpb24sIG1haW5GcmFtZVVSTFN0
cmluZywgW2xvY2FsTGlzdGVuZXIsIGxvY2FsTmF2aWdhdGlvbkFjdGlvbl0gKGJvb2wgZm9sbG93
ZWRMaW5rVG9BcHApIHsKKyAgICAgICAgdHJ5QXBwTGluayhXVEZNb3ZlKGxvY2FsTmF2aWdhdGlv
bkFjdGlvbiksIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXIsIGxvY2FsTmF2aWdh
dGlvbkFjdGlvbiA9IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0
aW9uKV0gKGJvb2wgZm9sbG93ZWRMaW5rVG9BcHApIHsKICAgICAgICAgICAgIGlmIChmb2xsb3dl
ZExpbmtUb0FwcCkgewogICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwog
ICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KCFsb2NhbE5hdmlnYXRpb25BY3Rpb24tPnRhcmdldEZyYW1lKCkpIHsKLSAgICAgICAgICAgICAg
ICBsb2NhbExpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51
c2UoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTMw
OSw3ICszMTIsNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAg
ICAgICAgICAgICAgICAgaWYgKGxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkUGVyZm9ybURv
d25sb2FkKCkpCiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmRvd25sb2FkKCk7
CiAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVy
LT51c2UoKTsKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKHsgfSk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0zMjksMjEgKzMzMiwy
NiBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiAgICAgaWYgKCFu
YXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxBUEk6Ok5h
dmlnYXRpb25BY3Rpb24+IGxvY2FsTmF2aWdhdGlvbkFjdGlvbiA9ICZuYXZpZ2F0aW9uQWN0aW9u
OwotICAgIFJlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIg
PSBXVEZNb3ZlKGxpc3RlbmVyKTsKLSAgICBSZWZQdHI8Q29tcGxldGlvbkhhbmRsZXJDYWxsQ2hl
Y2tlcj4gY2hlY2tlciA9IENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI6OmNyZWF0ZShuYXZp
Z2F0aW9uRGVsZWdhdGUuZ2V0KCksIEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjp3cmFwcGVyKG5hdmlnYXRpb25BY3Rpb24pIGRlY2lzaW9uSGFuZGxlcjpb
bG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uLCBjaGVja2VyLCBtYWluRnJhbWVV
UkxTdHJpbmddKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIHsKKyAgICBi
b29sIGRlbGVnYXRlSGFzV2Vic2l0ZVBvbGljaWVzID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uRGVjaXNpb25IYW5kbGVyV2Vic2l0ZVBvbGljaWVzOworICAgIAorICAgIFJlZlB0cjxDb21w
bGV0aW9uSGFuZGxlckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxs
Q2hlY2tlcjo6Y3JlYXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgZGVsZWdhdGVIYXNXZWJz
aXRlUG9saWNpZXMgPyBAc2VsZWN0b3IoX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSA6IEBzZWxlY3Rvcih3ZWJWaWV3OmRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOikpOworICAgIAorICAgIGF1dG8g
ZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzID0gW2xvY2FsTGlzdGVuZXIgPSBSZWZQdHI8V2Vi
RnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PihXVEZNb3ZlKGxpc3RlbmVyKSksIGxvY2FsTmF2aWdh
dGlvbkFjdGlvbiA9IFJlZlB0cjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+KCZuYXZpZ2F0aW9uQWN0
aW9uKSwgY2hlY2tlciA9IFdURk1vdmUoY2hlY2tlciksIG1haW5GcmFtZVVSTFN0cmluZ10oV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICp3
ZWJzaXRlUG9saWNpZXMpIG11dGFibGUgewogICAgICAgICBjaGVja2VyLT5kaWRDYWxsQ29tcGxl
dGlvbkhhbmRsZXIoKTsKIAorICAgICAgICBXZWJzaXRlUG9saWNpZXMgcG9saWNpZXM7CisgICAg
ICAgIGlmICh3ZWJzaXRlUG9saWNpZXMpCisgICAgICAgICAgICBwb2xpY2llcyA9IHdlYnNpdGVQ
b2xpY2llcy0+X3dlYnNpdGVQb2xpY2llcy0+d2Vic2l0ZVBvbGljaWVzKCk7CisKICAgICAgICAg
c3dpdGNoIChhY3Rpb25Qb2xpY3kpIHsKICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvdzoKLSAgICAgICAgICAgIHRyeUFwcExpbmsobG9jYWxOYXZpZ2F0aW9uQWN0aW9u
LCBtYWluRnJhbWVVUkxTdHJpbmcsIFtsb2NhbExpc3RlbmVyXShib29sIGZvbGxvd2VkTGlua1Rv
QXBwKSB7CisgICAgICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxOYXZpZ2F0aW9uQWN0
aW9uKSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciA9IFdURk1vdmUobG9jYWxM
aXN0ZW5lciksIHBvbGljaWVzID0gV1RGTW92ZShwb2xpY2llcyldKGJvb2wgZm9sbG93ZWRMaW5r
VG9BcHApIG11dGFibGUgewogICAgICAgICAgICAgICAgIGlmIChmb2xsb3dlZExpbmtUb0FwcCkg
ewogICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVz
ZShwb2xpY2llcyk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgCiAgICAgICAgICAgICBicmVh
azsKQEAgLTM1NiwxNyArMzY0LDIzIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9u
Q2xpZW50OjoKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwdXNoCiAjcHJhZ21hIGNsYW5nIGRp
YWdub3N0aWMgaWdub3JlZCAiLVdzd2l0Y2giCiAgICAgICAgIGNhc2UgX1dLTmF2aWdhdGlvbkFj
dGlvblBvbGljeURvd25sb2FkOgotI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHBvcAogICAgICAg
ICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93bmxvYWQoKTsKICAgICAgICAgICAgIGJyZWFrOwotI3By
YWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBpZ25v
cmVkICItV3N3aXRjaCIKICAgICAgICAgY2FzZSBfV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxs
b3dXaXRob3V0VHJ5aW5nQXBwTGluazoKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0ZW5l
ci0+dXNlKHBvbGljaWVzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgfV07
CisgICAgfTsKKyAgICAKKyAgICBpZiAoZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMpCisgICAg
ICAgIFsoaWQgPFdLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4pbmF2aWdhdGlvbkRlbGVnYXRl
IF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRl
Y2lzaW9uSGFuZGxlcldpdGhQb2xpY2llc107CisgICAgZWxzZSB7CisgICAgICAgIGF1dG8gZGVj
aXNpb25IYW5kbGVyV2l0aG91dFBvbGljaWVzID0gW2RlY2lzaW9uSGFuZGxlcldpdGhQb2xpY2ll
c10gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSBhY3Rpb25Qb2xpY3kpIG11dGFibGUgeworICAg
ICAgICAgICAgZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzKGFjdGlvblBvbGljeSwgbmlsKTsK
KyAgICAgICAgfTsKKyAgICAgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBw
ZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25IYW5kbGVyOmRlY2lzaW9uSGFuZGxlcldpdGhv
dXRQb2xpY2llc107CisgICAgfQogfQogCiB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlv
bkNsaWVudDo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYs
IEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZpZ2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkK
QEAgLTM3OCwxNCArMzkyLDE0IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKICAgICAgICAgICAgIEJPT0wgZXhpc3RzID0gW1tOU0ZpbGVNYW5hZ2VyIGRlZmF1bHRN
YW5hZ2VyXSBmaWxlRXhpc3RzQXRQYXRoOnVybC5wYXRoIGlzRGlyZWN0b3J5OiZpc0RpcmVjdG9y
eV07CiAKICAgICAgICAgICAgIGlmIChleGlzdHMgJiYgIWlzRGlyZWN0b3J5ICYmIG5hdmlnYXRp
b25SZXNwb25zZS5jYW5TaG93TUlNRVR5cGUoKSkKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgICAgIGxpc3RlbmVyLT5pZ25vcmUoKTsKICAgICAgICAgICAgIHJl
dHVybjsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChuYXZpZ2F0aW9uUmVzcG9uc2UuY2FuU2hv
d01JTUVUeXBlKCkpCi0gICAgICAgICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGxpc3RlbmVyLT5p
Z25vcmUoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDAyLDcgKzQxNiw3IEBAIHZvaWQgTmF2aWdh
dGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKIAogICAgICAgICBzd2l0Y2ggKHJlc3BvbnNl
UG9saWN5KSB7CiAgICAgICAgIGNhc2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdzoK
LSAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+dXNlKHsgfSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlIFdLTmF2
aWdhdGlvblJlc3BvbnNlUG9saWN5Q2FuY2VsOgpJbmRleDogU291cmNlL1dlYktpdDIvV2ViS2l0
Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjA5NDUxKQorKysg
U291cmNlL1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xMDgxLDYgKzEwODEsMTMgQEAKIAkJNUM3NzA2NzQxRDExMzgzODAwMTI3MDBG
IC8qIFdlYlNvY2tldFByb3ZpZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDVDNzcwNjczMUQxMTFEOEIwMDEyNzAwRiAvKiBXZWJTb2NrZXRQcm92
aWRlci5jcHAgKi87IH07CiAJCTVDNzk0MzlCMUQ3NjJENjIwMDMxMDJENCAvKiBXZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNUM3OTQzOUExRDc2MkNERjAwMzEwMkQ0IC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2Eu
bW0gKi87IH07CiAJCTVDODVDNzg4MUMzRjIzQ0UwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM4NUM3
ODYxQzNGMjNDNTAwNjFBNEZBIC8qIFBlbmRpbmdEb3dubG9hZC5jcHAgKi87IH07CisJCTVDOUU1
NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzlFNTY4MDFERjdGMDU1MDBDOUVF
MzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovOyB9OworCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgxMURGN0YwNTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQ
b2xpY2llcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4QTFERjBE
RDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLm1tICovOyB9OworCQk1Q0IyMzc4QzFE
RjBERTZFMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKKwkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJu
YWwuaCAqLzsgfTsKKwkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xp
Y2llcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
Q0IyMzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLzsgfTsK
KwkJNUNCMjM3OTIxREYwRTJFRTAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCMjM3OEYxREYwRTFC
ODAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5oICovOyB9OwogCQk1Q0JDOUI4RDFDNjUy
NzlDMDBBOEZEQ0YgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0YgLyog
TmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi87IH07CiAJCTVDQkM5QjhFMUM2NTJDQTAwMEE4RkRD
RiAvKiBOZXR3b3JrRGF0YVRhc2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2su
aCAqLzsgfTsKIAkJNUNFODVCMjAxQzg4RTY0QjAwNzBCRkNFIC8qIFBpbmdMb2FkLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0U4NUIxRjFDODhFNjQz
MDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLzsgfTsKQEAgLTMxOTIsNiArMzE5OSwxNCBAQAogCQk1
Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxpemVDb2NvYS5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYktpdDJJbml0aWFsaXplQ29j
b2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M4OERDMUQwRjQxQTAwMDlE
MkY2RCAvKiBXZWJTb2NrZXRQcm92aWRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBXZWJTb2NrZXRQcm92aWRlci5oOyBwYXRoID0gTmV0d29yay9XZWJTb2NrZXRQcm92aWRl
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0
RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IFBlbmRpbmdEb3dubG9hZC5jcHA7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9Eb3dubG9h
ZHMvUGVuZGluZ0Rvd25sb2FkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5
RTU2N0YxREY3OTMwOTAwQzlFRTMzIC8qIFdlYnNpdGVQb2xpY2llcy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVz
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdLV2Vic2l0ZVBvbGlj
aWVzLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUM5RTU2ODExREY3RjA1NTAw
QzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIzNzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJz
aXRlUG9saWNpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBf
V0tXZWJzaXRlUG9saWNpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIz
NzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0IyMzc4RjFERjBFMUI4MDAxMTdBQTMg
LyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IEFQSVdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Q0Iy
Mzc5MDFERjBFMUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEFQSVdlYnNpdGVQb2xpY2llcy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDQkM5Qjg5MUM2NTI0QTUwMEE4RkRDRiAvKiBOZXR3
b3JrRGF0YVRhc2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya0Rh
dGFUYXNrLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrRGF0YVRhc2suaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCOEIxQzY1MjU3MzAwQThGRENGIC8qIE5ldHdv
cmtEYXRhVGFza0NvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1l
ID0gTmV0d29ya0RhdGFUYXNrQ29jb2EubW07IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9O
ZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNF
ODVCMUYxQzg4RTY0MzAwNzBCRkNFIC8qIFBpbmdMb2FkLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFBpbmdMb2FkLmg7IHBhdGggPSBOZXR3b3JrUHJvY2Vzcy9QaW5nTG9hZC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDcwOSw2ICs0NzI0LDcgQEAKIAkJCQkz
NzYwODgxRDE1MDQxM0U5MDBGQzgyQzcgLyogV2ViUmVuZGVyT2JqZWN0LmggKi8sCiAJCQkJODM2
MDM0OUQxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tlci5jcHAgKi8s
CiAJCQkJODM2MDM0OUUxQUNCMzRENjAwNjI2NTQ5IC8qIFdlYlNRTGl0ZURhdGFiYXNlVHJhY2tl
ci5oICovLAorCQkJCTVDOUU1NjdGMURGNzkzMDkwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMu
aCAqLywKIAkJCQlDMDMzN0RENzEyN0E1MUI2MDA4RkY0RjQgLyogV2ViVG91Y2hFdmVudC5jcHAg
Ki8sCiAJCQkJN0MwNjVGMjkxQzhDRDk1RjAwQzJEOTUwIC8qIFdlYlVzZXJDb250ZW50Q29udHJv
bGxlckRhdGFUeXBlcy5jcHAgKi8sCiAJCQkJN0MwNjVGMkExQzhDRDk1RjAwQzJEOTUwIC8qIFdl
YlVzZXJDb250ZW50Q29udHJvbGxlckRhdGFUeXBlcy5oICovLApAQCAtNTI4MSw2ICs1Mjk3LDkg
QEAKIAkJCQkxQUUyODY3NjFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXplLmgg
Ki8sCiAJCQkJMUFFMjg2NzUxQzdFNzY1MTAwNjlBQzRGIC8qIF9XS1dlYnNpdGVEYXRhU2l6ZS5t
bSAqLywKIAkJCQkxQUUyODY3RjFDN0Y5MkJGMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURhdGFTaXpl
SW50ZXJuYWwuaCAqLywKKwkJCQk1Q0IyMzc4OTFERjBERDQzMDAxMTdBQTMgLyogX1dLV2Vic2l0
ZVBvbGljaWVzLmggKi8sCisJCQkJNUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNp
dGVQb2xpY2llcy5tbSAqLywKKwkJCQk1Q0IyMzc4RDFERjBFMEMyMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCAqLywKIAkJCQlGRUQzQzFEQTFCNDQ3QUU4MDBFMEVCN0Yg
LyogQVBJU2VyaWFsaXplZFNjcmlwdFZhbHVlQ29jb2EubW0gKi8sCiAJCQkJN0NFRkE5NjAxQUMw
OTk5MzAwQjkxMEZEIC8qIEFQSVVzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVDb2NvYS5tbSAqLywK
IAkJCQkxQTM2MzVBQjFBMzE0NUU1MDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZUNvY29h
Lm1tICovLApAQCAtNjM2Niw2ICs2Mzg1LDggQEAKIAkJCQkxQUUyODY4MjFDN0Y5Mzg2MDA2OUFD
NEYgLyogQVBJV2Vic2l0ZURhdGFSZWNvcmQuaCAqLywKIAkJCQkxQTM2MzVBNzFBMzE0NEEzMDBF
RDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5jcHAgKi8sCiAJCQkJMUEzNjM1QTgxQTMxNDRB
MzAwRUQ2MTk3IC8qIEFQSVdlYnNpdGVEYXRhU3RvcmUuaCAqLywKKwkJCQk1Q0IyMzc5MDFERjBF
MUREMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1Q0IyMzc4RjFE
RjBFMUI4MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi8sCiAJCQkJMUE2NTYzRTIx
QjdBOEM1MDAwOUNGNzg3IC8qIEFQSVdpbmRvd0ZlYXR1cmVzLmNwcCAqLywKIAkJCQkxQTY1NjNF
MzFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuaCAqLywKIAkJCSk7CkBAIC02
NTAxLDYgKzY1MjIsOCBAQAogCQkJCTdDODlEMkEyMUE2Nzg4NzUwMDNBNUZERSAvKiBXS1VzZXJT
Y3JpcHRSZWYuaCAqLywKIAkJCQkxQTU3MTA5QzFBQkEwMDI3MDAyRkFCQkUgLyogV0tXZWJzaXRl
RGF0YVN0b3JlUmVmLmNwcCAqLywKIAkJCQkxQTU3MTA5RDFBQkEwMDI3MDAyRkFCQkUgLyogV0tX
ZWJzaXRlRGF0YVN0b3JlUmVmLmggKi8sCisJCQkJNUM5RTU2ODAxREY3RjA1NTAwQzlFRTMzIC8q
IFdLV2Vic2l0ZVBvbGljaWVzLmNwcCAqLywKKwkJCQk1QzlFNTY4MTFERjdGMDU1MDBDOUVFMzMg
LyogV0tXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkxQTdDMERGNDFCN0QxRjEwMDBBOUI4NDgg
LyogV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAgKi8sCiAJCQkJMUE3QzBERjUxQjdEMUYxMDAwQTlC
ODQ4IC8qIFdLV2luZG93RmVhdHVyZXNSZWYuaCAqLywKIAkJCSk7CkBAIC03NzUyLDYgKzc3NzUs
NyBAQAogCQkJCTFBQzc1QTFCMUIzMzY4MjcwMDU2NzQ1QiAvKiBIYW5nRGV0ZWN0aW9uRGlzYWJs
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjkwREUzMTM3NjU2MEUwMDUxQ0Y2OCAvKiBIVFRQ
Q29va2llQWNjZXB0UG9saWN5LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MUUzNTFDQjE4MEYyQ0ND
MDBFNTNCRTkgLyogSURCVXRpbGl0aWVzLmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IyMzc5MjFE
RjBFMkVFMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0NGNkIyNTEyQzkzRTdBMDA4RjlDMzUgLyogSW1hZ2VPcHRpb25zLmggaW4gSGVhZGVycyAq
LywKIAkJCQkxQTFFQzY5RTE4NzIwOTIxMDBCOTUxRjAgLyogSW1wb3J0YW5jZUFzc2VydGlvbi5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkMyMDRFRTMxMUM4M0U5ODAwOEYzMzc1IC8qIEluamVjdGVk
QnVuZGxlLmggaW4gSGVhZGVycyAqLywKQEAgLTgwNTgsNiArODA4Miw3IEBACiAJCQkJNTE4MzQ1
OTMxMzQ1MzJFOTAwOTJCNjk2IC8qIFdlYkljb25EYXRhYmFzZUNsaWVudC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNTFEMDJGNkExMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZU1lc3Nh
Z2VzLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTFCMjRBNzEzMkUwOTU3MDAwNjVBMEMgLyogV2Vi
SWNvbkRhdGFiYXNlUHJveHkuaCBpbiBIZWFkZXJzICovLAorCQkJCTVDQjIzNzhDMURGMERFNkUw
MDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRDAy
RjZDMTMyRUM3MzcwMEJFQUE5NiAvKiBXZWJJY29uRGF0YWJhc2VQcm94eU1lc3NhZ2VzLmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MTA1MjM3MDFDNzM5RDQyMDA3OTkzQ0IgLyogV2ViSURCQ29ubmVj
dGlvblRvQ2xpZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTA1MjM3QTFDNzNEQTc3MDA3OTkz
Q0IgLyogV2ViSURCQ29ubmVjdGlvblRvQ2xpZW50TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLApA
QCAtODI2MCw2ICs4Mjg1LDcgQEAKIAkJCQkzNzdFQUQ0NTE3RTJDNTFBMDAyRDE5M0QgLyogV0tE
ZWNsYXJhdGlvblNwZWNpZmllcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzNzJEQjJGMUE2NzdE
NEEwMEM2OTdDNSAvKiBXS0RpYWdub3N0aWNMb2dnaW5nUmVzdWx0VHlwZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQkM0MDc1RkExMjRGRjAyNzAwNjhGMjBBIC8qIFdLRGljdGlvbmFyeS5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNUNCMjM3OEUxREYwRTBEMzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xp
Y2llc0ludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0QwNzE2MjYwRkY0MDA3MDU0
RjUgLyogV0tET01Eb2N1bWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMDkxNjI2MEZG
NDAwNzA1NEY1IC8qIFdLRE9NRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMwMTdEMEIx
NjI2MEZGNDAwNzA1NEY1IC8qIFdLRE9NSW50ZXJuYWxzLmggaW4gSGVhZGVycyAqLywKQEAgLTg0
NzMsNiArODQ5OSw3IEBACiAJCQkJMUY3NTA2QjgxODU5MTY1RDAwRUMwRkY3IC8qIFdLV2ViUHJv
Y2Vzc1BsdWdJbkZyYW1lSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTM3M0QxMjJEMThB
NEI2RUIwMDY2RDlDQyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5GcmFtZVByaXZhdGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFGNzUwNkIyMTg1OTE2M0UwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVn
SW5IaXRUZXN0UmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1QzlFNTY4MzFERjdGMUIzMDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGNzUwNkI3
MTg1OTE2NUEwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5IaXRUZXN0UmVzdWx0SW50ZXJu
YWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOTg5RDg1MTYxQTk4OTAwMDBENDZEMyAvKiBXS1dl
YlByb2Nlc3NQbHVnSW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUYzMzVCQzAxODVC
ODRGMDAwMUEyMDFBIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkxvYWREZWxlZ2F0ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC05Mjg1LDYgKzkzMTIsNyBAQAogCQkJCTMxRUEyNUQyMTM0Rjc4QzAwMDVCMTQ1
MiAvKiBOYXRpdmVXZWJNb3VzZUV2ZW50TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRBOTQ0
OUYxODg0RTRGMDAwRUQ4NkRCIC8qIE5hdGl2ZVdlYlRvdWNoRXZlbnRJT1MubW0gaW4gU291cmNl
cyAqLywKIAkJCQlERjU4QzYzNjEzNzFBQ0EwMDBGOUEzN0MgLyogTmF0aXZlV2ViV2hlZWxFdmVu
dE1hYy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQjIzNzhCMURGMERFNTMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQURDQjg2QTE4OTgzMUIz
MDAyMkVFNUEgLyogTmF2aWdhdGlvbkFjdGlvbkRhdGEuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MUFCQzNERjUxODk5RTQzNzAwNEYwNjI2IC8qIE5hdmlnYXRpb25TdGF0ZS5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJCTFBNkZCQTJCMTFFNjg2MjcwMERCMTM3MSAvKiBOZXRzY2FwZUJyb3dzZXJGdW5j
cy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTkzMjMsNiArOTM1MSw3IEBACiAJCQkJNTE3Q0YwRTMx
NjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZl
ci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1QzE0MjZFQzFDMjNGODA5MDBENDExODMgLyogTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMkRB
OTQ0QkQxODg1MTFFNzAwRUQ4NkRCIC8qIE5ldHdvcmtQcm9jZXNzSU9TLm1tIGluIFNvdXJjZXMg
Ki8sCisJCQkJNUNCMjM3OTExREYwRTJFNjAwMTE3QUEzIC8qIEFQSVdlYnNpdGVQb2xpY2llcy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTc5NTU2NzE2Mjg3NkNCMDBGQTQzQjYgLyogTmV0d29y
a1Byb2Nlc3NNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCQk1MTYzMTk5NDE2Mjg5QTYwMDBFMjJG
MDAgLyogTmV0d29ya1Byb2Nlc3NNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJRTE0QTk1NDkxNkUwMTZBNDAwNjhERTgyIC8qIE5ldHdvcmtQcm9jZXNzUGxhdGZvcm1TdHJh
dGVnaWVzLmNwcCBpbiBTb3VyY2VzICovLApAQCAtOTUwOSw2ICs5NTM4LDcgQEAKIAkJCQk3MjhF
ODZGMjE3OTUxODhDMDA4Nzg3OUUgLyogV2ViQ29sb3JQaWNrZXJNYWMubW0gaW4gU291cmNlcyAq
LywKIAkJCQk3QzRBQkVEMDFBQThFOUYwMDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250ZW50RXh0
ZW5zaW9uLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDNEFCRUQ0MUFBOEZDQjgwMDg4QUEzNyAv
KiBXZWJDb21waWxlZENvbnRlbnRFeHRlbnNpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CTVDOUU1NjgyMURGN0YxQUIwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlCQzRBNjI4RjE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRBNjI5MTE0NzMxMkJFMDA2QzY4MUEgLyogV2ViQ29u
bmVjdGlvbkNsaWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTFGRUMxQzE2MjdCNDU3MDA3
MDBGNkQgLyogV2ViQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLywK
SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMDk0NTEp
CisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUg
IldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgogI2luY2x1
ZGUgIldlYlByb2Nlc3NQb29sTWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CiAjaW5jbHVkZSA8SmF2YVNj
cmlwdENvcmUvSlNPYmplY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0NhY2hlZEZyYW1lLmg+CkBA
IC04MDcsMTEgKzgwOCwxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERl
Y2lkCiAgICAgLy8gTm90aWZ5IHRoZSBVSVByb2Nlc3MuCiAgICAgUmVmPFdlYkZyYW1lPiBwcm90
ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZSogb3JpZ2luYXRpbmdDb3JlRnJhbWUg
PSBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+Y29yZUZyYW1lKCkgOiBudWxs
cHRyOwotICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZp
Z2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIG9yaWdpbmF0aW5nRnJhbWUgPyBvcmln
aW5hdGluZ0ZyYW1lLT5mcmFtZUlEKCkgOiAwLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShvcmlnaW5hdGluZ0NvcmVGcmFtZSksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0
KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigp
LnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5
KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93
bmxvYWRJRCkpKSB7CisgICAgV2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llczsKKyAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRh
dGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCks
IG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFt
ZS0+ZnJhbWVJRCgpIDogMCwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUob3JpZ2luYXRp
bmdDb3JlRnJhbWUpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0
LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1P
YmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBv
bGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdl
YnNpdGVQb2xpY2llcykpKSB7CiAgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBQb2xpY3lJZ25vcmUsIDAsIHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKKyAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQgaWYg
aXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBieSByZWxvYWRpbmcgd2l0aG91dCBjb250
ZW50IGJsb2NrZXJzLgorICAgIGlmIChkb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNp
b25zRW5hYmxlZCgpKQorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRl
bnNpb25zRW5hYmxlZCh3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CisK
ICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90
IGdyYWNlZnVsbHkgaGFuZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2
aWdhdGlvbiBwb2xpY3kgcmVwbHkuCiAgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQogICAg
ICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgc3RhdGlj
X2Nhc3Q8UG9saWN5QWN0aW9uPihwb2xpY3lBY3Rpb24pLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25s
b2FkSUQpOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjA5NDUxKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTItMDcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIGZvciBzZW5kaW5nIFdlYnNpdGVT
ZXR0aW5ncyB0byBXZWJQcm9jZXNzIGR1cmluZyBuYXZpZ2F0aW9uCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU1MTcKKyAgICAgICAgPHJkYXI6Ly8y
OTM0MTA2OD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jb250ZW50QmxvY2tlckNo
ZWNrLmh0bWw6IEFkZGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1dlYnNpdGVQb2xpY2llcy5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYnNpdGVQb2xpY2ll
c0RlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lv
bkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dlYnNpdGVQb2xpY2llc0RlbGVnYXRlIF93ZWJWaWV3
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVy
dFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToK
KyAgICAgICAgKFRFU1QpOgorCiAyMDE2LTEyLTA2ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBA
YXBwbGUuY29tPgogCiAgICAgICAgIENvcnJlY3QgU0RLUk9PVCB2YWx1ZXMgaW4geGNjb25maWcg
ZmlsZXMKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk0NTEpCisrKyBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2OCw4IEBACiAJCTVDOUU1OTQxMUQzRUI1QUMw
MEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1OTNFMUQzRUIxREUwMEUzQzYyRSAvKiBB
cHBsaWNhdGlvbkNhY2hlLmRiICovOyB9OwogCQk1QzlFNTk0MjFEM0VCNUFDMDBFM0M2MkUgLyog
QXBwbGljYXRpb25DYWNoZS5kYi1zaG0gaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5M0YxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0
aW9uQ2FjaGUuZGItc2htICovOyB9OwogCQk1QzlFNTk0MzFEM0VCNUFDMDBFM0M2MkUgLyogQXBw
bGljYXRpb25DYWNoZS5kYi13YWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0aW9u
Q2FjaGUuZGItd2FsICovOyB9OworCQk1Q0NFOTdGMTFERjYwRENEMDA5QzAwRjcgLyogV2Vic2l0
ZVBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUNDRTk3RjAxREY2MEQ4RTAwOUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5tbSAqLzsgfTsK
KwkJNUNDRTk3RjMxREY2MjQ0NDAwOUMwMEY3IC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbCBp
biBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0NF
OTdGMjFERjYyM0Y2MDA5QzAwRjcgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sICovOyB9Owog
CQk1RTRCMUQyRTFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3JvbGxWaWV3RGVsZWdhdGVDcmFzaC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVFNEIxRDJD
MUQ0MDRDNjEwMDA1MzYyMSAvKiBXS1Njcm9sbFZpZXdEZWxlZ2F0ZUNyYXNoLm1tICovOyB9Owog
CQk2QkZEMjk0QzFENUU2QzFEMDA4RUM5NjggLyogSGFzaENvdW50ZWRTZXQuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gN0EzOEQ3RTUxQzc1MkQ1RjAw
NEYxNTdEIC8qIEhhc2hDb3VudGVkU2V0LmNwcCAqLzsgfTsKIAkJNzY0MzIyRDcxQjYxQ0NDMzAw
MjRGODAxIC8qIFdvcmRCb3VuZGFyeVR5cGluZ0F0dHJpYnV0ZXMubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3NjQzMjJENTFCNjFDQ0E0MDAyNEY4MDEg
LyogV29yZEJvdW5kYXJ5VHlwaW5nQXR0cmlidXRlcy5tbSAqLzsgfTsKQEAgLTU4Myw2ICs1ODUs
NyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwogCQkJZHN0U3ViZm9s
ZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1Q0NFOTdGMzFERjYyNDQ0MDA5QzAwRjcg
LyogY29udGVudEJsb2NrZXJDaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLAogCQkJCTlC
MjcwRkVFMUREQzJDMEIwMDJENTNGMyAvKiBjbG9zZWQtc2hhZG93LXRyZWUtdGVzdC5odG1sIGlu
IENvcHkgUmVzb3VyY2VzICovLAogCQkJCUY0QzJBQjIyMURENkQ5NUUwMEUwNkQ1QiAvKiBlbm9y
bW91cy12aWRlby13aXRoLXNvdW5kLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8sCiAJCQkJODM0
OUQzQzQxREI5NzI4RTAwNEE5RjY1IC8qIGxpbmstd2l0aC1kb3dubG9hZC1hdHRyaWJ1dGUuaHRt
bCBpbiBDb3B5IFJlc291cmNlcyAqLywKQEAgLTk3Nyw2ICs5ODAsOCBAQAogCQk1QzlFNTkzRTFE
M0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBBcHBsaWNhdGlvbkNh
Y2hlLmRiOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTkzRjFEM0VCMURFMDBF
M0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYi1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBwYXRoID0gIkFwcGxpY2F0aW9uQ2FjaGUu
ZGItc2htIjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU5NDAxRDNFQjFERTAw
RTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNhdGlvbkNhY2hl
LmRiLXdhbCI7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQ0U5N0YwMURGNjBEOEUw
MDlDMDBGNyAvKiBXZWJzaXRlUG9saWNpZXMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5v
YmpjcHA7IHBhdGggPSBXZWJzaXRlUG9saWNpZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTVDQ0U5N0YyMURGNjIzRjYwMDlDMDBGNyAvKiBjb250ZW50QmxvY2tlckNoZWNrLmh0
bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IG5hbWUgPSBjb250ZW50QmxvY2tlckNoZWNrLmh0bWw7
IHBhdGggPSBUZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbDsgc291cmNlVHJl
ZSA9IFNPVVJDRV9ST09UOyB9OwogCQk1RTRCMUQyQzFENDA0QzYxMDAwNTM2MjEgLyogV0tTY3Jv
bGxWaWV3RGVsZWdhdGVDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
bmFtZSA9IFdLU2Nyb2xsVmlld0RlbGVnYXRlQ3Jhc2gubW07IHBhdGggPSAuLi9pb3MvV0tTY3Jv
bGxWaWV3RGVsZWdhdGVDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzU2
MDkxNzcxOTI1OUM1OTAwOUVGMDZFIC8qIE1lbW9yeUNhY2hlQWRkSW1hZ2VUb0NhY2hlSU9TLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gTWVtb3J5Q2FjaGVBZGRJ
bWFnZVRvQ2FjaGVJT1MubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTc1RjMxMzNG
MThDMTcxQjcwMDQxQ0FFQyAvKiBFcGhlbWVyYWxTZXNzaW9uUHVzaFN0YXRlTm9IaXN0b3J5Q2Fs
bGJhY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXBoZW1lcmFs
U2Vzc2lvblB1c2hTdGF0ZU5vSGlzdG9yeUNhbGxiYWNrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE0NzAsNiArMTQ3NSw3IEBACiAJCQkJN0NDQjk5MjAxRDNCNDFGNjAwMzky
MkY2IC8qIFVzZXJJbml0aWF0ZWRBY3Rpb25Jbk5hdmlnYXRpb25BY3Rpb24ubW0gKi8sCiAJCQkJ
OTNFOTQzRjExQ0QzRTg3RTAwQUMwOEMyIC8qIFZpZGVvQ29udHJvbHNNYW5hZ2VyLm1tICovLAog
CQkJCTUxNzE0RUI2MUNGOEM3QTQwMDQ3MjNDNCAvKiBXZWJQcm9jZXNzS2lsbElEQkNsZWFudXAu
bW0gKi8sCisJCQkJNUNDRTk3RjAxREY2MEQ4RTAwOUMwMEY3IC8qIFdlYnNpdGVQb2xpY2llcy5t
bSAqLywKIAkJCQkxRjgzNTcxQTFEM0ZGQjBFMDBFMzk2N0IgLyogV0tCYWNrRm9yd2FyZExpc3Qu
bW0gKi8sCiAJCQkJMzc1RTBFMTUxRDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gKi8s
CiAJCQkJMzdCNDdFMkUxRDY0RTdDQTAwNUY0RUZGIC8qIFdLT2JqZWN0Lm1tICovLApAQCAtMTU2
Nyw2ICsxNTczLDcgQEAKIAkJQTE2RjY2QjgxQzQwRTlFMTAwQkQ0RDI0IC8qIFJlc291cmNlcyAq
LyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwogCQkJY2hpbGRyZW4gPSAoCisJCQkJNUNDRTk3RjIx
REY2MjNGNjAwOUMwMEY3IC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbCAqLywKIAkJCQlGNEMy
QUIyMTFERDZEOTQxMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3VuZC5odG1sICov
LAogCQkJCUY0MTUwODZDMURBMDQwQzEwMDQ0QkU5QiAvKiBwbGF5LWF1ZGlvLW9uLWNsaWNrLmh0
bWwgKi8sCiAJCQkJRjRGMTM3OTExRDlCNjgzMjAwMkJFQzU3IC8qIGxhcmdlLXZpZGVvLXRlc3Qt
bm93LXBsYXlpbmcuaHRtbCAqLywKQEAgLTI0NjEsNiArMjQ2OCw3IEBACiAJCQkJMzc1RTBFMTcx
RDY2Njc0NDAwRUZFQzJDIC8qIFdLTlNOdW1iZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBCQjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZEluUGFnZS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0QyAvKiBGaW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICov
LAorCQkJCTVDQ0U5N0YxMURGNjBEQ0QwMDlDMDBGNyAvKiBXZWJzaXRlUG9saWNpZXMubW0gaW4g
U291cmNlcyAqLywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25k
ZXJTY3JvbGxpbmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMEJDMUQwQTY1
MDcwMEZFQkNGMyAvKiBGaXhlZExheW91dFNpemUubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VGNTFBNDExQUU2MDA0NDdDNEMgLyogRm9yY2VSZXBhaW50LmNwcCBpbiBTb3VyY2VzICovLApJ
bmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hl
Y2suaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIv
Y29udGVudEJsb2NrZXJDaGVjay5odG1sCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Mi9jb250ZW50QmxvY2tlckNoZWNrLmh0bWwJKHdvcmtpbmcgY29w
eSkKQEAgLTAsMCArMSwxMyBAQAorPGh0bWw+CisgICAgPGhlYWQ+CisgICAgICAgIDxzY3JpcHQ+
CisgICAgICAgICAgICBmdW5jdGlvbiBzZW5kTWVzc2FnZSgpIHsgYWxlcnQoZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIuaGlkZGVuIikpLmRpc3BsYXkgPT0gIm5vbmUi
ID8gImNvbnRlbnQgYmxvY2tlcnMgZW5hYmxlZCIgOiJjb250ZW50IGJsb2NrZXJzIGRpc2FibGVk
Iik7IH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgPC9oZWFkPgorICAgIDxib2R5IG9ubG9hZD0i
c2VuZE1lc3NhZ2UoKSI+CisgICAgICAgIDxwIGNsYXNzPSJoaWRkZW4iPgorICAgICAgICAgICAg
VGhpcyB0ZXh0IGV4aXN0cyB0byBkZXRlcm1pbmUgaWYgY29udGVudCBibG9ja2VycyBhcmUgZW5h
YmxlZC4KKyAgICAgICAgICAgIElmIHRoZXkncmUgZW5hYmxlZCwgdGhlIGNvbXB1dGVkIHN0eWxl
IG9mIHRoaXMgdGV4dCB3aWxsIGJlIGRpc3BsYXk6bm9uZS4KKyAgICAgICAgPC9wPgorICAgIDwv
Ym9keT4KKzwvaHRtbD4KSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNv
Y29hL1dlYnNpdGVQb2xpY2llcy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0JKG5vbmV4aXN0ZW50KQorKysg
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vic2l0ZVBvbGljaWVzLm1t
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2Vi
S2l0L1dLVXNlckNvbnRlbnRDb250cm9sbGVyUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dL
V2ViVmlld1ByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4dGVuc2lv
blN0b3JlUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVQb2xpY2llcy5oPgor
I2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworc3RhdGlj
IGJvb2wgZG9uZUNvbXBpbGluZzsKK3N0YXRpYyBib29sIHJlY2VpdmVkQWxlcnQ7CitzdGF0aWMg
c2l6ZV90IGFsZXJ0Q291bnQ7CisKK0BpbnRlcmZhY2UgV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUg
OiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFdlYnNpdGVQb2xpY2llc0RlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihX
S05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICAv
LyBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxl
cjogc2hvdWxkIGJlIGNhbGxlZCBpbnN0ZWFkIGlmIGl0IGlzIGltcGxlbWVudGVkLgorICAgIEVY
UEVDVF9UUlVFKGZhbHNlKTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9u
UG9saWN5QWxsb3cpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcg
cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIGlu
aXRpYXRlZEJ5RnJhbWU6KFdLRnJhbWVJbmZvICopZnJhbWUgY29tcGxldGlvbkhhbmRsZXI6KHZv
aWQgKF4pKHZvaWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgc3dpdGNoIChhbGVydENvdW50
KyspIHsKKyAgICBjYXNlIDA6CisgICAgICAgIC8vIEZJWE1FOiBUaGUgZmlyc3QgY29udGVudCBi
bG9ja2VyIHNob3VsZCBiZSBlbmFibGVkIGhlcmUuCisgICAgICAgIC8vIENvbnRlbnRFeHRlbnNp
b25zQmFja2VuZDo6YWRkQ29udGVudEV4dGVuc2lvbiBpc24ndCBiZWluZyBjYWxsZWQgaW4gdGhl
IFdlYlByb2Nlc3MKKyAgICAgICAgLy8gdW50aWwgYWZ0ZXIgdGhlIGZpcnN0IG1haW4gcmVzb3Vy
Y2Ugc3RhcnRzIGxvYWRpbmcsIHNvIHdlIG5lZWQgdG8gc2VuZCBhIG1lc3NhZ2UgdG8gdGhlCisg
ICAgICAgIC8vIFdlYlByb2Nlc3MgYmVmb3JlIGxvYWRpbmcgaWYgd2UgaGF2ZSBpbnN0YWxsZWQg
Y29udGVudCBibG9ja2Vycy4KKyAgICAgICAgLy8gU2VlIHJkYXI6Ly9wcm9ibGVtLzI3Nzg4NzU1
CisgICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBibG9ja2VycyBkaXNhYmxlZCIsIG1lc3Nh
Z2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8g
RGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJz
IGVuYWJsZWQiLCBtZXNzYWdlLlVURjhTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IDI6CisgICAgICAgIC8vIEFmdGVyIGhhdmluZyBzZXQgd2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRC
bG9ja2Vyc0VuYWJsZWQgdG8gZmFsc2UuCisgICAgICAgIEVYUEVDVF9TVFJFUSgiY29udGVudCBi
bG9ja2VycyBkaXNhYmxlZCIsIG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgMzoKKyAgICAgICAgLy8gQWZ0ZXIgaGF2aW5nIHJlbG9hZGVkIHdpdGhvdXQgY29u
dGVudCBibG9ja2Vycy4KKyAgICAgICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRp
c2FibGVkIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVs
dDoKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIH0KKyAgICByZWNlaXZlZEFsZXJ0
ID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCistICh2b2lkKV93ZWJWaWV3
OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdL
TmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lk
ICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3ksIF9XS1dlYnNpdGVQb2xpY2llcyAqKSlkZWNp
c2lvbkhhbmRsZXIKK3sKKyAgICBfV0tXZWJzaXRlUG9saWNpZXMgKndlYnNpdGVQb2xpY2llcyA9
IFtbW19XS1dlYnNpdGVQb2xpY2llcyBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdOworICAgIHN3
aXRjaCAoYWxlcnRDb3VudCkgeworICAgIGNhc2UgMDoKKyAgICAgICAgLy8gVmVyaWZ5IGFuIGV4
aXN0aW5nIGJ1ZyB0aGUgZmlyc3QgdGltZSBhIHBhZ2UgaXMgbG9hZGVkIGluIGEgbmV3IFdlYlBy
b2Nlc3MuCisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMToKKyAgICAgICAgLy8gVmVyaWZ5IHRo
ZSBjb250ZW50IGJsb2NrZXJzIGJlaGF2ZSBjb3JyZWN0bHkgd2l0aCB0aGUgZGVmYXVsdCBiZWhh
dmlvci4KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgICAvLyBWZXJpZnkgZGlz
YWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMgd29ya3MgY29ycmVjdGx5LgorICAgICAgICB3ZWJzaXRl
UG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGZhbHNlOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIDM6CisgICAgICAgIC8vIFZlcmlmeSBlbmFibGluZyBjb250ZW50IGJsb2NrZXJz
IGhhcyBubyBlZmZlY3Qgd2hlbiByZWxvYWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgor
ICAgICAgICB3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IHRydWU7Cisg
ICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIEVYUEVDVF9UUlVFKGZhbHNlKTsK
KyAgICB9CisgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93
LCB3ZWJzaXRlUG9saWNpZXMpOworfQorCitAZW5kCisKK1RFU1QoV2ViS2l0MiwgV2Vic2l0ZVBv
bGljaWVzQ29udGVudEJsb2NrZXJzRW5hYmxlZCkKK3sKKyAgICBbW19XS1VzZXJDb250ZW50RXh0
ZW5zaW9uU3RvcmUgZGVmYXVsdFN0b3JlXSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKworICAgIGRvbmVDb21waWxpbmcgPSBmYWxzZTsKKyAgICBOU1N0
cmluZyogY29udGVudEJsb2NrZXIgPSBAIlt7XCJhY3Rpb25cIjp7XCJ0eXBlXCI6XCJjc3MtZGlz
cGxheS1ub25lXCIsXCJzZWxlY3RvclwiOlwiLmhpZGRlblwifSxcInRyaWdnZXJcIjp7XCJ1cmwt
ZmlsdGVyXCI6XCIuKlwifX1dIjsKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUg
ZGVmYXVsdFN0b3JlXSBjb21waWxlQ29udGVudEV4dGVuc2lvbkZvcklkZW50aWZpZXI6QCJXZWJz
aXRlUG9saWNpZXNUZXN0IiBlbmNvZGVkQ29udGVudEV4dGVuc2lvbjpjb250ZW50QmxvY2tlciBj
b21wbGV0aW9uSGFuZGxlcjpeKF9XS1VzZXJDb250ZW50RmlsdGVyICpmaWx0ZXIsIE5TRXJyb3Ig
KmVycm9yKSB7CisgICAgICAgIEVYUEVDVF9UUlVFKGVycm9yID09IG5pbCk7CisgICAgICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIF9hZGRVc2VyQ29udGVudEZpbHRl
cjpmaWx0ZXJdOworICAgICAgICBkb25lQ29tcGlsaW5nID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmVDb21waWxpbmcpOworCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0
KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKwor
ICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUgYWxs
b2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUu
Z2V0KCldOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisg
ICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpb
W05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAiY29udGVudEJsb2NrZXJDaGVj
ayIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVz
b3VyY2VzIl1dOworICAgIGFsZXJ0Q291bnQgPSAwOworICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxz
ZTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJnJlY2VpdmVkQWxlcnQpOworCisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNl
OworICAgIFt3ZWJWaWV3IHJlbG9hZF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZy
ZWNlaXZlZEFsZXJ0KTsKKworICAgIHJlY2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmll
dyByZWxvYWRdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRBbGVydCk7
CisKKyAgICByZWNlaXZlZEFsZXJ0ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgX3JlbG9hZFdpdGhv
dXRDb250ZW50QmxvY2tlcnNdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2
ZWRBbGVydCk7CisKKyAgICBbW19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmUgZGVmYXVsdFN0
b3JlXSBfcmVtb3ZlQWxsQ29udGVudEV4dGVuc2lvbnNdOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296470</attachid>
            <date>2016-12-07 20:14:42 -0800</date>
            <delta_ts>2016-12-08 12:28:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165517-20161207201402.patch</filename>
            <type>text/plain</type>
            <size>88445</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTUxOCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDg5IEBACisyMDE2LTEyLTA3ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSBm
b3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJvY2VzcyBkdXJpbmcgbmF2aWdhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NTE3
CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAgICAgV2UgYWRkIHRoZSBhYmlsaXR5
IGZvciB0aGUgbmF2aWdhdGlvbiBjbGllbnQgdG8gc2VuZCBzZXR0aW5ncyB0byB0aGUgV2ViUHJv
Y2VzcyAKKyAgICAgICAgYmFzZWQgb24gdGhlIFVSTCBvZiB0aGUgZG9jdW1lbnQgYmVpbmcgbmF2
aWdhdGVkIHRvLiBUaGlzIGFwcHJvYWNoIGFkZHMgbm8gbmV3IElQQyAKKyAgICAgICAgbWVzc2Fn
ZXMgYW5kIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gZGVjaWRlIHdoYXQgc2V0dGluZ3MgdG8g
dXNlIGR1cmluZyBuYXZpZ2F0aW9uIAorICAgICAgICBpbnN0ZWFkIG9mIGRlY2xhcmF0aXZlbHkg
YmVmb3JlIG5hdmlnYXRpb24uIFJpZ2h0IG5vdyB0aGVyZSBpcyBvbmx5IG9uZSBzZXR0aW5nLCAK
KyAgICAgICAgd2hldGhlciB0byBkaXNhYmxlIGNvbnRlbnQgYmxvY2tlcnMsIGJ1dCB0aGlzIGlu
ZnJhc3RydWN0dXJlIGNhbiBiZSB1c2VkIGZvciBtb3JlIHNldHRpbmdzLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZvcm1NYWMuY21ha2U6CisgICAgICAgICog
U2hhcmVkL0FQSS9BUElPYmplY3QuaDoKKyAgICAgICAgKiBTaGFyZWQvQVBJL2MvV0tCYXNlLmg6
CisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llcy5oOiBBZGRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2Vic2l0ZVBvbGljaWVzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXM6OmRlY29kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElOYXZpZ2F0aW9u
Q2xpZW50Lmg6CisgICAgICAgIChBUEk6Ok5hdmlnYXRpb25DbGllbnQ6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24pOgorICAgICAgICAoQVBJOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
QVBJUG9saWN5Q2xpZW50Lmg6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisgICAgICAgIChBUEk6OlBvbGljeUNsaWVudDo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKEFQSTo6UG9saWN5Q2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElX
ZWJzaXRlUG9saWNpZXMuY3BwOiBBZGRlZC4KKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVz
OjpjcmVhdGUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6
IEFkZGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0FQSUNhc3QuaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdL
RnJhbWVQb2xpY3lMaXN0ZW5lclVzZSk6CisgICAgICAgIChXS0ZyYW1lUG9saWN5TGlzdGVuZXJV
c2VXaXRoUG9saWNpZXMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQy9XS0ZyYW1lUG9saWN5
TGlzdGVuZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAg
ICAgKFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1dlYnNpdGVQb2xpY2llcy5jcHA6IEFkZGVkLgorICAgICAgICAoV0tXZWJzaXRlUG9saWNp
ZXNHZXRUeXBlSUQpOgorICAgICAgICAoV0tXZWJzaXRlUG9saWNpZXNDcmVhdGUpOgorICAgICAg
ICAoV0tXZWJzaXRlUG9saWNpZXNTZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKToKKyAgICAgICAg
KFdLV2Vic2l0ZVBvbGljaWVzR2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmg6IEFkZGVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlLmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaDogQWRkZWQuCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW06IEFkZGVkLgor
ICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgZGVhbGxvY10pOgorICAgICAgICAoLVtfV0tX
ZWJzaXRlUG9saWNpZXMgaW5pdF0pOgorICAgICAgICAoLVtfV0tXZWJzaXRlUG9saWNpZXMgc2V0
Q29udGVudEJsb2NrZXJzRW5hYmxlZDpdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWRdKToKKyAgICAgICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVz
IGRlc2NyaXB0aW9uXSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xpY2llcyBfYXBpT2JqZWN0
XSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJbnRl
cm5hbC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6d3JhcHBlcik6CisgICAgICAgICogVUlQ
cm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbmdDb250ZXh0KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlv
blN0YXRlOjpzZXROYXZpZ2F0aW9uRGVsZWdhdGUpOgorICAgICAgICAoV2ViS2l0Ojp0cnlBcHBM
aW5rKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJv
eHk6OmNvbnRpbnVlU3VibWlzc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlz
dGVuZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTGlzdGVuZXJQcm94eTo6
cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lTGlz
dGVuZXJQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6
OnVzZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eTo6ZG93
bmxvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6Omln
bm9yZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5o
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OmNyZWF0ZSk6
CisgICAgICAgICogVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQ
cm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorICAg
ICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdlYktpdDIueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik6CisKIDIwMTYtMTItMDcg
IERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBydW50aW1l
IHRvZ2dsZSBmb3IgcG9pbnRlci1sb2NrCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3Rz
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNp
b24gMjA5NTE4KQorKysgU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTQzMiw2ICs0MzIsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNz
L0FQSS9BUElVc2VyU2NyaXB0LmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJVXNlclN0eWxlU2hl
ZXQuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlRGF0YVN0b3JlLmNwcAorICAgIFVJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQVBJ
V2luZG93RmVhdHVyZXMuY3BwCiAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tBcHBsaWNhdGlvbkNh
Y2hlTWFuYWdlci5jcHAKQEAgLTQ4MSw2ICs0ODIsNyBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAg
ICAgVUlQcm9jZXNzL0FQSS9DL1dLVmlicmF0aW9uLmNwcAogICAgIFVJUHJvY2Vzcy9BUEkvQy9X
S1ZpZXdwb3J0QXR0cmlidXRlcy5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlRGF0
YVN0b3JlUmVmLmNwcAorICAgIFVJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5jcHAK
ICAgICBVSVByb2Nlc3MvQVBJL0MvV0tXaW5kb3dGZWF0dXJlc1JlZi5jcHAKIAogICAgIFVJUHJv
Y2Vzcy9BdXRoZW50aWNhdGlvbi9BdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5LmNwcApJbmRl
eDogU291cmNlL1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvUGxhdGZvcm1NYWMuY21ha2UJKHJldmlzaW9uIDIwOTUxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1BsYXRmb3JtTWFjLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0yMjMsNiArMjIzLDcg
QEAgbGlzdChBUFBFTkQgV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9f
V0tWaXNpdGVkTGlua1N0b3JlLm1tCiAgICAgVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
RGF0YVNpemUubW0KICAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVEYXRhU3RvcmUu
bW0KKyAgICBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQogCiAgICAg
VUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
V2Vic2l0ZVBvbGljaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvU2hhcmVk
L1dlYnNpdGVQb2xpY2llcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjcHJhZ21hIG9uY2UKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0cnVjdCBXZWJz
aXRlUG9saWNpZXMgeworCisgICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkIHsgdHJ1ZSB9
OworICAgIAorICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgYm9vbCBkZWNvZGUo
RGVjb2RlciYsIFdlYnNpdGVQb2xpY2llcyYpOworfTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rl
cj4gdm9pZCBXZWJzaXRlUG9saWNpZXM6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAor
eworICAgIGVuY29kZXIgPDwgY29udGVudEJsb2NrZXJzRW5hYmxlZDsKK30KKwordGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gYm9vbCBXZWJzaXRlUG9saWNpZXM6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyLCBXZWJzaXRlUG9saWNpZXMmIHJlc3VsdCkKK3sKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHJlc3VsdC5jb250ZW50QmxvY2tlcnNFbmFibGVkKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIHJldHVybiB0cnVlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9BUEkvQVBJT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkocmV2aXNpb24gMjA5NTE4KQorKysgU291cmNl
L1dlYktpdDIvU2hhcmVkL0FQSS9BUElPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYg
KzE1Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmlzaXRlZExpbmtTdG9yZSwKICAgICAgICAgV2Vi
c2l0ZURhdGFSZWNvcmQsCiAgICAgICAgIFdlYnNpdGVEYXRhU3RvcmUsCisgICAgICAgIFdlYnNp
dGVQb2xpY2llcywKICAgICAgICAgV2luZG93RmVhdHVyZXMsCiAKICNpZiBFTkFCTEUoTUVESUFf
U0VTU0lPTikKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQVBJL2MvV0tCYXNlLmgJKHJldmlzaW9u
IDIwOTUxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9XS0Jhc2UuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTM5LDYgKzEzOSw3IEBAIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdL
VXNlclNjcmlwdCoKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlicmF0aW9uKiBXS1Zp
YnJhdGlvblJlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1ZVdLVmlld3BvcnRBdHRyaWJ1
dGVzKiBXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZjsKIHR5cGVkZWYgY29uc3Qgc3RydWN0IE9wYXF1
ZVdLV2Vic2l0ZURhdGFTdG9yZSogV0tXZWJzaXRlRGF0YVN0b3JlUmVmOwordHlwZWRlZiBjb25z
dCBzdHJ1Y3QgT3BhcXVlV0tXZWJzaXRlUG9saWNpZXMqIFdLV2Vic2l0ZVBvbGljaWVzUmVmOwog
dHlwZWRlZiBjb25zdCBzdHJ1Y3QgT3BhcXVlV0tXaW5kb3dGZWF0dXJlcyogV0tXaW5kb3dGZWF0
dXJlc1JlZjsKIAogLyogV2ViS2l0MiBCdW5kbGUgdHlwZXMgKi8KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHkuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVy
UHJveHkuY3BwCShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
NiArMjYsOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYkZvcm1TdWJtaXNz
aW9uTGlzdGVuZXJQcm94eS5oIgogCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCisKIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBXZWJGb3JtU3VibWlzc2lvbkxpc3RlbmVyUHJveHk6OldlYkZv
cm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3Qg
bGlzdGVuZXJJRCkKQEAgLTM1LDcgKzM3LDcgQEAgV2ViRm9ybVN1Ym1pc3Npb25MaXN0ZW5lclBy
b3h5OjpXZWJGb3JtUwogCiB2b2lkIFdlYkZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQcm94eTo6Y29u
dGludWVTdWJtaXNzaW9uKCkKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6
OlBvbGljeVVzZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lV
c2UsIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5jcHAJKHJldmlzaW9u
IDIwOTUxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJv
eHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NSwxMiArNDUsMTIgQEAgdm9pZCBXZWJGcmFtZUxp
c3RlbmVyUHJveHk6OmludmFsaWRhdGUoKQogICAgIG1fZnJhbWUgPSBudWxscHRyOwogfQogCi12
b2lkIFdlYkZyYW1lTGlzdGVuZXJQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24gYWN0aW9uKQordm9pZCBXZWJGcmFtZUxpc3RlbmVyUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGFjdGlvbiwgY29uc3QgV2Vi
c2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBtX2ZyYW1lLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlv
biwgbV9saXN0ZW5lcklELCBtX25hdmlnYXRpb24uZ2V0KCkpOworICAgIG1fZnJhbWUtPnJlY2Vp
dmVkUG9saWN5RGVjaXNpb24oYWN0aW9uLCBtX2xpc3RlbmVySUQsIG1fbmF2aWdhdGlvbi5nZXQo
KSwgd2Vic2l0ZVBvbGljaWVzKTsKICAgICBtX2ZyYW1lID0gbnVsbHB0cjsKIH0KIApJbmRleDog
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlzdGVuZXJQcm94eS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZUxpc3RlbmVyUHJveHkuaAko
cmV2aXNpb24gMjA5NTE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lTGlz
dGVuZXJQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMyw4ICsyMyw3IEBACiAgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXZWJGcmFtZUxpc3RlbmVy
UHJveHlfaAotI2RlZmluZSBXZWJGcmFtZUxpc3RlbmVyUHJveHlfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJBUElOYXZpZ2F0aW9uLmgiCiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCkBAIC0z
Niw2ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViRnJhbWVQcm94eTsK
K3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIGNsYXNzIFdlYkZyYW1lTGlzdGVuZXJQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdCB7CiBwdWJsaWM6CkBAIC01MCw3ICs1MCw3IEBAIHB1YmxpYzoK
IHByb3RlY3RlZDoKICAgICBXZWJGcmFtZUxpc3RlbmVyUHJveHkoV2ViRnJhbWVQcm94eSosIHVp
bnQ2NF90IGxpc3RlbmVySUQpOwogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdl
YkNvcmU6OlBvbGljeUFjdGlvbik7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdl
YkNvcmU6OlBvbGljeUFjdGlvbiwgY29uc3QgV2Vic2l0ZVBvbGljaWVzJik7CiAKIHByaXZhdGU6
CiAgICAgUmVmUHRyPFdlYkZyYW1lUHJveHk+IG1fZnJhbWU7CkBAIC01OSw1ICs1OSwzIEBAIHBy
aXZhdGU6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZyYW1l
TGlzdGVuZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmNwcAkocmV2aXNpb24gMjA5NTE4KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJXZWJGcmFtZVBv
bGljeUxpc3RlbmVyUHJveHkuaCIKIAogI2luY2x1ZGUgIldlYkZyYW1lUHJveHkuaCIKKyNpbmNs
dWRlICJXZWJzaXRlUG9saWNpZXMuaCIKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTM1LDE5
ICszNiwxOSBAQCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6OldlYkZyYW1lUG9sCiB7CiB9
CiAKLXZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojp1c2UoKQordm9pZCBXZWJGcmFt
ZVBvbGljeUxpc3RlbmVyUHJveHk6OnVzZShjb25zdCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQ
b2xpY2llcykKIHsKLSAgICByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNvcmU6OlBvbGljeVVz
ZSk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lVc2UsIHdlYnNp
dGVQb2xpY2llcyk7CiB9CiAKIHZvaWQgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Ojpkb3du
bG9hZCgpCiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lEb3du
bG9hZCk7CisgICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lEb3dubG9h
ZCwgeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk6Omlnbm9yZSgp
CiB7Ci0gICAgcmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lJZ25vcmUpOwor
ICAgIHJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5SWdub3JlLCB7IH0pOwog
fQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5LmgJKHJldmlzaW9uIDIw
OTUxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMjMsOCArMjMsNyBAQAogICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgV2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5X2gKLSNkZWZpbmUgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5X2gKKyNwcmFnbWEg
b25jZQogCiAjaW5jbHVkZSAiV2ViRnJhbWVMaXN0ZW5lclByb3h5LmgiCiAKQEAgLTQwLDEyICsz
OSwxMiBAQCBjbGFzcyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkgOiBwdWJsCiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IFR5cGUgQVBJVHlwZSA9IFR5cGU6OkZyYW1lUG9saWN5TGlzdGVu
ZXI7CiAKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
IGNyZWF0ZShXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCkKKyAgICBz
dGF0aWMgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gY3JlYXRlKFdlYkZyYW1lUHJv
eHkqIGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklEKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFk
b3B0UmVmKG5ldyBXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkoZnJhbWUsIGxpc3RlbmVySUQp
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclBy
b3h5KGZyYW1lLCBsaXN0ZW5lcklEKSk7CiAgICAgfQogCi0gICAgdm9pZCB1c2UoKTsKKyAgICB2
b2lkIHVzZShjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsKICAgICB2b2lkIGRvd25sb2FkKCk7CiAg
ICAgdm9pZCBpZ25vcmUoKTsKIApAQCAtNjIsNSArNjEsMyBAQCBwcml2YXRlOgogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CiAKICN1bmRlZiBERUxFR0FURV9SRUZfQ09VTlRJTkdfVE9fQ09DT0EKLQot
I2VuZGlmIC8vIFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eV9oCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkZyYW1lUHJveHkuY3BwCShyZXZpc2lvbiAyMDk1MTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRnJhbWVQcm94eS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE3NiwxNCArMTc2LDE0IEBAIHZvaWQgV2ViRnJhbWVQcm94eTo6ZGlkQ2hhbmdlVGl0bGUo
Y29uc3QKICAgICBtX3RpdGxlID0gdGl0bGU7CiB9CiAKLXZvaWQgV2ViRnJhbWVQcm94eTo6cmVj
ZWl2ZWRQb2xpY3lEZWNpc2lvbihXZWJDb3JlOjpQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRf
dCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24pCit2b2lkIFdlYkZyYW1l
UHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uIGFjdGlv
biwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25z
dCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBpZiAoIW1fcGFnZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNTRVJUKG1fYWN0aXZlTGlzdGVuZXIpOwogICAgIEFT
U0VSVChtX2FjdGl2ZUxpc3RlbmVyLT5saXN0ZW5lcklEKCkgPT0gbGlzdGVuZXJJRCk7Ci0gICAg
bV9wYWdlLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwgdGhpcywgbGlzdGVuZXJJRCwg
bmF2aWdhdGlvbik7CisgICAgbV9wYWdlLT5yZWNlaXZlZFBvbGljeURlY2lzaW9uKGFjdGlvbiwg
KnRoaXMsIGxpc3RlbmVySUQsIG5hdmlnYXRpb24sIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKIFdl
YkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eSYgV2ViRnJhbWVQcm94eTo6c2V0VXBQb2xpY3lMaXN0
ZW5lclByb3h5KHVpbnQ2NF90IGxpc3RlbmVySUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViRnJhbWVQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJGcmFtZVByb3h5LmgJKHJldmlzaW9uIDIwOTUxOCkKKysrIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJGcmFtZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDggKzIzLDcg
QEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdl
YkZyYW1lUHJveHlfaAotI2RlZmluZSBXZWJGcmFtZVByb3h5X2gKKyNwcmFnbWEgb25jZQogCiAj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkU3RhdGUuaCIKQEAgLTUz
LDYgKzUyLDcgQEAgY2xhc3MgV2ViQ2VydGlmaWNhdGVJbmZvOwogY2xhc3MgV2ViRm9ybVN1Ym1p
c3Npb25MaXN0ZW5lclByb3h5OwogY2xhc3MgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5Owog
Y2xhc3MgV2ViUGFnZVByb3h5Oworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogdHlwZWRlZiBH
ZW5lcmljQ2FsbGJhY2s8QVBJOjpEYXRhKj4gRGF0YUNhbGxiYWNrOwogCkBAIC0xMTUsNyArMTE1
LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoY29uc3QgU3RyaW5nJik7CiAK
ICAgICAvLyBQb2xpY3kgb3BlcmF0aW9ucy4KLSAgICB2b2lkIHJlY2VpdmVkUG9saWN5RGVjaXNp
b24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmln
YXRpb24qID0gbnVsbHB0cik7CisgICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9uKFdlYkNv
cmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiwg
Y29uc3QgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgV2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5
JiBzZXRVcFBvbGljeUxpc3RlbmVyUHJveHkodWludDY0X3QgbGlzdGVuZXJJRCk7CiAgICAgV2Vi
Rm9ybVN1Ym1pc3Npb25MaXN0ZW5lclByb3h5JiBzZXRVcEZvcm1TdWJtaXNzaW9uTGlzdGVuZXJQ
cm94eSh1aW50NjRfdCBsaXN0ZW5lcklEKTsKIApAQCAtMTQ5LDUgKzE0OSwzIEBAIHByaXZhdGU6
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmIC8vIFdlYkZyYW1lUHJveHlf
aApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkluc3BlY3RvclByb3h5LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5zcGVjdG9yUHJveHku
Y3BwCShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViSW5z
cGVjdG9yUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGlj
IHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdAogICAgIC8vIEFsbG93IG5vbi1tYWlu
IGZyYW1lcyB0byBuYXZpZ2F0ZSBhbnl3aGVyZS4KICAgICBBUEk6OkZyYW1lSW5mbyogc291cmNl
RnJhbWUgPSB0b0ltcGwobmF2aWdhdGlvbkFjdGlvblJlZiktPnNvdXJjZUZyYW1lKCk7CiAgICAg
aWYgKHNvdXJjZUZyYW1lICYmICFzb3VyY2VGcmFtZS0+aXNNYWluRnJhbWUoKSkgewotICAgICAg
ICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoKTsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVyUmVm
KS0+dXNlKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM0NSw3ICszNDUsNyBA
QCBzdGF0aWMgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0CiAKICAgICAvLyBBbGxv
dyBsb2FkaW5nIG9mIHRoZSBtYWluIGluc3BlY3RvciBmaWxlLgogICAgIGlmIChXZWJJbnNwZWN0
b3JQcm94eTo6aXNNYWluT3JUZXN0SW5zcGVjdG9yUGFnZShyZXF1ZXN0LnVybCgpKSkgewotICAg
ICAgICB0b0ltcGwobGlzdGVuZXJSZWYpLT51c2UoKTsKKyAgICAgICAgdG9JbXBsKGxpc3RlbmVy
UmVmKS0+dXNlKHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMDk1MTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjI1Myw3ICsyMjUzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNlbnRlclNlbGVjdGlvbklu
VmlzaQogICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2VudGVyU2VsZWN0
aW9uSW5WaXNpYmxlQXJlYSgpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5Ojpy
ZWNlaXZlZFBvbGljeURlY2lzaW9uKFBvbGljeUFjdGlvbiBhY3Rpb24sIFdlYkZyYW1lUHJveHkq
IGZyYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBBUEk6Ok5hdmlnYXRpb24qIG5hdmlnYXRpb24p
Cit2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvbihQb2xpY3lBY3Rpb24g
YWN0aW9uLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgQVBJOjpO
YXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBjb25zdCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xp
Y2llcykKIHsKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjI5Mywx
MCArMjI5MywxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAg
ICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsK
ICAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbiA9IGFjdGlvbjsKICAg
ICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElE
OworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0g
d2Vic2l0ZVBvbGljaWVzOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcHJv
Y2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZy
YW1lLT5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3By
b2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihm
cmFtZS5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRp
b24tPm5hdmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKQEAg
LTM2MDksNyArMzYxMCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmcmFtZURpZEJlY29tZUZyYW1l
U2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZhbHVlID8gbV9tYWluRnJhbWUg
OiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFj
dGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2Vj
dXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgTmF2aWdhdGlvbkFjdGlv
bkRhdGEmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ0ZyYW1lSUQs
IGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0YSYgb3JpZ2luYXRpbmdGcmFtZVNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgY29uc3Qg
UmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3
TmF2aWdhdGlvbklELCB1aW50NjRfdCYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9h
ZElEKQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24o
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRh
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25z
dCBTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEm
IHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QmIG5ld05hdmln
YXRpb25JRCwgdWludDY0X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCwg
V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgUGFnZUNsaWVudFByb3Rl
Y3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzY3Nyw2ICszNjc4LDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgIGlmIChtX3N5bmNOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCkgewogICAgICAgICBwb2xpY3lBY3Rpb24g
PSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uOwogICAgICAgICBkb3dubG9hZElE
ID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQ7CisgICAgICAgIHdlYnNp
dGVQb2xpY2llcyA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7
CiAgICAgfQogfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYwLDcgQEAKICNpbmNsdWRlICJXZWJQYWdl
UHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBvcHVwTWVudVByb3h5LmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc0xpZmV0aW1lVHJhY2tlci5oIgorI2luY2x1ZGUgIldlYnNpdGVQb2xpY2ll
cy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvQWN0aXZpdHlTdGF0ZS5oPgogI2luY2x1ZGUgPFdlYkNv
cmUvQ29sb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0RyYWdBY3Rpb25zLmg+CkBAIC04MDMsNyAr
ODA0LDcgQEAgcHVibGljOgogICAgIHZvaWQgcGVyZm9ybURpY3Rpb25hcnlMb29rdXBPZkN1cnJl
bnRTZWxlY3Rpb24oKTsKICNlbmRpZgogCi0gICAgdm9pZCByZWNlaXZlZFBvbGljeURlY2lzaW9u
KFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgV2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbklEKTsKKyAgICB2b2lkIHJlY2VpdmVkUG9s
aWN5RGVjaXNpb24oV2ViQ29yZTo6UG9saWN5QWN0aW9uLCBXZWJGcmFtZVByb3h5JiwgdWludDY0
X3QgbGlzdGVuZXJJRCwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYnNp
dGVQb2xpY2llcyYpOwogCiAgICAgdm9pZCBiYWNrRm9yd2FyZFJlbW92ZWRJdGVtKHVpbnQ2NF90
IGl0ZW1JRCk7CiAKQEAgLTEyNDQsNyArMTI0NSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRp
ZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25EYXRhJiwgdWludDY0X3Qgb3JpZ2lu
YXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIG9yaWdpbmF0
aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBv
cmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90JiBwb2xpY3lBY3Rpb24sIERvd25s
b2FkSUQmKTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0
X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb25E
YXRhJiwgdWludDY0X3Qgb3JpZ2luYXRpbmdGcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0
eU9yaWdpbkRhdGEmIG9yaWdpbmF0aW5nRnJhbWVTZWN1cml0eU9yaWdpbiwgY29uc3QgV2ViQ29y
ZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYg
cmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90
JiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmLCBXZWJzaXRlUG9saWNpZXMmKTsKICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNvbnN0IE5h
dmlnYXRpb25BY3Rpb25EYXRhJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29u
c3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
Jik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJl
cXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRf
dCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJp
dHlPcmlnaW4sIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0
X3QmIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYpOwpAQCAtMTc2OCw2ICsxNzY5LDcgQEAgcHJp
dmF0ZToKICAgICBib29sIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlk
OwogICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
QWN0aW9uOwogICAgIERvd25sb2FkSUQgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25s
b2FkSUQ7CisgICAgV2Vic2l0ZVBvbGljaWVzIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lX
ZWJzaXRlUG9saWNpZXM7CiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHRO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9OwogCiAgICAgRGVxdWU8TmF0aXZlV2Vi
S2V5Ym9hcmRFdmVudD4gbV9rZXlFdmVudFF1ZXVlOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMDk1MTgp
CisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTEsNyArMTExLDcgQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5
IHsKIAogICAgICMgUG9saWN5IG1lc3NhZ2VzCiAgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
eW5jKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCBy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCkKLSAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRp
bmdGcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbmF0aW5n
RnJhbWVTZWN1cml0eU9yaWdpbiwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVx
dWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVy
SUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5QWN0
aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIHVpbnQ2NF90IHBvbGljeUFjdGlvbiwgV2Vi
S2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisgICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHVpbnQ2NF90
IG9yaWdpbmF0aW5nRnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBv
cmlnaW5hdGluZ0ZyYW1lU2VjdXJpdHlPcmlnaW4sIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBv
cmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRf
dCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZl
ZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCB1aW50NjRfdCBwb2xpY3lB
Y3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElELCBzdHJ1Y3QgV2ViS2l0OjpXZWJz
aXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKQogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25E
YXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVz
dCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0
YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlE
LCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRh
KQogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmlnYXRpb25DbGll
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSU5hdmln
YXRpb25DbGllbnQuaAkocmV2aXNpb24gMjA5NTE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9BUElOYXZpZ2F0aW9uQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDE0ICsy
MywxNCBAQAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5k
ZWYgQVBJTmF2aWdhdGlvbkNsaWVudF9oCi0jZGVmaW5lIEFQSU5hdmlnYXRpb25DbGllbnRfaAor
I3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBUElEYXRhLmgiCiAjaW5jbHVkZSAiUGx1Z2luTW9k
dWxlSW5mby5oIgogI2luY2x1ZGUgIlNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLmgiCiAjaW5j
bHVkZSAiV2ViRXZlbnQuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHku
aCIKKyNpbmNsdWRlICJXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1l
TG9hZGVyVHlwZXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0xheW91dE1pbGVzdG9uZXMuaD4KICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgpAQCAtOTUsMTIgKzk1LDEyIEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uQWN0aW9uJiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQ
b2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAg
ICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9
CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmLCBSZWY8V2ViS2l0
OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikK
ICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgbGlzdGVuZXItPnVzZSh7
IH0pOwogICAgIH0KICAgICAKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkKQEAgLTEx
Nyw1ICsxMTcsMyBAQCBwdWJsaWM6CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKLQotI2VuZGlm
IC8vIEFQSU5hdmlnYXRpb25DbGllbnRfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9BUElQb2xpY3lDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVBvbGljeUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC01MywxNSArNTMsMTUgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB2b2lkIGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBjb25zdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhJiwgV2ViS2l0OjpX
ZWJGcmFtZVByb3h5KiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5l
clByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCopCiAgICAgewotICAgICAgICBsaXN0ZW5l
ci0+dXNlKCk7CisgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICB9CiAgICAgdmlydHVh
bCB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94
eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIGNvbnN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
bkRhdGEmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXVEY6OlN0cmlu
ZyYsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwg
QVBJOjpPYmplY3QqKQogICAgIHsKLSAgICAgICAgbGlzdGVuZXItPnVzZSgpOworICAgICAgICBs
aXN0ZW5lci0+dXNlKHsgfSk7CiAgICAgfQogICAgIHZpcnR1YWwgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlcXVlc3QmLCBib29sLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+
JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KikKICAgICB7Ci0gICAgICAgIGxpc3RlbmVyLT51c2Uo
KTsKKyAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAgIH0KICAgICB2aXJ0dWFsIHZvaWQg
dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3Qq
KSB7IH0KIH07CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQ
b2xpY2llcy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9B
UElXZWJzaXRlUG9saWNpZXMuY3BwCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkFQ
SVdlYnNpdGVQb2xpY2llcy5oIgorCituYW1lc3BhY2UgQVBJIHsKKworUmVmPFdlYnNpdGVQb2xp
Y2llcz4gV2Vic2l0ZVBvbGljaWVzOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYnNpdGVQb2xpY2llcygpKTsKK30KKworfQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVudCkKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmgJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiQVBJT2JqZWN0LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCisKK25h
bWVzcGFjZSBBUEkgeworCitjbGFzcyBXZWJzaXRlUG9saWNpZXMgZmluYWwgOiBwdWJsaWMgT2Jq
ZWN0SW1wbDxPYmplY3Q6OlR5cGU6OldlYnNpdGVQb2xpY2llcz4geworcHVibGljOgorICAgIHN0
YXRpYyBSZWY8V2Vic2l0ZVBvbGljaWVzPiBjcmVhdGUoKTsKKyAgICBleHBsaWNpdCBXZWJzaXRl
UG9saWNpZXMoKSA9IGRlZmF1bHQ7CisgICAgdmlydHVhbCB+V2Vic2l0ZVBvbGljaWVzKCkgPSBk
ZWZhdWx0OworCisgICAgYm9vbCBjb250ZW50QmxvY2tlcnNFbmFibGVkKCkgY29uc3QgeyByZXR1
cm4gbV93ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZDsgfQorICAgIHZvaWQg
c2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV93ZWJzaXRlUG9saWNp
ZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCA9IGVuYWJsZWQ7IH0KKyAgICAKKyAgICBjb25zdCBX
ZWJLaXQ6OldlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKCkgeyByZXR1cm4gbV93ZWJz
aXRlUG9saWNpZXM7IH0KKyAgICAKK3ByaXZhdGU6CisgICAgCisgICAgV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXMgbV93ZWJzaXRlUG9saWNpZXM7Cit9OworCit9CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9DL1dLQVBJQ2FzdC5oCShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tBUElDYXN0LmgJKHdvcmtpbmcgY29weSkKQEAg
LTY3LDYgKzY3LDcgQEAgY2xhc3MgVXNlckNvbnRlbnRFeHRlbnNpb247CiBjbGFzcyBVc2VyQ29u
dGVudEV4dGVuc2lvblN0b3JlOwogY2xhc3MgVXNlclNjcmlwdDsKIGNsYXNzIFdlYnNpdGVEYXRh
U3RvcmU7CitjbGFzcyBXZWJzaXRlUG9saWNpZXM7CiBjbGFzcyBXaW5kb3dGZWF0dXJlczsKIH0K
IApAQCAtMTEwLDYgKzExMSw3IEBAIGNsYXNzIFdlYlRleHRDaGVja2VyOwogY2xhc3MgV2ViVXNl
ckNvbnRlbnRDb250cm9sbGVyUHJveHk7CiBjbGFzcyBXZWJWaWJyYXRpb25Qcm94eTsKIGNsYXNz
IFdlYlZpZXdwb3J0QXR0cmlidXRlczsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIFdLX0FE
RF9BUElfTUFQUElORyhXS0F1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUmVmLCBBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZVByb3h5KQogV0tfQUREX0FQSV9NQVBQSU5HKFdLQXV0aGVudGljYXRpb25EZWNp
c2lvbkxpc3RlbmVyUmVmLCBBdXRoZW50aWNhdGlvbkRlY2lzaW9uTGlzdGVuZXIpCkBAIC0xNjUs
NiArMTY3LDcgQEAgV0tfQUREX0FQSV9NQVBQSU5HKFdLVXNlclNjcmlwdFJlZiwgQVBJOgogV0tf
QUREX0FQSV9NQVBQSU5HKFdLVmlicmF0aW9uUmVmLCBXZWJWaWJyYXRpb25Qcm94eSkKIFdLX0FE
RF9BUElfTUFQUElORyhXS1ZpZXdwb3J0QXR0cmlidXRlc1JlZiwgV2ViVmlld3BvcnRBdHRyaWJ1
dGVzKQogV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZURhdGFTdG9yZVJlZiwgQVBJOjpXZWJz
aXRlRGF0YVN0b3JlKQorV0tfQUREX0FQSV9NQVBQSU5HKFdLV2Vic2l0ZVBvbGljaWVzUmVmLCBB
UEk6OldlYnNpdGVQb2xpY2llcykKIFdLX0FERF9BUElfTUFQUElORyhXS1dpbmRvd0ZlYXR1cmVz
UmVmLCBBUEk6OldpbmRvd0ZlYXR1cmVzKQogCiAvKiBFbnVtIGNvbnZlcnNpb25zICovCkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBv
bGljeUxpc3RlbmVyLmNwcAkocmV2aXNpb24gMjA5NTE4KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2
LDkgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV0tGcmFtZVBvbGlj
eUxpc3RlbmVyLmgiCiAKKyNpbmNsdWRlICJBUElXZWJzaXRlUG9saWNpZXMuaCIKICNpbmNsdWRl
ICJXS0FQSUNhc3QuaCIKICNpbmNsdWRlICJXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHkuaCIK
ICNpbmNsdWRlICJXZWJGcmFtZVByb3h5LmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgi
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7CiAKQEAgLTM5LDcgKzQxLDEyIEBAIFdLVHlwZUlE
IFdLRnJhbWVQb2xpY3lMaXN0ZW5lckdldFR5cGVJRCgKIAogdm9pZCBXS0ZyYW1lUG9saWN5TGlz
dGVuZXJVc2UoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxpc3RlbmVyUmVmKQogewot
ICAgIHRvSW1wbChwb2xpY3lMaXN0ZW5lclJlZiktPnVzZSgpOworICAgIHRvSW1wbChwb2xpY3lM
aXN0ZW5lclJlZiktPnVzZSh7IH0pOworfQorCit2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVz
ZVdpdGhQb2xpY2llcyhXS0ZyYW1lUG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXJSZWYs
IFdLV2Vic2l0ZVBvbGljaWVzUmVmIHdlYnNpdGVQb2xpY2llcykKK3sKKyAgICB0b0ltcGwocG9s
aWN5TGlzdGVuZXJSZWYpLT51c2UodG9JbXBsKHdlYnNpdGVQb2xpY2llcyktPndlYnNpdGVQb2xp
Y2llcygpKTsKIH0KIAogdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXJSZWYpCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFtZVBvbGljeUxpc3RlbmVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLRnJhbWVQb2xpY3lMaXN0ZW5lci5oCShy
ZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tGcmFt
ZVBvbGljeUxpc3RlbmVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMCwgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDggKzIzLDcgQEAKICAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAqLwogCi0jaWZuZGVmIFdLRnJhbWVQb2xpY3lM
aXN0ZW5lcl9oCi0jZGVmaW5lIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcl9oCisjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KIApAQCAtMzQsMTIgKzMzLDExIEBAIGV4dGVy
biAiQyIgewogCiBXS19FWFBPUlQgV0tUeXBlSUQgV0tGcmFtZVBvbGljeUxpc3RlbmVyR2V0VHlw
ZUlEKCk7CiAKLVdLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lclVzZShXS0ZyYW1l
UG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXIpOwotV0tfRVhQT1JUIHZvaWQgV0tGcmFt
ZVBvbGljeUxpc3RlbmVyRG93bmxvYWQoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmIHBvbGljeUxp
c3RlbmVyKTsKLVdLX0VYUE9SVCB2b2lkIFdLRnJhbWVQb2xpY3lMaXN0ZW5lcklnbm9yZShXS0Zy
YW1lUG9saWN5TGlzdGVuZXJSZWYgcG9saWN5TGlzdGVuZXIpOworV0tfRVhQT1JUIHZvaWQgV0tG
cmFtZVBvbGljeUxpc3RlbmVyVXNlKFdLRnJhbWVQb2xpY3lMaXN0ZW5lclJlZik7CitXS19FWFBP
UlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVuZXJEb3dubG9hZChXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJSZWYpOworV0tfRVhQT1JUIHZvaWQgV0tGcmFtZVBvbGljeUxpc3RlbmVySWdub3JlKFdLRnJh
bWVQb2xpY3lMaXN0ZW5lclJlZik7CitXS19FWFBPUlQgdm9pZCBXS0ZyYW1lUG9saWN5TGlzdGVu
ZXJVc2VXaXRoUG9saWNpZXMoV0tGcmFtZVBvbGljeUxpc3RlbmVyUmVmLCBXS1dlYnNpdGVQb2xp
Y2llc1JlZik7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCi0KLSNlbmRpZiAvKiBX
S0ZyYW1lUG9saWN5TGlzdGVuZXJfaCAqLwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIwOTUxOCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQ4LDcgKzEzNDgs
NyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVmCiAgICAgICAgIHZv
aWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkqIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlv
bkFjdGlvbkRhdGEsIFdlYkZyYW1lUHJveHkqIG9yaWdpbmF0aW5nRnJhbWUsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXNvdXJjZVJlcXVlc3QsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBSZWY8V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRl
CiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwICYmICFtX2NsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEgJiYgIW1fY2xp
ZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBs
aXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwogICAg
ICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApAQCAtMTM2Niw3ICsxMzY2LDcg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlUG9saWN5Q2xpZW50KFdLUGFnZVJlZgogICAgICAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBjb25zdCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBT
dHJpbmcmIGZyYW1lTmFtZSwgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0
ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbikgewotICAg
ICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+
dXNlKHsgfSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCkBAIC0x
Mzc4LDcgKzEzNzgsNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VQb2xpY3lDbGllbnQoV0tQYWdlUmVm
CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzb3VyY2VS
ZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QsIGJvb2wgY2Fu
U2hvd01JTUVUeXBlLCBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3RlbmVy
LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VfZGVwcmVjYXRlZEZvclVzZVdp
dGhWMCAmJiAhbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UpIHsKLSAgICAgICAgICAg
ICAgICBsaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0p
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLV2Vic2l0ZVBvbGljaWVzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tXZWJzaXRlUG9saWNpZXMuY3Bw
CShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNp
dGVQb2xpY2llcy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXS1dlYnNpdGVQb2xpY2llcy5oIgor
CisjaW5jbHVkZSAiQVBJV2Vic2l0ZVBvbGljaWVzLmgiCisjaW5jbHVkZSAiV0tBUElDYXN0Lmgi
CisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJLaXQ7
CisKK1dLVHlwZUlEIFdLV2Vic2l0ZVBvbGljaWVzR2V0VHlwZUlEKCkKK3sKKyAgICByZXR1cm4g
dG9BUEkoQVBJOjpXZWJzaXRlUG9saWNpZXM6OkFQSVR5cGUpOworfQorCitXS1dlYnNpdGVQb2xp
Y2llc1JlZiBXS1dlYnNpdGVQb2xpY2llc0NyZWF0ZSgpCit7CisgICAgcmV0dXJuIHRvQVBJKCZB
UEk6OldlYnNpdGVQb2xpY2llczo6Y3JlYXRlKCkubGVha1JlZigpKTsKK30KKwordm9pZCBXS1dl
YnNpdGVQb2xpY2llc1NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoV0tXZWJzaXRlUG9saWNpZXNS
ZWYgd2Vic2l0ZVBvbGljaWVzLCBib29sIGVuYWJsZWQpCit7CisgICAgdG9JbXBsKHdlYnNpdGVQ
b2xpY2llcyktPnNldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKK2Jvb2wg
V0tXZWJzaXRlUG9saWNpZXNHZXRDb250ZW50QmxvY2tlcnNFbmFibGVkKFdLV2Vic2l0ZVBvbGlj
aWVzUmVmIHdlYnNpdGVQb2xpY2llcykKK3sKKyAgICByZXR1cm4gdG9JbXBsKHdlYnNpdGVQb2xp
Y2llcyktPmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKTsKK30KSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5oCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1dlYnNpdGVQb2xpY2llcy5o
CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPFdlYktpdC9XS0Jhc2UuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitl
eHRlcm4gIkMiIHsKKyNlbmRpZgorCitXS19FWFBPUlQgV0tUeXBlSUQgV0tXZWJzaXRlUG9saWNp
ZXNHZXRUeXBlSUQoKTsKKworV0tfRVhQT1JUIFdLV2Vic2l0ZVBvbGljaWVzUmVmIFdLV2Vic2l0
ZVBvbGljaWVzQ3JlYXRlKCk7CisKK1dLX0VYUE9SVCBib29sIFdLV2Vic2l0ZVBvbGljaWVzR2V0
Q29udGVudEJsb2NrZXJzRW5hYmxlZChXS1dlYnNpdGVQb2xpY2llc1JlZik7CitXS19FWFBPUlQg
dm9pZCBXS1dlYnNpdGVQb2xpY2llc1NldENvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoV0tXZWJzaXRl
UG9saWNpZXNSZWYsIGJvb2wpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS05hdmlnYXRpb25EZWxlZ2F0
ZVByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZS5oCShyZXZpc2lvbiAyMDk1MTgpCisrKyBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLTmF2aWdhdGlvbkRlbGVnYXRlUHJp
dmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw4IEBACiAKICNpZiBXS19BUElfRU5B
QkxFRAogCitAY2xhc3MgX1dLV2Vic2l0ZVBvbGljaWVzOworCiBzdGF0aWMgY29uc3QgV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5IF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZCA9IChX
S05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeUFsbG93ICsg
MSk7CiBzdGF0aWMgY29uc3QgV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IFdLX0FQSV9BVkFJTEFC
TEUobWFjb3N4KDEwLjExKSwgaW9zKDkuMCkpIF9XS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
d1dpdGhvdXRUcnlpbmdBcHBMaW5rID0gKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkoV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5QWxsb3cgKyAyKTsKIApAQCAtNjMsNiArNjUsNyBAQCBzdGF0aWMg
Y29uc3QgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3kgCiAtICh2b2lkKV93ZWJWaWV3V2lsbEVu
ZE5hdmlnYXRpb25HZXN0dXJlOihXS1dlYlZpZXcgKil3ZWJWaWV3IHdpdGhOYXZpZ2F0aW9uVG9C
YWNrRm9yd2FyZExpc3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwogLSAodm9p
ZClfd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyB3aWxsU25hcHNob3RCYWNrRm9yd2FyZExp
c3RJdGVtOihXS0JhY2tGb3J3YXJkTGlzdEl0ZW0gKilpdGVtOwogLSAodm9pZClfd2ViVmlld0Rp
ZFJlbW92ZU5hdmlnYXRpb25HZXN0dXJlU25hcHNob3Q6KFdLV2ViVmlldyAqKXdlYlZpZXcgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTIpLCBpb3MoMTAuMCkpOworLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihX
S05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9p
ZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVj
aXNpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAjaWYgVEFSR0VUX09TX0lQSE9ORQogLSAodm9pZClfd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRTdGFydExvYWRGb3JRdWlja0xvb2tEb2N1bWVudEluTWFpbkZy
YW1lV2l0aEZpbGVOYW1lOihOU1N0cmluZyAqKWZpbGVOYW1lIHV0aTooTlNTdHJpbmcgKil1dGk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xp
Y2llcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLmgJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5o
PgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBfV0tXZWJzaXRlUG9saWNpZXMg
OiBOU09iamVjdAorCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjb250ZW50QmxvY2tlcnNF
bmFibGVkOworCitAZW5kCisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRApJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9s
aWNpZXMubW0JKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw3MiBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiX1dLV2Vic2l0ZVBv
bGljaWVzSW50ZXJuYWwuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKK0BpbXBsZW1lbnRhdGlv
biBfV0tXZWJzaXRlUG9saWNpZXMKKworLSAodm9pZClkZWFsbG9jCit7CisgICAgX3dlYnNpdGVQ
b2xpY2llcy0+QVBJOjpXZWJzaXRlUG9saWNpZXM6On5XZWJzaXRlUG9saWNpZXMoKTsKKyAgICAK
KyAgICBbc3VwZXIgZGVhbGxvY107Cit9CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisgICAgCisg
ICAgQVBJOjpPYmplY3Q6OmNvbnN0cnVjdEluV3JhcHBlcjxBUEk6OldlYnNpdGVQb2xpY2llcz4o
c2VsZik7CisgICAgCisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKHZvaWQpc2V0Q29udGVudEJs
b2NrZXJzRW5hYmxlZDooQk9PTCljb250ZW50QmxvY2tlcnNFbmFibGVkCit7CisgICAgX3dlYnNp
dGVQb2xpY2llcy0+c2V0Q29udGVudEJsb2NrZXJzRW5hYmxlZChjb250ZW50QmxvY2tlcnNFbmFi
bGVkKTsKK30KKworLSAoQk9PTCljb250ZW50QmxvY2tlcnNFbmFibGVkCit7CisgICAgcmV0dXJu
IF93ZWJzaXRlUG9saWNpZXMtPmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKTsKK30KKworLSAoTlNT
dHJpbmcgKilkZXNjcmlwdGlvbgoreworICAgIHJldHVybiBbTlNTdHJpbmcgc3RyaW5nV2l0aEZv
cm1hdDpAIjwlQDogJXA7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSAlZD4iLCBOU1N0cmluZ0Zy
b21DbGFzcyhzZWxmLmNsYXNzKSwgc2VsZiwgc2VsZi5jb250ZW50QmxvY2tlcnNFbmFibGVkXTsK
K30KKworLSAoQVBJOjpPYmplY3QmKV9hcGlPYmplY3QKK3sKKyAgICByZXR1cm4gKl93ZWJzaXRl
UG9saWNpZXM7Cit9CisKK0BlbmQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llc0ludGVybmFsLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXNJ
bnRlcm5hbC5oCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzSW50ZXJuYWwuaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiX1dLV2Vic2l0ZVBvbGljaWVzLmgiCisK
KyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJBUElXZWJzaXRlUG9saWNpZXMuaCIKKyNp
bXBvcnQgIldLT2JqZWN0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitpbmxpbmUgX1dLV2Vi
c2l0ZVBvbGljaWVzICp3cmFwcGVyKEFQSTo6V2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNp
ZXMpCit7CisgICAgQVNTRVJUKFt3ZWJzaXRlUG9saWNpZXMud3JhcHBlcigpIGlzS2luZE9mQ2xh
c3M6W19XS1dlYnNpdGVQb2xpY2llcyBjbGFzc11dKTsKKyAgICByZXR1cm4gKF9XS1dlYnNpdGVQ
b2xpY2llcyAqKXdlYnNpdGVQb2xpY2llcy53cmFwcGVyKCk7Cit9CisKK30KKworQGludGVyZmFj
ZSBfV0tXZWJzaXRlUG9saWNpZXMgKCkgPFdLT2JqZWN0PiB7CisgICAgQHBhY2thZ2UKKyAgICBB
UEk6Ok9iamVjdFN0b3JhZ2U8QVBJOjpXZWJzaXRlUG9saWNpZXM+IF93ZWJzaXRlUG9saWNpZXM7
Cit9CitAZW5kCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9t
YXRpb24vV2ViQXV0b21hdGlvblNlc3Npb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BdXRvbWF0aW9uL1dlYkF1dG9tYXRpb25TZXNzaW9uLmNwcAkocmV2aXNp
b24gMjA5NTE4KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0F1dG9tYXRpb24vV2ViQXV0
b21hdGlvblNlc3Npb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzUsOCArNDM1LDcgQEAgdm9p
ZCBXZWJBdXRvbWF0aW9uU2Vzc2lvbjo6cmVsb2FkQnJvd3NpbgogICAgIG1fcGVuZGluZ05hdmln
YXRpb25JbkJyb3dzaW5nQ29udGV4dENhbGxiYWNrc1BlclBhZ2Uuc2V0KHBhZ2UtPnBhZ2VJRCgp
LCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiAKICAgICBjb25zdCBib29sIHJlbG9hZEZyb21PcmlnaW4g
PSBmYWxzZTsKLSAgICBjb25zdCBib29sIGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQgPSB0cnVlOwot
ICAgIHBhZ2UtPnJlbG9hZChyZWxvYWRGcm9tT3JpZ2luLCBjb250ZW50QmxvY2tlcnNFbmFibGVk
KTsKKyAgICBwYWdlLT5yZWxvYWQocmVsb2FkRnJvbU9yaWdpbiwgeyB9KTsKIH0KIAogdm9pZCBX
ZWJBdXRvbWF0aW9uU2Vzc2lvbjo6aW5zcGVjdEJyb3dzaW5nQ29udGV4dChJbnNwZWN0b3I6OkVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nJiBoYW5kbGUsIGNvbnN0IGJvb2wq
IG9wdGlvbmFsRW5hYmxlQXV0b0NhcHR1cmluZywgUmVmPEluc3BlY3RCcm93c2luZ0NvbnRleHRD
YWxsYmFjaz4mJiBjYWxsYmFjaykKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2Nv
YS9OYXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJKHJldmlzaW9uIDIwOTUxOCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpA
QCAtMTYyLDYgKzE2Miw3IEBAIHByaXZhdGU6CiAKICAgICBzdHJ1Y3QgewogICAgICAgICBib29s
IHdlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyIDog
MTsKKyAgICAgICAgYm9vbCB3ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRl
Y2lzaW9uSGFuZGxlcldlYnNpdGVQb2xpY2llcyA6IDE7CiAgICAgICAgIGJvb2wgd2ViVmlld0Rl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZURlY2lzaW9uSGFuZGxlciA6IDE7CiAKICAg
ICAgICAgYm9vbCB3ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24gOiAxOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRl
Lm1tCShyZXZpc2lvbiAyMDk1MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
TmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBAIC02Miw2ICs2Miw3IEBACiAjaW1w
b3J0ICJfV0tGcmFtZUhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tSZW5kZXJpbmdQcm9n
cmVzc0V2ZW50c0ludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
VHlwZUludGVybmFsLmgiCisjaW1wb3J0ICJfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oIgog
I2ltcG9ydCA8V2ViQ29yZS9DcmVkZW50aWFsLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5
T3JpZ2luRGF0YS5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5o
PgpAQCAtMTM3LDYgKzEzOCw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpzZXROYXZpZ2F0aW9u
RGVsZWcKICAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZSA9IGRlbGVnYXRlOwogCiAgICAgbV9uYXZp
Z2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uRGVjaXNpb25IYW5kbGVyID0gW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0
b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxl
cjopXTsKKyAgICBtX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXMgPSBbZGVs
ZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjopXTsKICAgICBtX25hdmlnYXRpb25E
ZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZURl
Y2lzaW9uSGFuZGxlciA9IFtkZWxlZ2F0ZSByZXNwb25kc1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lzaW9uSGFuZGxlcjop
XTsKIAogICAgIG1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92
aXNpb25hbE5hdmlnYXRpb24gPSBbZGVsZWdhdGUgcmVzcG9uZHNUb1NlbGVjdG9yOkBzZWxlY3Rv
cih3ZWJWaWV3OmRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOildOwpAQCAtMjY1LDcgKzI2
Nyw3IEBAIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6fk5hdmkKIHsKIH0KIAot
c3RhdGljIHZvaWQgdHJ5QXBwTGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiBuYXZp
Z2F0aW9uQWN0aW9uLCBjb25zdCBTdHJpbmcmIGN1cnJlbnRNYWluRnJhbWVVUkwsIHN0ZDo6ZnVu
Y3Rpb248dm9pZCAoYm9vbCk+IGNvbXBsZXRpb25IYW5kbGVyKQorc3RhdGljIHZvaWQgdHJ5QXBw
TGluayhSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5hdmlnYXRpb25BY3Rpb24sIGNv
bnN0IFN0cmluZyYgY3VycmVudE1haW5GcmFtZVVSTCwgc3RkOjpmdW5jdGlvbjx2b2lkKGJvb2wp
PiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICNpZiBIQVZFKEFQUF9MSU5LUykKICAgICBpZiAoIW5h
dmlnYXRpb25BY3Rpb24tPnNob3VsZE9wZW5BcHBMaW5rcygpKSB7CkBAIC0yODksMTggKzI5MSwx
OSBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TmF2aWdhdGlvbkNsaWVudDo6CiB7CiAgICAgU3Ry
aW5nIG1haW5GcmFtZVVSTFN0cmluZyA9IHdlYlBhZ2VQcm94eS5tYWluRnJhbWUoKS0+dXJsKCk7
CiAKLSAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbkRlY2lzaW9uSGFuZGxlcikg
eworICAgIGlmICghbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2Rz
LndlYlZpZXdEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uRGVjaXNpb25IYW5kbGVyCisg
ICAgICAgICYmICFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMu
d2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXJXZWJz
aXRlUG9saWNpZXMpIHsKICAgICAgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uID0gJm5hdmlnYXRpb25BY3Rpb247CiAgICAgICAgIFJlZlB0cjxX
ZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxvY2FsTGlzdGVuZXIgPSBXVEZNb3ZlKGxpc3Rl
bmVyKTsKIAotICAgICAgICB0cnlBcHBMaW5rKGxvY2FsTmF2aWdhdGlvbkFjdGlvbiwgbWFpbkZy
YW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9jYWxOYXZpZ2F0aW9uQWN0aW9uXSAoYm9v
bCBmb2xsb3dlZExpbmtUb0FwcCkgeworICAgICAgICB0cnlBcHBMaW5rKFdURk1vdmUobG9jYWxO
YXZpZ2F0aW9uQWN0aW9uKSwgbWFpbkZyYW1lVVJMU3RyaW5nLCBbbG9jYWxMaXN0ZW5lciwgbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4oJm5hdmln
YXRpb25BY3Rpb24pXSAoYm9vbCBmb2xsb3dlZExpbmtUb0FwcCkgewogICAgICAgICAgICAgaWYg
KGZvbGxvd2VkTGlua1RvQXBwKSB7CiAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+aWdu
b3JlKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICBpZiAoIWxvY2FsTmF2aWdhdGlvbkFjdGlvbi0+dGFyZ2V0RnJhbWUoKSkgewotICAgICAg
ICAgICAgICAgIGxvY2FsTGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAgIGxvY2FsTGlz
dGVuZXItPnVzZSh7IH0pOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0K
IApAQCAtMzA5LDcgKzMxMiw3IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xp
ZW50OjoKICAgICAgICAgICAgICAgICBpZiAobG9jYWxOYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRQ
ZXJmb3JtRG93bmxvYWQoKSkKICAgICAgICAgICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+ZG93
bmxvYWQoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGxvY2Fs
TGlzdGVuZXItPnVzZSgpOworICAgICAgICAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT51c2Uo
eyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAKQEAgLTMyOSwy
MSArMzMyLDI2IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjoKICAg
ICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRy
PEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4gbG9jYWxOYXZpZ2F0aW9uQWN0aW9uID0gJm5hdmlnYXRp
b25BY3Rpb247Ci0gICAgUmVmUHRyPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbG9jYWxM
aXN0ZW5lciA9IFdURk1vdmUobGlzdGVuZXIpOwotICAgIFJlZlB0cjxDb21wbGV0aW9uSGFuZGxl
ckNhbGxDaGVja2VyPiBjaGVja2VyID0gQ29tcGxldGlvbkhhbmRsZXJDYWxsQ2hlY2tlcjo6Y3Jl
YXRlKG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSwgQHNlbGVjdG9yKHdlYlZpZXc6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7Ci0gICAgW25hdmlnYXRp
b25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOndyYXBwZXIobmF2aWdhdGlvbkFjdGlvbikgZGVjaXNpb25I
YW5kbGVyOltsb2NhbExpc3RlbmVyLCBsb2NhbE5hdmlnYXRpb25BY3Rpb24sIGNoZWNrZXIsIG1h
aW5GcmFtZVVSTFN0cmluZ10oV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSkg
eworICAgIGJvb2wgZGVsZWdhdGVIYXNXZWJzaXRlUG9saWNpZXMgPSBtX25hdmlnYXRpb25TdGF0
ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb25EZWNpc2lvbkhhbmRsZXJXZWJzaXRlUG9saWNpZXM7CisgICAgCisgICAgUmVm
UHRyPENvbXBsZXRpb25IYW5kbGVyQ2FsbENoZWNrZXI+IGNoZWNrZXIgPSBDb21wbGV0aW9uSGFu
ZGxlckNhbGxDaGVja2VyOjpjcmVhdGUobmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpLCBkZWxlZ2F0
ZUhhc1dlYnNpdGVQb2xpY2llcyA/IEBzZWxlY3Rvcihfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjopIDogQHNlbGVjdG9yKHdlYlZpZXc6ZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6KSk7CisgICAgCisg
ICAgYXV0byBkZWNpc2lvbkhhbmRsZXJXaXRoUG9saWNpZXMgPSBbbG9jYWxMaXN0ZW5lciA9IFJl
ZlB0cjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+KFdURk1vdmUobGlzdGVuZXIpKSwgbG9j
YWxOYXZpZ2F0aW9uQWN0aW9uID0gUmVmUHRyPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4oJm5hdmln
YXRpb25BY3Rpb24pLCBjaGVja2VyID0gV1RGTW92ZShjaGVja2VyKSwgbWFpbkZyYW1lVVJMU3Ry
aW5nXShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kgYWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9s
aWNpZXMgKndlYnNpdGVQb2xpY2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNoZWNrZXItPmRpZENh
bGxDb21wbGV0aW9uSGFuZGxlcigpOwogCisgICAgICAgIFdlYnNpdGVQb2xpY2llcyBwb2xpY2ll
czsKKyAgICAgICAgaWYgKHdlYnNpdGVQb2xpY2llcykKKyAgICAgICAgICAgIHBvbGljaWVzID0g
d2Vic2l0ZVBvbGljaWVzLT5fd2Vic2l0ZVBvbGljaWVzLT53ZWJzaXRlUG9saWNpZXMoKTsKKwog
ICAgICAgICBzd2l0Y2ggKGFjdGlvblBvbGljeSkgewogICAgICAgICBjYXNlIFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93OgotICAgICAgICAgICAgdHJ5QXBwTGluayhsb2NhbE5hdmlnYXRp
b25BY3Rpb24sIG1haW5GcmFtZVVSTFN0cmluZywgW2xvY2FsTGlzdGVuZXJdKGJvb2wgZm9sbG93
ZWRMaW5rVG9BcHApIHsKKyAgICAgICAgICAgIHRyeUFwcExpbmsoV1RGTW92ZShsb2NhbE5hdmln
YXRpb25BY3Rpb24pLCBtYWluRnJhbWVVUkxTdHJpbmcsIFtsb2NhbExpc3RlbmVyID0gV1RGTW92
ZShsb2NhbExpc3RlbmVyKSwgcG9saWNpZXMgPSBXVEZNb3ZlKHBvbGljaWVzKV0oYm9vbCBmb2xs
b3dlZExpbmtUb0FwcCkgbXV0YWJsZSB7CiAgICAgICAgICAgICAgICAgaWYgKGZvbGxvd2VkTGlu
a1RvQXBwKSB7CiAgICAgICAgICAgICAgICAgICAgIGxvY2FsTGlzdGVuZXItPmlnbm9yZSgpOwog
ICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAg
ICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICAgICAgbG9jYWxMaXN0
ZW5lci0+dXNlKHBvbGljaWVzKTsKICAgICAgICAgICAgIH0pOwogICAgICAgICAKICAgICAgICAg
ICAgIGJyZWFrOwpAQCAtMzU2LDE3ICszNjQsMjMgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5h
dmlnYXRpb25DbGllbnQ6OgogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKICNwcmFnbWEg
Y2xhbmcgZGlhZ25vc3RpYyBpZ25vcmVkICItV3N3aXRjaCIKICAgICAgICAgY2FzZSBfV0tOYXZp
Z2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWQ6Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcG9w
CiAgICAgICAgICAgICBsb2NhbExpc3RlbmVyLT5kb3dubG9hZCgpOwogICAgICAgICAgICAgYnJl
YWs7Ci0jcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgcHVzaAotI3ByYWdtYSBjbGFuZyBkaWFnbm9z
dGljIGlnbm9yZWQgIi1Xc3dpdGNoIgogICAgICAgICBjYXNlIF9XS05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBbGxvd1dpdGhvdXRUcnlpbmdBcHBMaW5rOgogI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGlj
IHBvcAotICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBsb2Nh
bExpc3RlbmVyLT51c2UocG9saWNpZXMpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0K
LSAgICB9XTsKKyAgICB9OworICAgIAorICAgIGlmIChkZWxlZ2F0ZUhhc1dlYnNpdGVQb2xpY2ll
cykKKyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9u
RGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBkZWNpc2lvbkhh
bmRsZXI6ZGVjaXNpb25IYW5kbGVyV2l0aFBvbGljaWVzXTsKKyAgICBlbHNlIHsKKyAgICAgICAg
YXV0byBkZWNpc2lvbkhhbmRsZXJXaXRob3V0UG9saWNpZXMgPSBbZGVjaXNpb25IYW5kbGVyV2l0
aFBvbGljaWVzXSAoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5IGFjdGlvblBvbGljeSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXJXaXRoUG9saWNpZXMoYWN0aW9uUG9saWN5
LCBuaWwpOworICAgICAgICB9OworICAgICAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b246d3JhcHBlcihuYXZpZ2F0aW9uQWN0aW9uKSBkZWNpc2lvbkhhbmRsZXI6ZGVjaXNpb25IYW5k
bGVyV2l0aG91dFBvbGljaWVzXTsKKyAgICB9CiB9CiAKIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpO
YXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UoV2ViUGFn
ZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uUmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVm
PFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4mJiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVz
ZXJEYXRhKQpAQCAtMzc4LDE0ICszOTIsMTQgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmln
YXRpb25DbGllbnQ6OgogICAgICAgICAgICAgQk9PTCBleGlzdHMgPSBbW05TRmlsZU1hbmFnZXIg
ZGVmYXVsdE1hbmFnZXJdIGZpbGVFeGlzdHNBdFBhdGg6dXJsLnBhdGggaXNEaXJlY3Rvcnk6Jmlz
RGlyZWN0b3J5XTsKIAogICAgICAgICAgICAgaWYgKGV4aXN0cyAmJiAhaXNEaXJlY3RvcnkgJiYg
bmF2aWdhdGlvblJlc3BvbnNlLmNhblNob3dNSU1FVHlwZSgpKQotICAgICAgICAgICAgICAgIGxp
c3RlbmVyLT51c2UoKTsKKyAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CiAgICAg
ICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbGlzdGVuZXItPmlnbm9yZSgpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKG5hdmlnYXRpb25SZXNwb25z
ZS5jYW5TaG93TUlNRVR5cGUoKSkKLSAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoKTsKKyAgICAg
ICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgbGlz
dGVuZXItPmlnbm9yZSgpOwogICAgICAgICByZXR1cm47CkBAIC00MDIsNyArNDE2LDcgQEAgdm9p
ZCBOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRpb25DbGllbnQ6OgogCiAgICAgICAgIHN3aXRjaCAo
cmVzcG9uc2VQb2xpY3kpIHsKICAgICAgICAgY2FzZSBXS05hdmlnYXRpb25SZXNwb25zZVBvbGlj
eUFsbG93OgotICAgICAgICAgICAgbG9jYWxMaXN0ZW5lci0+dXNlKCk7CisgICAgICAgICAgICBs
b2NhbExpc3RlbmVyLT51c2UoeyB9KTsKICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNh
c2UgV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lDYW5jZWw6CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViS2l0Mi54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk1
MTgpCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJ
KHdvcmtpbmcgY29weSkKQEAgLTEwOTksNiArMTA5OSwxMyBAQAogCQk1Qzc3MDY3NDFEMTEzODM4
MDAxMjcwMEYgLyogV2ViU29ja2V0UHJvdmlkZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3NzA2NzMxRDExMUQ4QjAwMTI3MDBGIC8qIFdlYlNv
Y2tldFByb3ZpZGVyLmNwcCAqLzsgfTsKIAkJNUM3OTQzOUIxRDc2MkQ2MjAwMzEwMkQ0IC8qIFdl
YktpdDJJbml0aWFsaXplQ29jb2EubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1Qzc5NDM5QTFENzYyQ0RGMDAzMTAyRDQgLyogV2ViS2l0MkluaXRpYWxp
emVDb2NvYS5tbSAqLzsgfTsKIAkJNUM4NUM3ODgxQzNGMjNDRTAwNjFBNEZBIC8qIFBlbmRpbmdE
b3dubG9hZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA1Qzg1Qzc4NjFDM0YyM0M1MDA2MUE0RkEgLyogUGVuZGluZ0Rvd25sb2FkLmNwcCAqLzsgfTsK
KwkJNUM5RTU2ODIxREY3RjFBQjAwQzlFRTMzIC8qIFdLV2Vic2l0ZVBvbGljaWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1NjgwMURGN0Yw
NTUwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5jcHAgKi87IH07CisJCTVDOUU1NjgzMURG
N0YxQjMwMEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM5RTU2ODExREY3RjA1NTAwQzlFRTMzIC8qIFdL
V2Vic2l0ZVBvbGljaWVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKKwkJNUNCMjM3OEIxREYwREU1MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2ll
cy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIz
NzhBMURGMERENDMwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMubW0gKi87IH07CisJCTVD
QjIzNzhDMURGMERFNkUwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQjIzNzg5MURGMERENDMwMDEx
N0FBMyAvKiBfV0tXZWJzaXRlUG9saWNpZXMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9
IChQcml2YXRlLCApOyB9OyB9OworCQk1Q0IyMzc4RTFERjBFMEQzMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAvKiBfV0tXZWJzaXRlUG9saWNp
ZXNJbnRlcm5hbC5oICovOyB9OworCQk1Q0IyMzc5MTFERjBFMkU2MDAxMTdBQTMgLyogQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDQjIzNzkwMURGMEUxREQwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3Bw
ICovOyB9OworCQk1Q0IyMzc5MjFERjBFMkVFMDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVz
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Q0IyMzc4
RjFERjBFMUI4MDAxMTdBQTMgLyogQVBJV2Vic2l0ZVBvbGljaWVzLmggKi87IH07CiAJCTVDQkM5
QjhEMUM2NTI3OUMwMEE4RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDQkM5QjhCMUM2NTI1NzMwMEE4
RkRDRiAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbSAqLzsgfTsKIAkJNUNCQzlCOEUxQzY1MkNB
MDAwQThGRENGIC8qIE5ldHdvcmtEYXRhVGFzay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUNCQzlCODkxQzY1MjRBNTAwQThGRENGIC8qIE5ldHdvcmtE
YXRhVGFzay5oICovOyB9OwogCQk1Q0U4NUIyMDFDODhFNjRCMDA3MEJGQ0UgLyogUGluZ0xvYWQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDRTg1QjFG
MUM4OEU2NDMwMDcwQkZDRSAvKiBQaW5nTG9hZC5oICovOyB9OwpAQCAtMzIyOSw2ICszMjM2LDE0
IEBACiAJCTVDNzk0MzlBMUQ3NjJDREYwMDMxMDJENCAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29h
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViS2l0MkluaXRp
YWxpemVDb2NvYS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzg4REMxRDBG
NDFBMDAwOUQyRjZEIC8qIFdlYlNvY2tldFByb3ZpZGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgbmFtZSA9IFdlYlNvY2tldFByb3ZpZGVyLmg7IHBhdGggPSBOZXR3b3JrL1dlYlNvY2tl
dFByb3ZpZGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDODVDNzg2MUMzRjIz
QzUwMDYxQTRGQSAvKiBQZW5kaW5nRG93bmxvYWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gUGVuZGluZ0Rvd25sb2FkLmNwcDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L0Rvd25sb2Fkcy9QZW5kaW5nRG93bmxvYWQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzlFNTY3RjFERjc5MzA5MDBDOUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYnNpdGVQb2xpY2llcy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1QzlFNTY4MDFERjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRl
UG9saWNpZXMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tXZWJz
aXRlUG9saWNpZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFNTY4MTFE
RjdGMDU1MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV0tXZWJzaXRlUG9saWNpZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJNUNCMjM3ODkxREYwREQ0MzAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBfV0tXZWJzaXRlUG9saWNpZXMuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNUNCMjM3OEExREYwREQ0MzAwMTE3QUEzIC8q
IF9XS1dlYnNpdGVQb2xpY2llcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNUNCMjM3OEQxREYwRTBDMjAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llc0ludGVybmFs
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS1dlYnNpdGVQb2xpY2llc0lu
dGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDQjIzNzhGMURGMEUxQjgw
MDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gQVBJV2Vic2l0ZVBvbGljaWVzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTVDQjIzNzkwMURGMEUxREQwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQVBJV2Vic2l0ZVBvbGljaWVzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUNCQzlCODkxQzY1MjRBNTAwQThGRENG
IC8qIE5ldHdvcmtEYXRhVGFzay5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrRGF0YVRhc2suaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL05ldHdvcmtEYXRhVGFzay5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1Q0JDOUI4QjFDNjUyNTczMDBBOEZEQ0Yg
LyogTmV0d29ya0RhdGFUYXNrQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IG5hbWUgPSBOZXR3b3JrRGF0YVRhc2tDb2NvYS5tbTsgcGF0aCA9IE5ldHdvcmtQcm9jZXNz
L2NvY29hL05ldHdvcmtEYXRhVGFza0NvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1Q0U4NUIxRjFDODhFNjQzMDA3MEJGQ0UgLyogUGluZ0xvYWQuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gUGluZ0xvYWQuaDsgcGF0aCA9IE5ldHdvcmtQcm9jZXNzL1Bp
bmdMb2FkLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC00NzQ2LDYgKzQ3NjEsNyBA
QAogCQkJCTM3NjA4ODFEMTUwNDEzRTkwMEZDODJDNyAvKiBXZWJSZW5kZXJPYmplY3QuaCAqLywK
IAkJCQk4MzYwMzQ5RDFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJhc2VUcmFja2Vy
LmNwcCAqLywKIAkJCQk4MzYwMzQ5RTFBQ0IzNEQ2MDA2MjY1NDkgLyogV2ViU1FMaXRlRGF0YWJh
c2VUcmFja2VyLmggKi8sCisJCQkJNUM5RTU2N0YxREY3OTMwOTAwQzlFRTMzIC8qIFdlYnNpdGVQ
b2xpY2llcy5oICovLAogCQkJCUMwMzM3REQ3MTI3QTUxQjYwMDhGRjRGNCAvKiBXZWJUb3VjaEV2
ZW50LmNwcCAqLywKIAkJCQk3QzA2NUYyOTFDOENEOTVGMDBDMkQ5NTAgLyogV2ViVXNlckNvbnRl
bnRDb250cm9sbGVyRGF0YVR5cGVzLmNwcCAqLywKIAkJCQk3QzA2NUYyQTFDOENEOTVGMDBDMkQ5
NTAgLyogV2ViVXNlckNvbnRlbnRDb250cm9sbGVyRGF0YVR5cGVzLmggKi8sCkBAIC01MzE4LDYg
KzUzMzQsOSBAQAogCQkJCTFBRTI4Njc2MUM3RTc2NTEwMDY5QUM0RiAvKiBfV0tXZWJzaXRlRGF0
YVNpemUuaCAqLywKIAkJCQkxQUUyODY3NTFDN0U3NjUxMDA2OUFDNEYgLyogX1dLV2Vic2l0ZURh
dGFTaXplLm1tICovLAogCQkJCTFBRTI4NjdGMUM3RjkyQkYwMDY5QUM0RiAvKiBfV0tXZWJzaXRl
RGF0YVNpemVJbnRlcm5hbC5oICovLAorCQkJCTVDQjIzNzg5MURGMERENDMwMDExN0FBMyAvKiBf
V0tXZWJzaXRlUG9saWNpZXMuaCAqLywKKwkJCQk1Q0IyMzc4QTFERjBERDQzMDAxMTdBQTMgLyog
X1dLV2Vic2l0ZVBvbGljaWVzLm1tICovLAorCQkJCTVDQjIzNzhEMURGMEUwQzIwMDExN0FBMyAv
KiBfV0tXZWJzaXRlUG9saWNpZXNJbnRlcm5hbC5oICovLAogCQkJCUZFRDNDMURBMUI0NDdBRTgw
MEUwRUI3RiAvKiBBUElTZXJpYWxpemVkU2NyaXB0VmFsdWVDb2NvYS5tbSAqLywKIAkJCQk3Q0VG
QTk2MDFBQzA5OTkzMDBCOTEwRkQgLyogQVBJVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZUNvY29h
Lm1tICovLAogCQkJCTFBMzYzNUFCMUEzMTQ1RTUwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0
b3JlQ29jb2EubW0gKi8sCkBAIC02NDMwLDYgKzY0NDksOCBAQAogCQkJCTFBRTI4NjgyMUM3Rjkz
ODYwMDY5QUM0RiAvKiBBUElXZWJzaXRlRGF0YVJlY29yZC5oICovLAogCQkJCTFBMzYzNUE3MUEz
MTQ0QTMwMEVENjE5NyAvKiBBUElXZWJzaXRlRGF0YVN0b3JlLmNwcCAqLywKIAkJCQkxQTM2MzVB
ODFBMzE0NEEzMDBFRDYxOTcgLyogQVBJV2Vic2l0ZURhdGFTdG9yZS5oICovLAorCQkJCTVDQjIz
NzkwMURGMEUxREQwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwICovLAorCQkJCTVD
QjIzNzhGMURGMEUxQjgwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCAqLywKIAkJCQkx
QTY1NjNFMjFCN0E4QzUwMDA5Q0Y3ODcgLyogQVBJV2luZG93RmVhdHVyZXMuY3BwICovLAogCQkJ
CTFBNjU2M0UzMUI3QThDNTAwMDlDRjc4NyAvKiBBUElXaW5kb3dGZWF0dXJlcy5oICovLAogCQkJ
KTsKQEAgLTY1NjUsNiArNjU4Niw4IEBACiAJCQkJN0M4OUQyQTIxQTY3ODg3NTAwM0E1RkRFIC8q
IFdLVXNlclNjcmlwdFJlZi5oICovLAogCQkJCTFBNTcxMDlDMUFCQTAwMjcwMDJGQUJCRSAvKiBX
S1dlYnNpdGVEYXRhU3RvcmVSZWYuY3BwICovLAogCQkJCTFBNTcxMDlEMUFCQTAwMjcwMDJGQUJC
RSAvKiBXS1dlYnNpdGVEYXRhU3RvcmVSZWYuaCAqLywKKwkJCQk1QzlFNTY4MDFERjdGMDU1MDBD
OUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwICovLAorCQkJCTVDOUU1NjgxMURGN0YwNTUw
MEM5RUUzMyAvKiBXS1dlYnNpdGVQb2xpY2llcy5oICovLAogCQkJCTFBN0MwREY0MUI3RDFGMTAw
MEE5Qjg0OCAvKiBXS1dpbmRvd0ZlYXR1cmVzUmVmLmNwcCAqLywKIAkJCQkxQTdDMERGNTFCN0Qx
RjEwMDBBOUI4NDggLyogV0tXaW5kb3dGZWF0dXJlc1JlZi5oICovLAogCQkJKTsKQEAgLTc4MTgs
NiArNzg0MSw3IEBACiAJCQkJMUFDNzVBMUIxQjMzNjgyNzAwNTY3NDVCIC8qIEhhbmdEZXRlY3Rp
b25EaXNhYmxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMzdGOTBERTMxMzc2NTYwRTAwNTFDRjY4
IC8qIEhUVFBDb29raWVBY2NlcHRQb2xpY3kuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxRTM1MUNC
MTgwRjJDQ0MwMEU1M0JFOSAvKiBJREJVdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAorCQkJCTVD
QjIzNzkyMURGMEUyRUUwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDQ0Y2QjI1MTJDOTNFN0EwMDhGOUMzNSAvKiBJbWFnZU9wdGlvbnMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTFBMUVDNjlFMTg3MjA5MjEwMEI5NTFGMCAvKiBJbXBvcnRhbmNlQXNz
ZXJ0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzIwNEVFMzExQzgzRTk4MDA4RjMzNzUgLyog
SW5qZWN0ZWRCdW5kbGUuaCBpbiBIZWFkZXJzICovLApAQCAtODEzNSw2ICs4MTU5LDcgQEAKIAkJ
CQk1MTgzNDU5MzEzNDUzMkU5MDA5MkI2OTYgLyogV2ViSWNvbkRhdGFiYXNlQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKIAkJCQk1MUQwMkY2QTEzMkVDNzM3MDBCRUFBOTYgLyogV2ViSWNvbkRhdGFi
YXNlTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMUIyNEE3MTMyRTA5NTcwMDA2NUEw
QyAvKiBXZWJJY29uRGF0YWJhc2VQcm94eS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNUNCMjM3OEMx
REYwREU2RTAwMTE3QUEzIC8qIF9XS1dlYnNpdGVQb2xpY2llcy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNTFEMDJGNkMxMzJFQzczNzAwQkVBQTk2IC8qIFdlYkljb25EYXRhYmFzZVByb3h5TWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUyMzcwMUM3MzlENDIwMDc5OTNDQiAvKiBXZWJJ
REJDb25uZWN0aW9uVG9DbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxMDUyMzdBMUM3M0RB
NzcwMDc5OTNDQiAvKiBXZWJJREJDb25uZWN0aW9uVG9DbGllbnRNZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8sCkBAIC04MzM2LDYgKzgzNjEsNyBAQAogCQkJCTM3N0VBRDQ1MTdFMkM1MUEwMDJEMTkz
RCAvKiBXS0RlY2xhcmF0aW9uU3BlY2lmaWVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM3MkRC
MkYxQTY3N0Q0QTAwQzY5N0M1IC8qIFdLRGlhZ25vc3RpY0xvZ2dpbmdSZXN1bHRUeXBlLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzQwNzVGQTEyNEZGMDI3MDA2OEYyMEEgLyogV0tEaWN0aW9uYXJ5
LmggaW4gSGVhZGVycyAqLywKKwkJCQk1Q0IyMzc4RTFERjBFMEQzMDAxMTdBQTMgLyogX1dLV2Vi
c2l0ZVBvbGljaWVzSW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMDE3RDA3MTYyNjBG
RjQwMDcwNTRGNSAvKiBXS0RPTURvY3VtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzAxN0Qw
OTE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01FbGVtZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzAxN0QwQjE2MjYwRkY0MDA3MDU0RjUgLyogV0tET01JbnRlcm5hbHMuaCBpbiBIZWFkZXJzICov
LApAQCAtODU0Nyw2ICs4NTczLDcgQEAKIAkJCQk1M0RFQTM2NjFEREU0MjMxMDBFODI2NDggLyog
anNvbi5ocHAgaW4gSGVhZGVycyAqLywKIAkJCQkzNzNEMTIyRDE4QTRCNkVCMDA2NkQ5Q0MgLyog
V0tXZWJQcm9jZXNzUGx1Z0luRnJhbWVQcml2YXRlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1
MDZCMjE4NTkxNjNFMDBFQzBGRjcgLyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCisJCQkJNUM5RTU2ODMxREY3RjFCMzAwQzlFRTMzIC8qIFdLV2Vic2l0
ZVBvbGljaWVzLmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1MDZCNzE4NTkxNjVBMDBFQzBGRjcg
LyogV0tXZWJQcm9jZXNzUGx1Z0luSGl0VGVzdFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAq
LywKIAkJCQlCQzk4OUQ4NTE2MUE5ODkwMDAwRDQ2RDMgLyogV0tXZWJQcm9jZXNzUGx1Z0luSW50
ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCTFGMzM1QkMwMTg1Qjg0RjAwMDFBMjAxQSAvKiBX
S1dlYlByb2Nlc3NQbHVnSW5Mb2FkRGVsZWdhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtOTM2MCw2
ICs5Mzg3LDcgQEAKIAkJCQkzMUVBMjVEMjEzNEY3OEMwMDA1QjE0NTIgLyogTmF0aXZlV2ViTW91
c2VFdmVudE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTJEQTk0NDlGMTg4NEU0RjAwMEVEODZE
QiAvKiBOYXRpdmVXZWJUb3VjaEV2ZW50SU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJREY1OEM2
MzYxMzcxQUNBMDAwRjlBMzdDIC8qIE5hdGl2ZVdlYldoZWVsRXZlbnRNYWMubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1Q0IyMzc4QjFERjBERTUzMDAxMTdBQTMgLyogX1dLV2Vic2l0ZVBvbGljaWVz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMUFEQ0I4NkExODk4MzFCMzAwMjJFRTVBIC8qIE5hdmln
YXRpb25BY3Rpb25EYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTFBQkMzREY1MTg5OUU0Mzcw
MDRGMDYyNiAvKiBOYXZpZ2F0aW9uU3RhdGUubW0gaW4gU291cmNlcyAqLywKIAkJCQkxQTZGQkEy
QjExRTY4NjI3MDBEQjEzNzEgLyogTmV0c2NhcGVCcm93c2VyRnVuY3MuY3BwIGluIFNvdXJjZXMg
Ki8sCkBAIC05NDA1LDYgKzk0MzMsNyBAQAogCQkJCTUxN0NGMEUzMTYzQTQ4NkMwMEMyOTUwRSAv
KiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkJNUMxNDI2RUMxQzIzRjgwOTAwRDQxMTgzIC8qIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTJEQTk0NEJEMTg4NTExRTcwMEVE
ODZEQiAvKiBOZXR3b3JrUHJvY2Vzc0lPUy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDQjIzNzkx
MURGMEUyRTYwMDExN0FBMyAvKiBBUElXZWJzaXRlUG9saWNpZXMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE3OTU1NjcxNjI4NzZDQjAwRkE0M0I2IC8qIE5ldHdvcmtQcm9jZXNzTWFjLm1tIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTE2MzE5OTQxNjI4OUE2MDAwRTIyRjAwIC8qIE5ldHdvcmtQcm9j
ZXNzTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUUxNEE5NTQ5MTZFMDE2
QTQwMDY4REU4MiAvKiBOZXR3b3JrUHJvY2Vzc1BsYXRmb3JtU3RyYXRlZ2llcy5jcHAgaW4gU291
cmNlcyAqLywKQEAgLTk1OTMsNiArOTYyMiw3IEBACiAJCQkJNzI4RTg2RjIxNzk1MTg4QzAwODc4
NzlFIC8qIFdlYkNvbG9yUGlja2VyTWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0M0QUJFRDAx
QUE4RTlGMDAwODhBQTM3IC8qIFdlYkNvbXBpbGVkQ29udGVudEV4dGVuc2lvbi5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk3QzRBQkVENDFBQThGQ0I4MDA4OEFBMzcgLyogV2ViQ29tcGlsZWRDb250
ZW50RXh0ZW5zaW9uRGF0YS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzlFNTY4MjFERjdGMUFC
MDBDOUVFMzMgLyogV0tXZWJzaXRlUG9saWNpZXMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkM0
QTYyOEYxNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb24uY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJQkM0QTYyOTExNDczMTJCRTAwNkM2ODFBIC8qIFdlYkNvbm5lY3Rpb25DbGllbnQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJMUExRkVDMUMxNjI3QjQ1NzAwNzAwRjZEIC8qIFdlYkNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjA5NTE4KQorKysgU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNz
YWdlcy5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2Vic2l0ZVBvbGljaWVzLmgiCiAjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9DYWNoZWRGcmFtZS5oPgpAQCAtODA3LDExICs4MDgsMTYg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5vdGlm
eSB0aGUgVUlQcm9jZXNzLgogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CiAg
ICAgV2ViQ29yZTo6RnJhbWUqIG9yaWdpbmF0aW5nQ29yZUZyYW1lID0gb3JpZ2luYXRpbmdGcmFt
ZSA/IG9yaWdpbmF0aW5nRnJhbWUtPmNvcmVGcmFtZSgpIDogbnVsbHB0cjsKLSAgICBpZiAoIXdl
YlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lID8gb3JpZ2luYXRpbmdGcmFtZS0+ZnJh
bWVJRCgpIDogMCwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUob3JpZ2luYXRpbmdDb3Jl
RnJhbWUpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0
ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBvbGljeUFj
dGlvbiwgbmV3TmF2aWdhdGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpKSkgeworICAg
IFdlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXM7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5k
U3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0
aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29y
ZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgb3JpZ2luYXRpbmdGcmFtZSA/IG9yaWdpbmF0aW5nRnJhbWUtPmZyYW1lSUQoKSA6IDAs
IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKG9yaWdpbmF0aW5nQ29yZUZyYW1lKSwgbmF2
aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwgVXNl
ckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1
c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24sIG5ld05h
dmlnYXRpb25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkg
ewogICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
UG9saWN5SWdub3JlLCAwLCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgLy8g
T25seSBzZXRVc2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkIGlmIGl0IGhhc24ndCBhbHJlYWR5
IGJlZW4gZGlzYWJsZWQgYnkgcmVsb2FkaW5nIHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KKyAg
ICBpZiAoZG9jdW1lbnRMb2FkZXItPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKKyAg
ICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2Vi
c2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOworCiAgICAgLy8gV2UgY2FsbCB0
aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVzZSBXZWJDb3JlIGNhbm5vdCBncmFjZWZ1bGx5IGhhbmRs
ZSBhIGZyYW1lIGxvYWQgd2l0aG91dCBhIHN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IHJl
cGx5LgogICAgIGlmIChyZWNlaXZlZFBvbGljeUFjdGlvbikKICAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHN0YXRpY19jYXN0PFBvbGljeUFjdGlv
bj4ocG9saWN5QWN0aW9uKSwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElEKTsKSW5kZXg6IFRv
b2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIw
OTUxOCkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBA
CisyMDE2LTEyLTA3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIFNQSSBmb3Igc2VuZGluZyBXZWJzaXRlU2V0dGluZ3MgdG8gV2ViUHJv
Y2VzcyBkdXJpbmcgbmF2aWdhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1NTE3CisgICAgICAgIDxyZGFyOi8vMjkzNDEwNjg+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVjay5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlUG9saWNp
ZXMubW06IEFkZGVkLgorICAgICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSB3ZWJWaWV3
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoLVtXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSBfd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bV2Vic2l0ZVBv
bGljaWVzRGVsZWdhdGUgd2ViVmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdl
OmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToK
KwogMjAxNi0xMi0wNyAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+CiAKICAgICAgICAg
RHVtcFJlbmRlclRyZWUgc2hvdWxkIHN0b3AgdXNpbmcgQ2hlY2tlZE1hbGxvYy4KSW5kZXg6IFRv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMDk1MTgpCisrKyBUb29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5
KQpAQCAtMTY3LDYgKzE2Nyw4IEBACiAJCTVDNkU2NTQ0MUQ1Q0VGRDQwMEY3ODYyRSAvKiBVUkxQ
YXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM2RTY1NDExRDVDRUY4NTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi87IH07CiAJCTVDNzI2
RDZGMUQzRUUwNkUwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM3MjZENkUxRDNFRTA2ODAw
QzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gKi87IH07CiAJCTVDODM4RjdGMURC
MDRGOTAwMDgyODU4RiAvKiBMb2FkSW52YWxpZFVSTFJlcXVlc3QubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1NzkwMUZBRTFDQUYxMzcxMDBFRDY0Rjkg
LyogTG9hZEludmFsaWRVUkxSZXF1ZXN0Lm1tICovOyB9OworCQk1QzlFNTY4NTFERjkxNDU0MDBD
OUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNUM5RTU2ODQxREY5MTQzRDAwQzlFRTMzIC8qIFdlYnNpdGVQb2xp
Y2llcy5tbSAqLzsgfTsKKwkJNUM5RTU2ODcxREY5MTRBRTAwQzlFRTMzIC8qIGNvbnRlbnRCbG9j
a2VyQ2hlY2suaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzlFNTY4NjFERjkxNDhFMDBDOUVFMzMgLyogY29udGVudEJsb2NrZXJDaGVj
ay5odG1sICovOyB9OwogCQk1QzlFNTk0MTFEM0VCNUFDMDBFM0M2MkUgLyogQXBwbGljYXRpb25D
YWNoZS5kYiBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRpb25DYWNoZS5kYiAqLzsg
fTsKIAkJNUM5RTU5NDIxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItc2ht
IGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
OUU1OTNGMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXNobSAqLzsgfTsK
IAkJNUM5RTU5NDMxRDNFQjVBQzAwRTNDNjJFIC8qIEFwcGxpY2F0aW9uQ2FjaGUuZGItd2FsIGlu
IENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDOUU1
OTQwMUQzRUIxREUwMEUzQzYyRSAvKiBBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCAqLzsgfTsKQEAg
LTU4NSw2ICs1ODcsNyBAQAogCQkJZHN0UGF0aCA9IFRlc3RXZWJLaXRBUEkucmVzb3VyY2VzOwog
CQkJZHN0U3ViZm9sZGVyU3BlYyA9IDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1QzlFNTY4NzFERjkx
NEFFMDBDOUVFMzMgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovLAogCQkJCTA3NDkyQjNDMURGOEI4NjYwMDYzM0RFMSAvKiBlbnVtZXJhdGVNZWRpYURldmlj
ZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywKIAkJCQk5QjI3MEZFRTFEREMyQzBCMDAyRDUz
RjMgLyogY2xvc2VkLXNoYWRvdy10cmVlLXRlc3QuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLywK
IAkJCQlGNEMyQUIyMjFERDZEOTVFMDBFMDZENUIgLyogZW5vcm1vdXMtdmlkZW8td2l0aC1zb3Vu
ZC5odG1sIGluIENvcHkgUmVzb3VyY2VzICovLApAQCAtOTc5LDYgKzk4Miw4IEBACiAJCTVDNkU2
NTQxMUQ1Q0VGODUwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zdGFuY2VNZXRob2RTd2l6emxl
ci5oOyBwYXRoID0gY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1QzcyNkQ2RTFEM0VFMDY4MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRo
b2RTd2l6emxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgbmFtZSA9IElu
c3RhbmNlTWV0aG9kU3dpenpsZXIubW07IHBhdGggPSBjb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6
bGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzlFNTY4NDFERjkxNDNEMDBD
OUVFMzMgLyogV2Vic2l0ZVBvbGljaWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gV2Vic2l0ZVBvbGljaWVzLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQk1QzlFNTY4NjFERjkxNDhFMDBDOUVFMzMgLyogY29udGVudEJsb2NrZXJDaGVjay5odG1s
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gY29udGVudEJsb2NrZXJDaGVjay5odG1sOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTkzRTFEM0VCMURFMDBFM0M2MkUgLyog
QXBwbGljYXRpb25DYWNoZS5kYiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBBcHBsaWNhdGlvbkNhY2hlLmRiOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzlFNTkzRjFEM0VCMURFMDBFM0M2MkUgLyogQXBwbGljYXRp
b25DYWNoZS5kYi1zaG0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBmaWxlOyBwYXRoID0gIkFwcGxpY2F0aW9uQ2FjaGUuZGItc2htIjsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM5RTU5NDAxRDNFQjFERTAwRTNDNjJFIC8qIEFwcGxpY2F0
aW9uQ2FjaGUuZGItd2FsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gZmlsZTsgcGF0aCA9ICJBcHBsaWNhdGlvbkNhY2hlLmRiLXdhbCI7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNDc1LDYgKzE0ODAsNyBAQAogCQkJCTdDQ0I5OTIwMUQz
QjQxRjYwMDM5MjJGNiAvKiBVc2VySW5pdGlhdGVkQWN0aW9uSW5OYXZpZ2F0aW9uQWN0aW9uLm1t
ICovLAogCQkJCTkzRTk0M0YxMUNEM0U4N0UwMEFDMDhDMiAvKiBWaWRlb0NvbnRyb2xzTWFuYWdl
ci5tbSAqLywKIAkJCQk1MTcxNEVCNjFDRjhDN0E0MDA0NzIzQzQgLyogV2ViUHJvY2Vzc0tpbGxJ
REJDbGVhbnVwLm1tICovLAorCQkJCTVDOUU1Njg0MURGOTE0M0QwMEM5RUUzMyAvKiBXZWJzaXRl
UG9saWNpZXMubW0gKi8sCiAJCQkJMUY4MzU3MUExRDNGRkIwRTAwRTM5NjdCIC8qIFdLQmFja0Zv
cndhcmRMaXN0Lm1tICovLAogCQkJCTM3NUUwRTE1MUQ2NjY3NDQwMEVGRUMyQyAvKiBXS05TTnVt
YmVyLm1tICovLAogCQkJCTM3QjQ3RTJFMUQ2NEU3Q0EwMDVGNEVGRiAvKiBXS09iamVjdC5tbSAq
LywKQEAgLTE4OTIsNiArMTg5OCw3IEBACiAJCQkJN0M0ODZCQTAxQUExMjU0QjAwM0Y2RjlCIC8q
IGJ1bmRsZS1maWxlLmh0bWwgKi8sCiAJCQkJMUE1MEFBMUYxQTJBNEVBNTAwRjRDMzQ1IC8qIGNs
b3NlLWZyb20td2l0aGluLWNyZWF0ZS1wYWdlLmh0bWwgKi8sCiAJCQkJOUIyNzBGRUQxRERDMjVG
RDAwMkQ1M0YzIC8qIGNsb3NlZC1zaGFkb3ctdHJlZS10ZXN0Lmh0bWwgKi8sCisJCQkJNUM5RTU2
ODYxREY5MTQ4RTAwQzlFRTMzIC8qIGNvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbCAqLywKIAkJCQky
OTBGNDI3NDE3MkExRkRFMDA5MzlGRjAgLyogY3VzdG9tLXByb3RvY29sLXN5bmMteGhyLmh0bWwg
Ki8sCiAJCQkJQzVFMUFGRkQxNkIyMjE3OTAwNkNDMUYyIC8qIGV4ZWNDb3B5Lmh0bWwgKi8sCiAJ
CQkJQkMyRDAwNEExMkE5RkVCMzAwRTczMkEzIC8qIGZpbGUtd2l0aC1hbmNob3IuaHRtbCAqLywK
QEAgLTI0NDcsNiArMjQ1NCw3IEBACiAJCQkJN0NDRTdFRUIxQTQxMUFFNjAwNDQ3QzRDIC8qIERv
Y3VtZW50U3RhcnRVc2VyU2NyaXB0QWxlcnRDcmFzaC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkz
N0EyMkFBNzFEQ0FBMjcyMDBBRkJGQzQgLyogT2JzZXJ2ZWRSZW5kZXJpbmdQcm9ncmVzc0V2ZW50
c0FmdGVyQ3Jhc2gubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VCQjFBNDExQTdFMDA0NDdD
NEMgLyogRE9NSFRNTFRhYmxlQ2VsbENlbGxBYm92ZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVD
OUU1Njg1MURGOTE0NTQwMEM5RUUzMyAvKiBXZWJzaXRlUG9saWNpZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyRDUxQTBDNzFDOEJGMDBDMDA3NjVDNDUgLyogRE9NSFRNTFZpZGVvRWxlbWVudFdy
YXBwZXIubW0gaW4gU291cmNlcyAqLywKIAkJCQk1QzBCRjg5MjFERDU5OUI2MDBCMDAzMjggLyog
RWFybHlLVk9DcmFzaC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJDMUE0MTFBN0UwMDQ0
N0M0QyAvKiBET01Ob2RlRnJvbUpTT2JqZWN0Lm1tIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDIvY29udGVudEJsb2NrZXJDaGVjay5odG1sCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Mi9jb250ZW50Qmxv
Y2tlckNoZWNrLmh0bWwJKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXQyL2NvbnRlbnRCbG9ja2VyQ2hlY2suaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDEzIEBACis8aHRtbD4KKyAgICA8aGVhZD4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHNlbmRNZXNzYWdlKCkgeyBhbGVydChnZXRDb21wdXRlZFN0eWxlKGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoIi5oaWRkZW4iKSkuZGlzcGxheSA9PSAibm9uZSIgPyAiY29udGVu
dCBibG9ja2VycyBlbmFibGVkIiA6ImNvbnRlbnQgYmxvY2tlcnMgZGlzYWJsZWQiKTsgfQorICAg
ICAgICA8L3NjcmlwdD4KKyAgICA8L2hlYWQ+CisgICAgPGJvZHkgb25sb2FkPSJzZW5kTWVzc2Fn
ZSgpIj4KKyAgICAgICAgPHAgY2xhc3M9ImhpZGRlbiI+CisgICAgICAgICAgICBUaGlzIHRleHQg
ZXhpc3RzIHRvIGRldGVybWluZSBpZiBjb250ZW50IGJsb2NrZXJzIGFyZSBlbmFibGVkLgorICAg
ICAgICAgICAgSWYgdGhleSdyZSBlbmFibGVkLCB0aGUgY29tcHV0ZWQgc3R5bGUgb2YgdGhpcyB0
ZXh0IHdpbGwgYmUgZGlzcGxheTpub25lLgorICAgICAgICA8L3A+CisgICAgPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXQyQ29jb2EvV2Vic2l0
ZVBvbGljaWVzLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0MkNvY29hL1dlYnNpdGVQb2xpY2llcy5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9XZWJzaXRlUG9saWNpZXMubW0JKHdvcmtpbmcg
Y29weSkKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tVc2Vy
Q29udGVudENvbnRyb2xsZXJQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJp
dmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQcml2
YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGljaWVzLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKKyNpZiBXS19BUElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCBkb25l
Q29tcGlsaW5nOworc3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsKK3N0YXRpYyBzaXplX3QgYWxl
cnRDb3VudDsKKworQGludGVyZmFjZSBXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSA6IE5TT2JqZWN0
IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwgV0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50
YXRpb24gV2Vic2l0ZVBvbGljaWVzRGVsZWdhdGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246KFdLTmF2aWdhdGlv
bkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgoreworICAgIC8vIF93ZWJWaWV3
OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOiBzaG91bGQg
YmUgY2FsbGVkIGluc3RlYWQgaWYgaXQgaXMgaW1wbGVtZW50ZWQuCisgICAgRVhQRUNUX1RSVUUo
ZmFsc2UpOworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxv
dyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2Ny
aXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlG
cmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9p
ZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBzd2l0Y2ggKGFsZXJ0Q291bnQrKykgeworICAg
IGNhc2UgMDoKKyAgICAgICAgLy8gRklYTUU6IFRoZSBmaXJzdCBjb250ZW50IGJsb2NrZXIgc2hv
dWxkIGJlIGVuYWJsZWQgaGVyZS4KKyAgICAgICAgLy8gQ29udGVudEV4dGVuc2lvbnNCYWNrZW5k
OjphZGRDb250ZW50RXh0ZW5zaW9uIGlzbid0IGJlaW5nIGNhbGxlZCBpbiB0aGUgV2ViUHJvY2Vz
cworICAgICAgICAvLyB1bnRpbCBhZnRlciB0aGUgZmlyc3QgbWFpbiByZXNvdXJjZSBzdGFydHMg
bG9hZGluZywgc28gd2UgbmVlZCB0byBzZW5kIGEgbWVzc2FnZSB0byB0aGUKKyAgICAgICAgLy8g
V2ViUHJvY2VzcyBiZWZvcmUgbG9hZGluZyBpZiB3ZSBoYXZlIGluc3RhbGxlZCBjb250ZW50IGJs
b2NrZXJzLgorICAgICAgICAvLyBTZWUgcmRhcjovL3Byb2JsZW0vMjc3ODg3NTUKKyAgICAgICAg
RVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRpc2FibGVkIiwgbWVzc2FnZS5VVEY4U3Ry
aW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICAvLyBEZWZhdWx0IGJl
aGF2aW9yLgorICAgICAgICBFWFBFQ1RfU1RSRVEoImNvbnRlbnQgYmxvY2tlcnMgZW5hYmxlZCIs
IG1lc3NhZ2UuVVRGOFN0cmluZyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjoKKyAgICAg
ICAgLy8gQWZ0ZXIgaGF2aW5nIHNldCB3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5h
YmxlZCB0byBmYWxzZS4KKyAgICAgICAgRVhQRUNUX1NUUkVRKCJjb250ZW50IGJsb2NrZXJzIGRp
c2FibGVkIiwgbWVzc2FnZS5VVEY4U3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAz
OgorICAgICAgICAvLyBBZnRlciBoYXZpbmcgcmVsb2FkZWQgd2l0aG91dCBjb250ZW50IGJsb2Nr
ZXJzLgorICAgICAgICBFWFBFQ1RfU1RSRVEoImNvbnRlbnQgYmxvY2tlcnMgZGlzYWJsZWQiLCBt
ZXNzYWdlLlVURjhTdHJpbmcpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAg
ICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgfQorICAgIHJlY2VpdmVkQWxlcnQgPSB0cnVlOwor
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Cit9CisKKy0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmll
dyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9u
QWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2
aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKWRlY2lzaW9uSGFuZGxl
cgoreworICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0gW1tbX1dLV2Vi
c2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgc3dpdGNoIChhbGVy
dENvdW50KSB7CisgICAgY2FzZSAwOgorICAgICAgICAvLyBWZXJpZnkgYW4gZXhpc3RpbmcgYnVn
IHRoZSBmaXJzdCB0aW1lIGEgcGFnZSBpcyBsb2FkZWQgaW4gYSBuZXcgV2ViUHJvY2Vzcy4KKyAg
ICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgICAvLyBWZXJpZnkgdGhlIGNvbnRlbnQg
YmxvY2tlcnMgYmVoYXZlIGNvcnJlY3RseSB3aXRoIHRoZSBkZWZhdWx0IGJlaGF2aW9yLgorICAg
ICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICAgIC8vIFZlcmlmeSBkaXNhYmxpbmcgY29u
dGVudCBibG9ja2VycyB3b3JrcyBjb3JyZWN0bHkuCisgICAgICAgIHdlYnNpdGVQb2xpY2llcy5j
b250ZW50QmxvY2tlcnNFbmFibGVkID0gZmFsc2U7CisgICAgICAgIGJyZWFrOworICAgIGNhc2Ug
MzoKKyAgICAgICAgLy8gVmVyaWZ5IGVuYWJsaW5nIGNvbnRlbnQgYmxvY2tlcnMgaGFzIG5vIGVm
ZmVjdCB3aGVuIHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxvY2tlcnMuCisgICAgICAgIHdl
YnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkID0gdHJ1ZTsKKyAgICAgICAgYnJl
YWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgIH0KKyAg
ICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3csIHdlYnNpdGVQ
b2xpY2llcyk7Cit9CisKK0BlbmQKKworVEVTVChXZWJLaXQyLCBXZWJzaXRlUG9saWNpZXNDb250
ZW50QmxvY2tlcnNFbmFibGVkKQoreworICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9y
ZSBkZWZhdWx0U3RvcmVdIF9yZW1vdmVBbGxDb250ZW50RXh0ZW5zaW9uc107CisKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0pOworCisgICAgZG9uZUNvbXBpbGluZyA9IGZhbHNlOworICAgIE5TU3RyaW5nKiBjb250
ZW50QmxvY2tlciA9IEAiW3tcImFjdGlvblwiOntcInR5cGVcIjpcImNzcy1kaXNwbGF5LW5vbmVc
IixcInNlbGVjdG9yXCI6XCIuaGlkZGVuXCJ9LFwidHJpZ2dlclwiOntcInVybC1maWx0ZXJcIjpc
Ii4qXCJ9fV0iOworICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3Rv
cmVdIGNvbXBpbGVDb250ZW50RXh0ZW5zaW9uRm9ySWRlbnRpZmllcjpAIldlYnNpdGVQb2xpY2ll
c1Rlc3QiIGVuY29kZWRDb250ZW50RXh0ZW5zaW9uOmNvbnRlbnRCbG9ja2VyIGNvbXBsZXRpb25I
YW5kbGVyOl4oX1dLVXNlckNvbnRlbnRGaWx0ZXIgKmZpbHRlciwgTlNFcnJvciAqZXJyb3IpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgPT0gbmlsKTsKKyAgICAgICAgW1tjb25maWd1cmF0
aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gX2FkZFVzZXJDb250ZW50RmlsdGVyOmZpbHRlcl07
CisgICAgICAgIGRvbmVDb21waWxpbmcgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZUNvbXBpbGluZyk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAw
LCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBk
ZWxlZ2F0ZSA9IGFkb3B0TlMoW1tXZWJzaXRlUG9saWNpZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07Cisg
ICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisKKyAgICBOU1VSTFJl
cXVlc3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltbTlNCdW5kbGUg
bWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJjb250ZW50QmxvY2tlckNoZWNrIiB3aXRoRXh0
ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXV07
CisgICAgYWxlcnRDb3VudCA9IDA7CisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNlOworICAgIFt3
ZWJWaWV3IGxvYWRSZXF1ZXN0OnJlcXVlc3RdOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmcmVjZWl2ZWRBbGVydCk7CisKKyAgICByZWNlaXZlZEFsZXJ0ID0gZmFsc2U7CisgICAgW3dl
YlZpZXcgcmVsb2FkXTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQWxl
cnQpOworCisgICAgcmVjZWl2ZWRBbGVydCA9IGZhbHNlOworICAgIFt3ZWJWaWV3IHJlbG9hZF07
CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsKKworICAgIHJl
Y2VpdmVkQWxlcnQgPSBmYWxzZTsKKyAgICBbd2ViVmlldyBfcmVsb2FkV2l0aG91dENvbnRlbnRC
bG9ja2Vyc107CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEFsZXJ0KTsK
KworICAgIFtbX1dLVXNlckNvbnRlbnRFeHRlbnNpb25TdG9yZSBkZWZhdWx0U3RvcmVdIF9yZW1v
dmVBbGxDb250ZW50RXh0ZW5zaW9uc107Cit9CisKKyNlbmRpZgo=
</data>
<flag name="review"
          id="318924"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>