<?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>186902</bug_id>
          
          <creation_ts>2018-06-21 17:10:13 -0700</creation_ts>
          <short_desc>WKURLSchemeHandler doesn&apos;t handle sync XHR</short_desc>
          <delta_ts>2018-07-05 09:54:59 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1435314</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-21 17:10:13 -0700</bug_when>
    <thetext>WKURLSchemeHandler doesn&apos;t handle sync XHR

&lt;rdar://problem/40955884&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435320</commentid>
    <comment_count>1</comment_count>
      <attachid>343295</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-21 17:15:07 -0700</bug_when>
    <thetext>Created attachment 343295
Patch

Have ideas for test enhancements I plan to get to tomorrow, but the code itself is reviewable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435322</commentid>
    <comment_count>2</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-21 17:18:02 -0700</bug_when>
    <thetext>Attachment 343295 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:99:  The parameter name &quot;identifier&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:471:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:476:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:480:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:486:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435364</commentid>
    <comment_count>3</comment_count>
      <attachid>343308</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-21 21:38:32 -0700</bug_when>
    <thetext>Created attachment 343308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435365</commentid>
    <comment_count>4</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-21 21:39:41 -0700</bug_when>
    <thetext>Attachment 343308 did not pass style-queue:


ERROR: Source/WebKit/WebProcess/Network/WebLoaderStrategy.h:101:  The parameter name &quot;identifier&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:467:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:472:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:476:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:482:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 5 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435591</commentid>
    <comment_count>5</comment_count>
      <attachid>343363</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-22 14:03:14 -0700</bug_when>
    <thetext>Created attachment 343363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435593</commentid>
    <comment_count>6</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-22 14:05:12 -0700</bug_when>
    <thetext>Attachment 343363 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:482:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:488:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:492:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:498:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 16 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435611</commentid>
    <comment_count>7</comment_count>
      <attachid>343363</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-06-22 14:43:06 -0700</bug_when>
    <thetext>Comment on attachment 343363
Patch

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

&gt; Source/WebKit/Shared/WebErrors.cpp:62
&gt; +    return ResourceError(errorDomainWebKitInternal, 0, request.url(), WEB_UI_STRING(&quot;Error handling synchronous load with custom protocol&quot;, &quot;Custom protocol synchronous load failure description&quot;));

Don&apos;t you need to run Tools/Scripts/update-webkit-localizable-strings too?

&gt; Source/WebKit/UIProcess/WebURLSchemeHandler.h:46
&gt; +typedef CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt; SyncLoadCompletionHandler;

I think we like &quot;using SyncLoadCompletionHandler = CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt;;&quot; better in new code.

&gt; Source/WebKit/UIProcess/WebURLSchemeTask.h:51
&gt; +typedef CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt; SyncLoadCompletionHandler;

using ?

&gt; Source/WebKit/UIProcess/WebURLSchemeTask.h:82
&gt; +    bool isSync() const { return !!m_syncCompletionHandler; }

It may not matter but note that isSync() will start returning false after the m_syncCompletionHandler has been called. So it will only be sync until it is completed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435641</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-22 15:42:08 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #7)
&gt; Comment on attachment 343363 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=343363&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/Shared/WebErrors.cpp:62
&gt; &gt; +    return ResourceError(errorDomainWebKitInternal, 0, request.url(), WEB_UI_STRING(&quot;Error handling synchronous load with custom protocol&quot;, &quot;Custom protocol synchronous load failure description&quot;));
&gt; 
&gt; Don&apos;t you need to run Tools/Scripts/update-webkit-localizable-strings too?

Yah.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebURLSchemeHandler.h:46
&gt; &gt; +typedef CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt; SyncLoadCompletionHandler;
&gt; 
&gt; I think we like &quot;using SyncLoadCompletionHandler =
&gt; CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const
&gt; WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt;;&quot; better in new code.

Sure.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebURLSchemeTask.h:51
&gt; &gt; +typedef CompletionHandler&lt;void(const WebCore::ResourceResponse&amp;, const WebCore::ResourceError&amp;, const IPC::DataReference&amp;)&gt; SyncLoadCompletionHandler;
&gt; 
&gt; using ?

Sure.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/WebURLSchemeTask.h:82
&gt; &gt; +    bool isSync() const { return !!m_syncCompletionHandler; }
&gt; 
&gt; It may not matter but note that isSync() will start returning false after
&gt; the m_syncCompletionHandler has been called. So it will only be sync until
&gt; it is completed.

Known and by design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435642</commentid>
    <comment_count>9</comment_count>
      <attachid>343378</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2018-06-22 15:42:21 -0700</bug_when>
    <thetext>Created attachment 343378
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435646</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-06-22 15:45:27 -0700</bug_when>
    <thetext>Attachment 343378 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:482:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:488:  This { should be at the end of the previous line  [whitespace/braces] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:492:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WKURLSchemeHandler-1.mm:498:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 19 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1435706</commentid>
    <comment_count>11</comment_count>
      <attachid>343378</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-06-22 17:34:55 -0700</bug_when>
    <thetext>Comment on attachment 343378
Patch

Clearing flags on attachment: 343378

Committed r233113: &lt;https://trac.webkit.org/changeset/233113&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343295</attachid>
            <date>2018-06-21 17:15:07 -0700</date>
            <delta_ts>2018-06-21 21:38:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26345</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMTNmM2FkN2FjODcuLmI2ZTM3ZTBlZThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDE4LTA2LTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXS1VSTFNjaGVtZUhhbmRsZXIgZG9lc24ndCBoYW5kbGUgc3luYyBYSFIuCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MDk1NTg4ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBXZWJQcm9jZXNzZXMgdG8gYmxvY2sg
b24gc3luYyBsb2FkcyB0byBhIGN1c3RvbSBzY2hlbWUsCisgICAgICAgIGFuZCB0ZWFjaGVzIFdl
YlVSTFNjaGVtZVRhc2tzIGhvdyB0byBidWZmZXIgdXAgZGF0YSBhbmQgdGhlIHJlc3BvbnNlIGlm
IAorICAgICAgICBvcGVyYXRpbmcgc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJFcnJvcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNM
b2FkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dFVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OnN0b3ApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmlzU3luYyBjb25z
dCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Ojpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorCiAyMDE4LTA2LTE5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJL
aXQgb24gd2F0Y2hPU10gVmVuZCB1c2VybmFtZSB0ZXh0IGNvbnRlbnQgdHlwZSB3aGVuIHVzaW5n
IHNjcmliYmxlIGluIGxvZ2luIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAKaW5k
ZXggOGYxNWNkMzBjNWMuLmI2ZGM1MGNlYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5j
cHAKQEAgLTU3LDYgKzU3LDExIEBAIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0UG9saWN5RXJyb3JEb21haW4oKSwgQVBJOjpF
cnJvcjo6UG9saWN5OjpGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0
LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktpdEVy
cm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpKTsKIH0K
IAorUmVzb3VyY2VFcnJvciBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJFcnJv
ciBoYW5kbGluZyBzeW5jaHJvbm91cyBsb2FkIHdpdGggY3VzdG9tIHByb3RvY29sIiwgIkN1c3Rv
bSBwcm90b2NvbCBzeW5jaHJvbm91cyBsb2FkIGZhaWx1cmUgZGVzY3JpcHRpb24iKSk7Cit9CisK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNv
bnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkVycm9ycy5oCmluZGV4IDU5M2VhODg1MzdkLi4yN2QxNGUzMWIzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTQxLDYgKzQxLDcgQEAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNo
b3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgZmFpbGVkQ3VzdG9t
UHJvdG9jb2xTeW5jTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhZjFk
NmJmZjkuLmM0NDRjMDQ1NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTc1ODYsNyArNzU4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydFVSTFNj
aGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQocGFyYW1ldGVy
cy5oYW5kbGVySWRlbnRpZmllcik7CiAgICAgTUVTU0FHRV9DSEVDSyhpdGVyYXRvciAhPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAgIGl0ZXJhdG9yLT52YWx1
ZS0+c3RhcnRUYXNrKCp0aGlzLCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMucmVxdWVzdCkpOworICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRUYXNrKCp0aGlz
LCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCks
IG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRhc2sodWlu
dDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQpAQCAtNzU5
Nyw2ICs3NTk3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lVGFzayh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkCiAgICAgaXRlcmF0b3ItPnZh
bHVlLT5zdG9wVGFzaygqdGhpcywgdGFza0lkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VS
TFNjaGVtZVRhc2s6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQoreworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQocGFyYW1ldGVycy5oYW5kbGVy
SWRlbnRpZmllcik7CisgICAgTUVTU0FHRV9DSEVDSyhpdGVyYXRvciAhPSBtX3VybFNjaGVtZUhh
bmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRU
YXNrKCp0aGlzLCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
cmVxdWVzdCksIFdURk1vdmUocmVwbHkpKTsKK30KKwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQogdm9pZCBXZWJQYWdlUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGIxMDUwYzk0MDk3Li4yZWUyYWRiMzE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NTIsNiArMTc1Miw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cyYmKTsKICAgICB2b2lkIHN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkU3luY2hyb25vdXNV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2s6OkRlbGF5ZWRSZXBseSYmKTsKIAog
ICAgIHZvaWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggN2YzYzY2ODNjNjEuLjRlMWRlNWNhMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MTMsNiArNTEzLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIFN0YXJ0VVJMU2NoZW1lVGFzayhzdHJ1Y3QgV2Vi
S2l0OjpVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIFN0b3BVUkxTY2hl
bWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
cikKKyAgICBMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrKHN0cnVjdCBXZWJLaXQ6OlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkgRGVsYXllZAogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0LCBTdHJpbmcg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjb250ZXh0SUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDFm
NjgyYzFlYmU4Li5kYWI1OTNmYjIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgV2ViVVJMU2NoZW1lSGFu
ZGxlcjo6fldlYlVSTFNjaGVtZUhhbmRsZXIoKQogICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHko
KSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQcm94
eSYgcGFnZSwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBh
Z2UsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX3Rhc2tzLmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6
Y3JlYXRlKCp0aGlzLCBwYWdlLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVt
ZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgdGFza0lkZW50aWZpZXIsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05l
d0VudHJ5KTsKIAogICAgIGF1dG8gcGFnZUVudHJ5ID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIu
YWRkKHBhZ2UucGFnZUlEKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDQxZjgwM2UwMDEyLi5hNGJm
YmIxZmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJl
bmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9
CkBAIC0zOSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKK3R5cGVkZWYgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpPiBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOworCiBjbGFzcyBXZWJV
UkxTY2hlbWVIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lSGFuZGxlcj4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZUhhbmRsZXIpOwogcHVibGlj
OgpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhXZWJQ
YWdlUHJveHkmLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHRhc2tJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIHN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVByb3h5
Jik7CiAgICAgdm9pZCB0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKTsKQEAgLTY1LDYg
KzcxLDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hl
bWVUYXNrPj4gbV90YXNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90
Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgCisgICAgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKIH07IC8vIGNsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCA1NTQ5NDg4YmQ4NC4uN2IyNDdjY2ExMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lVGFzay5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIK
QEAgLTM1LDE3ICszNiwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlZjxXZWJVUkxTY2hlbWVUYXNrPiBXZWJVUkxTY2hlbWVUYXNrOjpjcmVh
dGUoV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCitSZWY8
V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYgc3luY0NvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlVSTFNjaGVtZVRhc2soaGFuZGxlciwgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlcXVlc3QpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lVGFz
ayhoYW5kbGVyLCBwYWdlLCByZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCi1XZWJVUkxTY2hlbWVUYXNrOjpX
ZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94
eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVI
YW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fdXJsU2NoZW1lSGFuZGxlciho
YW5kbGVyKQogICAgICwgbV9wYWdlKCZwYWdlKQogICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNl
SWRlbnRpZmllcikKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZS5wYWdlSUQoKSkKICAgICAs
IG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCkBAIC02Myw2ICs2NSw5
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zCiAgICAgaWYgKG1fcmVzcG9uc2VTZW50KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6UmVkaXJlY3RBZnRlclJlc3BvbnNlOwogICAgIAor
ICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKKwog
ICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxl
ci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSk7CiAKQEAg
LTgzLDYgKzg4LDEwIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgbV9yZXNwb25zZVNl
bnQgPSB0cnVlOwogCiAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworCisg
ICAgaWYgKGlzU3luYygpKQorICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOworCiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIs
IHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05OSw2
ICsxMDgsMTMgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OwogCiAgICAgbV9kYXRhU2VudCA9IHRydWU7CisKKyAg
ICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgaWYgKCFtX3N5bmNEYXRhKQorICAgICAgICAgICAg
bV9zeW5jRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fc3luY0RhdGEt
PmFwcGVuZChidWZmZXIpOworICAgIH0KKwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRl
bnRpZmllcigpLCBtX2lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShi
dWZmZXIucHRyKCkpKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC0x
MTUsNiArMTMxLDEyIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwor
ICAgIAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSB7IChjb25zdCB1aW50
OF90KiltX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9KTsKKyAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5p
ZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAgICBtX3VybFNjaGVtZUhhbmRs
ZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCkBAIC0xMjYsMTIgKzE0OCwxOCBAQCB2b2lkIFdl
YlVSTFNjaGVtZVRhc2s6OnBhZ2VEZXN0cm95ZWQoKQogICAgIEFTU0VSVChtX3BhZ2UpOwogICAg
IG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAo
aXNTeW5jKCkpCisgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3Vz
dG9tUHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCiB2b2lkIFdlYlVSTFNj
aGVtZVRhc2s6OnN0b3AoKQogewogICAgIEFTU0VSVCghbV9zdG9wcGVkKTsKICAgICBtX3N0b3Bw
ZWQgPSB0cnVlOworCisgICAgaWYgKGlzU3luYygpKQorICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggMzc1NDc0YzFmYWQuLmNlNTQ3YzYxMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNiwxMCArMjYsMTcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9JbnN0YW5jZUNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRh
UmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQxLDEwICs0OCwxMiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiAKK3R5cGVkZWYgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpPiBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOworCiBjbGFzcyBXZWJVUkxT
Y2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJ
bnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2No
ZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgc3RhdGlj
IFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBh
Z2VQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KQEAgLTY4LDcgKzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCiBwcml2YXRlOgotICAgIFdlYlVSTFNj
aGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBXZWJVUkxTY2hlbWVU
YXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKworICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcjsgfQogCiAgICAgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+IG1fdXJsU2NoZW1l
SGFuZGxlcjsKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKQEAgLTc5LDYgKzkwLDEwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Rh
dGFTZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKKyAgICAK
KyAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDk1OTk4YTVhZjIzLi4xNWNiOTliN2E3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcApAQCAtNDczLDYgKzQ3MywyNiBAQCBzdGF0aWMgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RkOjpvcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6U3luY0xvYWRSZXN1bHQ+IFdl
YkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGF1dG8qIHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5j
bGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdl
YkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdl
YlBhZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvKiBoYW5kbGVy
ID0gd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBpZiAoIWhhbmRsZXIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIo
V2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgc3luYyBsb2FkIHRv
IFVSTCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRs
ZXIuIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIFN5bmNM
b2FkUmVzdWx0IHJlc3VsdDsKKyAgICBoYW5kbGVyLT5sb2FkU3luY2hyb25vdXNseShpZGVudGlm
aWVyLCByZXF1ZXN0LCByZXN1bHQucmVzcG9uc2UsIHJlc3VsdC5lcnJvciwgcmVzdWx0LmRhdGEp
OworCisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKwogdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIs
IHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksICBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGF1dG8qIGRvY3VtZW50
ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNDgxLDYgKzUwMSwxMyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9h
ZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KGF1dG8gc3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2No
ZW1lSGFuZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkp
IHsKKyAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CisgICAg
ICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOworICAgICAg
ICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKICAgICBXZWJG
cmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJh
bWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDA5ODNmNDIxMGZm
Li4zMzFkMTgxZDgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC05MCw2ICs5MCwxMyBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW50ZXJuYWxseUZhaWxlZExvYWRUaW1lckZpcmVkKCk7CiAgICAgdm9pZCBzdGFydExv
Y2FsTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwogICAgIGJvb2wgdHJ5TG9hZGluZ1Vz
aW5nVVJMU2NoZW1lSGFuZGxlcihXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOworICAgIAorICAg
IHN0cnVjdCBTeW5jTG9hZFJlc3VsdCB7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9u
c2UgcmVzcG9uc2U7CisgICAgICAgIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3I7CisgICAg
ICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIH07CisgICAgc3RkOjpvcHRpb25hbDxTeW5jTG9h
ZFJlc3VsdD4gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2Vi
Q29yZTo6RnJhbWVMb2FkZXImLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZpZXIsIGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogCiAgICAgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZUZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291
cmNlTG9hZElkZW50aWZpZXIpIGZpbmFsOwogICAgIFZlY3RvcjxXZWJDb3JlOjpOZXR3b3JrVHJh
bnNhY3Rpb25JbmZvcm1hdGlvbj4gaW50ZXJtZWRpYXRlTG9hZEluZm9ybWF0aW9uRnJvbVJlc291
cmNlTG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgZmluYWw7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAppbmRleCBjZGI0M2ZiOWVhZi4uYWQyMDI2YTVjNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcApAQCAtMjYsMTAgKzI2LDE4IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgiCiAKKyNp
bmNsdWRlICJEYXRhUmVmZXJlbmNlLmgiCisjaW5jbHVkZSAiVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMuaCIKKyNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKICNpbmNsdWRlICJXZWJF
cnJvcnMuaCIKICNpbmNsdWRlICJXZWJMb2FkZXJTdHJhdGVneS5oIgorI2luY2x1ZGUgIldlYlBh
Z2UuaCIKKyNpbmNsdWRlICJXZWJQYWdlUHJveHlNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldlYlBy
b2Nlc3MuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxX
ZWJDb3JlL1Jlc291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVl
c3QuaD4KKyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTU1LDYgKzYzLDE4IEBAIHZvaWQgV2ViVVJMU2NoZW1lSGFu
ZGxlclByb3h5OjpzdGFydE5ld1Rhc2soUmVzb3VyY2VMb2FkZXImIGxvYWRlcikKICAgICByZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLT5zdGFydExvYWRpbmcoKTsKIH0KIAordm9pZCBXZWJVUkxTY2hl
bWVIYW5kbGVyUHJveHk6OmxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlTG9hZElkZW50aWZpZXIg
bG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIFJlc291cmNlRXJyb3ImIGVycm9yLCBWZWN0b3I8Y2hhcj4mIGRh
dGEpCit7CisgICAgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGFSZWZlcmVuY2U7CisgICAgaWYgKCFt
X3dlYlBhZ2Uuc2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFN5bmNocm9ub3Vz
VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyB7IG1faWRlbnRpZmllciwgbG9h
ZElkZW50aWZpZXIsIHJlcXVlc3QgfSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2s6OlJlcGx5KHJlc3BvbnNlLCBlcnJvciwgZGF0YVJlZmVyZW5j
ZSkpKSB7CisgICAgICAgIGVycm9yID0gZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChyZXF1
ZXN0KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICBkYXRhLnJlc2l6ZShkYXRh
UmVmZXJlbmNlLnNpemUoKSk7CisgICAgbWVtY3B5KGRhdGEuZGF0YSgpLCBkYXRhUmVmZXJlbmNl
LmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5zaXplKCkpOworfQorCiB2b2lkIFdlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eTo6c3RvcEFsbFRhc2tzKCkKIHsKICAgICB3aGlsZSAoIW1fdGFza3MuaXNFbXB0
eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAppbmRleCA3NDI0MTVjNzcxYS4uZDhlMzc3YTc1YzQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCkBAIC0zOSw2ICszOSw3IEBAIGNsYXNzIFJlc291cmNl
UmVxdWVzdDsKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlOwordHlwZWRlZiB1
aW50NjRfdCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyOwogCiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5k
bGVyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk+IHsK
IHB1YmxpYzoKQEAgLTUxLDYgKzUyLDggQEAgcHVibGljOgogICAgIHZvaWQgc3RhcnROZXdUYXNr
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyJik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3MoKTsKIAor
ICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIFdl
YkNvcmU6OlJlc291cmNlRXJyb3ImLCBWZWN0b3I8Y2hhcj4mKTsKKwogICAgIHVpbnQ2NF90IGlk
ZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICBXZWJQYWdlJiBw
YWdlKCkgeyByZXR1cm4gbV93ZWJQYWdlOyB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxv
ZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBjMzY5YWZlYWFiNi4uZTkwNjA2M2MxZWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAxOC0wNi0yMSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAg
ICAgICAgV0tVUkxTY2hlbWVIYW5kbGVyIGRvZXNuJ3QgaGFuZGxlIHN5bmMgWEhSLgorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vNDA5NTU4ODQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTg2OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tOgorICAgICAgICAoLVtTeW5jU2NoZW1lIHdlYlZpZXc6c3RhcnRVUkxT
Y2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTeW5jU2NoZW1lIHdlYlZpZXc6c3RvcFVSTFNjaGVt
ZVRhc2s6XSk6CisgICAgICAgICgtW1N5bmNNZXNzYWdlSGFuZGxlciB1c2VyQ29udGVudENvbnRy
b2xsZXI6ZGlkUmVjZWl2ZVNjcmlwdE1lc3NhZ2U6XSk6CisgICAgICAgIChjYXRjaCk6CisKIDIw
MTgtMDYtMTkgIERhbmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFF1
ZXVlU3RhdHVzU2VydmVyOiAiJ05vbmVUeXBlJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAnbWVz
c2FnZSciIGluIFJlbGVhc2VQYXRjaC5nZXQoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbSBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0KaW5k
ZXggNDEyZTc3ZjUxMGEuLjM5ZDBjNWQwYjgwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFuZGxlci0xLm1tCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW0K
QEAgLTMxLDggKzMxLDEzIEBACiAjaW1wb3J0IDxXZWJLaXQvV0tVUkxTY2hlbWVUYXNrUHJpdmF0
ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvV2ViS2l0Lmg+CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9y
dCA8d3RmL1JldGFpblB0ci5oPgogI2ltcG9ydCA8d3RmL1ZlY3Rvci5oPgorI2ltcG9ydCA8d3Rm
L3RleHQvU3RyaW5nSGFzaC5oPgorI2ltcG9ydCA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKKwog
CiAjaWYgV0tfQVBJX0VOQUJMRUQKIApAQCAtNDEwLDMgKzQxNSw5OCBAQCBURVNUKFVSTFNjaGVt
ZUhhbmRsZXIsIEV4Y2VwdGlvbnMpCiB9CiAKICNlbmRpZgorCitzdHJ1Y3QgUmVzb3VyY2VJbmZv
IHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlOworICAgIGNvbnN0IGNoYXIqIGRh
dGE7Cit9OworCitAaW50ZXJmYWNlIFN5bmNTY2hlbWUgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVI
YW5kbGVyPiB7CitAcHVibGljCisgICAgSGFzaE1hcDxTdHJpbmcsIFJlc291cmNlSW5mbz4gcmVz
b3VyY2VzOworfQorQGVuZAorCitAaW1wbGVtZW50YXRpb24gU3luY1NjaGVtZQorCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tV
UkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgYXV0byBlbnRyeSA9IHJlc291cmNlcy5maW5kKFt0
YXNrLnJlcXVlc3QuVVJMIGFic29sdXRlU3RyaW5nXSk7CisgICAgaWYgKGVudHJ5ID09IHJlc291
cmNlcy5lbmQoKSkgeworICAgICAgICBOU0xvZyhAIkRpZCBub3QgZmluZCByZXNvdXJjZSBlbnRy
eSBmb3IgVVJMICVAIiwgdGFzay5yZXF1ZXN0LlVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpl
bnRyeS0+dmFsdWUubWltZVR5cGUuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEgdGV4dEVu
Y29kaW5nTmFtZTpuaWxdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2Uu
Z2V0KCldOworCisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKillbnRyeS0+dmFsdWUuZGF0YSBsZW5ndGg6c3RybGVuKGVudHJ5LT52YWx1
ZS5kYXRhKSBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICBbdGFzayBkaWRGaW5pc2hdOworfQorCist
ICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlk
IDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sKK30KKworQGVuZAorCitzdGF0aWMgUmV0YWluUHRy
PE5TTXV0YWJsZUFycmF5PiByZWNlaXZlZE1lc3NhZ2VzID0gYWRvcHROUyhbQFtdIG11dGFibGVD
b3B5XSk7CitzdGF0aWMgYm9vbCByZWNlaXZlZE1lc3NhZ2U7CisKK0BpbnRlcmZhY2UgU3luY01l
c3NhZ2VIYW5kbGVyIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CitAZW5kCisK
K0BpbXBsZW1lbnRhdGlvbiBTeW5jTWVzc2FnZUhhbmRsZXIKKy0gKHZvaWQpdXNlckNvbnRlbnRD
b250cm9sbGVyOihXS1VzZXJDb250ZW50Q29udHJvbGxlciAqKXVzZXJDb250ZW50Q29udHJvbGxl
ciBkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTooV0tTY3JpcHRNZXNzYWdlICopbWVzc2FnZQorewor
ICAgIGlmIChbbWVzc2FnZSBib2R5XSkKKyAgICAgICAgW3JlY2VpdmVkTWVzc2FnZXMgYWRkT2Jq
ZWN0OlttZXNzYWdlIGJvZHldXTsKKyAgICBlbHNlCisgICAgICAgIFtyZWNlaXZlZE1lc3NhZ2Vz
IGFkZE9iamVjdDpAIiJdOworCisgICAgcmVjZWl2ZWRNZXNzYWdlID0gdHJ1ZTsKK30KK0BlbmQK
Kworc3RhdGljIGNvbnN0IGNoYXIqIHN5bmNNYWluQnl0ZXMgPSBSIlNZTkNSRVNPVVJDRSgKKzxz
Y3JpcHQ+Cit2YXIgcmVxID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CityZXEub3BlbigiR0VUIiwg
InRlc3QuZGF0IiwgZmFsc2UpOwordHJ5Cit7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgd2lu
ZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3luYy5wb3N0TWVzc2FnZShyZXEucmVzcG9uc2VU
ZXh0KTsKK30KK2NhdGNoIChlKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJz
LnN5bmMucG9zdE1lc3NhZ2UoIkZhaWxlZCBzeW5jIFhIUiBsb2FkIik7Cit9CisKKzwvc2NyaXB0
PgorKVNZTkNSRVNPVVJDRSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzeW5jWEhSQnl0ZXMgPSAi
TXkgWEhSIHRleHQhIjsKKworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBTeW5jWEhSKQoreworICAg
IGF1dG8gd2ViVmlld0NvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJh
dGlvbiBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tTeW5jU2No
ZW1lIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVt
ZUhhbmRsZXI6aGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJzeW5jeGhyIl07CisgICAgCisg
ICAgaGFuZGxlci5nZXQoKS0+cmVzb3VyY2VzLnNldCgic3luY3hocjovL2hvc3QvbWFpbi5odG1s
IiwgUmVzb3VyY2VJbmZvIHsgQCJ0ZXh0L2h0bWwiLCBzeW5jTWFpbkJ5dGVzIH0pOworICAgIGhh
bmRsZXIuZ2V0KCktPnJlc291cmNlcy5zZXQoInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0IiwgUmVz
b3VyY2VJbmZvIHsgQCJ0ZXh0L3BsYWluIiwgc3luY1hIUkJ5dGVzIH0pOworCisgICAgYXV0byBt
ZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTeW5jTWVzc2FnZUhhbmRsZXIgYWxsb2NdIGluaXRd
KTsKKyAgICBbW3dlYlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN5bmMiXTsK
KyAgICAKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246d2ViVmll
d0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVzdCA9IFtO
U1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJzeW5jeGhy
Oi8vaG9zdC9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7CisgICAg
cmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisgICAgCisgICAgRVhQRUNUX0VRKCh1bnNpZ25lZCly
ZWNlaXZlZE1lc3NhZ2VzLmdldCgpLmNvdW50LCAodW5zaWduZWQpMSk7CisgICAgRVhQRUNUX1RS
VUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRvU3RyaW5nOkAiTXkgWEhSIHRl
eHQhIl0pOworfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343308</attachid>
            <date>2018-06-21 21:38:32 -0700</date>
            <delta_ts>2018-06-22 14:03:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>26602</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMDJhOGVlZjVmM2MuLmY1Y2RjNzFlYWVhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDE4LTA2LTIxICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXS1VSTFNjaGVtZUhhbmRsZXIgZG9lc24ndCBoYW5kbGUgc3luYyBYSFIuCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MDk1NTg4ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBXZWJQcm9jZXNzZXMgdG8gYmxvY2sg
b24gc3luYyBsb2FkcyB0byBhIGN1c3RvbSBzY2hlbWUsCisgICAgICAgIGFuZCB0ZWFjaGVzIFdl
YlVSTFNjaGVtZVRhc2tzIGhvdyB0byBidWZmZXIgdXAgZGF0YSBhbmQgdGhlIHJlc3BvbnNlIGlm
IAorICAgICAgICBvcGVyYXRpbmcgc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJFcnJvcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNM
b2FkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dFVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OnN0b3ApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmlzU3luYyBjb25z
dCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Ojpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorCiAyMDE4LTA2LTIx
ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIzMjk5NS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YkVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuY3BwCmluZGV4IDhm
MTVjZDMwYzVjLi5iNmRjNTBjZWI1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuY3BwCkBA
IC01Nyw2ICs1NywxMSBAQCBSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdl
RXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogICAgIHJldHVybiBSZXNvdXJj
ZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBvbGljeUVycm9yRG9tYWluKCksIEFQSTo6RXJyb3I6
OlBvbGljeTo6RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSwgcmVxdWVzdC51cmwo
KSwgV0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRlcnJ1cHRlZCIsICJXZWJLaXRFcnJvckZy
YW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3JpcHRpb24iKSk7CiB9CiAKK1Jl
c291cmNlRXJyb3IgZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZChjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNlRXJyb3IoZXJyb3JEb21haW5X
ZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiRXJyb3IgaGFu
ZGxpbmcgc3luY2hyb25vdXMgbG9hZCB3aXRoIGN1c3RvbSBwcm90b2NvbCIsICJDdXN0b20gcHJv
dG9jb2wgc3luY2hyb25vdXMgbG9hZCBmYWlsdXJlIGRlc2NyaXB0aW9uIikpOworfQorCiAjaWYg
RU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50
RmlsdGVyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQogewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJFcnJvcnMuaAppbmRleCA1OTNlYTg4NTM3ZC4uMjdkMTRlMzFiMzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYkVycm9ycy5oCkBAIC00MSw2ICs0MSw3IEBAIFdlYkNvcmU6OlJlc291cmNlRXJyb3Ig
YmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6
UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBjYW5ub3RTaG93VVJM
RXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VSZXF1ZXN0Jik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGZhaWxlZEN1c3RvbVByb3Rv
Y29sU3luY0xvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjaWYgRU5BQkxF
KENPTlRFTlRfRklMVEVSSU5HKQogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250
ZW50RmlsdGVyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IGI5YWYxZDZiZmY5
Li5jNDQ0YzA0NTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CkBAIC03NTg2LDcgKzc1ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVU
YXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBhdXRvIGl0ZXJh
dG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFu
ZGxlcklkZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0soaXRlcmF0b3IgIT0gbV91cmxTY2hl
bWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CiAKLSAgICBpdGVyYXRvci0+dmFsdWUtPnN0
YXJ0VGFzaygqdGhpcywgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0
ZXJzLnJlcXVlc3QpKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcGFy
YW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpLCBudWxs
cHRyKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90
IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcikKQEAgLTc1OTcsNiAr
NzU5NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRhc2sodWludDY0X3Qg
aGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZAogICAgIGl0ZXJhdG9yLT52YWx1ZS0+
c3RvcFRhc2soKnRoaXMsIHRhc2tJZGVudGlmaWVyKTsKIH0KIAordm9pZCBXZWJQYWdlUHJveHk6
OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiBw
YXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hl
bWVUYXNrOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3sKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV91
cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFtZXRlcnMuaGFuZGxlcklkZW50
aWZpZXIpOworICAgIE1FU1NBR0VfQ0hFQ0soaXRlcmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVy
c0J5SWRlbnRpZmllci5lbmQoKSk7CisKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygq
dGhpcywgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVl
c3QpLCBXVEZNb3ZlKHJlcGx5KSk7Cit9CisKICNpZiBIQVZFKENGTkVUV09SS19TVE9SQUdFX1BB
UlRJVElPTklORykKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNTdG9yYWdlQWNjZXNzKFN0cmluZyYm
IHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCA0OWIyMWM1YWU2Yi4uMmI4MjBmMmQ1YWYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzU0LDYgKzE3NTQsNyBAQCBwcml2YXRlOgog
CiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJik7
CiAgICAgdm9pZCBzdG9wVVJMU2NoZW1lVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwg
dWludDY0X3QgdGFza0lkZW50aWZpZXIpOworICAgIHZvaWQgbG9hZFN5bmNocm9ub3VzVVJMU2No
ZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpEZWxheWVkUmVwbHkmJik7CiAKICAgICB2
b2lkIGhhbmRsZUF1dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNlckRhdGEmKTsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDdm
M2M2NjgzYzYxLi40ZTFkZTVjYTIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTEzLDYgKzUxMyw3IEBAIG1lc3NhZ2VzIC0+
IFdlYlBhZ2VQcm94eSB7CiAKICAgICBTdGFydFVSTFNjaGVtZVRhc2soc3RydWN0IFdlYktpdDo6
VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgcGFyYW1ldGVycykKICAgICBTdG9wVVJMU2NoZW1lVGFz
ayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpCisg
ICAgTG9hZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayhzdHJ1Y3QgV2ViS2l0OjpVUkxTY2hlbWVU
YXNrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSBy
ZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwgSVBDOjpEYXRhUmVmZXJlbmNl
IGRhdGEpIERlbGF5ZWQKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JBR0VfUEFSVElUSU9OSU5H
KQogICAgIEhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nIHN1YkZyYW1lSG9zdCwgU3RyaW5nIHRvcEZy
YW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY29udGV4dElEKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcAppbmRleCAxZjY4MmMx
ZWJlOC4uZGFiNTkzZmIyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVS
TFNjaGVtZUhhbmRsZXIuY3BwCkBAIC00OSw5ICs0OSw5IEBAIFdlYlVSTFNjaGVtZUhhbmRsZXI6
On5XZWJVUkxTY2hlbWVIYW5kbGVyKCkKICAgICBBU1NFUlQobV90YXNrcy5pc0VtcHR5KCkpOwog
fQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBh
Z2UsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQor
dm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2ViUGFnZVByb3h5JiBwYWdlLCB1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3luY0xv
YWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGF1dG8gcmVz
dWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0
ZSgqdGhpcywgcGFnZSwgdGFza0lkZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCkpKTsKKyAgICBh
dXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVyLCBXZWJVUkxTY2hlbWVUYXNr
OjpjcmVhdGUoKnRoaXMsIHBhZ2UsIHRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIEFTU0VSVChyZXN1bHQuaXNOZXdFbnRy
eSk7CiAKICAgICBhdXRvIHBhZ2VFbnRyeSA9IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyLmFkZChw
YWdlLnBhZ2VJRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA0MWY4MDNlMDAxMi4uYTRiZmJiMWZm
MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmgK
QEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVyZW5jZTsK
K30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogfQpAQCAt
MzksNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUGFnZVByb3h5Owog
Cit0eXBlZGVmIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKT4gU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlcjsKKwogY2xhc3MgV2ViVVJMU2No
ZW1lSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZUhhbmRsZXI+IHsKICAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVIYW5kbGVyKTsKIHB1YmxpYzoKQEAg
LTQ2LDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBzdGFydFRhc2soV2ViUGFnZVBy
b3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
KTsKKyAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXImJik7CiAgICAgdm9pZCBzdG9wVGFzayhXZWJQYWdlUHJveHkmLCB1aW50NjRfdCB0YXNrSWRl
bnRpZmllcik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3NGb3JQYWdlKFdlYlBhZ2VQcm94eSYpOwog
ICAgIHZvaWQgdGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNrJik7CkBAIC02NSw2ICs3MSw4
IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBSZWY8V2ViVVJMU2NoZW1lVGFz
az4+IG1fdGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSGFzaFNldDx1aW50NjRfdD4+IG1f
dGFza3NCeVBhZ2VJZGVudGlmaWVyOworICAgIAorICAgIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRs
ZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOwogCiB9OyAvLyBjbGFzcyBXZWJVUkxTY2hl
bWVIYW5kbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNj
aGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5j
cHAKaW5kZXggNTU0OTQ4OGJkODQuLjdiMjQ3Y2NhMTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUg
IldlYlVSTFNjaGVtZVRhc2suaCIKIAogI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNpbmNs
dWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRl
ICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hlbWVIYW5kbGVyLmgiCkBAIC0z
NSwxNyArMzYsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1SZWY8V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdl
YlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3Qg
cmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KQorUmVmPFdlYlVS
TFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVy
JiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmll
ciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYm
IHN5bmNDb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJV
UkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHJlc291cmNlSWRlbnRpZmllciwgV1RGTW92ZShy
ZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlVSTFNjaGVtZVRhc2soaGFu
ZGxlciwgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3Zl
KHN5bmNDb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAotV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJM
U2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBh
Z2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVz
dCkKK1dlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxl
ciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCByZXNvdXJjZUlkZW50aWZp
ZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXIm
JiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX3VybFNjaGVtZUhhbmRsZXIoaGFuZGxl
cikKICAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1faWRlbnRpZmllcihyZXNvdXJjZUlkZW50
aWZpZXIpCiAgICAgLCBtX3BhZ2VJZGVudGlmaWVyKHBhZ2UucGFnZUlEKCkpCiAgICAgLCBtX3Jl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIApAQCAtNjMsNiArNjUsOSBAQCBh
dXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVjdGlvbihXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgIGlmIChtX3Jlc3BvbnNlU2VudCkKICAgICAgICAg
cmV0dXJuIEV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0ZXJSZXNwb25zZTsKICAgICAKKyAgICBp
ZiAoaXNTeW5jKCkpCisgICAgICAgIG1fc3luY1Jlc3BvbnNlID0gcmVzcG9uc2U7CisKICAgICBt
X3JlcXVlc3QgPSByZXF1ZXN0OwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3VybFNjaGVtZUhhbmRsZXItPmlk
ZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVxdWVzdCkpOwogCkBAIC04Myw2
ICs4OCwxMCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJlY2VpdmVSZXNwb25zZShjb25z
dCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAgIG1fcmVzcG9uc2VTZW50ID0g
dHJ1ZTsKIAogICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8oKTsKKworICAgIGlm
IChpc1N5bmMoKSkKKyAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKKwogICAgIG1f
cGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVSZXNw
b25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNw
b25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQpAQCAtOTksNiArMTA4
LDEzIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEoUmVmPFNoYXJlZEJ1
ZmZlcj4gYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRpb25U
eXBlOjpOb1Jlc3BvbnNlU2VudDsKIAogICAgIG1fZGF0YVNlbnQgPSB0cnVlOworCisgICAgaWYg
KGlzU3luYygpKSB7CisgICAgICAgIGlmICghbV9zeW5jRGF0YSkKKyAgICAgICAgICAgIG1fc3lu
Y0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAgICBtX3N5bmNEYXRhLT5hcHBl
bmQoYnVmZmVyKTsKKyAgICB9CisKICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6
OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZp
ZXIoKSwgbV9pZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRhdGFSZWZlcmVuY2UoYnVmZmVy
LnB0cigpKSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25lOwogfQpAQCAtMTE1LDYg
KzEzMSwxMiBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAgIHJldHVybiBFeGNlcHRp
b25UeXBlOjpOb1Jlc3BvbnNlU2VudDsKIAogICAgIG1fY29tcGxldGVkID0gdHJ1ZTsKKyAgICAK
KyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRsZXIobV9z
eW5jUmVzcG9uc2UsIGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2UgeyAoY29uc3QgdWludDhfdCop
bV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkgfSk7CisgICAgICAgIG1fc3lu
Y0RhdGEgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRp
ZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CiAgICAgbV91cmxTY2hlbWVIYW5kbGVyLT50
YXNrQ29tcGxldGVkKCp0aGlzKTsKIApAQCAtMTI2LDEyICsxNDgsMTggQEAgdm9pZCBXZWJVUkxT
Y2hlbWVUYXNrOjpwYWdlRGVzdHJveWVkKCkKICAgICBBU1NFUlQobV9wYWdlKTsKICAgICBtX3Bh
Z2UgPSBudWxscHRyOwogICAgIG1fc3RvcHBlZCA9IHRydWU7CisgICAgCisgICAgaWYgKGlzU3lu
YygpKQorICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVBy
b3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAogdm9pZCBXZWJVUkxTY2hlbWVU
YXNrOjpzdG9wKCkKIHsKICAgICBBU1NFUlQoIW1fc3RvcHBlZCk7CiAgICAgbV9zdG9wcGVkID0g
dHJ1ZTsKKworICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoeyB9LCBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKG1fcmVxdWVzdCksIHsgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJM
U2NoZW1lVGFzay5oCmluZGV4IDM3NTQ3NGMxZmFkLi5jZTU0N2M2MTJkNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAtMjYsMTAgKzI2LDE3IEBACiAj
cHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9TaGFy
ZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRl
IDx3dGYvSW5zdGFuY2VDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xhc3MgRGF0YVJlZmVy
ZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3VyY2VFcnJvcjsKIGNs
YXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC00MSwxMCArNDgsMTIgQEAgbmFtZXNwYWNlIFdlYktp
dCB7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3MgV2ViUGFnZVByb3h5OwogCit0
eXBlZGVmIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNw
b25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBjb25zdCBJUEM6OkRhdGFSZWZl
cmVuY2UmKT4gU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlcjsKKwogY2xhc3MgV2ViVVJMU2NoZW1l
VGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+LCBwdWJsaWMgSW5zdGFu
Y2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
ZWJVUkxTY2hlbWVUYXNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlVSTFNjaGVtZVRh
c2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWludDY0X3Qg
aWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYpOworICAgIHN0YXRpYyBSZWY8
V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJv
eHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3lu
Y0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2NF90IGlkZW50aWZpZXIoKSBj
b25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50NjRfdCBwYWdlSUQoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CkBAIC02OCw3ICs3Nyw5IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToKLSAgICBXZWJVUkxTY2hlbWVU
YXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgV2ViVVJMU2NoZW1lVGFzayhX
ZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXImJik7
CisKKyAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEhbV9zeW5jQ29tcGxldGlvbkhh
bmRsZXI7IH0KIAogICAgIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVyPiBtX3VybFNjaGVtZUhhbmRs
ZXI7CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CkBAIC03OSw2ICs5MCwxMCBAQCBwcml2YXRl
OgogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9kYXRhU2Vu
dCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2NvbXBsZXRlZCB7IGZhbHNlIH07CisgICAgCisgICAg
U3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcjsKKyAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNlOworICAgIFJlZlB0cjxXZWJD
b3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRl
clN0cmF0ZWd5LmNwcAppbmRleCA5NTk5OGE1YWYyMy4uMTVjYjk5YjdhNzEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5j
cHAKQEAgLTQ3Myw2ICs0NzMsMjYgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ2xlYXJSZWZlcnJlck9u
SFRUUFNUb0hUVFBSZWRpcmVjdChGcmFtZSogZnJhbWUpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
K3N0ZDo6b3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNMb2FkUmVzdWx0PiBXZWJMb2Fk
ZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIo
RnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBSZXNvdXJjZUxvYWRJZGVudGlmaWVyIGlkZW50aWZp
ZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICBhdXRvKiB3ZWJGcmFt
ZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQoZnJhbWVMb2FkZXIuY2xpZW50
KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFt
ZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CisgICAgYXV0byogd2ViUGFnZSA9
IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CisgICAgaWYgKCF3ZWJQYWdl
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byogaGFuZGxlciA9IHdl
YlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVxdWVzdC51cmwoKS5wcm90b2NvbCgp
LnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFoYW5kbGVyKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTE9HKE5ldHdvcmtTY2hlZHVsaW5nLCAiKFdlYlBy
b2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQsIHN5bmMgbG9hZCB0byBVUkwg
JyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJMIHNjaGVtZSBoYW5kbGVyLiIs
IHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CisKKyAgICBTeW5jTG9hZFJl
c3VsdCByZXN1bHQ7CisgICAgaGFuZGxlci0+bG9hZFN5bmNocm9ub3VzbHkoaWRlbnRpZmllciwg
cmVxdWVzdCwgcmVzdWx0LnJlc3BvbnNlLCByZXN1bHQuZXJyb3IsIHJlc3VsdC5kYXRhKTsKKwor
ICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKIHZvaWQgV2ViTG9hZGVyU3RyYXRlZ3k6
OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCB1bnNp
Z25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYg
cmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRDcmVkZW50aWFsUG9saWN5LCAg
Y29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQSGVhZGVyTWFwJiBvcmlnaW5h
bFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKICAgICBhdXRvKiBkb2N1bWVudCA9IGZy
YW1lTG9hZGVyLmZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTQ4MSw2ICs1MDEsMTMgQEAgdm9pZCBX
ZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYg
ZnJhbWVMb2FkZXIsIHVuc2kKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChhdXRv
IHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2luZ1VSTFNjaGVtZUhh
bmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZpZXIsIHJlcXVlc3QpKSB7Cisg
ICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZXJyb3IpOworICAgICAgICBy
ZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPnJlc3BvbnNlKTsKKyAgICAgICAgZGF0
YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEpOworICAgICAgICByZXR1cm47CisgICAg
fQorCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9X
ZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQoKSk7CiAgICAgV2ViRnJhbWUq
IHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+
d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IHdlYkZyYW1lID8g
d2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRleCAwOTgzZjQyMTBmZi4uNDQ3
YWNhZjBkZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dl
YkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjcsNyArMjcsOSBAQAogCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRlclN0cmF0ZWd5Lmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtOTAsNiAr
OTIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludGVybmFsbHlGYWlsZWRMb2FkVGltZXJGaXJl
ZCgpOwogICAgIHZvaWQgc3RhcnRMb2NhbExvYWQoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsK
ICAgICBib29sIHRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXImKTsKKyAgICAKKyAgICBzdHJ1Y3QgU3luY0xvYWRSZXN1bHQgeworICAgICAgICBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yIGVycm9yOworICAgICAgICBWZWN0b3I8Y2hhcj4gZGF0YTsKKyAgICB9OworICAg
IHN0ZDo6b3B0aW9uYWw8U3luY0xvYWRSZXN1bHQ+IHRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNp
bmdVUkxTY2hlbWVIYW5kbGVyKFdlYkNvcmU6OkZyYW1lTG9hZGVyJiwgUmVzb3VyY2VMb2FkSWRl
bnRpZmllciBpZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAog
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2VGcm9tUmVzb3VyY2VMb2FkSWRl
bnRpZmllcih1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBWZWN0
b3I8V2ViQ29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IGludGVybWVkaWF0ZUxv
YWRJbmZvcm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291cmNl
TG9hZElkZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5kZXggY2Ri
NDNmYjllYWYuLmFkMjAyNmE1Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTI2
LDEwICsyNiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVt
ZUhhbmRsZXJQcm94eS5oIgogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUg
IlVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29k
ZXJzLmgiCiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRl
Z3kuaCIKKyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2Fn
ZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJj
ZUVycm9yLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUg
PFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJl
c3BvbnNlLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01NSw2ICs2MywxOCBA
QCB2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9h
ZGVyJiBsb2FkZXIpCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnRMb2FkaW5nKCk7
CiB9CiAKK3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojpsb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyIGxvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgVmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRh
UmVmZXJlbmNlOworICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRl
cnMgeyBtX2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0IH0pLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpSZXBseShyZXNwb25z
ZSwgZXJyb3IsIGRhdGFSZWZlcmVuY2UpKSkgeworICAgICAgICBlcnJvciA9IGZhaWxlZEN1c3Rv
bVByb3RvY29sU3luY0xvYWQocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
CisgICAgZGF0YS5yZXNpemUoZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgIG1lbWNweShkYXRh
LmRhdGEoKSwgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKK30K
Kwogdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0b3BBbGxUYXNrcygpCiB7CiAgICAg
d2hpbGUgKCFtX3Rhc2tzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNzQy
NDE1Yzc3MWEuLmQ4ZTM3N2E3NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApAQCAtMzksNiAr
MzksNyBAQCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViUGFnZTsKK3R5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAog
Y2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJM
U2NoZW1lSGFuZGxlclByb3h5PiB7CiBwdWJsaWM6CkBAIC01MSw2ICs1Miw4IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwogICAgIHZv
aWQgc3RvcEFsbFRhc2tzKCk7CiAKKyAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNl
TG9hZElkZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgVmVjdG9yPGNoYXI+
Jik7CisKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlm
aWVyOyB9CiAgICAgV2ViUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZTsgfQogCmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGY2NGU3OGNm
OTQuLjZjYzhmNzgwOTFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDYtMjEgIEJyYWR5IEVpZHNvbiAgPGJl
aWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLVVJMU2NoZW1lSGFuZGxlciBkb2Vzbid0IGhh
bmRsZSBzeW5jIFhIUi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwOTU1ODg0PiBhbmQgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjkwMgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKC1bU3luY1Nj
aGVtZSB3ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bU3luY1NjaGVt
ZSB3ZWJWaWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTeW5jTWVzc2FnZUhh
bmRsZXIgdXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgor
ICAgICAgICAoY2F0Y2gpOgorCiAyMDE4LTA2LTIxICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFw
cGxlLmNvbT4KIAogICAgICAgICBFV1MgZm9yIHNlY3VyaXR5IGJ1Z3MKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEu
bW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1lSGFu
ZGxlci0xLm1tCmluZGV4IDQxMmU3N2Y1MTBhLi45MTMwNGE5N2ZkMCAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5t
bQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCkBAIC0zMSw4ICszMSwxMSBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVVJMU2No
ZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0aW9u
UHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL0hhc2hN
YXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3IuaD4K
KyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0
cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIApAQCAtNDA5LDQgKzQxMiwxMDAgQEAgVEVT
VChVUkxTY2hlbWVIYW5kbGVyLCBFeGNlcHRpb25zKQogICAgIGNoZWNrQ2FsbFNlcXVlbmNlKHtD
b21tYW5kOjpSZXNwb25zZSwgQ29tbWFuZDo6RmluaXNoLCBDb21tYW5kOjpFcnJvcn0sIFNob3Vs
ZFJhaXNlRXhjZXB0aW9uOjpZZXMpOwogfQogCi0jZW5kaWYKK3N0cnVjdCBSZXNvdXJjZUluZm8g
eworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWltZVR5cGU7CisgICAgY29uc3QgY2hhciogZGF0
YTsKK307CisKK0BpbnRlcmZhY2UgU3luY1NjaGVtZSA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhh
bmRsZXI+IHsKK0BwdWJsaWMKKyAgICBIYXNoTWFwPFN0cmluZywgUmVzb3VyY2VJbmZvPiByZXNv
dXJjZXM7Cit9CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBTeW5jU2NoZW1lCisKKy0gKHZvaWQp
d2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdGFydFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VS
TFNjaGVtZVRhc2s+KXRhc2sKK3sKKyAgICBhdXRvIGVudHJ5ID0gcmVzb3VyY2VzLmZpbmQoW3Rh
c2sucmVxdWVzdC5VUkwgYWJzb2x1dGVTdHJpbmddKTsKKyAgICBpZiAoZW50cnkgPT0gcmVzb3Vy
Y2VzLmVuZCgpKSB7CisgICAgICAgIE5TTG9nKEAiRGlkIG5vdCBmaW5kIHJlc291cmNlIGVudHJ5
IGZvciBVUkwgJUAiLCB0YXNrLnJlcXVlc3QuVVJMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIFJldGFpblB0cjxOU1VSTFJlc3BvbnNlPiByZXNwb25zZSA9IGFkb3B0TlMoW1tOU1VS
TFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDp0YXNrLnJlcXVlc3QuVVJMIE1JTUVUeXBlOmVu
dHJ5LT52YWx1ZS5taW1lVHlwZS5nZXQoKSBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5j
b2RpbmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5n
ZXQoKV07CisKKyAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWVudHJ5LT52YWx1ZS5kYXRhIGxlbmd0aDpzdHJsZW4oZW50cnktPnZhbHVl
LmRhdGEpIGZyZWVXaGVuRG9uZTpOT11dOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9CisKKy0g
KHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFzazooaWQg
PFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5kCisKK3N0YXRpYyBSZXRhaW5QdHI8
TlNNdXRhYmxlQXJyYXk+IHJlY2VpdmVkTWVzc2FnZXMgPSBhZG9wdE5TKFtAW10gbXV0YWJsZUNv
cHldKTsKK3N0YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZTsKKworQGludGVyZmFjZSBTeW5jTWVz
c2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKwor
QGltcGxlbWVudGF0aW9uIFN5bmNNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENv
bnRyb2xsZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVy
IGRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7Cisg
ICAgaWYgKFttZXNzYWdlIGJvZHldKQorICAgICAgICBbcmVjZWl2ZWRNZXNzYWdlcyBhZGRPYmpl
Y3Q6W21lc3NhZ2UgYm9keV1dOworICAgIGVsc2UKKyAgICAgICAgW3JlY2VpdmVkTWVzc2FnZXMg
YWRkT2JqZWN0OkAiIl07CisKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOworfQorQGVuZAor
CitzdGF0aWMgY29uc3QgY2hhciogc3luY01haW5CeXRlcyA9IFIiU1lOQ1JFU09VUkNFKAorPHNj
cmlwdD4KK3ZhciByZXEgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKK3JlcS5vcGVuKCJHRVQiLCAi
dGVzdC5kYXQiLCBmYWxzZSk7Cit0cnkKK3sKKyAgICByZXEuc2VuZChudWxsKTsKKyAgICB3aW5k
b3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zeW5jLnBvc3RNZXNzYWdlKHJlcS5yZXNwb25zZVRl
eHQpOworfQorY2F0Y2ggKGUpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMu
c3luYy5wb3N0TWVzc2FnZSgiRmFpbGVkIHN5bmMgWEhSIGxvYWQiKTsKK30KKworPC9zY3JpcHQ+
CispU1lOQ1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHN5bmNYSFJCeXRlcyA9ICJN
eSBYSFIgdGV4dCEiOworCitURVNUKFVSTFNjaGVtZUhhbmRsZXIsIFN5bmNYSFIpCit7CisgICAg
YXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBoYW5kbGVyID0gYWRvcHROUyhbW1N5bmNTY2hl
bWUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlld0NvbmZpZ3VyYXRpb24gc2V0VVJMU2NoZW1l
SGFuZGxlcjpoYW5kbGVyLmdldCgpIGZvclVSTFNjaGVtZTpAInN5bmN4aHIiXTsKKyAgICAKKyAg
ICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8vaG9zdC9tYWluLmh0bWwi
LCBSZXNvdXJjZUluZm8geyBAInRleHQvaHRtbCIsIHN5bmNNYWluQnl0ZXMgfSk7CisgICAgaGFu
ZGxlci5nZXQoKS0+cmVzb3VyY2VzLnNldCgic3luY3hocjovL2hvc3QvdGVzdC5kYXQiLCBSZXNv
dXJjZUluZm8geyBAInRleHQvcGxhaW4iLCBzeW5jWEhSQnl0ZXMgfSk7CisKKyAgICBhdXRvIG1l
c3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1N5bmNNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0p
OworICAgIFtbd2ViVmlld0NvbmZpZ3VyYXRpb24gdXNlckNvbnRlbnRDb250cm9sbGVyXSBhZGRT
Y3JpcHRNZXNzYWdlSGFuZGxlcjptZXNzYWdlSGFuZGxlci5nZXQoKSBuYW1lOkAic3luYyJdOwor
ICAgIAorICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRX
aXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjp3ZWJWaWV3
Q29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgTlNVUkxSZXF1ZXN0ICpyZXF1ZXN0ID0gW05T
VVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpAInN5bmN4aHI6
Ly9ob3N0L21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcmVjZWl2ZWRNZXNzYWdlKTsKKyAgICBy
ZWNlaXZlZE1lc3NhZ2UgPSBmYWxzZTsKKyAgICAKKyAgICBFWFBFQ1RfRVEoKHVuc2lnbmVkKXJl
Y2VpdmVkTWVzc2FnZXMuZ2V0KCkuY291bnQsICh1bnNpZ25lZCkxKTsKKyAgICBFWFBFQ1RfVFJV
RShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJNeSBYSFIgdGV4
dCEiXSk7Cit9CisKKyNlbmRpZiAvLyBXS19BUElfRU5BQkxFRAorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343363</attachid>
            <date>2018-06-22 14:03:14 -0700</date>
            <delta_ts>2018-06-22 16:23:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>27664</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggMTNmM2FkN2FjODcuLjBjMDBhNTc0OGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDQ5IEBACisyMDE4LTA2LTIyICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKwor
ICAgICAgICBXS1VSTFNjaGVtZUhhbmRsZXIgZG9lc24ndCBoYW5kbGUgc3luYyBYSFIuCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS80MDk1NTg4ND4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xODY5MDIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGFsbG93cyBXZWJQcm9jZXNzZXMgdG8gYmxvY2sg
b24gc3luYyBsb2FkcyB0byBhIGN1c3RvbSBzY2hlbWUsCisgICAgICAgIGFuZCB0ZWFjaGVzIFdl
YlVSTFNjaGVtZVRhc2tzIGhvdyB0byBidWZmZXIgdXAgZGF0YSBhbmQgdGhlIHJlc3BvbnNlIGlm
IAorICAgICAgICBvcGVyYXRpbmcgc3luY2hyb25vdXNseS4KKworICAgICAgICAqIFNoYXJlZC9X
ZWJFcnJvcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNM
b2FkKToKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmg6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzdGFy
dFVSTFNjaGVtZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmxvYWRTeW5j
aHJvbm91c1VSTFNjaGVtZVRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVIYW5kbGVyLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1l
VGFzay5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRQZXJmb3JtUmVkaXJlY3Rpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlUmVzcG9uc2UpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmRpZENvbXBsZXRlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVVJMU2NoZW1lVGFzazo6cGFnZURlc3Ryb3llZCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlVSTFNjaGVtZVRhc2s6OnN0b3ApOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJVUkxTY2hl
bWVUYXNrLmg6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRhc2s6OmlzU3luYyBjb25z
dCk6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1N5bmNocm9u
b3VzbHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJT
dHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5Lmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lSGFuZGxlclByb3h5Ojpsb2FkU3luY2hyb25vdXNseSk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oOgorCiAyMDE4LTA2LTE5
ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJL
aXQgb24gd2F0Y2hPU10gVmVuZCB1c2VybmFtZSB0ZXh0IGNvbnRlbnQgdHlwZSB3aGVuIHVzaW5n
IHNjcmliYmxlIGluIGxvZ2luIGZpZWxkcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViRXJyb3JzLmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAKaW5k
ZXggOGYxNWNkMzBjNWMuLmI2ZGM1MGNlYjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJFcnJvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5j
cHAKQEAgLTU3LDYgKzU3LDExIEBAIFJlc291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lD
aGFuZ2VFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiAgICAgcmV0dXJuIFJl
c291cmNlRXJyb3IoQVBJOjpFcnJvcjo6d2ViS2l0UG9saWN5RXJyb3JEb21haW4oKSwgQVBJOjpF
cnJvcjo6UG9saWN5OjpGcmFtZUxvYWRJbnRlcnJ1cHRlZEJ5UG9saWN5Q2hhbmdlLCByZXF1ZXN0
LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJGcmFtZSBsb2FkIGludGVycnVwdGVkIiwgIldlYktpdEVy
cm9yRnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNoYW5nZSBkZXNjcmlwdGlvbiIpKTsKIH0K
IAorUmVzb3VyY2VFcnJvciBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKGNvbnN0IFJlc291
cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sKKyAgICByZXR1cm4gUmVzb3VyY2VFcnJvcihlcnJvckRv
bWFpbldlYktpdEludGVybmFsLCAwLCByZXF1ZXN0LnVybCgpLCBXRUJfVUlfU1RSSU5HKCJFcnJv
ciBoYW5kbGluZyBzeW5jaHJvbm91cyBsb2FkIHdpdGggY3VzdG9tIHByb3RvY29sIiwgIkN1c3Rv
bSBwcm90b2NvbCBzeW5jaHJvbm91cyBsb2FkIGZhaWx1cmUgZGVzY3JpcHRpb24iKSk7Cit9CisK
ICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNv
bnRlbnRGaWx0ZXJFcnJvcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYkVycm9ycy5oCmluZGV4IDU5M2VhODg1MzdkLi4yN2QxNGUzMWIzMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmgKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViRXJyb3JzLmgKQEAgLTQxLDYgKzQxLDcgQEAgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoY29uc3QgV2Vi
Q29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGNhbm5vdFNo
b3dVUkxFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIFdlYkNvcmU6OlJl
c291cmNlRXJyb3IgaW50ZXJydXB0ZWRGb3JQb2xpY3lDaGFuZ2VFcnJvcihjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmKTsKK1dlYkNvcmU6OlJlc291cmNlRXJyb3IgZmFpbGVkQ3VzdG9t
UHJvdG9jb2xTeW5jTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNpZiBF
TkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGJsb2NrZWRC
eUNvbnRlbnRGaWx0ZXJFcnJvcihjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKICNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggYjlhZjFk
NmJmZjkuLmM0NDRjMDQ1NzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTc1ODYsNyArNzU4Niw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdGFydFVSTFNj
aGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzKQogICAgIGF1dG8g
aXRlcmF0b3IgPSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQocGFyYW1ldGVy
cy5oYW5kbGVySWRlbnRpZmllcik7CiAgICAgTUVTU0FHRV9DSEVDSyhpdGVyYXRvciAhPSBtX3Vy
bFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKIAotICAgIGl0ZXJhdG9yLT52YWx1
ZS0+c3RhcnRUYXNrKCp0aGlzLCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBh
cmFtZXRlcnMucmVxdWVzdCkpOworICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRUYXNrKCp0aGlz
LCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMucmVxdWVzdCks
IG51bGxwdHIpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNjaGVtZVRhc2sodWlu
dDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyKQpAQCAtNzU5
Nyw2ICs3NTk3LDE0IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzdG9wVVJMU2NoZW1lVGFzayh1aW50
NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkCiAgICAgaXRlcmF0b3ItPnZh
bHVlLT5zdG9wVGFzaygqdGhpcywgdGFza0lkZW50aWZpZXIpOwogfQogCit2b2lkIFdlYlBhZ2VQ
cm94eTo6bG9hZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cyYmIHBhcmFtZXRlcnMsIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkxvYWRTeW5jaHJvbm91c1VS
TFNjaGVtZVRhc2s6OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQoreworICAgIGF1dG8gaXRlcmF0b3Ig
PSBtX3VybFNjaGVtZUhhbmRsZXJzQnlJZGVudGlmaWVyLmZpbmQocGFyYW1ldGVycy5oYW5kbGVy
SWRlbnRpZmllcik7CisgICAgTUVTU0FHRV9DSEVDSyhpdGVyYXRvciAhPSBtX3VybFNjaGVtZUhh
bmRsZXJzQnlJZGVudGlmaWVyLmVuZCgpKTsKKworICAgIGl0ZXJhdG9yLT52YWx1ZS0+c3RhcnRU
YXNrKCp0aGlzLCBwYXJhbWV0ZXJzLnRhc2tJZGVudGlmaWVyLCBXVEZNb3ZlKHBhcmFtZXRlcnMu
cmVxdWVzdCksIFdURk1vdmUocmVwbHkpKTsKK30KKwogI2lmIEhBVkUoQ0ZORVRXT1JLX1NUT1JB
R0VfUEFSVElUSU9OSU5HKQogdm9pZCBXZWJQYWdlUHJveHk6Omhhc1N0b3JhZ2VBY2Nlc3MoU3Ry
aW5nJiYgc3ViRnJhbWVIb3N0LCBTdHJpbmcmJiB0b3BGcmFtZUhvc3QsIHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IHdlYlByb2Nlc3NDb250ZXh0SWQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oCmluZGV4IGIxMDUwYzk0MDk3Li4yZWUyYWRiMzE0NiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE3NTIsNiArMTc1Miw3IEBAIHByaXZh
dGU6CiAKICAgICB2b2lkIHN0YXJ0VVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVy
cyYmKTsKICAgICB2b2lkIHN0b3BVUkxTY2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlm
aWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcik7CisgICAgdm9pZCBsb2FkU3luY2hyb25vdXNV
UkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYsIE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2s6OkRlbGF5ZWRSZXBseSYmKTsKIAog
ICAgIHZvaWQgaGFuZGxlQXV0b0ZpbGxCdXR0b25DbGljayhjb25zdCBVc2VyRGF0YSYpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggN2YzYzY2ODNjNjEuLjRlMWRlNWNhMjJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCkBAIC01MTMsNiArNTEzLDcgQEAgbWVzc2Fn
ZXMgLT4gV2ViUGFnZVByb3h5IHsKIAogICAgIFN0YXJ0VVJMU2NoZW1lVGFzayhzdHJ1Y3QgV2Vi
S2l0OjpVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKQogICAgIFN0b3BVUkxTY2hl
bWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRpZmll
cikKKyAgICBMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrKHN0cnVjdCBXZWJLaXQ6OlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzIHBhcmFtZXRlcnMpIC0+IChXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yLCBJUEM6OkRhdGFSZWZl
cmVuY2UgZGF0YSkgRGVsYXllZAogCiAjaWYgSEFWRShDRk5FVFdPUktfU1RPUkFHRV9QQVJUSVRJ
T05JTkcpCiAgICAgSGFzU3RvcmFnZUFjY2VzcyhTdHJpbmcgc3ViRnJhbWVIb3N0LCBTdHJpbmcg
dG9wRnJhbWVIb3N0LCB1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBjb250ZXh0SUQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCmluZGV4IDFm
NjgyYzFlYmU4Li5kYWI1OTNmYjIxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lSGFuZGxlci5jcHAKQEAgLTQ5LDkgKzQ5LDkgQEAgV2ViVVJMU2NoZW1lSGFu
ZGxlcjo6fldlYlVSTFNjaGVtZUhhbmRsZXIoKQogICAgIEFTU0VSVChtX3Rhc2tzLmlzRW1wdHko
KSk7CiB9CiAKLXZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlcjo6c3RhcnRUYXNrKFdlYlBhZ2VQcm94
eSYgcGFnZSwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QpCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFzayhXZWJQYWdlUHJveHkmIHBh
Z2UsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBT
eW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgYXV0
byByZXN1bHQgPSBtX3Rhc2tzLmFkZCh0YXNrSWRlbnRpZmllciwgV2ViVVJMU2NoZW1lVGFzazo6
Y3JlYXRlKCp0aGlzLCBwYWdlLCB0YXNrSWRlbnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSkpOwor
ICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVSTFNjaGVt
ZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgdGFza0lkZW50aWZpZXIsIFdURk1vdmUocmVxdWVz
dCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKSk7CiAgICAgQVNTRVJUKHJlc3VsdC5pc05l
d0VudHJ5KTsKIAogICAgIGF1dG8gcGFnZUVudHJ5ID0gbV90YXNrc0J5UGFnZUlkZW50aWZpZXIu
YWRkKHBhZ2UucGFnZUlEKCksIEhhc2hTZXQ8dWludDY0X3Q+KCkpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5oCmluZGV4IDQxZjgwM2UwMDEyLi5hNGJm
YmIxZmYwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRs
ZXIuaApAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRhUmVmZXJl
bmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiB9
CkBAIC0zOSw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJQYWdlUHJv
eHk7CiAKK3R5cGVkZWYgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6
RGF0YVJlZmVyZW5jZSYpPiBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOworCiBjbGFzcyBXZWJV
UkxTY2hlbWVIYW5kbGVyIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lSGFuZGxlcj4g
ewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYlVSTFNjaGVtZUhhbmRsZXIpOwogcHVibGlj
OgpAQCAtNDYsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CiAKLSAgICB2b2lkIHN0YXJ0VGFzayhXZWJQ
YWdlUHJveHkmLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JiYpOworICAgIHZvaWQgc3RhcnRUYXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHRhc2tJ
ZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciYmKTsKICAgICB2b2lkIHN0b3BUYXNrKFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IHRh
c2tJZGVudGlmaWVyKTsKICAgICB2b2lkIHN0b3BBbGxUYXNrc0ZvclBhZ2UoV2ViUGFnZVByb3h5
Jik7CiAgICAgdm9pZCB0YXNrQ29tcGxldGVkKFdlYlVSTFNjaGVtZVRhc2smKTsKQEAgLTY1LDYg
KzcxLDggQEAgcHJpdmF0ZToKIAogICAgIEhhc2hNYXA8dWludDY0X3QsIFJlZjxXZWJVUkxTY2hl
bWVUYXNrPj4gbV90YXNrczsKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBIYXNoU2V0PHVpbnQ2NF90
Pj4gbV90YXNrc0J5UGFnZUlkZW50aWZpZXI7CisgICAgCisgICAgU3luY0xvYWRDb21wbGV0aW9u
SGFuZGxlciBtX3N5bmNMb2FkQ29tcGxldGlvbkhhbmRsZXI7CiAKIH07IC8vIGNsYXNzIFdlYlVS
TFNjaGVtZUhhbmRsZXIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2Vi
VVJMU2NoZW1lVGFzay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVU
YXNrLmNwcAppbmRleCA1NTQ5NDg4YmQ4NC4uN2IyNDdjY2ExMWMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5j
bHVkZSAiV2ViVVJMU2NoZW1lVGFzay5oIgogCiAjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgor
I2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYlBhZ2VNZXNzYWdlcy5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRsZXIuaCIK
QEAgLTM1LDE3ICszNiwxOCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLVJlZjxXZWJVUkxTY2hlbWVUYXNrPiBXZWJVUkxTY2hlbWVUYXNrOjpjcmVh
dGUoV2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50
NjRfdCByZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpCitSZWY8
V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJMU2NoZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVu
dGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBTeW5jTG9hZENvbXBsZXRpb25IYW5k
bGVyJiYgc3luY0NvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFdlYlVSTFNjaGVtZVRhc2soaGFuZGxlciwgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZN
b3ZlKHJlcXVlc3QpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViVVJMU2NoZW1lVGFz
ayhoYW5kbGVyLCBwYWdlLCByZXNvdXJjZUlkZW50aWZpZXIsIFdURk1vdmUocmVxdWVzdCksIFdU
Rk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkpOwogfQogCi1XZWJVUkxTY2hlbWVUYXNrOjpX
ZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94
eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQorV2ViVVJMU2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVI
YW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRl
bnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3luY0xvYWRDb21wbGV0aW9uSGFu
ZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKICAgICA6IG1fdXJsU2NoZW1lSGFuZGxlciho
YW5kbGVyKQogICAgICwgbV9wYWdlKCZwYWdlKQogICAgICwgbV9pZGVudGlmaWVyKHJlc291cmNl
SWRlbnRpZmllcikKICAgICAsIG1fcGFnZUlkZW50aWZpZXIocGFnZS5wYWdlSUQoKSkKICAgICAs
IG1fcmVxdWVzdChXVEZNb3ZlKHJlcXVlc3QpKQorICAgICwgbV9zeW5jQ29tcGxldGlvbkhhbmRs
ZXIoV1RGTW92ZShzeW5jQ29tcGxldGlvbkhhbmRsZXIpKQogewogfQogCkBAIC02Myw2ICs2NSw5
IEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKFdlYkNvcmU6
OlJlc291cmNlUmVzcG9uc2UmJiByZXNwb25zCiAgICAgaWYgKG1fcmVzcG9uc2VTZW50KQogICAg
ICAgICByZXR1cm4gRXhjZXB0aW9uVHlwZTo6UmVkaXJlY3RBZnRlclJlc3BvbnNlOwogICAgIAor
ICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSByZXNwb25zZTsKKwog
ICAgIG1fcmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpVUkxTY2hlbWVUYXNrRGlkUGVyZm9ybVJlZGlyZWN0aW9uKG1fdXJsU2NoZW1lSGFuZGxl
ci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIHJlc3BvbnNlLCByZXF1ZXN0KSk7CiAKQEAg
LTgzLDYgKzg4LDEwIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSAtPiBFCiAgICAgbV9yZXNwb25zZVNl
bnQgPSB0cnVlOwogCiAgICAgcmVzcG9uc2UuaW5jbHVkZUNlcnRpZmljYXRlSW5mbygpOworCisg
ICAgaWYgKGlzU3luYygpKQorICAgICAgICBtX3N5bmNSZXNwb25zZSA9IHJlc3BvbnNlOworCiAg
ICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkUmVjZWl2
ZVJlc3BvbnNlKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIs
IHJlc3BvbnNlKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC05OSw2
ICsxMDgsMTMgQEAgYXV0byBXZWJVUkxTY2hlbWVUYXNrOjpkaWRSZWNlaXZlRGF0YShSZWY8U2hh
cmVkQnVmZmVyPiBidWZmZXIpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OwogCiAgICAgbV9kYXRhU2VudCA9IHRydWU7CisKKyAg
ICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgaWYgKCFtX3N5bmNEYXRhKQorICAgICAgICAgICAg
bV9zeW5jRGF0YSA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCk7CisgICAgICAgIG1fc3luY0RhdGEt
PmFwcGVuZChidWZmZXIpOworICAgIH0KKwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6VVJMU2NoZW1lVGFza0RpZFJlY2VpdmVEYXRhKG1fdXJsU2NoZW1lSGFuZGxlci0+aWRl
bnRpZmllcigpLCBtX2lkZW50aWZpZXIsIElQQzo6U2hhcmVkQnVmZmVyRGF0YVJlZmVyZW5jZShi
dWZmZXIucHRyKCkpKSk7CiAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6Ok5vbmU7CiB9CkBAIC0x
MTUsNiArMTMxLDEyIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkQ29tcGxldGUoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpIC0+IEV4Y2VwdGlvblR5cGUKICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvblR5cGU6Ok5vUmVzcG9uc2VTZW50OwogCiAgICAgbV9jb21wbGV0ZWQgPSB0cnVlOwor
ICAgIAorICAgIGlmIChpc1N5bmMoKSkgeworICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxl
cihtX3N5bmNSZXNwb25zZSwgZXJyb3IsIElQQzo6RGF0YVJlZmVyZW5jZSB7IChjb25zdCB1aW50
OF90KiltX3N5bmNEYXRhLT5kYXRhKCksIG1fc3luY0RhdGEtPnNpemUoKSB9KTsKKyAgICAgICAg
bV9zeW5jRGF0YSA9IG51bGxwdHI7CisgICAgfQorCiAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVUkxTY2hlbWVUYXNrRGlkQ29tcGxldGUobV91cmxTY2hlbWVIYW5kbGVyLT5p
ZGVudGlmaWVyKCksIG1faWRlbnRpZmllciwgZXJyb3IpKTsKICAgICBtX3VybFNjaGVtZUhhbmRs
ZXItPnRhc2tDb21wbGV0ZWQoKnRoaXMpOwogCkBAIC0xMjYsMTIgKzE0OCwxOCBAQCB2b2lkIFdl
YlVSTFNjaGVtZVRhc2s6OnBhZ2VEZXN0cm95ZWQoKQogICAgIEFTU0VSVChtX3BhZ2UpOwogICAg
IG1fcGFnZSA9IG51bGxwdHI7CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAo
aXNTeW5jKCkpCisgICAgICAgIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyKHsgfSwgZmFpbGVkQ3Vz
dG9tUHJvdG9jb2xTeW5jTG9hZChtX3JlcXVlc3QpLCB7IH0pOwogfQogCiB2b2lkIFdlYlVSTFNj
aGVtZVRhc2s6OnN0b3AoKQogewogICAgIEFTU0VSVCghbV9zdG9wcGVkKTsKICAgICBtX3N0b3Bw
ZWQgPSB0cnVlOworCisgICAgaWYgKGlzU3luYygpKQorICAgICAgICBtX3N5bmNDb21wbGV0aW9u
SGFuZGxlcih7IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJVUkxTY2hlbWVUYXNrLmgKaW5kZXggMzc1NDc0YzFmYWQuLmNlNTQ3YzYxMmQ2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCkBAIC0yNiwxMCArMjYsMTcg
QEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlcXVlc3QuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KKyNpbmNsdWRlIDxXZWJDb3Jl
L1NoYXJlZEJ1ZmZlci5oPgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9JbnN0YW5jZUNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KIAorbmFtZXNwYWNlIElQQyB7CitjbGFzcyBEYXRh
UmVmZXJlbmNlOworfQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBSZXNvdXJjZUVycm9y
OwogY2xhc3MgUmVzb3VyY2VSZXNwb25zZTsKQEAgLTQxLDEwICs0OCwxMiBAQCBuYW1lc3BhY2Ug
V2ViS2l0IHsKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXI7CiBjbGFzcyBXZWJQYWdlUHJveHk7
CiAKK3R5cGVkZWYgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0
YVJlZmVyZW5jZSYpPiBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOworCiBjbGFzcyBXZWJVUkxT
Y2hlbWVUYXNrIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4sIHB1YmxpYyBJ
bnN0YW5jZUNvdW50ZWQ8V2ViVVJMU2NoZW1lVGFzaz4gewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKFdlYlVSTFNjaGVtZVRhc2spOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViVVJMU2No
ZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50
NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAgc3RhdGlj
IFJlZjxXZWJVUkxTY2hlbWVUYXNrPiBjcmVhdGUoV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBh
Z2VQcm94eSYsIHVpbnQ2NF90IGlkZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYm
LCBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyJiYpOwogCiAgICAgdWludDY0X3QgaWRlbnRpZmll
cigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogICAgIHVpbnQ2NF90IHBhZ2VJRCgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZUlkZW50aWZpZXI7IH0KQEAgLTY4LDcgKzc3LDkgQEAgcHVi
bGljOgogICAgIHZvaWQgcGFnZURlc3Ryb3llZCgpOwogCiBwcml2YXRlOgotICAgIFdlYlVSTFNj
aGVtZVRhc2soV2ViVVJMU2NoZW1lSGFuZGxlciYsIFdlYlBhZ2VQcm94eSYsIHVpbnQ2NF90IGlk
ZW50aWZpZXIsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICBXZWJVUkxTY2hlbWVU
YXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlm
aWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxl
ciYmKTsKKworICAgIGJvb2wgaXNTeW5jKCkgY29uc3QgeyByZXR1cm4gISFtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcjsgfQogCiAgICAgUmVmPFdlYlVSTFNjaGVtZUhhbmRsZXI+IG1fdXJsU2NoZW1l
SGFuZGxlcjsKICAgICBXZWJQYWdlUHJveHkqIG1fcGFnZTsKQEAgLTc5LDYgKzkwLDEwIEBAIHBy
aXZhdGU6CiAgICAgYm9vbCBtX3Jlc3BvbnNlU2VudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2Rh
dGFTZW50IHsgZmFsc2UgfTsKICAgICBib29sIG1fY29tcGxldGVkIHsgZmFsc2UgfTsKKyAgICAK
KyAgICBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyIG1fc3luY0NvbXBsZXRpb25IYW5kbGVyOwor
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9zeW5jUmVzcG9uc2U7CisgICAgUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gbV9zeW5jRGF0YTsKIH07CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2Vi
TG9hZGVyU3RyYXRlZ3kuY3BwCmluZGV4IDk1OTk4YTVhZjIzLi4xNWNiOTliN2E3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3ku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0
ZWd5LmNwcApAQCAtNDczLDYgKzQ3MywyNiBAQCBzdGF0aWMgYm9vbCBzaG91bGRDbGVhclJlZmVy
cmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0KEZyYW1lKiBmcmFtZSkKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAorc3RkOjpvcHRpb25hbDxXZWJMb2FkZXJTdHJhdGVneTo6U3luY0xvYWRSZXN1bHQ+IFdl
YkxvYWRlclN0cmF0ZWd5Ojp0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2NoZW1lSGFu
ZGxlcihGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIFJlc291cmNlTG9hZElkZW50aWZpZXIgaWRl
bnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQoreworICAgIGF1dG8qIHdl
YkZyYW1lTG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5j
bGllbnQoKSk7CisgICAgYXV0byogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdl
YkZyYW1lTG9hZGVyQ2xpZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKKyAgICBhdXRvKiB3ZWJQ
YWdlID0gd2ViRnJhbWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKKyAgICBpZiAoIXdl
YlBhZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBhdXRvKiBoYW5kbGVy
ID0gd2ViUGFnZS0+dXJsU2NoZW1lSGFuZGxlckZvclNjaGVtZShyZXF1ZXN0LnVybCgpLnByb3Rv
Y29sKCkudG9TdHJpbmdXaXRob3V0Q29weWluZygpKTsKKyAgICBpZiAoIWhhbmRsZXIpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBMT0coTmV0d29ya1NjaGVkdWxpbmcsICIo
V2ViUHJvY2VzcykgV2ViTG9hZGVyU3RyYXRlZ3k6OnNjaGVkdWxlTG9hZCwgc3luYyBsb2FkIHRv
IFVSTCAnJXMnIHdpbGwgYmUgaGFuZGxlZCBieSBhIFVJUHJvY2VzcyBVUkwgc2NoZW1lIGhhbmRs
ZXIuIiwgcmVxdWVzdC51cmwoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKKworICAgIFN5bmNM
b2FkUmVzdWx0IHJlc3VsdDsKKyAgICBoYW5kbGVyLT5sb2FkU3luY2hyb25vdXNseShpZGVudGlm
aWVyLCByZXF1ZXN0LCByZXN1bHQucmVzcG9uc2UsIHJlc3VsdC5lcnJvciwgcmVzdWx0LmRhdGEp
OworCisgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0KTsKK30KKwogdm9pZCBXZWJMb2FkZXJTdHJh
dGVneTo6bG9hZFJlc291cmNlU3luY2hyb25vdXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIs
IHVuc2lnbmVkIGxvbmcgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3VyY2VSZXF1
ZXN0JiByZXF1ZXN0LCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVudENyZWRlbnRpYWxQb2xp
Y3ksICBjb25zdCBGZXRjaE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEhUVFBIZWFkZXJNYXAmIG9y
aWdpbmFsUmVxdWVzdEhlYWRlcnMsIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3Bv
bnNlJiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIGF1dG8qIGRvY3VtZW50
ID0gZnJhbWVMb2FkZXIuZnJhbWUoKS5kb2N1bWVudCgpOwpAQCAtNDgxLDYgKzUwMSwxMyBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5Ojpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5KEZyYW1lTG9h
ZGVyJiBmcmFtZUxvYWRlciwgdW5zaQogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgaWYg
KGF1dG8gc3luY0xvYWRSZXN1bHQgPSB0cnlMb2FkaW5nU3luY2hyb25vdXNseVVzaW5nVVJMU2No
ZW1lSGFuZGxlcihmcmFtZUxvYWRlciwgcmVzb3VyY2VMb2FkSWRlbnRpZmllciwgcmVxdWVzdCkp
IHsKKyAgICAgICAgZXJyb3IgPSBXVEZNb3ZlKHN5bmNMb2FkUmVzdWx0LT5lcnJvcik7CisgICAg
ICAgIHJlc3BvbnNlID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+cmVzcG9uc2UpOworICAgICAg
ICBkYXRhID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+ZGF0YSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKICAgICBXZWJGcmFtZUxvYWRlckNsaWVudCogd2ViRnJhbWVMb2FkZXJDbGllbnQg
PSB0b1dlYkZyYW1lTG9hZGVyQ2xpZW50KGZyYW1lTG9hZGVyLmNsaWVudCgpKTsKICAgICBXZWJG
cmFtZSogd2ViRnJhbWUgPSB3ZWJGcmFtZUxvYWRlckNsaWVudCA/IHdlYkZyYW1lTG9hZGVyQ2xp
ZW50LT53ZWJGcmFtZSgpIDogbnVsbHB0cjsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gd2ViRnJh
bWUgPyB3ZWJGcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCmluZGV4IDA5ODNmNDIxMGZm
Li41YjdlOTdmYzkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0
d29yay9XZWJMb2FkZXJTdHJhdGVneS5oCkBAIC0yNyw3ICsyNyw5IEBACiAKICNpbmNsdWRlICJX
ZWJSZXNvdXJjZUxvYWRlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvTG9hZGVyU3RyYXRlZ3kuaD4K
KyNpbmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlRXJyb3IuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1Jl
c291cmNlTG9hZGVyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgogCkBAIC05
MCw2ICs5MiwxMyBAQCBwcml2YXRlOgogICAgIHZvaWQgaW50ZXJuYWxseUZhaWxlZExvYWRUaW1l
ckZpcmVkKCk7CiAgICAgdm9pZCBzdGFydExvY2FsTG9hZChXZWJDb3JlOjpSZXNvdXJjZUxvYWRl
ciYpOwogICAgIGJvb2wgdHJ5TG9hZGluZ1VzaW5nVVJMU2NoZW1lSGFuZGxlcihXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlciYpOworICAgIAorICAgIHN0cnVjdCBTeW5jTG9hZFJlc3VsdCB7CisgICAg
ICAgIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2U7CisgICAgICAgIFdlYkNvcmU6
OlJlc291cmNlRXJyb3IgZXJyb3I7CisgICAgICAgIFZlY3RvcjxjaGFyPiBkYXRhOworICAgIH07
CisgICAgc3RkOjpvcHRpb25hbDxTeW5jTG9hZFJlc3VsdD4gdHJ5TG9hZGluZ1N5bmNocm9ub3Vz
bHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoV2ViQ29yZTo6RnJhbWVMb2FkZXImLCBSZXNvdXJjZUxv
YWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsKIAogICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgcmVzcG9uc2VGcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmll
cih1aW50NjRfdCByZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBmaW5hbDsKICAgICBWZWN0b3I8V2Vi
Q29yZTo6TmV0d29ya1RyYW5zYWN0aW9uSW5mb3JtYXRpb24+IGludGVybWVkaWF0ZUxvYWRJbmZv
cm1hdGlvbkZyb21SZXNvdXJjZUxvYWRJZGVudGlmaWVyKHVpbnQ2NF90IHJlc291cmNlTG9hZElk
ZW50aWZpZXIpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKaW5kZXggY2RiNDNmYjll
YWYuLmFkMjAyNmE1Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAKQEAgLTI2LDEwICsy
NiwxOCBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIldlYlVSTFNjaGVtZUhhbmRs
ZXJQcm94eS5oIgogCisjaW5jbHVkZSAiRGF0YVJlZmVyZW5jZS5oIgorI2luY2x1ZGUgIlVSTFNj
aGVtZVRhc2tQYXJhbWV0ZXJzLmgiCisjaW5jbHVkZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgi
CiAjaW5jbHVkZSAiV2ViRXJyb3JzLmgiCiAjaW5jbHVkZSAiV2ViTG9hZGVyU3RyYXRlZ3kuaCIK
KyNpbmNsdWRlICJXZWJQYWdlLmgiCisjaW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIK
ICNpbmNsdWRlICJXZWJQcm9jZXNzLmgiCisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9y
Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNv
cmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNl
Lmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC01NSw2ICs2MywxOCBAQCB2b2lk
IFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6c3RhcnROZXdUYXNrKFJlc291cmNlTG9hZGVyJiBs
b2FkZXIpCiAgICAgcmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS0+c3RhcnRMb2FkaW5nKCk7CiB9CiAK
K3ZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5Ojpsb2FkU3luY2hyb25vdXNseShSZXNvdXJj
ZUxvYWRJZGVudGlmaWVyIGxvYWRJZGVudGlmaWVyLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJl
cXVlc3QsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
VmVjdG9yPGNoYXI+JiBkYXRhKQoreworICAgIElQQzo6RGF0YVJlZmVyZW5jZSBkYXRhUmVmZXJl
bmNlOworICAgIGlmICghbV93ZWJQYWdlLnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgeyBt
X2lkZW50aWZpZXIsIGxvYWRJZGVudGlmaWVyLCByZXF1ZXN0IH0pLCBNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpSZXBseShyZXNwb25zZSwgZXJy
b3IsIGRhdGFSZWZlcmVuY2UpKSkgeworICAgICAgICBlcnJvciA9IGZhaWxlZEN1c3RvbVByb3Rv
Y29sU3luY0xvYWQocmVxdWVzdCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAg
ZGF0YS5yZXNpemUoZGF0YVJlZmVyZW5jZS5zaXplKCkpOworICAgIG1lbWNweShkYXRhLmRhdGEo
KSwgZGF0YVJlZmVyZW5jZS5kYXRhKCksIGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKK30KKwogdm9p
ZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0b3BBbGxUYXNrcygpCiB7CiAgICAgd2hpbGUg
KCFtX3Rhc2tzLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKaW5kZXggNzQyNDE1Yzc3
MWEuLmQ4ZTM3N2E3NWM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaApAQCAtMzksNiArMzksNyBA
QCBjbGFzcyBSZXNvdXJjZVJlcXVlc3Q7CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2Vi
UGFnZTsKK3R5cGVkZWYgdWludDY0X3QgUmVzb3VyY2VMb2FkSWRlbnRpZmllcjsKIAogY2xhc3Mg
V2ViVVJMU2NoZW1lSGFuZGxlclByb3h5IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViVVJMU2NoZW1l
SGFuZGxlclByb3h5PiB7CiBwdWJsaWM6CkBAIC01MSw2ICs1Miw4IEBAIHB1YmxpYzoKICAgICB2
b2lkIHN0YXJ0TmV3VGFzayhXZWJDb3JlOjpSZXNvdXJjZUxvYWRlciYpOwogICAgIHZvaWQgc3Rv
cEFsbFRhc2tzKCk7CiAKKyAgICB2b2lkIGxvYWRTeW5jaHJvbm91c2x5KFJlc291cmNlTG9hZElk
ZW50aWZpZXIsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgVmVjdG9yPGNoYXI+Jik7CisK
ICAgICB1aW50NjRfdCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9
CiAgICAgV2ViUGFnZSYgcGFnZSgpIHsgcmV0dXJuIG1fd2ViUGFnZTsgfQogCmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzM2OWFmZWFhYjYuLjQ3
YmY2Njc3ZmQ0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTgtMDYtMjIgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25A
YXBwbGUuY29tPgorCisgICAgICAgIFdLVVJMU2NoZW1lSGFuZGxlciBkb2Vzbid0IGhhbmRsZSBz
eW5jIFhIUi4KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQwOTU1ODg0PiBhbmQgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NjkwMgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbToKKyAgICAgICAgKC1bU3luY1NjaGVtZSB3
ZWJWaWV3OnN0YXJ0VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bU3luY1NjaGVtZSB3ZWJW
aWV3OnN0b3BVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtTeW5jTWVzc2FnZUhhbmRsZXIg
dXNlckNvbnRlbnRDb250cm9sbGVyOmRpZFJlY2VpdmVTY3JpcHRNZXNzYWdlOl0pOgorICAgICAg
ICAoY2F0Y2gpOgorCiAyMDE4LTA2LTE5ICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNv
bT4KIAogICAgICAgICBRdWV1ZVN0YXR1c1NlcnZlcjogIidOb25lVHlwZScgb2JqZWN0IGhhcyBu
byBhdHRyaWJ1dGUgJ21lc3NhZ2UnIiBpbiBSZWxlYXNlUGF0Y2guZ2V0KCkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVy
LTEubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2NoZW1l
SGFuZGxlci0xLm1tCmluZGV4IDQxMmU3N2Y1MTBhLi5mMGU2ODk3YTAzNSAxMDA2NDQKLS0tIGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS1VSTFNjaGVtZUhhbmRsZXIt
MS5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tCkBAIC0zMSw4ICszMSwxMSBAQAogI2ltcG9ydCA8V2ViS2l0L1dLVVJM
U2NoZW1lVGFza1ByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdDb25maWd1cmF0
aW9uUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8d3RmL0hh
c2hNYXAuaD4KICNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KICNpbXBvcnQgPHd0Zi9WZWN0b3Iu
aD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgogCiAjaWYgV0tfQVBJX0VOQUJMRUQKIApAQCAtNDA5LDQgKzQxMiwxMzEgQEAg
VEVTVChVUkxTY2hlbWVIYW5kbGVyLCBFeGNlcHRpb25zKQogICAgIGNoZWNrQ2FsbFNlcXVlbmNl
KHtDb21tYW5kOjpSZXNwb25zZSwgQ29tbWFuZDo6RmluaXNoLCBDb21tYW5kOjpFcnJvcn0sIFNo
b3VsZFJhaXNlRXhjZXB0aW9uOjpZZXMpOwogfQogCi0jZW5kaWYKK3N0cnVjdCBTY2hlbWVSZXNv
dXJjZUluZm8geworICAgIFJldGFpblB0cjxOU1N0cmluZz4gbWltZVR5cGU7CisgICAgY29uc3Qg
Y2hhciogZGF0YTsKKyAgICBib29sIHNob3VsZFJlc3BvbmQ7Cit9OworCitzdGF0aWMgYm9vbCBz
dGFydGVkWEhSOworc3RhdGljIGJvb2wgcmVjZWl2ZWRTdG9wOworCitAaW50ZXJmYWNlIFN5bmNT
Y2hlbWUgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVIYW5kbGVyPiB7CitAcHVibGljCisgICAgSGFz
aE1hcDxTdHJpbmcsIFNjaGVtZVJlc291cmNlSW5mbz4gcmVzb3VyY2VzOworfQorQGVuZAorCitA
aW1wbGVtZW50YXRpb24gU3luY1NjaGVtZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNrCit7
CisgICAgYXV0byBlbnRyeSA9IHJlc291cmNlcy5maW5kKFt0YXNrLnJlcXVlc3QuVVJMIGFic29s
dXRlU3RyaW5nXSk7CisgICAgaWYgKGVudHJ5ID09IHJlc291cmNlcy5lbmQoKSkgeworICAgICAg
ICBOU0xvZyhAIkRpZCBub3QgZmluZCByZXNvdXJjZSBlbnRyeSBmb3IgVVJMICVAIiwgdGFzay5y
ZXF1ZXN0LlVSTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoZW50cnktPmtl
eSA9PSAic3luY3hocjovL2hvc3QvdGVzdC5kYXQiKQorICAgICAgICBzdGFydGVkWEhSID0gdHJ1
ZTsKKworICAgIGlmICghZW50cnktPnZhbHVlLnNob3VsZFJlc3BvbmQpCisgICAgICAgIHJldHVy
bjsKKyAgICAKKyAgICBSZXRhaW5QdHI8TlNVUkxSZXNwb25zZT4gcmVzcG9uc2UgPSBhZG9wdE5T
KFtbTlNVUkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6dGFzay5yZXF1ZXN0LlVSTCBNSU1F
VHlwZTplbnRyeS0+dmFsdWUubWltZVR5cGUuZ2V0KCkgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEg
dGV4dEVuY29kaW5nTmFtZTpuaWxdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVz
cG9uc2UuZ2V0KCldOworCisgICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W05TRGF0YSBkYXRhV2l0
aEJ5dGVzTm9Db3B5Oih2b2lkKillbnRyeS0+dmFsdWUuZGF0YSBsZW5ndGg6c3RybGVuKGVudHJ5
LT52YWx1ZS5kYXRhKSBmcmVlV2hlbkRvbmU6Tk9dXTsKKyAgICBbdGFzayBkaWRGaW5pc2hdOwor
CisgICAgaWYgKGVudHJ5LT5rZXkgPT0gInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0IikKKyAgICAg
ICAgc3RhcnRlZFhIUiA9IGZhbHNlOworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAq
KXdlYlZpZXcgc3RvcFVSTFNjaGVtZVRhc2s6KGlkIDxXS1VSTFNjaGVtZVRhc2s+KXRhc2sKK3sK
KyAgICBFWFBFQ1RfVFJVRShbW3Rhc2sucmVxdWVzdC5VUkwgYWJzb2x1dGVTdHJpbmddIGlzRXF1
YWxUb1N0cmluZzpAInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0Il0pOworICAgIHJlY2VpdmVkU3Rv
cCA9IHRydWU7Cit9CisKK0BlbmQKKworc3RhdGljIFJldGFpblB0cjxOU011dGFibGVBcnJheT4g
cmVjZWl2ZWRNZXNzYWdlcyA9IGFkb3B0TlMoW0BbXSBtdXRhYmxlQ29weV0pOworc3RhdGljIGJv
b2wgcmVjZWl2ZWRNZXNzYWdlOworCitAaW50ZXJmYWNlIFN5bmNNZXNzYWdlSGFuZGxlciA6IE5T
T2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24g
U3luY01lc3NhZ2VIYW5kbGVyCistICh2b2lkKXVzZXJDb250ZW50Q29udHJvbGxlcjooV0tVc2Vy
Q29udGVudENvbnRyb2xsZXIgKil1c2VyQ29udGVudENvbnRyb2xsZXIgZGlkUmVjZWl2ZVNjcmlw
dE1lc3NhZ2U6KFdLU2NyaXB0TWVzc2FnZSAqKW1lc3NhZ2UKK3sKKyAgICBpZiAoW21lc3NhZ2Ug
Ym9keV0pCisgICAgICAgIFtyZWNlaXZlZE1lc3NhZ2VzIGFkZE9iamVjdDpbbWVzc2FnZSBib2R5
XV07CisgICAgZWxzZQorICAgICAgICBbcmVjZWl2ZWRNZXNzYWdlcyBhZGRPYmplY3Q6QCIiXTsK
KworICAgIHJlY2VpdmVkTWVzc2FnZSA9IHRydWU7Cit9CitAZW5kCisKK3N0YXRpYyBjb25zdCBj
aGFyKiBzeW5jTWFpbkJ5dGVzID0gUiJTWU5DUkVTT1VSQ0UoCis8c2NyaXB0PgorCit2YXIgcmVx
ID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CityZXEub3BlbigiR0VUIiwgInRlc3QuZGF0IiwgZmFs
c2UpOwordHJ5Cit7CisgICAgcmVxLnNlbmQobnVsbCk7CisgICAgd2luZG93LndlYmtpdC5tZXNz
YWdlSGFuZGxlcnMuc3luYy5wb3N0TWVzc2FnZShyZXEucmVzcG9uc2VUZXh0KTsKK30KK2NhdGNo
IChlKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN5bmMucG9zdE1lc3Nh
Z2UoIkZhaWxlZCBzeW5jIFhIUiBsb2FkIik7Cit9CisKKzwvc2NyaXB0PgorKVNZTkNSRVNPVVJD
RSI7CisKK3N0YXRpYyBjb25zdCBjaGFyKiBzeW5jWEhSQnl0ZXMgPSAiTXkgWEhSIHRleHQhIjsK
KworVEVTVChVUkxTY2hlbWVIYW5kbGVyLCBTeW5jWEhSKQoreworICAgIGF1dG8gKnBvb2wgPSBb
W05TQXV0b3JlbGVhc2VQb29sIGFsbG9jXSBpbml0XTsKKworICAgIGF1dG8gd2ViVmlld0NvbmZp
Z3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gaGFuZGxlciA9IGFkb3B0TlMoW1tTeW5jU2NoZW1lIGFsbG9jXSBpbml0XSk7
CisgICAgW3dlYlZpZXdDb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6aGFuZGxlci5n
ZXQoKSBmb3JVUkxTY2hlbWU6QCJzeW5jeGhyIl07CisgICAgCisgICAgaGFuZGxlci5nZXQoKS0+
cmVzb3VyY2VzLnNldCgic3luY3hocjovL2hvc3QvbWFpbi5odG1sIiwgU2NoZW1lUmVzb3VyY2VJ
bmZvIHsgQCJ0ZXh0L2h0bWwiLCBzeW5jTWFpbkJ5dGVzLCB0cnVlIH0pOworICAgIGhhbmRsZXIu
Z2V0KCktPnJlc291cmNlcy5zZXQoInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0IiwgU2NoZW1lUmVz
b3VyY2VJbmZvIHsgQCJ0ZXh0L3BsYWluIiwgc3luY1hIUkJ5dGVzLCB0cnVlIH0pOworCisgICAg
YXV0byBtZXNzYWdlSGFuZGxlciA9IGFkb3B0TlMoW1tTeW5jTWVzc2FnZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbW3dlYlZpZXdDb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxl
cl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN5
bmMiXTsKKyAgICAKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246
d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIE5TVVJMUmVxdWVzdCAqcmVxdWVz
dCA9IFtOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6QCJz
eW5jeGhyOi8vaG9zdC9tYWluLmh0bWwiXV07CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVx
dWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkTWVzc2FnZSk7
CisgICAgcmVjZWl2ZWRNZXNzYWdlID0gZmFsc2U7CisKKyAgICBFWFBFQ1RfRVEoKHVuc2lnbmVk
KXJlY2VpdmVkTWVzc2FnZXMuZ2V0KCkuY291bnQsICh1bnNpZ25lZCkxKTsKKyAgICBFWFBFQ1Rf
VFJVRShbcmVjZWl2ZWRNZXNzYWdlcy5nZXQoKVswXSBpc0VxdWFsVG9TdHJpbmc6QCJNeSBYSFIg
dGV4dCEiXSk7CisKKyAgICAvLyBOb3cgdHJ5IGFnYWluLCBidXQgaGFuZyB0aGUgV2ViUHJvY2Vz
cyBpbiB0aGUgcmVwbHkgdG8gdGhlIFhIUiBieSB0ZWxsaW5nIHRoZSBzY2hlbWUgaGFuZGxlciB0
byBuZXZlcgorICAgIC8vIHJlc3BvbmQgdG8gaXQuCisgICAgaGFuZGxlci5nZXQoKS0+cmVzb3Vy
Y2VzLmZpbmQoInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0IiktPnZhbHVlLnNob3VsZFJlc3BvbmQg
PSBmYWxzZTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmc3RhcnRlZFhIUik7CisgICAgcmVjZWl2ZWRNZXNzYWdlID0g
ZmFsc2U7CisKKyAgICB3ZWJWaWV3ID0gbmlsOworICAgIFtwb29sIGRyYWluXTsKKyAgICAKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkU3RvcCk7Cit9CisKKyNlbmRpZiAv
LyBXS19BUElfRU5BQkxFRAorCg==
</data>
<flag name="review"
          id="361424"
          type_id="1"
          status="+"
          setter="cdumez"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>343378</attachid>
            <date>2018-06-22 15:42:21 -0700</date>
            <delta_ts>2018-06-22 17:34:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>29669</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZTdhZDMwY2Q4Mi4uN2Q1NzE4NzEyOTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMiBAQAorMjAxOC0wNi0yMiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+
CisKKyAgICAgICAgV0tVUkxTY2hlbWVIYW5kbGVyIGRvZXNuJ3QgaGFuZGxlIHN5bmMgWEhSLgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDA5NTU4ODQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTg2OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMg
RHVtZXouCisKKyAgICAgICAgKiBFbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3M6CisK
IDIwMTgtMDYtMTkgIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXZlcnQ6IEFkZCBsb2dnaW5nIHdoZW4gc3BsYXNoYm9hcmRkIGVuYWJsZXMgV2ViVGhyZWFk
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0
cmluZ3MgYi9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MK
aW5kZXggNjhkMTdiNjc2OWEuLjNiNWRjOWI2MWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9FbmdsaXNoLmxwcm9qL0xvY2FsaXphYmxlLnN0cmluZ3MKKysrIGIvU291cmNlL1dlYkNvcmUv
RW5nbGlzaC5scHJvai9Mb2NhbGl6YWJsZS5zdHJpbmdzCkBAIC0yNjUsNiArMjY1LDkgQEAKIC8q
IFZhbGlkYXRpb24gbWVzc2FnZSBmb3IgaW5wdXQgZm9ybSBjb250cm9scyBvZiB0eXBlICdlbWFp
bCcgdGhhdCBoYXZlIGFuIGludmFsaWQgdmFsdWUgKi8KICJFbnRlciBhbiBlbWFpbCBhZGRyZXNz
IiA9ICJFbnRlciBhbiBlbWFpbCBhZGRyZXNzIjsKIAorLyogQ3VzdG9tIHByb3RvY29sIHN5bmNo
cm9ub3VzIGxvYWQgZmFpbHVyZSBkZXNjcmlwdGlvbiAqLworIkVycm9yIGhhbmRsaW5nIHN5bmNo
cm9ub3VzIGxvYWQgd2l0aCBjdXN0b20gcHJvdG9jb2wiID0gIkVycm9yIGhhbmRsaW5nIHN5bmNo
cm9ub3VzIGxvYWQgd2l0aCBjdXN0b20gcHJvdG9jb2wiOworCiAvKiBCdXR0b24gZm9yIGV4aXRp
bmcgZnVsbCBzY3JlZW4gd2hlbiBpbiBmdWxsIHNjcmVlbiBtZWRpYSBwbGF5YmFjayAqLwogIkV4
aXQgRnVsbCBTY3JlZW4iID0gIkV4aXQgRnVsbCBTY3JlZW4iOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDEzZjNh
ZDdhYzg3Li44YzE0MTljM2Y2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
KysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0OSBAQAorMjAxOC0wNi0y
MiAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tVUkxTY2hl
bWVIYW5kbGVyIGRvZXNuJ3QgaGFuZGxlIHN5bmMgWEhSLgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vNDA5NTU4ODQ+IGFuZCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTg2OTAyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgQ2hyaXMgRHVtZXouCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbGxvd3MgV2ViUHJvY2Vzc2VzIHRvIGJsb2NrIG9uIHN5bmMgbG9hZHMgdG8gYSBj
dXN0b20gc2NoZW1lLAorICAgICAgICBhbmQgdGVhY2hlcyBXZWJVUkxTY2hlbWVUYXNrcyBob3cg
dG8gYnVmZmVyIHVwIGRhdGEgYW5kIHRoZSByZXNwb25zZSBpZiAKKyAgICAgICAgb3BlcmF0aW5n
IHN5bmNocm9ub3VzbHkuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViRXJyb3JzLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6ZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9hZCk6CisgICAgICAgICogU2hh
cmVkL1dlYkVycm9ycy5oOgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhcnRVUkxTY2hlbWVUYXNrKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpsb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNr
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbjoKKworICAgICAgICAqIFVJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVVJMU2NoZW1lSGFuZGxl
cjo6c3RhcnRUYXNrKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lSGFuZGxlci5o
OgorCisgICAgICAgICogVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJV
UkxTY2hlbWVUYXNrOjpXZWJVUkxTY2hlbWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViVVJM
U2NoZW1lVGFzazo6ZGlkUGVyZm9ybVJlZGlyZWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZVJlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxT
Y2hlbWVUYXNrOjpkaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZVRh
c2s6OnBhZ2VEZXN0cm95ZWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjpz
dG9wKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oOgorICAgICAgICAo
V2ViS2l0OjpXZWJVUkxTY2hlbWVUYXNrOjppc1N5bmMgY29uc3QpOgorCisgICAgICAgICogV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
V2ViTG9hZGVyU3RyYXRlZ3k6OnRyeUxvYWRpbmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVI
YW5kbGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJj
ZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJT
dHJhdGVneS5oOgorCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhh
bmRsZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlVSTFNjaGVtZUhhbmRsZXJQcm94
eTo6bG9hZFN5bmNocm9ub3VzbHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaDoKKwogMjAxOC0wNi0xOSAgV2Vuc29uIEhzaWVoICA8d2Vu
c29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbV2ViS2l0IG9uIHdhdGNoT1NdIFZlbmQg
dXNlcm5hbWUgdGV4dCBjb250ZW50IHR5cGUgd2hlbiB1c2luZyBzY3JpYmJsZSBpbiBsb2dpbiBm
aWVsZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jl
c291cmNlTG9hZGVyLmNwcAppbmRleCA0ZDUxYmE3NTAyMS4uNDg5MzU0ZTdmMGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Jlc291cmNlTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtSZXNvdXJjZUxvYWRl
ci5jcHAKQEAgLTk5MSw3ICs5OTEsNyBAQCBzdGF0aWMgdm9pZCBsb2dCbG9ja2VkQ29va2llSW5m
b3JtYXRpb24oY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qgdm9pZCogbG9nZ2VkTwogICAgIExP
Q0FMX0xPRyhSIiggICJpc1NhbWVTaXRlIjogIiV7cHVibGljfXMiLCkiLCBzYW1lU2l0ZUluZm8u
aXNTYW1lU2l0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAgIExPQ0FMX0xPRyhSIiggICJpc1Rv
cFNpdGUiOiAiJXtwdWJsaWN9cyIsKSIsIHNhbWVTaXRlSW5mby5pc1RvcFNpdGUgPyAidHJ1ZSIg
OiAiZmFsc2UiKTsKICAgICBMT0NBTF9MT0coUiIoICAiY29va2llcyI6IFtdKSIpOwotICAgIExP
Q0FMX0xPRyhSIiggICJ9KSIpOworICAgIExPQ0FMX0xPRyhSIiggIH0pIik7CiAjdW5kZWYgTE9D
QUxfTE9HCiAjdW5kZWYgTE9DQUxfTE9HX0lGX0FMTE9XRUQKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJF
cnJvcnMuY3BwCmluZGV4IDhmMTVjZDMwYzVjLi5iNmRjNTBjZWI1NSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJFcnJvcnMuY3BwCkBAIC01Nyw2ICs1NywxMSBAQCBSZXNvdXJjZUVycm9yIGludGVycnVw
dGVkRm9yUG9saWN5Q2hhbmdlRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KQog
ICAgIHJldHVybiBSZXNvdXJjZUVycm9yKEFQSTo6RXJyb3I6OndlYktpdFBvbGljeUVycm9yRG9t
YWluKCksIEFQSTo6RXJyb3I6OlBvbGljeTo6RnJhbWVMb2FkSW50ZXJydXB0ZWRCeVBvbGljeUNo
YW5nZSwgcmVxdWVzdC51cmwoKSwgV0VCX1VJX1NUUklORygiRnJhbWUgbG9hZCBpbnRlcnJ1cHRl
ZCIsICJXZWJLaXRFcnJvckZyYW1lTG9hZEludGVycnVwdGVkQnlQb2xpY3lDaGFuZ2UgZGVzY3Jp
cHRpb24iKSk7CiB9CiAKK1Jlc291cmNlRXJyb3IgZmFpbGVkQ3VzdG9tUHJvdG9jb2xTeW5jTG9h
ZChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpCit7CisgICAgcmV0dXJuIFJlc291cmNl
RXJyb3IoZXJyb3JEb21haW5XZWJLaXRJbnRlcm5hbCwgMCwgcmVxdWVzdC51cmwoKSwgV0VCX1VJ
X1NUUklORygiRXJyb3IgaGFuZGxpbmcgc3luY2hyb25vdXMgbG9hZCB3aXRoIGN1c3RvbSBwcm90
b2NvbCIsICJDdXN0b20gcHJvdG9jb2wgc3luY2hyb25vdXMgbG9hZCBmYWlsdXJlIGRlc2NyaXB0
aW9uIikpOworfQorCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogUmVzb3VyY2VFcnJv
ciBibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1
ZXN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViRXJyb3JzLmggYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJFcnJvcnMuaAppbmRleCA1OTNlYTg4NTM3ZC4uMjdkMTRl
MzFiMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYkVycm9ycy5oCkBAIC00MSw2ICs0MSw3IEBAIFdlYkNv
cmU6OlJlc291cmNlRXJyb3IgYmxvY2tlZEVycm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBibG9ja2VkQnlDb250ZW50QmxvY2tlckVy
cm9yKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBjYW5ub3RTaG93VVJMRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7
CiBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGludGVycnVwdGVkRm9yUG9saWN5Q2hhbmdlRXJyb3Io
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CitXZWJDb3JlOjpSZXNvdXJjZUVycm9y
IGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0Jik7CiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQogV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBibG9ja2VkQnlDb250ZW50RmlsdGVyRXJyb3IoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0Jik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CmluZGV4IGI5YWYxZDZiZmY5Li5jNDQ0YzA0NTc0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwCkBAIC03NTg2LDcgKzc1ODYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6c3RhcnRVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQYXJhbWV0ZXJzJiYgcGFyYW1ldGVy
cykKICAgICBhdXRvIGl0ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5m
aW5kKHBhcmFtZXRlcnMuaGFuZGxlcklkZW50aWZpZXIpOwogICAgIE1FU1NBR0VfQ0hFQ0soaXRl
cmF0b3IgIT0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CiAKLSAgICBp
dGVyYXRvci0+dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcGFyYW1ldGVycy50YXNrSWRlbnRpZmll
ciwgV1RGTW92ZShwYXJhbWV0ZXJzLnJlcXVlc3QpKTsKKyAgICBpdGVyYXRvci0+dmFsdWUtPnN0
YXJ0VGFzaygqdGhpcywgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92ZShwYXJhbWV0
ZXJzLnJlcXVlc3QpLCBudWxscHRyKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnN0b3BVUkxT
Y2hlbWVUYXNrKHVpbnQ2NF90IGhhbmRsZXJJZGVudGlmaWVyLCB1aW50NjRfdCB0YXNrSWRlbnRp
ZmllcikKQEAgLTc1OTcsNiArNzU5NywxNCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c3RvcFVSTFNj
aGVtZVRhc2sodWludDY0X3QgaGFuZGxlcklkZW50aWZpZXIsIHVpbnQ2NF90IHRhc2tJZAogICAg
IGl0ZXJhdG9yLT52YWx1ZS0+c3RvcFRhc2soKnRoaXMsIHRhc2tJZGVudGlmaWVyKTsKIH0KIAor
dm9pZCBXZWJQYWdlUHJveHk6OmxvYWRTeW5jaHJvbm91c1VSTFNjaGVtZVRhc2soVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJiBwYXJhbWV0ZXJzLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpMb2Fk
U3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpEZWxheWVkUmVwbHkmJiByZXBseSkKK3sKKyAgICBh
dXRvIGl0ZXJhdG9yID0gbV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5maW5kKHBhcmFt
ZXRlcnMuaGFuZGxlcklkZW50aWZpZXIpOworICAgIE1FU1NBR0VfQ0hFQ0soaXRlcmF0b3IgIT0g
bV91cmxTY2hlbWVIYW5kbGVyc0J5SWRlbnRpZmllci5lbmQoKSk7CisKKyAgICBpdGVyYXRvci0+
dmFsdWUtPnN0YXJ0VGFzaygqdGhpcywgcGFyYW1ldGVycy50YXNrSWRlbnRpZmllciwgV1RGTW92
ZShwYXJhbWV0ZXJzLnJlcXVlc3QpLCBXVEZNb3ZlKHJlcGx5KSk7Cit9CisKICNpZiBIQVZFKENG
TkVUV09SS19TVE9SQUdFX1BBUlRJVElPTklORykKIHZvaWQgV2ViUGFnZVByb3h5OjpoYXNTdG9y
YWdlQWNjZXNzKFN0cmluZyYmIHN1YkZyYW1lSG9zdCwgU3RyaW5nJiYgdG9wRnJhbWVIb3N0LCB1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCB3ZWJQcm9jZXNzQ29udGV4dElkKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAppbmRleCBiMTA1MGM5NDA5Ny4uMmVlMmFkYjMx
NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xNzUyLDYgKzE3
NTIsNyBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBzdGFydFVSTFNjaGVtZVRhc2soVVJMU2NoZW1l
VGFza1BhcmFtZXRlcnMmJik7CiAgICAgdm9pZCBzdG9wVVJMU2NoZW1lVGFzayh1aW50NjRfdCBo
YW5kbGVySWRlbnRpZmllciwgdWludDY0X3QgdGFza0lkZW50aWZpZXIpOworICAgIHZvaWQgbG9h
ZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayhVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyYmLCBNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrOjpEZWxheWVk
UmVwbHkmJik7CiAKICAgICB2b2lkIGhhbmRsZUF1dG9GaWxsQnV0dG9uQ2xpY2soY29uc3QgVXNl
ckRhdGEmKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDdmM2M2NjgzYzYxLi40ZTFkZTVjYTIyYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtNTEzLDYgKzUx
Myw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAKICAgICBTdGFydFVSTFNjaGVtZVRh
c2soc3RydWN0IFdlYktpdDo6VVJMU2NoZW1lVGFza1BhcmFtZXRlcnMgcGFyYW1ldGVycykKICAg
ICBTdG9wVVJMU2NoZW1lVGFzayh1aW50NjRfdCBoYW5kbGVySWRlbnRpZmllciwgdWludDY0X3Qg
dGFza0lkZW50aWZpZXIpCisgICAgTG9hZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzayhzdHJ1Y3Qg
V2ViS2l0OjpVUkxTY2hlbWVUYXNrUGFyYW1ldGVycyBwYXJhbWV0ZXJzKSAtPiAoV2ViQ29yZTo6
UmVzb3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciBlcnJvciwg
SVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpIERlbGF5ZWQKIAogI2lmIEhBVkUoQ0ZORVRXT1JLX1NU
T1JBR0VfUEFSVElUSU9OSU5HKQogICAgIEhhc1N0b3JhZ2VBY2Nlc3MoU3RyaW5nIHN1YkZyYW1l
SG9zdCwgU3RyaW5nIHRvcEZyYW1lSG9zdCwgdWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgY29u
dGV4dElEKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1l
SGFuZGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVIYW5kbGVy
LmNwcAppbmRleCAxZjY4MmMxZWJlOC4uZGFiNTkzZmIyMWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuY3BwCkBAIC00OSw5ICs0OSw5IEBAIFdl
YlVSTFNjaGVtZUhhbmRsZXI6On5XZWJVUkxTY2hlbWVIYW5kbGVyKCkKICAgICBBU1NFUlQobV90
YXNrcy5pc0VtcHR5KCkpOwogfQogCi12b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXI6OnN0YXJ0VGFz
ayhXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHRhc2tJZGVudGlmaWVyLCBSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0KQordm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyOjpzdGFydFRhc2soV2Vi
UGFnZVByb3h5JiBwYWdlLCB1aW50NjRfdCB0YXNrSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0
JiYgcmVxdWVzdCwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIGF1dG8gcmVzdWx0ID0gbV90YXNrcy5hZGQodGFza0lkZW50aWZpZXIsIFdlYlVS
TFNjaGVtZVRhc2s6OmNyZWF0ZSgqdGhpcywgcGFnZSwgdGFza0lkZW50aWZpZXIsIFdURk1vdmUo
cmVxdWVzdCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IG1fdGFza3MuYWRkKHRhc2tJZGVudGlmaWVy
LCBXZWJVUkxTY2hlbWVUYXNrOjpjcmVhdGUoKnRoaXMsIHBhZ2UsIHRhc2tJZGVudGlmaWVyLCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkpOwogICAgIEFTU0VS
VChyZXN1bHQuaXNOZXdFbnRyeSk7CiAKICAgICBhdXRvIHBhZ2VFbnRyeSA9IG1fdGFza3NCeVBh
Z2VJZGVudGlmaWVyLmFkZChwYWdlLnBhZ2VJRCgpLCBIYXNoU2V0PHVpbnQ2NF90PigpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZUhhbmRsZXIuaAppbmRleCA0MWY4
MDNlMDAxMi4uYjc4NGE1M2E0YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlVSTFNjaGVtZUhhbmRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJV
UkxTY2hlbWVIYW5kbGVyLmgKQEAgLTMxLDYgKzMxLDEwIEBACiAjaW5jbHVkZSA8d3RmL1JlZkNv
dW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMgeworY2xh
c3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgUmVzb3Vy
Y2VSZXF1ZXN0OwogfQpAQCAtMzksNiArNDMsOCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViUGFnZVByb3h5OwogCit1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsK
KwogY2xhc3MgV2ViVVJMU2NoZW1lSGFuZGxlciA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNj
aGVtZUhhbmRsZXI+IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVIYW5k
bGVyKTsKIHB1YmxpYzoKQEAgLTQ2LDcgKzUyLDcgQEAgcHVibGljOgogCiAgICAgdWludDY0X3Qg
aWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQogCi0gICAgdm9pZCBz
dGFydFRhc2soV2ViUGFnZVByb3h5JiwgdWludDY0X3QgdGFza0lkZW50aWZpZXIsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmKTsKKyAgICB2b2lkIHN0YXJ0VGFzayhXZWJQYWdlUHJveHkmLCB1
aW50NjRfdCB0YXNrSWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXImJik7CiAgICAgdm9pZCBzdG9wVGFzayhXZWJQYWdlUHJveHkm
LCB1aW50NjRfdCB0YXNrSWRlbnRpZmllcik7CiAgICAgdm9pZCBzdG9wQWxsVGFza3NGb3JQYWdl
KFdlYlBhZ2VQcm94eSYpOwogICAgIHZvaWQgdGFza0NvbXBsZXRlZChXZWJVUkxTY2hlbWVUYXNr
Jik7CkBAIC02NSw2ICs3MSw4IEBAIHByaXZhdGU6CiAKICAgICBIYXNoTWFwPHVpbnQ2NF90LCBS
ZWY8V2ViVVJMU2NoZW1lVGFzaz4+IG1fdGFza3M7CiAgICAgSGFzaE1hcDx1aW50NjRfdCwgSGFz
aFNldDx1aW50NjRfdD4+IG1fdGFza3NCeVBhZ2VJZGVudGlmaWVyOworICAgIAorICAgIFN5bmNM
b2FkQ29tcGxldGlvbkhhbmRsZXIgbV9zeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyOwogCiB9OyAv
LyBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViVVJMU2NoZW1lVGFzay5jcHAKaW5kZXggNTU0OTQ4OGJkODQuLjdiMjQ3Y2NhMTFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJVUkxTY2hlbWVUYXNrLmNwcApAQCAtMjcsNiAr
MjcsNyBAQAogI2luY2x1ZGUgIldlYlVSTFNjaGVtZVRhc2suaCIKIAogI2luY2x1ZGUgIkRhdGFS
ZWZlcmVuY2UuaCIKKyNpbmNsdWRlICJXZWJFcnJvcnMuaCIKICNpbmNsdWRlICJXZWJQYWdlTWVz
c2FnZXMuaCIKICNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKICNpbmNsdWRlICJXZWJVUkxTY2hl
bWVIYW5kbGVyLmgiCkBAIC0zNSwxNyArMzYsMTggQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1SZWY8V2ViVVJMU2NoZW1lVGFzaz4gV2ViVVJMU2No
ZW1lVGFzazo6Y3JlYXRlKFdlYlVSTFNjaGVtZUhhbmRsZXImIGhhbmRsZXIsIFdlYlBhZ2VQcm94
eSYgcGFnZSwgdWludDY0X3QgcmVzb3VyY2VJZGVudGlmaWVyLCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0KQorUmVmPFdlYlVSTFNjaGVtZVRhc2s+IFdlYlVSTFNjaGVtZVRhc2s6OmNyZWF0ZShX
ZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVyLCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90
IHJlc291cmNlSWRlbnRpZmllciwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3luY0xvYWRD
b21wbGV0aW9uSGFuZGxlciYmIHN5bmNDb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBXZWJVUkxTY2hlbWVUYXNrKGhhbmRsZXIsIHBhZ2UsIHJlc291cmNlSWRl
bnRpZmllciwgV1RGTW92ZShyZXF1ZXN0KSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlVSTFNjaGVtZVRhc2soaGFuZGxlciwgcGFnZSwgcmVzb3VyY2VJZGVudGlmaWVyLCBXVEZNb3Zl
KHJlcXVlc3QpLCBXVEZNb3ZlKHN5bmNDb21wbGV0aW9uSGFuZGxlcikpKTsKIH0KIAotV2ViVVJM
U2NoZW1lVGFzazo6V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiBoYW5kbGVy
LCBXZWJQYWdlUHJveHkmIHBhZ2UsIHVpbnQ2NF90IHJlc291cmNlSWRlbnRpZmllciwgUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCkKK1dlYlVSTFNjaGVtZVRhc2s6OldlYlVSTFNjaGVtZVRhc2so
V2ViVVJMU2NoZW1lSGFuZGxlciYgaGFuZGxlciwgV2ViUGFnZVByb3h5JiBwYWdlLCB1aW50NjRf
dCByZXNvdXJjZUlkZW50aWZpZXIsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN5bmNMb2Fk
Q29tcGxldGlvbkhhbmRsZXImJiBzeW5jQ29tcGxldGlvbkhhbmRsZXIpCiAgICAgOiBtX3VybFNj
aGVtZUhhbmRsZXIoaGFuZGxlcikKICAgICAsIG1fcGFnZSgmcGFnZSkKICAgICAsIG1faWRlbnRp
ZmllcihyZXNvdXJjZUlkZW50aWZpZXIpCiAgICAgLCBtX3BhZ2VJZGVudGlmaWVyKHBhZ2UucGFn
ZUlEKCkpCiAgICAgLCBtX3JlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSkKKyAgICAsIG1fc3luY0Nv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUoc3luY0NvbXBsZXRpb25IYW5kbGVyKSkKIHsKIH0KIApA
QCAtNjMsNiArNjUsOSBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFBlcmZvcm1SZWRpcmVj
dGlvbihXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiYgcmVzcG9ucwogICAgIGlmIChtX3Jlc3Bv
bnNlU2VudCkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvblR5cGU6OlJlZGlyZWN0QWZ0ZXJSZXNw
b25zZTsKICAgICAKKyAgICBpZiAoaXNTeW5jKCkpCisgICAgICAgIG1fc3luY1Jlc3BvbnNlID0g
cmVzcG9uc2U7CisKICAgICBtX3JlcXVlc3QgPSByZXF1ZXN0OwogICAgIG1fcGFnZS0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZFBlcmZvcm1SZWRpcmVjdGlvbihtX3Vy
bFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCByZXNwb25zZSwgcmVx
dWVzdCkpOwogCkBAIC04Myw2ICs4OCwxMCBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZFJl
Y2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgLT4gRQogICAg
IG1fcmVzcG9uc2VTZW50ID0gdHJ1ZTsKIAogICAgIHJlc3BvbnNlLmluY2x1ZGVDZXJ0aWZpY2F0
ZUluZm8oKTsKKworICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9zeW5jUmVzcG9uc2UgPSBy
ZXNwb25zZTsKKwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1l
VGFza0RpZFJlY2VpdmVSZXNwb25zZShtX3VybFNjaGVtZUhhbmRsZXItPmlkZW50aWZpZXIoKSwg
bV9pZGVudGlmaWVyLCByZXNwb25zZSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb25l
OwogfQpAQCAtOTksNiArMTA4LDEzIEBAIGF1dG8gV2ViVVJMU2NoZW1lVGFzazo6ZGlkUmVjZWl2
ZURhdGEoUmVmPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyKSAtPiBFeGNlcHRpb25UeXBlCiAgICAgICAg
IHJldHVybiBFeGNlcHRpb25UeXBlOjpOb1Jlc3BvbnNlU2VudDsKIAogICAgIG1fZGF0YVNlbnQg
PSB0cnVlOworCisgICAgaWYgKGlzU3luYygpKSB7CisgICAgICAgIGlmICghbV9zeW5jRGF0YSkK
KyAgICAgICAgICAgIG1fc3luY0RhdGEgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgICAg
ICBtX3N5bmNEYXRhLT5hcHBlbmQoYnVmZmVyKTsKKyAgICB9CisKICAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OldlYlBhZ2U6OlVSTFNjaGVtZVRhc2tEaWRSZWNlaXZlRGF0YShtX3VybFNjaGVt
ZUhhbmRsZXItPmlkZW50aWZpZXIoKSwgbV9pZGVudGlmaWVyLCBJUEM6OlNoYXJlZEJ1ZmZlckRh
dGFSZWZlcmVuY2UoYnVmZmVyLnB0cigpKSkpOwogICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpO
b25lOwogfQpAQCAtMTE1LDYgKzEzMSwxMiBAQCBhdXRvIFdlYlVSTFNjaGVtZVRhc2s6OmRpZENv
bXBsZXRlKGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yKSAtPiBFeGNlcHRpb25UeXBlCiAgICAg
ICAgIHJldHVybiBFeGNlcHRpb25UeXBlOjpOb1Jlc3BvbnNlU2VudDsKIAogICAgIG1fY29tcGxl
dGVkID0gdHJ1ZTsKKyAgICAKKyAgICBpZiAoaXNTeW5jKCkpIHsKKyAgICAgICAgbV9zeW5jQ29t
cGxldGlvbkhhbmRsZXIobV9zeW5jUmVzcG9uc2UsIGVycm9yLCBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyAoY29uc3QgdWludDhfdCopbV9zeW5jRGF0YS0+ZGF0YSgpLCBtX3N5bmNEYXRhLT5zaXplKCkg
fSk7CisgICAgICAgIG1fc3luY0RhdGEgPSBudWxscHRyOworICAgIH0KKwogICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6VVJMU2NoZW1lVGFza0RpZENvbXBsZXRlKG1fdXJsU2No
ZW1lSGFuZGxlci0+aWRlbnRpZmllcigpLCBtX2lkZW50aWZpZXIsIGVycm9yKSk7CiAgICAgbV91
cmxTY2hlbWVIYW5kbGVyLT50YXNrQ29tcGxldGVkKCp0aGlzKTsKIApAQCAtMTI2LDEyICsxNDgs
MTggQEAgdm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpwYWdlRGVzdHJveWVkKCkKICAgICBBU1NFUlQo
bV9wYWdlKTsKICAgICBtX3BhZ2UgPSBudWxscHRyOwogICAgIG1fc3RvcHBlZCA9IHRydWU7Cisg
ICAgCisgICAgaWYgKGlzU3luYygpKQorICAgICAgICBtX3N5bmNDb21wbGV0aW9uSGFuZGxlcih7
IH0sIGZhaWxlZEN1c3RvbVByb3RvY29sU3luY0xvYWQobV9yZXF1ZXN0KSwgeyB9KTsKIH0KIAog
dm9pZCBXZWJVUkxTY2hlbWVUYXNrOjpzdG9wKCkKIHsKICAgICBBU1NFUlQoIW1fc3RvcHBlZCk7
CiAgICAgbV9zdG9wcGVkID0gdHJ1ZTsKKworICAgIGlmIChpc1N5bmMoKSkKKyAgICAgICAgbV9z
eW5jQ29tcGxldGlvbkhhbmRsZXIoeyB9LCBmYWlsZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKG1f
cmVxdWVzdCksIHsgfSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFzay5oCmluZGV4IDM3NTQ3NGMxZmFkLi5hZDgxZGQ1
MzJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViVVJMU2NoZW1lVGFz
ay5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlVSTFNjaGVtZVRhc2suaApAQCAt
MjYsMTAgKzI2LDE3IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3Vy
Y2VSZXF1ZXN0Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CisjaW5j
bHVkZSA8V2ViQ29yZS9TaGFyZWRCdWZmZXIuaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhh
bmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSW5zdGFuY2VDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25hbWVzcGFjZSBJUEMg
eworY2xhc3MgRGF0YVJlZmVyZW5jZTsKK30KKwogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
UmVzb3VyY2VFcnJvcjsKIGNsYXNzIFJlc291cmNlUmVzcG9uc2U7CkBAIC00MSwxMCArNDgsMTIg
QEAgbmFtZXNwYWNlIFdlYktpdCB7CiBjbGFzcyBXZWJVUkxTY2hlbWVIYW5kbGVyOwogY2xhc3Mg
V2ViUGFnZVByb3h5OwogCit1c2luZyBTeW5jTG9hZENvbXBsZXRpb25IYW5kbGVyID0gQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpPjsKKwog
Y2xhc3MgV2ViVVJMU2NoZW1lVGFzayA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlVSTFNjaGVtZVRh
c2s+LCBwdWJsaWMgSW5zdGFuY2VDb3VudGVkPFdlYlVSTFNjaGVtZVRhc2s+IHsKICAgICBXVEZf
TUFLRV9OT05DT1BZQUJMRShXZWJVUkxTY2hlbWVUYXNrKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPFdlYlVSTFNjaGVtZVRhc2s+IGNyZWF0ZShXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFn
ZVByb3h5JiwgdWludDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYp
OworICAgIHN0YXRpYyBSZWY8V2ViVVJMU2NoZW1lVGFzaz4gY3JlYXRlKFdlYlVSTFNjaGVtZUhh
bmRsZXImLCBXZWJQYWdlUHJveHkmLCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNv
dXJjZVJlcXVlc3QmJiwgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciYmKTsKIAogICAgIHVpbnQ2
NF90IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lkZW50aWZpZXI7IH0KICAgICB1aW50
NjRfdCBwYWdlSUQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJZGVudGlmaWVyOyB9CkBAIC02OCw3
ICs3Nyw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHBhZ2VEZXN0cm95ZWQoKTsKIAogcHJpdmF0ZToK
LSAgICBXZWJVUkxTY2hlbWVUYXNrKFdlYlVSTFNjaGVtZUhhbmRsZXImLCBXZWJQYWdlUHJveHkm
LCB1aW50NjRfdCBpZGVudGlmaWVyLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJik7CisgICAg
V2ViVVJMU2NoZW1lVGFzayhXZWJVUkxTY2hlbWVIYW5kbGVyJiwgV2ViUGFnZVByb3h5JiwgdWlu
dDY0X3QgaWRlbnRpZmllciwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIFN5bmNMb2FkQ29t
cGxldGlvbkhhbmRsZXImJik7CisKKyAgICBib29sIGlzU3luYygpIGNvbnN0IHsgcmV0dXJuICEh
bV9zeW5jQ29tcGxldGlvbkhhbmRsZXI7IH0KIAogICAgIFJlZjxXZWJVUkxTY2hlbWVIYW5kbGVy
PiBtX3VybFNjaGVtZUhhbmRsZXI7CiAgICAgV2ViUGFnZVByb3h5KiBtX3BhZ2U7CkBAIC03OSw2
ICs5MCwxMCBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9yZXNwb25zZVNlbnQgeyBmYWxzZSB9Owog
ICAgIGJvb2wgbV9kYXRhU2VudCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2NvbXBsZXRlZCB7IGZh
bHNlIH07CisgICAgCisgICAgU3luY0xvYWRDb21wbGV0aW9uSGFuZGxlciBtX3N5bmNDb21wbGV0
aW9uSGFuZGxlcjsKKyAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fc3luY1Jlc3BvbnNl
OworICAgIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IG1fc3luY0RhdGE7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA5NTk5OGE1YWYyMy4uMTVjYjk5
YjdhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxv
YWRlclN0cmF0ZWd5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJMb2FkZXJTdHJhdGVneS5jcHAKQEAgLTQ3Myw2ICs0NzMsMjYgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQ2xlYXJSZWZlcnJlck9uSFRUUFNUb0hUVFBSZWRpcmVjdChGcmFtZSogZnJhbWUpCiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKK3N0ZDo6b3B0aW9uYWw8V2ViTG9hZGVyU3RyYXRlZ3k6OlN5bmNM
b2FkUmVzdWx0PiBXZWJMb2FkZXJTdHJhdGVneTo6dHJ5TG9hZGluZ1N5bmNocm9ub3VzbHlVc2lu
Z1VSTFNjaGVtZUhhbmRsZXIoRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyLCBSZXNvdXJjZUxvYWRJ
ZGVudGlmaWVyIGlkZW50aWZpZXIsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkKK3sK
KyAgICBhdXRvKiB3ZWJGcmFtZUxvYWRlckNsaWVudCA9IHRvV2ViRnJhbWVMb2FkZXJDbGllbnQo
ZnJhbWVMb2FkZXIuY2xpZW50KCkpOworICAgIGF1dG8qIHdlYkZyYW1lID0gd2ViRnJhbWVMb2Fk
ZXJDbGllbnQgPyB3ZWJGcmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7Cisg
ICAgYXV0byogd2ViUGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7
CisgICAgaWYgKCF3ZWJQYWdlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
YXV0byogaGFuZGxlciA9IHdlYlBhZ2UtPnVybFNjaGVtZUhhbmRsZXJGb3JTY2hlbWUocmVxdWVz
dC51cmwoKS5wcm90b2NvbCgpLnRvU3RyaW5nV2l0aG91dENvcHlpbmcoKSk7CisgICAgaWYgKCFo
YW5kbGVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTE9HKE5ldHdvcmtT
Y2hlZHVsaW5nLCAiKFdlYlByb2Nlc3MpIFdlYkxvYWRlclN0cmF0ZWd5OjpzY2hlZHVsZUxvYWQs
IHN5bmMgbG9hZCB0byBVUkwgJyVzJyB3aWxsIGJlIGhhbmRsZWQgYnkgYSBVSVByb2Nlc3MgVVJM
IHNjaGVtZSBoYW5kbGVyLiIsIHJlcXVlc3QudXJsKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7
CisKKyAgICBTeW5jTG9hZFJlc3VsdCByZXN1bHQ7CisgICAgaGFuZGxlci0+bG9hZFN5bmNocm9u
b3VzbHkoaWRlbnRpZmllciwgcmVxdWVzdCwgcmVzdWx0LnJlc3BvbnNlLCByZXN1bHQuZXJyb3Is
IHJlc3VsdC5kYXRhKTsKKworICAgIHJldHVybiBXVEZNb3ZlKHJlc3VsdCk7Cit9CisKIHZvaWQg
V2ViTG9hZGVyU3RyYXRlZ3k6OmxvYWRSZXNvdXJjZVN5bmNocm9ub3VzbHkoRnJhbWVMb2FkZXIm
IGZyYW1lTG9hZGVyLCB1bnNpZ25lZCBsb25nIHJlc291cmNlTG9hZElkZW50aWZpZXIsIGNvbnN0
IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjbGllbnRD
cmVkZW50aWFsUG9saWN5LCAgY29uc3QgRmV0Y2hPcHRpb25zJiBvcHRpb25zLCBjb25zdCBIVFRQ
SGVhZGVyTWFwJiBvcmlnaW5hbFJlcXVlc3RIZWFkZXJzLCBSZXNvdXJjZUVycm9yJiBlcnJvciwg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIFZlY3RvcjxjaGFyPiYgZGF0YSkKIHsKICAgICBh
dXRvKiBkb2N1bWVudCA9IGZyYW1lTG9hZGVyLmZyYW1lKCkuZG9jdW1lbnQoKTsKQEAgLTQ4MSw2
ICs1MDEsMTMgQEAgdm9pZCBXZWJMb2FkZXJTdHJhdGVneTo6bG9hZFJlc291cmNlU3luY2hyb25v
dXNseShGcmFtZUxvYWRlciYgZnJhbWVMb2FkZXIsIHVuc2kKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAorICAgIGlmIChhdXRvIHN5bmNMb2FkUmVzdWx0ID0gdHJ5TG9hZGluZ1N5bmNocm9ub3Vz
bHlVc2luZ1VSTFNjaGVtZUhhbmRsZXIoZnJhbWVMb2FkZXIsIHJlc291cmNlTG9hZElkZW50aWZp
ZXIsIHJlcXVlc3QpKSB7CisgICAgICAgIGVycm9yID0gV1RGTW92ZShzeW5jTG9hZFJlc3VsdC0+
ZXJyb3IpOworICAgICAgICByZXNwb25zZSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPnJlc3Bv
bnNlKTsKKyAgICAgICAgZGF0YSA9IFdURk1vdmUoc3luY0xvYWRSZXN1bHQtPmRhdGEpOworICAg
ICAgICByZXR1cm47CisgICAgfQorCiAgICAgV2ViRnJhbWVMb2FkZXJDbGllbnQqIHdlYkZyYW1l
TG9hZGVyQ2xpZW50ID0gdG9XZWJGcmFtZUxvYWRlckNsaWVudChmcmFtZUxvYWRlci5jbGllbnQo
KSk7CiAgICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gd2ViRnJhbWVMb2FkZXJDbGllbnQgPyB3ZWJG
cmFtZUxvYWRlckNsaWVudC0+d2ViRnJhbWUoKSA6IG51bGxwdHI7CiAgICAgV2ViUGFnZSogd2Vi
UGFnZSA9IHdlYkZyYW1lID8gd2ViRnJhbWUtPnBhZ2UoKSA6IG51bGxwdHI7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaAppbmRl
eCAwOTgzZjQyMTBmZi4uNWI3ZTk3ZmM5MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmgKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuaApAQCAtMjcsNyArMjcsOSBAQAog
CiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0xvYWRl
clN0cmF0ZWd5Lmg+CisjaW5jbHVkZSA8V2ViQ29yZS9SZXNvdXJjZUVycm9yLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9SZXNvdXJjZUxvYWRlci5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VS
ZXNwb25zZS5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxv
b3AuaD4KIApAQCAtOTAsNiArOTIsMTMgQEAgcHJpdmF0ZToKICAgICB2b2lkIGludGVybmFsbHlG
YWlsZWRMb2FkVGltZXJGaXJlZCgpOwogICAgIHZvaWQgc3RhcnRMb2NhbExvYWQoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXImKTsKICAgICBib29sIHRyeUxvYWRpbmdVc2luZ1VSTFNjaGVtZUhhbmRs
ZXIoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsKKyAgICAKKyAgICBzdHJ1Y3QgU3luY0xvYWRS
ZXN1bHQgeworICAgICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlOworICAg
ICAgICBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVycm9yOworICAgICAgICBWZWN0b3I8Y2hhcj4g
ZGF0YTsKKyAgICB9OworICAgIHN0ZDo6b3B0aW9uYWw8U3luY0xvYWRSZXN1bHQ+IHRyeUxvYWRp
bmdTeW5jaHJvbm91c2x5VXNpbmdVUkxTY2hlbWVIYW5kbGVyKFdlYkNvcmU6OkZyYW1lTG9hZGVy
JiwgUmVzb3VyY2VMb2FkSWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAKICAgICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIHJlc3BvbnNlRnJvbVJlc291cmNl
TG9hZElkZW50aWZpZXIodWludDY0X3QgcmVzb3VyY2VMb2FkSWRlbnRpZmllcikgZmluYWw7CiAg
ICAgVmVjdG9yPFdlYkNvcmU6Ok5ldHdvcmtUcmFuc2FjdGlvbkluZm9ybWF0aW9uPiBpbnRlcm1l
ZGlhdGVMb2FkSW5mb3JtYXRpb25Gcm9tUmVzb3VyY2VMb2FkSWRlbnRpZmllcih1aW50NjRfdCBy
ZXNvdXJjZUxvYWRJZGVudGlmaWVyKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3BwCmlu
ZGV4IGNkYjQzZmI5ZWFmLi5hZDIwMjZhNWM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuY3Bw
CkBAIC0yNiwxMCArMjYsMTggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJXZWJV
UkxTY2hlbWVIYW5kbGVyUHJveHkuaCIKIAorI2luY2x1ZGUgIkRhdGFSZWZlcmVuY2UuaCIKKyNp
bmNsdWRlICJVUkxTY2hlbWVUYXNrUGFyYW1ldGVycy5oIgorI2luY2x1ZGUgIldlYkNvcmVBcmd1
bWVudENvZGVycy5oIgogI2luY2x1ZGUgIldlYkVycm9ycy5oIgogI2luY2x1ZGUgIldlYkxvYWRl
clN0cmF0ZWd5LmgiCisjaW5jbHVkZSAiV2ViUGFnZS5oIgorI2luY2x1ZGUgIldlYlBhZ2VQcm94
eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzcy5oIgorI2luY2x1ZGUgPFdlYkNvcmUv
UmVzb3VyY2VFcnJvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VMb2FkZXIuaD4KKyNp
bmNsdWRlIDxXZWJDb3JlL1Jlc291cmNlUmVxdWVzdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVz
b3VyY2VSZXNwb25zZS5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTUsNiAr
NjMsMTggQEAgdm9pZCBXZWJVUkxTY2hlbWVIYW5kbGVyUHJveHk6OnN0YXJ0TmV3VGFzayhSZXNv
dXJjZUxvYWRlciYgbG9hZGVyKQogICAgIHJlc3VsdC5pdGVyYXRvci0+dmFsdWUtPnN0YXJ0TG9h
ZGluZygpOwogfQogCit2b2lkIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eTo6bG9hZFN5bmNocm9u
b3VzbHkoUmVzb3VyY2VMb2FkSWRlbnRpZmllciBsb2FkSWRlbnRpZmllciwgY29uc3QgUmVzb3Vy
Y2VSZXF1ZXN0JiByZXF1ZXN0LCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgUmVzb3VyY2VF
cnJvciYgZXJyb3IsIFZlY3RvcjxjaGFyPiYgZGF0YSkKK3sKKyAgICBJUEM6OkRhdGFSZWZlcmVu
Y2UgZGF0YVJlZmVyZW5jZTsKKyAgICBpZiAoIW1fd2ViUGFnZS5zZW5kU3luYyhNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpMb2FkU3luY2hyb25vdXNVUkxTY2hlbWVUYXNrKFVSTFNjaGVtZVRhc2tQ
YXJhbWV0ZXJzIHsgbV9pZGVudGlmaWVyLCBsb2FkSWRlbnRpZmllciwgcmVxdWVzdCB9KSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6TG9hZFN5bmNocm9ub3VzVVJMU2NoZW1lVGFzazo6UmVwbHko
cmVzcG9uc2UsIGVycm9yLCBkYXRhUmVmZXJlbmNlKSkpIHsKKyAgICAgICAgZXJyb3IgPSBmYWls
ZWRDdXN0b21Qcm90b2NvbFN5bmNMb2FkKHJlcXVlc3QpOworICAgICAgICByZXR1cm47CisgICAg
fQorICAgIAorICAgIGRhdGEucmVzaXplKGRhdGFSZWZlcmVuY2Uuc2l6ZSgpKTsKKyAgICBtZW1j
cHkoZGF0YS5kYXRhKCksIGRhdGFSZWZlcmVuY2UuZGF0YSgpLCBkYXRhUmVmZXJlbmNlLnNpemUo
KSk7Cit9CisKIHZvaWQgV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5OjpzdG9wQWxsVGFza3MoKQog
ewogICAgIHdoaWxlICghbV90YXNrcy5pc0VtcHR5KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJVUkxTY2hlbWVIYW5kbGVyUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlVSTFNjaGVtZUhhbmRsZXJQcm94eS5oCmlu
ZGV4IDc0MjQxNWM3NzFhLi5kOGUzNzdhNzVjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViVVJMU2NoZW1lSGFuZGxlclByb3h5LmgKQEAg
LTM5LDYgKzM5LDcgQEAgY2xhc3MgUmVzb3VyY2VSZXF1ZXN0OwogbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIFdlYlBhZ2U7Cit0eXBlZGVmIHVpbnQ2NF90IFJlc291cmNlTG9hZElkZW50aWZp
ZXI7CiAKIGNsYXNzIFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVk
PFdlYlVSTFNjaGVtZUhhbmRsZXJQcm94eT4gewogcHVibGljOgpAQCAtNTEsNiArNTIsOCBAQCBw
dWJsaWM6CiAgICAgdm9pZCBzdGFydE5ld1Rhc2soV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXImKTsK
ICAgICB2b2lkIHN0b3BBbGxUYXNrcygpOwogCisgICAgdm9pZCBsb2FkU3luY2hyb25vdXNseShS
ZXNvdXJjZUxvYWRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIFZlY3Rv
cjxjaGFyPiYpOworCiAgICAgdWludDY0X3QgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1f
aWRlbnRpZmllcjsgfQogICAgIFdlYlBhZ2UmIHBhZ2UoKSB7IHJldHVybiBtX3dlYlBhZ2U7IH0K
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGMz
NjlhZmVhYWI2Li5kYTk3NjE2M2Q1NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE4LTA2LTIyICBCcmFkeSBFaWRz
b24gIDxiZWlkc29uQGFwcGxlLmNvbT4KKworICAgICAgICBXS1VSTFNjaGVtZUhhbmRsZXIgZG9l
c24ndCBoYW5kbGUgc3luYyBYSFIuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80MDk1NTg4ND4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODY5MDIKKworICAg
ICAgICBSZXZpZXdlZCBieSBDaHJpcyBEdW1lei4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hlbWVIYW5kbGVyLTEubW06CisgICAgICAgICgtW1N5
bmNTY2hlbWUgd2ViVmlldzpzdGFydFVSTFNjaGVtZVRhc2s6XSk6CisgICAgICAgICgtW1N5bmNT
Y2hlbWUgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bU3luY01lc3Nh
Z2VIYW5kbGVyIHVzZXJDb250ZW50Q29udHJvbGxlcjpkaWRSZWNlaXZlU2NyaXB0TWVzc2FnZTpd
KToKKyAgICAgICAgKGNhdGNoKToKKwogMjAxOC0wNi0xOSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRl
c0BhcHBsZS5jb20+CiAKICAgICAgICAgUXVldWVTdGF0dXNTZXJ2ZXI6ICInTm9uZVR5cGUnIG9i
amVjdCBoYXMgbm8gYXR0cmlidXRlICdtZXNzYWdlJyIgaW4gUmVsZWFzZVBhdGNoLmdldCgpCmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLVVJMU2No
ZW1lSGFuZGxlci0xLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
S1VSTFNjaGVtZUhhbmRsZXItMS5tbQppbmRleCA0MTJlNzdmNTEwYS4uZjBlNjg5N2EwMzUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tVUkxTY2hl
bWVIYW5kbGVyLTEubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS1VSTFNjaGVtZUhhbmRsZXItMS5tbQpAQCAtMzEsOCArMzEsMTEgQEAKICNpbXBvcnQgPFdl
YktpdC9XS1VSTFNjaGVtZVRhc2tQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3
Q29uZmlndXJhdGlvblByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9XZWJLaXQuaD4KKyNpbXBv
cnQgPHd0Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAjaW1wb3J0IDx3
dGYvVmVjdG9yLmg+CisjaW1wb3J0IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CisjaW1wb3J0IDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogI2lmIFdLX0FQSV9FTkFCTEVECiAKQEAgLTQwOSw0ICs0
MTIsMTMxIEBAIFRFU1QoVVJMU2NoZW1lSGFuZGxlciwgRXhjZXB0aW9ucykKICAgICBjaGVja0Nh
bGxTZXF1ZW5jZSh7Q29tbWFuZDo6UmVzcG9uc2UsIENvbW1hbmQ6OkZpbmlzaCwgQ29tbWFuZDo6
RXJyb3J9LCBTaG91bGRSYWlzZUV4Y2VwdGlvbjo6WWVzKTsKIH0KIAotI2VuZGlmCitzdHJ1Y3Qg
U2NoZW1lUmVzb3VyY2VJbmZvIHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IG1pbWVUeXBlOwor
ICAgIGNvbnN0IGNoYXIqIGRhdGE7CisgICAgYm9vbCBzaG91bGRSZXNwb25kOworfTsKKworc3Rh
dGljIGJvb2wgc3RhcnRlZFhIUjsKK3N0YXRpYyBib29sIHJlY2VpdmVkU3RvcDsKKworQGludGVy
ZmFjZSBTeW5jU2NoZW1lIDogTlNPYmplY3QgPFdLVVJMU2NoZW1lSGFuZGxlcj4geworQHB1Ymxp
YworICAgIEhhc2hNYXA8U3RyaW5nLCBTY2hlbWVSZXNvdXJjZUluZm8+IHJlc291cmNlczsKK30K
K0BlbmQKKworQGltcGxlbWVudGF0aW9uIFN5bmNTY2hlbWUKKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1lVGFzazooaWQgPFdLVVJMU2NoZW1lVGFz
az4pdGFzaworeworICAgIGF1dG8gZW50cnkgPSByZXNvdXJjZXMuZmluZChbdGFzay5yZXF1ZXN0
LlVSTCBhYnNvbHV0ZVN0cmluZ10pOworICAgIGlmIChlbnRyeSA9PSByZXNvdXJjZXMuZW5kKCkp
IHsKKyAgICAgICAgTlNMb2coQCJEaWQgbm90IGZpbmQgcmVzb3VyY2UgZW50cnkgZm9yIFVSTCAl
QCIsIHRhc2sucmVxdWVzdC5VUkwpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYg
KGVudHJ5LT5rZXkgPT0gInN5bmN4aHI6Ly9ob3N0L3Rlc3QuZGF0IikKKyAgICAgICAgc3RhcnRl
ZFhIUiA9IHRydWU7CisKKyAgICBpZiAoIWVudHJ5LT52YWx1ZS5zaG91bGRSZXNwb25kKQorICAg
ICAgICByZXR1cm47CisgICAgCisgICAgUmV0YWluUHRyPE5TVVJMUmVzcG9uc2U+IHJlc3BvbnNl
ID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOnRhc2sucmVxdWVz
dC5VUkwgTUlNRVR5cGU6ZW50cnktPnZhbHVlLm1pbWVUeXBlLmdldCgpIGV4cGVjdGVkQ29udGVu
dExlbmd0aDoxIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAgW3Rhc2sgZGlkUmVjZWl2ZVJl
c3BvbnNlOnJlc3BvbnNlLmdldCgpXTsKKworICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltOU0Rh
dGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCopZW50cnktPnZhbHVlLmRhdGEgbGVuZ3RoOnN0
cmxlbihlbnRyeS0+dmFsdWUuZGF0YSkgZnJlZVdoZW5Eb25lOk5PXV07CisgICAgW3Rhc2sgZGlk
RmluaXNoXTsKKworICAgIGlmIChlbnRyeS0+a2V5ID09ICJzeW5jeGhyOi8vaG9zdC90ZXN0LmRh
dCIpCisgICAgICAgIHN0YXJ0ZWRYSFIgPSBmYWxzZTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihX
S1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNr
Pil0YXNrCit7CisgICAgRVhQRUNUX1RSVUUoW1t0YXNrLnJlcXVlc3QuVVJMIGFic29sdXRlU3Ry
aW5nXSBpc0VxdWFsVG9TdHJpbmc6QCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCJdKTsKKyAgICBy
ZWNlaXZlZFN0b3AgPSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyBSZXRhaW5QdHI8TlNNdXRh
YmxlQXJyYXk+IHJlY2VpdmVkTWVzc2FnZXMgPSBhZG9wdE5TKFtAW10gbXV0YWJsZUNvcHldKTsK
K3N0YXRpYyBib29sIHJlY2VpdmVkTWVzc2FnZTsKKworQGludGVyZmFjZSBTeW5jTWVzc2FnZUhh
bmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KK0BlbmQKKworQGltcGxl
bWVudGF0aW9uIFN5bmNNZXNzYWdlSGFuZGxlcgorLSAodm9pZCl1c2VyQ29udGVudENvbnRyb2xs
ZXI6KFdLVXNlckNvbnRlbnRDb250cm9sbGVyICopdXNlckNvbnRlbnRDb250cm9sbGVyIGRpZFJl
Y2VpdmVTY3JpcHRNZXNzYWdlOihXS1NjcmlwdE1lc3NhZ2UgKiltZXNzYWdlCit7CisgICAgaWYg
KFttZXNzYWdlIGJvZHldKQorICAgICAgICBbcmVjZWl2ZWRNZXNzYWdlcyBhZGRPYmplY3Q6W21l
c3NhZ2UgYm9keV1dOworICAgIGVsc2UKKyAgICAgICAgW3JlY2VpdmVkTWVzc2FnZXMgYWRkT2Jq
ZWN0OkAiIl07CisKKyAgICByZWNlaXZlZE1lc3NhZ2UgPSB0cnVlOworfQorQGVuZAorCitzdGF0
aWMgY29uc3QgY2hhciogc3luY01haW5CeXRlcyA9IFIiU1lOQ1JFU09VUkNFKAorPHNjcmlwdD4K
KwordmFyIHJlcSA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpOworcmVxLm9wZW4oIkdFVCIsICJ0ZXN0
LmRhdCIsIGZhbHNlKTsKK3RyeQoreworICAgIHJlcS5zZW5kKG51bGwpOworICAgIHdpbmRvdy53
ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN5bmMucG9zdE1lc3NhZ2UocmVxLnJlc3BvbnNlVGV4dCk7
Cit9CitjYXRjaCAoZSkKK3sKKyAgICB3aW5kb3cud2Via2l0Lm1lc3NhZ2VIYW5kbGVycy5zeW5j
LnBvc3RNZXNzYWdlKCJGYWlsZWQgc3luYyBYSFIgbG9hZCIpOworfQorCis8L3NjcmlwdD4KKylT
WU5DUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc3luY1hIUkJ5dGVzID0gIk15IFhI
UiB0ZXh0ISI7CisKK1RFU1QoVVJMU2NoZW1lSGFuZGxlciwgU3luY1hIUikKK3sKKyAgICBhdXRv
ICpwb29sID0gW1tOU0F1dG9yZWxlYXNlUG9vbCBhbGxvY10gaW5pdF07CisKKyAgICBhdXRvIHdl
YlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKyAgICBhdXRvIGhhbmRsZXIgPSBhZG9wdE5TKFtbU3luY1NjaGVtZSBhbGxv
Y10gaW5pdF0pOworICAgIFt3ZWJWaWV3Q29uZmlndXJhdGlvbiBzZXRVUkxTY2hlbWVIYW5kbGVy
OmhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAic3luY3hociJdOworICAgIAorICAgIGhhbmRs
ZXIuZ2V0KCktPnJlc291cmNlcy5zZXQoInN5bmN4aHI6Ly9ob3N0L21haW4uaHRtbCIsIFNjaGVt
ZVJlc291cmNlSW5mbyB7IEAidGV4dC9odG1sIiwgc3luY01haW5CeXRlcywgdHJ1ZSB9KTsKKyAg
ICBoYW5kbGVyLmdldCgpLT5yZXNvdXJjZXMuc2V0KCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIs
IFNjaGVtZVJlc291cmNlSW5mbyB7IEAidGV4dC9wbGFpbiIsIHN5bmNYSFJCeXRlcywgdHJ1ZSB9
KTsKKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbU3luY01lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1t3ZWJWaWV3Q29uZmlndXJhdGlvbiB1c2VyQ29udGVu
dENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgp
IG5hbWU6QCJzeW5jIl07CisgICAgCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2Vi
VmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25m
aWd1cmF0aW9uOndlYlZpZXdDb25maWd1cmF0aW9uLmdldCgpXSk7CisKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAic3luY3hocjovL2hvc3QvbWFpbi5odG1sIl1dOworICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OnJlcXVlc3RdOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZl
ZE1lc3NhZ2UpOworICAgIHJlY2VpdmVkTWVzc2FnZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0VR
KCh1bnNpZ25lZClyZWNlaXZlZE1lc3NhZ2VzLmdldCgpLmNvdW50LCAodW5zaWduZWQpMSk7Cisg
ICAgRVhQRUNUX1RSVUUoW3JlY2VpdmVkTWVzc2FnZXMuZ2V0KClbMF0gaXNFcXVhbFRvU3RyaW5n
OkAiTXkgWEhSIHRleHQhIl0pOworCisgICAgLy8gTm93IHRyeSBhZ2FpbiwgYnV0IGhhbmcgdGhl
IFdlYlByb2Nlc3MgaW4gdGhlIHJlcGx5IHRvIHRoZSBYSFIgYnkgdGVsbGluZyB0aGUgc2NoZW1l
IGhhbmRsZXIgdG8gbmV2ZXIKKyAgICAvLyByZXNwb25kIHRvIGl0LgorICAgIGhhbmRsZXIuZ2V0
KCktPnJlc291cmNlcy5maW5kKCJzeW5jeGhyOi8vaG9zdC90ZXN0LmRhdCIpLT52YWx1ZS5zaG91
bGRSZXNwb25kID0gZmFsc2U7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnN0YXJ0ZWRYSFIpOworICAgIHJlY2VpdmVk
TWVzc2FnZSA9IGZhbHNlOworCisgICAgd2ViVmlldyA9IG5pbDsKKyAgICBbcG9vbCBkcmFpbl07
CisgICAgCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZFN0b3ApOworfQor
CisjZW5kaWYgLy8gV0tfQVBJX0VOQUJMRUQKKwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>