<?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>152950</bug_id>
          
          <creation_ts>2016-01-09 16:30:38 -0800</creation_ts>
          <short_desc>[Cocoa] Add SPI to opt out a URL scheme from the memory cache</short_desc>
          <delta_ts>2016-01-11 18:12:54 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>152986</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Andy Estes">aestes</reporter>
          <assigned_to name="Andy Estes">aestes</assigned_to>
          <cc>andersca</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>japhet</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sam</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1154173</commentid>
    <comment_count>0</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-09 16:30:38 -0800</bug_when>
    <thetext>[Cocoa] Add SPI to opt out a URL scheme from the memory cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154174</commentid>
    <comment_count>1</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-09 16:34:42 -0800</bug_when>
    <thetext>rdar://problem/24066652</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154178</commentid>
    <comment_count>2</comment_count>
      <attachid>268632</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-09 16:41:08 -0800</bug_when>
    <thetext>Created attachment 268632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154198</commentid>
    <comment_count>3</comment_count>
      <attachid>268641</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-09 22:19:04 -0800</bug_when>
    <thetext>Created attachment 268641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154460</commentid>
    <comment_count>4</comment_count>
      <attachid>268641</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2016-01-11 13:07:39 -0800</bug_when>
    <thetext>Comment on attachment 268641
Patch

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

&gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:99
&gt;      Vector&lt;String&gt; urlSchemesRegisteredAsCORSEnabled;
&gt; +    Vector&lt;String&gt; urlSchemesToRegisterAsAlwaysRevalidated;

&quot;RegisteredAs&quot; vs. &quot;ToRegisterAs&quot;?

&gt; Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:38
&gt; +@property (nonatomic, copy) WK_ARRAY(NSString *) *alwaysRevalidatedURLSchemes WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);

Do we still need to do the WK_ARRAY dance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154480</commentid>
    <comment_count>5</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-11 13:55:44 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 268641 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=268641&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/Shared/WebProcessCreationParameters.h:99
&gt; &gt;      Vector&lt;String&gt; urlSchemesRegisteredAsCORSEnabled;
&gt; &gt; +    Vector&lt;String&gt; urlSchemesToRegisterAsAlwaysRevalidated;
&gt; 
&gt; &quot;RegisteredAs&quot; vs. &quot;ToRegisterAs&quot;?

Ah, yeah. I&apos;ll fix this in a follow-up.

&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:38
&gt; &gt; +@property (nonatomic, copy) WK_ARRAY(NSString *) *alwaysRevalidatedURLSchemes WK_AVAILABLE(WK_MAC_TBA, WK_IOS_TBA);
&gt; 
&gt; Do we still need to do the WK_ARRAY dance?

Not sure. I think it&apos;s ok to use it now. Presumably we&apos;ll remove the macros when the time is right.

Thanks for the review!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154481</commentid>
    <comment_count>6</comment_count>
      <attachid>268641</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-11 13:57:24 -0800</bug_when>
    <thetext>Comment on attachment 268641
Patch

Clearing flags on attachment: 268641

Committed r194866: &lt;http://trac.webkit.org/changeset/194866&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154482</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-11 13:57:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154489</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-01-11 14:25:41 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 152986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154498</commentid>
    <comment_count>9</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-01-11 14:36:44 -0800</bug_when>
    <thetext>/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:31:20: error: expected parameter declarator
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:31:20: error: expected &apos;)&apos;
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:32:1: error: expected function body after function declarator
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:35:1: error: unexpected &apos;@&apos; in program
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:36:1: error: unexpected &apos;@&apos; in program
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:37:1: error: unexpected &apos;@&apos; in program
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:38:1: error: unexpected &apos;@&apos; in program
/Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.framework/PrivateHeaders/_WKProcessPoolConfiguration.h:40:1: error: &apos;@end&apos; must appear in an Objective-C context
/Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/AppDelegate.m:78:73: error: receiver &apos;_WKProcessPoolConfiguration&apos; is a forward class and corresponding @interface may not exist [-Werror,-Wreceiver-forward-class]
/Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/AppDelegate.m:78:108: error: &apos;init&apos; is deprecated: first deprecated in OS X 10.11 - Use -initWithConcurrencyType: instead [-Werror,-Wdeprecated-declarations]
/Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/AppDelegate.m:79:40: error: property &apos;maximumProcessCount&apos; cannot be found in forward class object &apos;_WKProcessPoolConfiguration&apos;

&lt;https://build.webkit.org/builders/Apple%20El%20Capitan%20Release%20%28Build%29/builds/2571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154578</commentid>
    <comment_count>10</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-11 17:33:35 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:31:20: error:
&gt; expected parameter declarator
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:31:20: error:
&gt; expected &apos;)&apos;
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:32:1: error: expected
&gt; function body after function declarator
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:35:1: error:
&gt; unexpected &apos;@&apos; in program
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:36:1: error:
&gt; unexpected &apos;@&apos; in program
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:37:1: error:
&gt; unexpected &apos;@&apos; in program
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:38:1: error:
&gt; unexpected &apos;@&apos; in program
&gt; /Volumes/Data/slave/elcapitan-release/build/WebKitBuild/Release/WebKit.
&gt; framework/PrivateHeaders/_WKProcessPoolConfiguration.h:40:1: error: &apos;@end&apos;
&gt; must appear in an Objective-C context
&gt; /Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/
&gt; AppDelegate.m:78:73: error: receiver &apos;_WKProcessPoolConfiguration&apos; is a
&gt; forward class and corresponding @interface may not exist
&gt; [-Werror,-Wreceiver-forward-class]
&gt; /Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/
&gt; AppDelegate.m:78:108: error: &apos;init&apos; is deprecated: first deprecated in OS X
&gt; 10.11 - Use -initWithConcurrencyType: instead
&gt; [-Werror,-Wdeprecated-declarations]
&gt; /Volumes/Data/slave/elcapitan-release/build/Tools/MiniBrowser/mac/
&gt; AppDelegate.m:79:40: error: property &apos;maximumProcessCount&apos; cannot be found
&gt; in forward class object &apos;_WKProcessPoolConfiguration&apos;
&gt; 
&gt; &lt;https://build.webkit.org/builders/
&gt; Apple%20El%20Capitan%20Release%20%28Build%29/builds/2571&gt;

Ah, this is strange. The WKFoundation.h in WebKitBuild/Release/WebKit.framework/Headers/ was created before header post-processing was disabled on El Capitan, so the macros that should replace WK_CLASS_AVAILABLE, WK_AVAILABLE, and WK_ARRAY in _WKProcessPoolConfiguration.h were removed by the &quot;Postprocess WKFoundation.h&quot; build phase. With the header post-processing build phase now disabled, but no changes made to WKFoundation.h that would cause it to be re-postprocessed, there is nothing to handle the WK_* macros in _WKProcessPoolPrivate.h.

This could be fixed by a clean build on the bots, or a whitespace-only change to WKFoundation.h, or possibly by an even more robust solution that I&apos;m not aware of.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154580</commentid>
    <comment_count>11</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-11 17:34:51 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; 
&gt; ... there is nothing to handle the WK_* macros in _WKProcessPoolPrivate.h.
&gt; 

_WKProcessPoolConfiguration.h, that is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1154592</commentid>
    <comment_count>12</comment_count>
    <who name="Andy Estes">aestes</who>
    <bug_when>2016-01-11 18:12:54 -0800</bug_when>
    <thetext>Committed r194880: &lt;http://trac.webkit.org/changeset/194880&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268632</attachid>
            <date>2016-01-09 16:41:08 -0800</date>
            <delta_ts>2016-01-09 22:19:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152950-20160109164036.patch</filename>
            <type>text/plain</type>
            <size>28159</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY1NmU2YjgzNTY3YWRi
ZDY5OTU4NjIzMDY2OWQ1NWU2ZjJiZjVhOS4uMmMwNzYyZTI5MzhlNjUwYjMyMjY1MGE0NjUyMjg1
OTEyZmM1NWE0MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE2LTAxLTA5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8g
b3B0IG91dCBhIFVSTCBzY2hlbWUgZnJvbSB0aGUgbWVtb3J5IGNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5NTAKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQwNjY2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBOZXcgQVBJIHRlc3Q6IFdlYktpdDIuTmV2ZXJDYWNoZWRVUkxTY2hlbWVzCisK
KyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6c2hvdWxkQ2FjaGVTY2hlbWVJbmRlZmluaXRlbHkpOiBNb3ZlZCBmcm9tIFNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGRDYWNoZVJlc3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRlZmluaXRlbHkoKS4K
KyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZldGltZSk6IFJl
dHVybmVkIDAgaWYgIXNob3VsZENhY2hlU2NoZW1lSW5kZWZpbml0ZWx5KCkgYW5kIFNjaGVtZVJl
Z2lzdHJ5OjpzaG91bGROZXZlckNhY2hlVVJMU2NoZW1lKHByb3RvY29sKS4KKyAgICAgICAgKiBw
bGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpuZXZlckNhY2hl
ZFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJM
U2NoZW1lQXNOZXZlckNhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkTmV2ZXJDYWNoZVVSTFNjaGVtZSk6CisgICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdp
c3RyeTo6c2hvdWxkQ2FjaGVSZXNwb25zZXNGcm9tVVJMU2NoZW1lSW5kZWZpbml0ZWx5KTogTW92
ZWQgdG8gV2ViQ29yZTo6c2hvdWxkQ2FjaGVTY2hlbWVJbmRlZmluaXRlbHkoKS4KKyAgICAgICAg
KiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oOgorCiAyMDE2LTAxLTA4ICBaYWxhbiBCdWp0YXMg
IDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWJzb2x1dGUgcG9zaXRpb25pbmcgLXdlYmtp
dC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiBjcmFzaGVzIFNhZmFyaS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMWQ4
ZjY4ODVjZWJjODAxZmM5NzQxMjU3YTA5ZmEwODlhMDgzZDlmLi40ZmEyOGJmYTAyYTY2ZjJlMmZi
NGRhNTEzNjVjYzI0OThlNGRmYjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIwMTYt
MDEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0g
QWRkIFNQSSB0byBvcHQgb3V0IGEgVVJMIHNjaGVtZSBmcm9tIHRoZSBtZW1vcnkgY2FjaGUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjk1MAorICAg
ICAgICByZGFyOi8vcHJvYmxlbS8yNDA2NjY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV2ZXJDYWNoZWRVUkxTY2hlbWVzUHJvcGVy
dHkgdG8gX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLgorCisgICAgICAgICogU2hhcmVkL1dl
YlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAgICAgICAqIFNoYXJlZC9XZWJQcm9j
ZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwOgorICAgICAgICAoQVBJOjpQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb246OmNvcHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xD
b25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uIG5ldmVyQ2FjaGVkVVJMU2NoZW1lc10pOgorICAgICAgICAoLVtfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gc2V0TmV2ZXJDYWNoZWRVUkxTY2hlbWVzOl0pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2Vzcyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNOZXZlckNhY2hlZCk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmg6CisKIDIwMTYtMDEtMDggIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBJbXBsZW1lbnQgZG93
bmxvYWQgYXV0aGVudGljYXRpb24gd2l0aCBOZXR3b3JrU2Vzc2lvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKaW5kZXggMzk0NTk1MzM2NGNjNjAw
YzY1ODBmNDYzMTAzNjI3OTc3OWM5OGMwNy4uZTRkMmI2YWNiNzJlMzc1MjMxNjc3YjFkOTRmNzAy
MDE0MGUwY2I5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2UuY3BwCkBAIC0zNTksMTQgKzM1OSwyNiBAQCBib29sIENhY2hlZFJlc291cmNlOjppc0V4
cGlyZWQoKSBjb25zdAogICAgIHJldHVybiBjb21wdXRlQ3VycmVudEFnZShtX3Jlc3BvbnNlLCBt
X3Jlc3BvbnNlVGltZXN0YW1wKSA+IGZyZXNobmVzc0xpZmV0aW1lKG1fcmVzcG9uc2UpOwogfQog
CitzdGF0aWMgaW5saW5lIGJvb2wgc2hvdWxkQ2FjaGVTY2hlbWVJbmRlZmluaXRlbHkoY29uc3Qg
U3RyaW5nJiBzY2hlbWUpCit7CisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgaWYgKGVxdWFsSWdu
b3JpbmdDYXNlKHNjaGVtZSwgImFwcGxld2ViZGF0YSIpKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KyNlbmRpZgorICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShzY2hlbWUsICJkYXRhIik7Cit9
CisKIHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHMgQ2FjaGVkUmVzb3VyY2U6OmZyZXNobmVzc0xp
ZmV0aW1lKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlKSBjb25zdAogewogICAgIGlm
ICghcmVzcG9uc2UudXJsKCkucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7Ci0gICAgICAgIC8v
IERvbid0IGNhY2hlIG5vbi1IVFRQIG1haW4gcmVzb3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNr
IGZvciBmcmVzaG5lc3MuCi0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgbm90IGNhY2hlIHN1
YnJlc291cmNlcyBlaXRoZXIsIGJ1dCB3aGVuIHdlIHRyaWVkIHRoaXMKLSAgICAgICAgLy8gaXQg
Y2F1c2VkIHBlcmZvcm1hbmNlIGFuZCBmbGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJh
c3RydWN0dXJlLgotICAgICAgICBpZiAobV90eXBlID09IE1haW5SZXNvdXJjZSAmJiAhU2NoZW1l
UmVnaXN0cnk6OnNob3VsZENhY2hlUmVzcG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShy
ZXNwb25zZS51cmwoKS5wcm90b2NvbCgpKSkKLSAgICAgICAgICAgIHJldHVybiBzdGQ6OmNocm9u
bzo6bWljcm9zZWNvbmRzOjp6ZXJvKCk7CisgICAgICAgIFN0cmluZyBwcm90b2NvbCA9IHJlc3Bv
bnNlLnVybCgpLnByb3RvY29sKCk7CisgICAgICAgIGlmICghc2hvdWxkQ2FjaGVTY2hlbWVJbmRl
ZmluaXRlbHkocHJvdG9jb2wpKSB7CisgICAgICAgICAgICAvLyBEb24ndCBjYWNoZSBub24tSFRU
UCBtYWluIHJlc291cmNlcyBzaW5jZSB3ZSBjYW4ndCBjaGVjayBmb3IgZnJlc2huZXNzLgorICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgY2FjaGUgc3VicmVzb3VyY2VzIGVpdGhl
ciwgYnV0IHdoZW4gd2UgdHJpZWQgdGhpcworICAgICAgICAgICAgLy8gaXQgY2F1c2VkIHBlcmZv
cm1hbmNlIGFuZCBmbGFraW5lc3MgaXNzdWVzIGluIG91ciB0ZXN0IGluZnJhc3RydWN0dXJlLgor
ICAgICAgICAgICAgaWYgKG1fdHlwZSA9PSBNYWluUmVzb3VyY2UgfHwgU2NoZW1lUmVnaXN0cnk6
OnNob3VsZE5ldmVyQ2FjaGVVUkxTY2hlbWUocHJvdG9jb2wpKQorICAgICAgICAgICAgICAgIHJl
dHVybiBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzOjp6ZXJvKCk7CisgICAgICAgIH0KIAogICAg
ICAgICByZXR1cm4gc3RkOjpjaHJvbm86Om1pY3Jvc2Vjb25kczo6bWF4KCk7CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVnaXN0cnkuY3BwCmluZGV4IGE4YjBhMTE1MGM0
M2UxMmExYWFiYmQwZjBlYWUyMjQ3ZTExYjNhMTkuLjMwZmM1OWExNWRiMjMwNTliYTY5YmJjZjEy
MDUxODA2ODk3OTY2ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVt
ZVJlZ2lzdHJ5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5jcHAKQEAgLTE3OSw2ICsxNzksMTIgQEAgc3RhdGljIFVSTFNjaGVtZXNNYXAmIGNhY2hlUGFy
dGl0aW9uaW5nU2NoZW1lcygpCiB9CiAjZW5kaWYKIAorc3RhdGljIFVSTFNjaGVtZXNNYXAmIG5l
dmVyQ2FjaGVkU2NoZW1lcygpCit7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFVSTFNjaGVt
ZXNNYXA+IHNjaGVtZXM7CisgICAgcmV0dXJuIHNjaGVtZXM7Cit9CisKIGJvb2wgU2NoZW1lUmVn
aXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChjb25zdCBTdHJpbmcmIHNjaGVtZSkK
IHsKICAgICBpZiAoc2NoZW1lLmlzRW1wdHkoKSkKQEAgLTMyOSwxMyArMzM1LDE2IEBAIGJvb2wg
U2NoZW1lUmVnaXN0cnk6OnNjaGVtZVNob3VsZEJ5cGFzc0NvbnRlbnRTZWN1cml0eVBvbGljeShj
b25zdCBTdHJpbmcmIHNjaGVtCiAgICAgcmV0dXJuIENvbnRlbnRTZWN1cml0eVBvbGljeUJ5cGFz
c2luZ1NjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCi1ib29sIFNjaGVtZVJlZ2lzdHJ5
OjpzaG91bGRDYWNoZVJlc3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRlZmluaXRlbHkoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCit2b2lkIFNjaGVtZVJlZ2lzdHJ5OjpyZWdpc3RlclVSTFNjaGVtZUFzTmV2
ZXJDYWNoZWQoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7Ci0jaWYgUExBVEZPUk0oQ09DT0EpCi0g
ICAgaWYgKGVxdWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImFwcGxld2ViZGF0YSIpKQotICAgICAg
ICByZXR1cm4gdHJ1ZTsKLSNlbmRpZgotICAgIHJldHVybiBlcXVhbElnbm9yaW5nQ2FzZShzY2hl
bWUsICJkYXRhIik7CisgICAgbmV2ZXJDYWNoZWRTY2hlbWVzKCkuYWRkKHNjaGVtZSk7Cit9CisK
K2Jvb2wgU2NoZW1lUmVnaXN0cnk6OnNob3VsZE5ldmVyQ2FjaGVVUkxTY2hlbWUoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpCit7CisgICAgaWYgKHNjaGVtZS5pc0VtcHR5KCkpCisgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICByZXR1cm4gbmV2ZXJDYWNoZWRTY2hlbWVzKCkuY29udGFpbnMoc2NoZW1l
KTsKIH0KIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2NoZW1lUmVnaXN0cnkuaAppbmRleCBmNzA0NjM3N2UyMDFlMGJlODNlNmQyNzRjMDUw
MWE3Yjk3NmI2ZWM4Li5mZmYyNGQ1ZTgzODVkNTYyYTUyMGViZjU3ODY3Mjk1NjE4YjY4OTdmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmgKQEAgLTg5LDggKzg5LDkg
QEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHJlbW92ZVVSTFNjaGVt
ZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBvbGljeShjb25zdCBTdHJpbmcm
IHNjaGVtZSk7CiAgICAgc3RhdGljIGJvb2wgc2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3Vy
aXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKICAgICAKLSAgICAvLyBTY2hlbWVzIHdo
b3NlIHJlc3BvbnNlcyBjYW4gYmUgY2FjaGVkIGluZGVmaW5pdGVseS4KLSAgICBzdGF0aWMgYm9v
bCBzaG91bGRDYWNoZVJlc3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRlZmluaXRlbHkoY29uc3QgU3Ry
aW5nJiBzY2hlbWUpOworICAgIC8vIFNjaGVtZXMgd2hvc2UgcmVzcG9uc2VzIHNob3VsZCBuZXZl
ciBiZSBjYWNoZWQuCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgcmVnaXN0ZXJVUkxT
Y2hlbWVBc05ldmVyQ2FjaGVkKGNvbnN0IFN0cmluZyYpOworICAgIFdFQkNPUkVfRVhQT1JUIHN0
YXRpYyBib29sIHNob3VsZE5ldmVyQ2FjaGVVUkxTY2hlbWUoY29uc3QgU3RyaW5nJik7CiAKICNp
ZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIC8vIFNjaGVtZXMgd2hvc2UgcmVxdWVz
dHMgc2hvdWxkIGJlIHBhcnRpdGlvbmVkIGluIHRoZSBjYWNoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCmluZGV4IDZh
ZjMxN2VkY2NjYjNmMzc4ZWQ4OTQ5MWM0YWRmN2I2Y2ViMWJiZTkuLjJiNWE4YjVkZGJlYmNmZjQw
YzdlMDdhZWEyM2NmMGViMmFjMDIyOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJl
ZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTkwLDYgKzkwLDcgQEAg
dm9pZCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpBcmd1bWVudEVu
Y29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJl
ZEFzTm9BY2Nlc3M7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzRGlzcGxh
eUlzb2xhdGVkOwogICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFi
bGVkOworICAgIGVuY29kZXIgPDwgdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05ldmVyQ2FjaGVkOwog
I2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVz
UmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZDsKICNlbmRpZgpAQCAtMjAyLDYgKzIwMyw4IEBA
IGJvb2wgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQQzo6QXJndW1lbnRE
ZWNvZGVyJiBkZWNvZGVyLCBXZWJQcm9jCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAo
IWRlY29kZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFi
bGVkKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFy
YW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTmV2ZXJDYWNoZWQpKQorICAgICAgICByZXR1
cm4gZmFsc2U7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBpZiAoIWRlY29k
ZXIuZGVjb2RlKHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NhY2hlUGFydGl0aW9u
ZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdDIvU2hh
cmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAppbmRleCAyZjgwYzYzZDc4MzU0OTA5
ZWVhZDUyZTY4YjRmODI5YzFjMTc5NTYyLi4zMThiNTRlYmIzMjYzMDIzYjE1Y2NkMTBjMzg1Y2E4
MTA1ZDgyOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTk2LDYgKzk2LDcgQEAgc3RydWN0IFdlYlByb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMgewogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3Rl
cmVkQXNOb0FjY2VzczsKICAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
RGlzcGxheUlzb2xhdGVkOwogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVk
QXNDT1JTRW5hYmxlZDsKKyAgICBWZWN0b3I8U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFz
TmV2ZXJDYWNoZWQ7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBWZWN0b3I8
U3RyaW5nPiB1cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZDsKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uY3BwCmluZGV4IDY3MmEzOTdlZDZiZWM1MDkyMGVmMzc0YjQxMjZh
NDMzNTMwMWQ4NDEuLjUyZmQ5ZjBmNmQ1NGE1ODFhNWNmM2M0YTA5MzU2YmMxYzg1ODdiYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5jcHAKQEAgLTg0LDYgKzg0LDcgQEAgUmVmPFByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbj4gUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uOjpjb3B5KCkKICAgICBjb3B5
LT5tX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3RvcnkgPSB0aGlzLT5tX21lZGlhS2V5c1N0b3JhZ2VE
aXJlY3Rvcnk7CiAgICAgY29weS0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeSA9IHRoaXMtPm1f
d2ViU1FMRGF0YWJhc2VEaXJlY3Rvcnk7CiAgICAgY29weS0+bV9jYWNoZVBhcnRpdGlvbmVkVVJM
U2NoZW1lcyA9IHRoaXMtPm1fY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CisgICAgY29weS0+
bV9uZXZlckNhY2hlZFVSTFNjaGVtZXMgPSB0aGlzLT5tX25ldmVyQ2FjaGVkVVJMU2NoZW1lczsK
ICAgICBjb3B5LT5tX2Z1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZyA9IHRo
aXMtPm1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nOwogICAgIGNvcHkt
Pm1fb3ZlcnJpZGVMYW5ndWFnZXMgPSB0aGlzLT5tX292ZXJyaWRlTGFuZ3VhZ2VzOwogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKaW5kZXggZDAzODRjZTM5ZWI3ZTQwMzU0OTE0NTdkMWRlOGI3YjU0
YmQ2YWNiYi4uM2EzZjNjZjE0OGJmODMwYmJmNTM4ZDNmZDZjNWM0MTEwYTFhZTE1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCkBAIC04MCw2ICs4MCw5IEBAIHB1YmxpYzoKICAgICBjb25zdCBWZWN0
b3I8V1RGOjpTdHJpbmc+JiBjYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1f
Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7IH0KICAgICB2b2lkIHNldENhY2hlUGFydGl0aW9u
ZWRVUkxTY2hlbWVzKFZlY3RvcjxXVEY6OlN0cmluZz4mJiBjYWNoZVBhcnRpdGlvbmVkVVJMU2No
ZW1lcykgeyBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gV1RGTW92ZShjYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lcyk7IH0KIAorICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0cmluZz4mIG5l
dmVyQ2FjaGVkVVJMU2NoZW1lcygpIHsgcmV0dXJuIG1fbmV2ZXJDYWNoZWRVUkxTY2hlbWVzOyB9
CisgICAgdm9pZCBzZXROZXZlckNhY2hlZFVSTFNjaGVtZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYm
IG5ldmVyQ2FjaGVkVVJMU2NoZW1lcykgeyBtX25ldmVyQ2FjaGVkVVJMU2NoZW1lcyA9IFdURk1v
dmUobmV2ZXJDYWNoZWRVUkxTY2hlbWVzKTsgfQorCiAgICAgYm9vbCBmdWxseVN5bmNocm9ub3Vz
TW9kZUlzQWxsb3dlZEZvclRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2Z1bGx5U3luY2hyb25v
dXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZzsgfQogICAgIHZvaWQgc2V0RnVsbHlTeW5jaHJvbm91
c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nKGJvb2wgYWxsb3dlZCkgeyBtX2Z1bGx5U3luY2hyb25v
dXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZyA9IGFsbG93ZWQ7IH0KIApAQCAtMTAxLDYgKzEwNCw3
IEBAIHByaXZhdGU6CiAgICAgV1RGOjpTdHJpbmcgbV93ZWJTUUxEYXRhYmFzZURpcmVjdG9yeTsK
ICAgICBXVEY6OlN0cmluZyBtX21lZGlhS2V5c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgVmVjdG9y
PFdURjo6U3RyaW5nPiBtX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOworICAgIFZlY3RvcjxX
VEY6OlN0cmluZz4gbV9uZXZlckNhY2hlZFVSTFNjaGVtZXM7CiAgICAgYm9vbCBtX2Z1bGx5U3lu
Y2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZyB7IGZhbHNlIH07CiAgICAgVmVjdG9yPFdU
Rjo6U3RyaW5nPiBtX292ZXJyaWRlTGFuZ3VhZ2VzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi5oCmluZGV4IGQ4ZDE2Yjc4ZGMzY2M0MWM2YzQ3ODE0ZGU3ZWYwZDBmMTc5MzcxYTIu
LjAwMmE1MGI3MmZhNmM3ZWJhYmY5ZWVmNTljNTNjMzczOTY1MmU4Y2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24uaApAQCAtMzUsNiArMzUsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUo
MTBfMTAsIDhfMCkKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBOU1VJbnRlZ2VyIG1heGltdW1Qcm9j
ZXNzQ291bnQ7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgTlNJbnRlZ2VyIGRpc2tDYWNoZVNpemVP
dmVycmlkZSBXS19BVkFJTEFCTEUoMTBfMTEsIDlfMCk7CiBAcHJvcGVydHkgKG5vbmF0b21pYywg
Y29weSkgTlNBcnJheSAqY2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXM7CitAcHJvcGVydHkgKG5v
bmF0b21pYywgY29weSkgV0tfQVJSQVkoTlNTdHJpbmcgKikgKm5ldmVyQ2FjaGVkVVJMU2NoZW1l
cyBXS19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSk7CiAKIEBlbmQKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1By
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQppbmRleCA5OGRlNTRlOTNjZGE1YTAwY2YxNjEzNmFk
ZDM2OWEzOTYwMmRjNTlhLi4wNTVhYWU2MTE4ZDk1YThmZDRlZDM5NzljMDE2OGE2MzZkNGRiYmYy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQpAQCAtMTA2LDYgKzEwNiwzMSBA
QCAtICh2b2lkKXNldENhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzOihOU0FycmF5ICopY2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXMKICAgICBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5zZXRD
YWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNjaGVtZXMpKTsKIH0KIAorLSAoTlNB
cnJheSAqKW5ldmVyQ2FjaGVkVVJMU2NoZW1lcworeworICAgIGF1dG8mIHNjaGVtZXMgPSBfcHJv
Y2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5uZXZlckNhY2hlZFVSTFNjaGVtZXMoKTsKKyAgICBpZiAo
c2NoZW1lcy5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybiBAW107CisKKyAgICBOU011dGFibGVB
cnJheSAqYXJyYXkgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXlXaXRoQ2FwYWNpdHk6c2NoZW1lcy5z
aXplKCldOworICAgIGZvciAoYXV0byYgc2NoZW1lIDogc2NoZW1lcykKKyAgICAgICAgW2FycmF5
IGFkZE9iamVjdDooTlNTdHJpbmcgKilzY2hlbWVdOworCisgICAgcmV0dXJuIGFycmF5OworfQor
CistICh2b2lkKXNldE5ldmVyQ2FjaGVkVVJMU2NoZW1lczooTlNBcnJheSAqKW5ldmVyQ2FjaGVk
VVJMU2NoZW1lcworeworICAgIFZlY3RvcjxTdHJpbmc+IHNjaGVtZXM7CisgICAgc2NoZW1lcy5y
ZXNlcnZlSW5pdGlhbENhcGFjaXR5KG5ldmVyQ2FjaGVkVVJMU2NoZW1lcy5jb3VudCk7CisgICAg
Zm9yIChpZCBzY2hlbWUgaW4gbmV2ZXJDYWNoZWRVUkxTY2hlbWVzKSB7CisgICAgICAgIGlmIChb
c2NoZW1lIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCisgICAgICAgICAgICBzY2hl
bWVzLmFwcGVuZCgoTlNTdHJpbmcgKilzY2hlbWUpOworICAgIH0KKworICAgIF9wcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24tPnNldE5ldmVyQ2FjaGVkVVJMU2NoZW1lcyhXVEZNb3ZlKHNjaGVtZXMp
KTsKK30KKwogLSAoTlNTdHJpbmcgKilkZXNjcmlwdGlvbgogewogICAgIE5TU3RyaW5nICpkZXNj
cmlwdGlvbiA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgbWF4aW11bVBy
b2Nlc3NDb3VudCA9ICVsdSIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBzZWxmLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihbc2VsZiBtYXhpbXVtUHJvY2Vzc0NvdW50XSldOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKaW5kZXggMjgwYmI2
YWI3YmJkZGRmNDZjYmVmYzE2YmZlMmQ5ZGI5MzVhNzE2OC4uOTk4ZjhiYTQ3MTQ0OTRlYzFhZmE1
NzNkZWNjZWYzMzhiNzVhNTFkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYlByb2Nlc3NQb29sLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuY3BwCkBAIC0xNjEsNiArMTYxLDkgQEAgV2ViUHJvY2Vzc1Bvb2w6OldlYlByb2Nl
c3NQb29sKEFQSTo6UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uJiBjb25maWd1cmF0aW9uKQogICAg
ICwgbV91c2VyT2JzZXJ2YWJsZVBhZ2VDb3VudGVyKFt0aGlzXShib29sKSB7IHVwZGF0ZVByb2Nl
c3NTdXBwcmVzc2lvblN0YXRlKCk7IH0pCiAgICAgLCBtX3Byb2Nlc3NTdXBwcmVzc2lvbkRpc2Fi
bGVkRm9yUGFnZUNvdW50ZXIoW3RoaXNdKGJvb2wpIHsgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9u
U3RhdGUoKTsgfSkKIHsKKyAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IG1fY29uZmlndXJhdGlvbi0+
bmV2ZXJDYWNoZWRVUkxTY2hlbWVzKCkpCisgICAgICAgIG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05l
dmVyQ2FjaGVkLmFkZChzY2hlbWUpOworCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykK
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHVybFNjaGVtZSA6IG1fY29uZmlndXJhdGlvbi0+Y2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXMoKSkKICAgICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQ2Fj
aGVQYXJ0aXRpb25lZC5hZGQodXJsU2NoZW1lKTsKQEAgLTU3MSw2ICs1NzQsNyBAQCBXZWJQcm9j
ZXNzUHJveHkmIFdlYlByb2Nlc3NQb29sOjpjcmVhdGVOZXdXZWJQcm9jZXNzKCkKICAgICBjb3B5
VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3MsIHBhcmFtZXRlcnMudXJsU2No
ZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNzKTsKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9S
ZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkLCBwYXJhbWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVk
QXNEaXNwbGF5SXNvbGF0ZWQpOwogICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVy
QXNDT1JTRW5hYmxlZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJs
ZWQpOworICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNOZXZlckNhY2hlZCwg
cGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTmV2ZXJDYWNoZWQpOwogI2lmIEVOQUJM
RShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0
ZXJBc0NhY2hlUGFydGl0aW9uZWQsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Nh
Y2hlUGFydGl0aW9uZWQpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUG9vbC5oCmluZGV4IGQwODlmMzU5M2ZmZDZkZGJlZmY2ODAxNDQ1NjE5OTI0NDU1ODQxNWUu
LjY5MzhjZjI2NTQ1OWI2MTZhZDAxZGNmNGU0NWRkYzkzMWJlYTFmYWQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCkBAIC00NDAsNiArNDQwLDcgQEAgcHJpdmF0
ZToKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzTm9BY2Nlc3M7CiAg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Rpc3BsYXlJc29sYXRlZDsK
ICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQ09SU0VuYWJsZWQ7Cisg
ICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1lc1RvUmVnaXN0ZXJBc05ldmVyQ2FjaGVkOwogI2lm
IEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgSGFzaFNldDxTdHJpbmc+IG1fc2NoZW1l
c1RvUmVnaXN0ZXJBc0NhY2hlUGFydGl0aW9uZWQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCmluZGV4IDFjYjY4MjVmNDU1YmM4Y2Y0MjczZGRhYWNhNmQz
M2M0N2NjZjc4ODkuLmU3ZWY0NTMzOTc5ZGI2NWMyOGNhZTNlNjkwYjBkNTNiZTEzZjY0ZjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcApAQCAtMzA1LDYgKzMwNSw5
IEBAIHZvaWQgV2ViUHJvY2Vzczo6aW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycyYmIHBhcmFtZXRlcnMpCiAgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBwYXJh
bWV0ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCkKICAgICAgICAgcmVnaXN0
ZXJVUkxTY2hlbWVBc0NPUlNFbmFibGVkKHNjaGVtZSk7CiAKKyAgICBmb3IgKGF1dG8mIHNjaGVt
ZSA6IHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05ldmVyQ2FjaGVkKQorICAgICAg
ICByZWdpc3RlclVSTFNjaGVtZUFzTmV2ZXJDYWNoZWQoc2NoZW1lKTsKKwogICAgIFdlYkNvcmU6
OlNldHRpbmdzOjpzZXRTaG91bGRSZXdyaXRlQ29uc3RBc1ZhcihwYXJhbWV0ZXJzLnNob3VsZFJl
d3JpdGVDb25zdEFzVmFyKTsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCkBAIC00
MjUsNiArNDI4LDExIEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NPUlNF
bmFibGVkKGNvbnN0IFN0cmluZyYgdXJsU2NoZW1lKSBjb25zdAogICAgIFNjaGVtZVJlZ2lzdHJ5
OjpyZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQodXJsU2NoZW1lKTsKIH0KIAordm9pZCBX
ZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVtZUFzTmV2ZXJDYWNoZWQoY29uc3QgU3RyaW5nJiB1
cmxTY2hlbWUpIGNvbnN0Cit7CisgICAgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1l
QXNOZXZlckNhY2hlZCh1cmxTY2hlbWUpOworfQorCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElP
TklORykKIHZvaWQgV2ViUHJvY2Vzczo6cmVnaXN0ZXJVUkxTY2hlbWVBc0NhY2hlUGFydGl0aW9u
ZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5oCmluZGV4IDg2NzVmOThmNWM2MDUwZjY3YjRiMDhhOWQxNGFiM2I0OWU5
OWU5MzEuLjNhYWQ5Njc1N2JiOTNjMzViNDNlZTFhYWM0MzljNTE0ODdiZjZkMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCkBAIC0yMTksNiArMjE5LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNOb0FjY2Vzcyhjb25zdCBTdHJpbmcmKSBj
b25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNEaXNwbGF5SXNvbGF0ZWQoY29uc3Qg
U3RyaW5nJikgY29uc3Q7CiAgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQ09SU0VuYWJsZWQo
Y29uc3QgU3RyaW5nJikgY29uc3Q7CisgICAgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzTmV2ZXJD
YWNoZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKICAgICB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNDYWNoZVBhcnRpdGlvbmVkKGNvbnN0IFN0
cmluZyYpIGNvbnN0OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggNDNlNThlNGI1ZWJkMDcyZDE1NjA1ZTk1NGM1MTk3Y2U4MDZmNjUz
ZS4uNzJhNTI5NTMzNGUyOTc2YzRhZWFiMTljYTI5OTMxYWIzNTI4ODIxZCAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisy
MDE2LTAxLTA5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29j
b2FdIEFkZCBTUEkgdG8gb3B0IG91dCBhIFVSTCBzY2hlbWUgZnJvbSB0aGUgbWVtb3J5IGNhY2hl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5NTAK
KyAgICAgICAgcmRhcjovL3Byb2JsZW0vMjQwNjY2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBhbiBBUEkgdGVzdC4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL05ldmVyQ2FjaGVkVVJM
U2NoZW1lcy5tbTogQWRkZWQuCisgICAgICAgICgrW05ldmVyQ2FjaGVkVVJMU2NoZW1lUHJvdG9j
b2wgY2FuSW5pdFdpdGhSZXF1ZXN0Ol0pOgorICAgICAgICAoK1tOZXZlckNhY2hlZFVSTFNjaGVt
ZVByb3RvY29sIGNhbm9uaWNhbFJlcXVlc3RGb3JSZXF1ZXN0Ol0pOgorICAgICAgICAoK1tOZXZl
ckNhY2hlZFVSTFNjaGVtZVByb3RvY29sIHJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDp0b1JlcXVl
c3Q6XSk6CisgICAgICAgICgtW05ldmVyQ2FjaGVkVVJMU2NoZW1lUHJvdG9jb2wgc3RhcnRMb2Fk
aW5nXSk6CisgICAgICAgICgtW05ldmVyQ2FjaGVkVVJMU2NoZW1lUHJvdG9jb2wgc3RvcExvYWRp
bmddKToKKyAgICAgICAgKC1bTmV2ZXJDYWNoZWRVUkxTY2hlbWVzRGVsZWdhdGUgd2ViVmlldzpk
aWRGaW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoVEVTVCk6CisKIDIwMTYtMDEtMDggIEFh
a2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIHJ1bi13ZWJraXQt
dGVzdHMgbWlzLWNvdW50cyB0b3RhbHMgd2hlbiB0aGVyZSBhcmUgb3RoZXIgY3Jhc2hlcwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCAwZWZjY2E4ZDY5NzIzYTljMGM5Y2YzNjc5MzFhMTNiMmY2
MTVhYzBmLi5lNTczNTdiZWVhZTcyNzNiNGY4NGU0YzhkZGYwYmU4ZDU2ZWEyODlhIDEwMDY0NAot
LS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagpAQCAtMjgwLDYgKzI4MCw3IEBACiAJCUExNEZDNTkwMUI4QUUzNkYw
MEQxMDdFQiAvKiBUZXN0UHJvdG9jb2wubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBMTRGQzU4RTFCOEFFMzY1MDBEMTA3RUIgLyogVGVzdFByb3RvY29s
Lm1tICovOyB9OwogCQlBMUM0RkI2RTFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNEZCNkMxQkFD
Q0U1MDAwMzc0MkQwIC8qIFF1aWNrTG9vay5tbSAqLzsgfTsKIAkJQTFDNEZCNzMxQkFDRDFDQTAw
Mzc0MkQwIC8qIHBhZ2VzLnBhZ2VzIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAvKiBwYWdlcy5wYWdl
cyAqLzsgfTsKKwkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIE5ldmVyQ2FjaGVkVVJMU2No
ZW1lcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEEx
REY3NDMwMUM0MUI2NTgwMEEyRjREMCAvKiBOZXZlckNhY2hlZFVSTFNjaGVtZXMubW0gKi87IH07
CiAJCUE1N0EzNEYyMTZBRjZCMkIwMEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdp
bmRvd0NoYW5nZXMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBBNTdBMzRGMTE2QUY2OUUyMDBDMjUwMUYgLyogUGFnZVZpc2liaWxpdHlT
dGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWwgKi87IH07CiAJCUE1RTIwMjc1MTVCMjFGNkUwMEMx
M0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RTIwMjcwMTVCMjE4MDYwMEMx
M0UxNCAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5odG1sICovOyB9OwogCQlCNTVBRDFE
NTE3OUYzQjMwMDBBQzE0OTQgLyogUHJldmVudEltYWdlTG9hZFdpdGhBdXRvUmVzaXppbmdfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEI1
NUFEMUQzMTc5RjNBQkYwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VMb2FkV2l0aEF1dG9SZXNpemlu
Z19CdW5kbGUuY3BwICovOyB9OwpAQCAtNjczLDYgKzY3NCw3IEBACiAJCUExQTRGRTVEMThERDNE
QjcwMEI1RUE4QSAvKiBEb3dubG9hZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IERvd25sb2FkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBMUM0
RkI2QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gUXVpY2tMb29rLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlBMUM0RkI3MjFCQUNEMUI3MDAzNzQyRDAgLyogcGFnZXMucGFnZXMgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBuYW1lID0gcGFn
ZXMucGFnZXM7IHBhdGggPSBpb3MvcGFnZXMucGFnZXM7IHNvdXJjZVRyZWUgPSBTT1VSQ0VfUk9P
VDsgfTsKKwkJQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIE5ldmVyQ2FjaGVkVVJMU2NoZW1l
cy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IE5ldmVyQ2FjaGVk
VVJMU2NoZW1lcy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTFGREZEMkUxOUMy
ODhCQjAwNTE0OEE0IC8qIFdLSW1hZ2VDcmVhdGVDR0ltYWdlQ3Jhc2guY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0tJbWFnZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEVGMTZBRjY3NzIwMEMyNTAxRiAv
KiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0No
YW5nZXMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0EzNEYxMTZBRjY5RTIw
MEMyNTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hh
bmdlcy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTM4LDYgKzk0MCw3IEBA
CiAJCQkJMzdEMzZFRDYxQUY0MkVDRDAwQkFGNUQ5IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
Lm1tICovLAogCQkJCTUxQ0QxQzZBMUIzOENFMzYwMDE0MkNBNSAvKiBNb2RhbEFsZXJ0cy5tbSAq
LywKIAkJCQkxQUJDM0RFRDE4OTlCRTZEMDA0RjA2MjYgLyogTmF2aWdhdGlvbi5tbSAqLywKKwkJ
CQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAgLyogTmV2ZXJDYWNoZWRVUkxTY2hlbWVzLm1tICov
LAogCQkJCUNFQTZDRjIyMTlDQ0Y1QkQwMDY0RjVBNyAvKiBPcGVuQW5kQ2xvc2VXaW5kb3cubW0g
Ki8sCiAJCQkJQzk1NTAxQkUxOUFEMkZBRjAwNDlCRTNFIC8qIFByZWZlcmVuY2VzLm1tICovLAog
CQkJCTM3RDM2RjMxMUIwMDRERDQwMEJBRjVEOSAvKiBQcm92aXNpb25hbFVSTENoYW5nZS5tbSAq
LywKQEAgLTE3ODEsNiArMTc4NCw3IEBACiAJCQkJN0NDRTdGMUIxQTQxMUFFNjAwNDQ3QzRDIC8q
IFdpbGxMb2FkLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ3MUE0MTFBN0UwMDQ0N0M0
QyAvKiBXaWxsUGVyZm9ybUNsaWVudFJlZGlyZWN0VG9VUkxDcmFzaC5tbSBpbiBTb3VyY2VzICov
LAogCQkJCTdDQ0U3RjFDMUE0MTFBRTYwMDQ0N0M0QyAvKiBXaWxsU2VuZFN1Ym1pdEV2ZW50LmNw
cCBpbiBTb3VyY2VzICovLAorCQkJCUExREY3NDMyMUM0MUI2NTgwMEEyRjREMCAvKiBOZXZlckNh
Y2hlZFVSTFNjaGVtZXMubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VEODFBNDExQTdFMDA0
NDdDNEMgLyogV2lsbFNlbmRTdWJtaXRFdmVudC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTBGRTQ0
Nzk5MUI3NkYxRUIwMDk0OThFQiAvKiBQYXJraW5nTG90LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTdDQ0U3RUQ5MUE0MTFBN0UwMDQ0N0M0QyAvKiBXaW5kb3dsZXNzV2ViVmlld1dpdGhNZWRpYS5t
bSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvTmV2ZXJDYWNoZWRVUkxTY2hlbWVzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXQyQ29jb2EvTmV2ZXJDYWNoZWRVUkxTY2hlbWVzLm1tCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjVhZGQ5YjU4ODA2ZDQ1NzIxN2YxZjYxMjIwMmFjOWFjODZiYTE0MDMKLS0tIC9kZXYvbnVsbAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2NvYS9OZXZlckNhY2hlZFVS
TFNjaGVtZXMubW0KQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25m
aWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVECisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVz
LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tCcm93c2luZ0NvbnRleHRDb250cm9sbGVyLmg+CisjaW1w
b3J0IDxXZWJLaXQvV0tQcm9jZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKwor
c3RhdGljIE5TU3RyaW5nICogY29uc3QgY3VzdG9tU2NoZW1lID0gQCJjdXN0b20iOworc3RhdGlj
IGJvb2wgaXNEb25lOworc3RhdGljIHNpemVfdCBsb2Fkc1N0YXJ0ZWQ7CisKK0BpbnRlcmZhY2Ug
TmV2ZXJDYWNoZWRVUkxTY2hlbWVQcm90b2NvbCA6IE5TVVJMUHJvdG9jb2wKK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIE5ldmVyQ2FjaGVkVVJMU2NoZW1lUHJvdG9jb2wKKworKyAoQk9PTCljYW5J
bml0V2l0aFJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAqKXJlcXVlc3QKK3sKKyAgICByZXR1cm4gW3Jl
cXVlc3QuVVJMLnNjaGVtZSBpc0VxdWFsVG9TdHJpbmc6Y3VzdG9tU2NoZW1lXTsKK30KKworKyAo
TlNVUkxSZXF1ZXN0ICopY2Fub25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6KE5TVVJMUmVxdWVzdCAq
KXJlcXVlc3QKK3sKKyAgICByZXR1cm4gcmVxdWVzdDsKK30KKworKyAoQk9PTClyZXF1ZXN0SXND
YWNoZUVxdWl2YWxlbnQ6KE5TVVJMUmVxdWVzdCAqKWEgdG9SZXF1ZXN0OihOU1VSTFJlcXVlc3Qg
KiliCit7CisgICAgcmV0dXJuIE5POworfQorCistICh2b2lkKXN0YXJ0TG9hZGluZworeworICAg
ICsrbG9hZHNTdGFydGVkOworCisgICAgYXV0byBkYXRhID0gYWRvcHROUyhbW05TRGF0YSBhbGxv
Y10gaW5pdFdpdGhCYXNlNjRFbmNvZGVkU3RyaW5nOkAiaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FB
QUFvQUFBQUtDQVlBQUFDTk1zKzlBQUFBR1hSRldIUlRiMlowZDJGeVpRQkJaRzlpWlNCSmJXRm5a
VkpsWVdSNWNjbGxQQUFBQUZaSlJFRlVlRjU5ejRFSkFERUlRMUYzNms3dTVFN1pLWGVVUVBBQ0oz
d0s3VU5va1Z4Vms5a0huUUg3Ylk5aGJEeURoTlhnanBSTHFGbG80TTJHZ2Z5SkhoanE4VjRhZ2Zy
Z1BRWDNKdEpRR2JvZm1DSGdBL25BS2tzK0pBakZBQUFBQUVsRlRrU3VRbUNDIiBvcHRpb25zOjBd
KTsKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxsb2NdIGlu
aXRXaXRoVVJMOnNlbGYucmVxdWVzdC5VUkwgTUlNRVR5cGU6QCJpbWFnZS9wbmciIGV4cGVjdGVk
Q29udGVudExlbmd0aDpbZGF0YSBsZW5ndGhdIHRleHRFbmNvZGluZ05hbWU6bmlsXSk7CisgICAg
W3NlbGYuY2xpZW50IFVSTFByb3RvY29sOnNlbGYgZGlkUmVjZWl2ZVJlc3BvbnNlOnJlc3BvbnNl
LmdldCgpIGNhY2hlU3RvcmFnZVBvbGljeTpOU1VSTENhY2hlU3RvcmFnZU5vdEFsbG93ZWRdOwor
ICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2NvbDpzZWxmIGRpZExvYWREYXRhOmRhdGEuZ2V0KCld
OworICAgIFtzZWxmLmNsaWVudCBVUkxQcm90b2NvbERpZEZpbmlzaExvYWRpbmc6c2VsZl07Cit9
CisKKy0gKHZvaWQpc3RvcExvYWRpbmcKK3sKK30KKworQGVuZAorCitAaW50ZXJmYWNlIE5ldmVy
Q2FjaGVkVVJMU2NoZW1lc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRl
PgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gTmV2ZXJDYWNoZWRVUkxTY2hlbWVzRGVsZWdhdGUK
KworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmlnYXRp
b246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBpc0RvbmUgPSB0cnVlOworfQor
CitAZW5kCisKK1RFU1QoV2ViS2l0MiwgTmV2ZXJDYWNoZWRVUkxTY2hlbWVzKQoreworICAgIEBh
dXRvcmVsZWFzZXBvb2wgeworICAgICAgICBbTlNVUkxQcm90b2NvbCByZWdpc3RlckNsYXNzOltO
ZXZlckNhY2hlZFVSTFNjaGVtZVByb3RvY29sIGNsYXNzXV07CisgICAgICAgIFtXS0Jyb3dzaW5n
Q29udGV4dENvbnRyb2xsZXIgcmVnaXN0ZXJTY2hlbWVGb3JDdXN0b21Qcm90b2NvbDpjdXN0b21T
Y2hlbWVdOworCisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uID0gYWRvcHRO
UyhbW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgICAgICBb
cHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldE5ldmVyQ2FjaGVkVVJMU2NoZW1lczpAW2N1c3Rv
bVNjaGVtZV1dOworCisgICAgICAgIGF1dG8gcHJvY2Vzc1Bvb2wgPSBhZG9wdE5TKFtbV0tQcm9j
ZXNzUG9vbCBhbGxvY10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uZ2V0KCldKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3Q29uZmlndXJhdGlvbiA9IGFkb3B0
TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFt3ZWJW
aWV3Q29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpwcm9jZXNzUG9vbC5nZXQoKV07CisKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RaZXJvIGNvbmZpZ3VyYXRpb246d2ViVmlld0NvbmZpZ3VyYXRpb24uZ2V0KCld
KTsKKyAgICAgICAgYXV0byBuYXZpZ2F0aW9uRGVsZWdhdGUgPSBhZG9wdE5TKFtbTmV2ZXJDYWNo
ZWRVUkxTY2hlbWVzRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0
TmF2aWdhdGlvbkRlbGVnYXRlOm5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKV07CisKKyAgICAgICAg
TlNTdHJpbmcgKmh0bWxTdHJpbmcgPSBbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDpAIjwhRE9D
VFlQRSBodG1sPjxib2R5PjxpbWcgc3JjPSclQDovL2ltYWdlJz4iLCBjdXN0b21TY2hlbWVdOwor
ICAgICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsK
KyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgICAgICBFWFBF
Q1RfRVEoMVVMLCBsb2Fkc1N0YXJ0ZWQpOworCisgICAgICAgIGlzRG9uZSA9IGZhbHNlOworICAg
ICAgICBbd2ViVmlldyBsb2FkSFRNTFN0cmluZzpodG1sU3RyaW5nIGJhc2VVUkw6bmlsXTsKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZpc0RvbmUpOworICAgICAgICBFWFBFQ1Rf
RVEoMlVMLCBsb2Fkc1N0YXJ0ZWQpOworCisgICAgICAgIFtXS0Jyb3dzaW5nQ29udGV4dENvbnRy
b2xsZXIgdW5yZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOmN1c3RvbVNjaGVtZV07Cisg
ICAgICAgIFtOU1VSTFByb3RvY29sIHVucmVnaXN0ZXJDbGFzczpbTmV2ZXJDYWNoZWRVUkxTY2hl
bWVQcm90b2NvbCBjbGFzc11dOworICAgIH0KK30KKworI2VuZGlmIC8vIFdLX0FQSV9FTkFCTEVE
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>268641</attachid>
            <date>2016-01-09 22:19:04 -0800</date>
            <delta_ts>2016-01-11 13:57:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152950-20160109221833.patch</filename>
            <type>text/plain</type>
            <size>29133</size>
            <attacher name="Andy Estes">aestes</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0ODE4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjY1NmU2YjgzNTY3YWRi
ZDY5OTU4NjIzMDY2OWQ1NWU2ZjJiZjVhOS4uZmM0ZTk5MGRjYTBmNGZhY2E4MDc0NDVmYWNkOTU0
NmYyYzk1M2Q4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDE2LTAxLTA5ICBBbmR5
IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KKworICAgICAgICBbQ29jb2FdIEFkZCBTUEkgdG8g
b3B0IG91dCBhIFVSTCBzY2hlbWUgZnJvbSB0aGUgbWVtb3J5IGNhY2hlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI5NTAKKyAgICAgICAgcmRhcjov
L3Byb2JsZW0vMjQwNjY2NTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBhIGxpc3Qgb2Ygc2NoZW1lcyB0byBTY2hlbWVSZWdpc3RyeSB3aG9z
ZSByZXNvdXJjZXMgc2hvdWxkIGFsd2F5cyBiZSByZXZhbGlkYXRlZC4gVGF1Z2h0IENhY2hlZFJl
c291cmNlIHRvCisgICAgICAgIHJldHVybiBhIGZyZXNobmVzcyBsaWZldGltZSBvZiAwIGZvciB0
aGVzZSByZXNvdXJjZXMsIHVubGVzcyB0aGUgc2NoZW1lIGlzIG9uZSB0aGF0IHNob3VsZCBiZSBj
YWNoZWQgaW5kZWZpbml0ZWx5LgorCisgICAgICAgIE5ldyBBUEkgdGVzdDogV2ViS2l0Mi5BbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMKKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpzaG91bGRDYWNoZVNjaGVtZUluZGVmaW5p
dGVseSk6IE1vdmVkIGZyb20gU2NoZW1lUmVnaXN0cnk6OnNob3VsZENhY2hlUmVzcG9uc2VzRnJv
bVVSTFNjaGVtZUluZGVmaW5pdGVseSgpLgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OmZyZXNobmVzc0xpZmV0aW1lKTogRm9yIGEgc2NoZW1lIHRoYXQgc2hvdWxkIG5vdCBiZSBj
YWNoZWQgaW5kZWZpbml0ZWx5LCByZXR1cm4gMCBpZgorICAgICAgICB0aGF0IHNjaGVtZSBzaG91
bGQgYWx3YXlzIGJlIHJldmFsaWRhdGVkIGFjY29yZGluZyB0byBTY2hlbWVSZWdpc3RyeS4KKyAg
ICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjph
bHdheXNSZXZhbGlkYXRlZFNjaGVtZXMpOgorICAgICAgICAoV2ViQ29yZTo6U2NoZW1lUmVnaXN0
cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQ2FjaGVSZXNwb25zZXNGcm9t
VVJMU2NoZW1lSW5kZWZpbml0ZWx5KTogTW92ZWQgdG8gV2ViQ29yZTo6c2hvdWxkQ2FjaGVTY2hl
bWVJbmRlZmluaXRlbHkoKS4KKyAgICAgICAgVGhlcmUgd2FzIG5vIHJlYXNvbiBmb3IgdGhpcyB0
byBiZSBpbiBTY2hlbWVSZWdpc3RyeS4KKyAgICAgICAgKiBwbGF0Zm9ybS9TY2hlbWVSZWdpc3Ry
eS5oOgorCiAyMDE2LTAxLTA4ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWJzb2x1dGUgcG9zaXRpb25pbmcgLXdlYmtpdC1zZWFyY2gtY2FuY2VsLWJ1dHRvbiBj
cmFzaGVzIFNhZmFyaS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCBlMWQ4ZjY4ODVjZWJjODAxZmM5NzQxMjU3YTA5
ZmEwODlhMDgzZDlmLi5mZWVhZjhlY2I0NzNkYTdlMGE0ZTViNTJiMzQzNTk0NzM1NjYxZTJkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAKKzIwMTYtMDEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0
ZXNAYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIFNQSSB0byBvcHQgb3V0IGEgVVJM
IHNjaGVtZSBmcm9tIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE1Mjk1MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNDA2
NjY1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGEgYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzIHByb3BlcnR5IHRvIF9XS1Byb2Nlc3NQ
b29sQ29uZmlndXJhdGlvbi4gVGF1Z2h0IFdlYlByb2Nlc3MgdG8gYWRkIHRoZXNlCisgICAgICAg
IHNjaGVtZXMgdG8gU2NoZW1lUmVnaXN0cnkgd2hlbiBpbml0aWFsaXppbmcgYSBuZXcgd2ViIHBy
b2Nlc3MuCisKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29k
ZSk6CisgICAgICAgICogU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHA6Cisg
ICAgICAgIChBUEk6OlByb2Nlc3NQb29sQ29uZmlndXJhdGlvbjo6Y29weSk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tOgor
ICAgICAgICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gYWx3YXlzUmV2YWxpZGF0ZWRV
UkxTY2hlbWVzXSk6CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBzZXRB
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM6XSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBy
b2Nlc3NQb29sLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OmNyZWF0ZU5l
d1dlYlByb2Nlc3MpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBy
b2Nlc3M6OmluaXRpYWxpemVXZWJQcm9jZXNzKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vz
czo6cmVnaXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKToKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaDoKKwogMjAxNi0wMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFj
aHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEltcGxlbWVudCBkb3dubG9hZCBhdXRo
ZW50aWNhdGlvbiB3aXRoIE5ldHdvcmtTZXNzaW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCAzOTQ1OTUzMzY0Y2M2MDBjNjU4MGY0NjMx
MDM2Mjc5Nzc5Yzk4YzA3Li5kMDcyYjI0MzI5MzM1Mzk3NDc0ZWIzZTg5YzA3ZmUzMGUxMzM5MGEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAK
QEAgLTM1OSwxNCArMzU5LDI2IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2U6OmlzRXhwaXJlZCgpIGNv
bnN0CiAgICAgcmV0dXJuIGNvbXB1dGVDdXJyZW50QWdlKG1fcmVzcG9uc2UsIG1fcmVzcG9uc2VU
aW1lc3RhbXApID4gZnJlc2huZXNzTGlmZXRpbWUobV9yZXNwb25zZSk7CiB9CiAKK3N0YXRpYyBp
bmxpbmUgYm9vbCBzaG91bGRDYWNoZVNjaGVtZUluZGVmaW5pdGVseShjb25zdCBTdHJpbmcmIHNj
aGVtZSkKK3sKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uo
c2NoZW1lLCAiYXBwbGV3ZWJkYXRhIikpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCisg
ICAgcmV0dXJuIGVxdWFsSWdub3JpbmdDYXNlKHNjaGVtZSwgImRhdGEiKTsKK30KKwogc3RkOjpj
aHJvbm86Om1pY3Jvc2Vjb25kcyBDYWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UpIGNvbnN0CiB7CiAgICAgaWYgKCFyZXNwb25z
ZS51cmwoKS5wcm90b2NvbElzSW5IVFRQRmFtaWx5KCkpIHsKLSAgICAgICAgLy8gRG9uJ3QgY2Fj
aGUgbm9uLUhUVFAgbWFpbiByZXNvdXJjZXMgc2luY2Ugd2UgY2FuJ3QgY2hlY2sgZm9yIGZyZXNo
bmVzcy4KLSAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBub3QgY2FjaGUgc3VicmVzb3VyY2Vz
IGVpdGhlciwgYnV0IHdoZW4gd2UgdHJpZWQgdGhpcwotICAgICAgICAvLyBpdCBjYXVzZWQgcGVy
Zm9ybWFuY2UgYW5kIGZsYWtpbmVzcyBpc3N1ZXMgaW4gb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUu
Ci0gICAgICAgIGlmIChtX3R5cGUgPT0gTWFpblJlc291cmNlICYmICFTY2hlbWVSZWdpc3RyeTo6
c2hvdWxkQ2FjaGVSZXNwb25zZXNGcm9tVVJMU2NoZW1lSW5kZWZpbml0ZWx5KHJlc3BvbnNlLnVy
bCgpLnByb3RvY29sKCkpKQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6Y2hyb25vOjptaWNyb3Nl
Y29uZHM6Onplcm8oKTsKKyAgICAgICAgU3RyaW5nIHByb3RvY29sID0gcmVzcG9uc2UudXJsKCku
cHJvdG9jb2woKTsKKyAgICAgICAgaWYgKCFzaG91bGRDYWNoZVNjaGVtZUluZGVmaW5pdGVseShw
cm90b2NvbCkpIHsKKyAgICAgICAgICAgIC8vIERvbid0IGNhY2hlIG5vbi1IVFRQIG1haW4gcmVz
b3VyY2VzIHNpbmNlIHdlIGNhbid0IGNoZWNrIGZvciBmcmVzaG5lc3MuCisgICAgICAgICAgICAv
LyBGSVhNRTogV2Ugc2hvdWxkIG5vdCBjYWNoZSBzdWJyZXNvdXJjZXMgZWl0aGVyLCBidXQgd2hl
biB3ZSB0cmllZCB0aGlzCisgICAgICAgICAgICAvLyBpdCBjYXVzZWQgcGVyZm9ybWFuY2UgYW5k
IGZsYWtpbmVzcyBpc3N1ZXMgaW4gb3VyIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICAgICAgICAg
ICBpZiAobV90eXBlID09IE1haW5SZXNvdXJjZSB8fCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3
YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZShwcm90b2NvbCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6Y2hyb25vOjptaWNyb3NlY29uZHM6Onplcm8oKTsKKyAgICAgICAgfQogCiAgICAgICAg
IHJldHVybiBzdGQ6OmNocm9ubzo6bWljcm9zZWNvbmRzOjptYXgoKTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5jcHAKaW5kZXggYThiMGExMTUwYzQzZTEy
YTFhYWJiZDBmMGVhZTIyNDdlMTFiM2ExOS4uZmFhNjVmNDgyY2Q4YmQyMDc0ZThmMzQwZmY0ZDRm
ODczMTJiOGIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1lUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lzdHJ5LmNw
cApAQCAtMTc5LDYgKzE3OSwxMiBAQCBzdGF0aWMgVVJMU2NoZW1lc01hcCYgY2FjaGVQYXJ0aXRp
b25pbmdTY2hlbWVzKCkKIH0KICNlbmRpZgogCitzdGF0aWMgVVJMU2NoZW1lc01hcCYgYWx3YXlz
UmV2YWxpZGF0ZWRTY2hlbWVzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMU2No
ZW1lc01hcD4gc2NoZW1lczsKKyAgICByZXR1cm4gc2NoZW1lczsKK30KKwogYm9vbCBTY2hlbWVS
ZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2FsKGNvbnN0IFN0cmluZyYgc2NoZW1l
KQogewogICAgIGlmIChzY2hlbWUuaXNFbXB0eSgpKQpAQCAtMzI5LDEzICszMzUsMTYgQEAgYm9v
bCBTY2hlbWVSZWdpc3RyeTo6c2NoZW1lU2hvdWxkQnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5
KGNvbnN0IFN0cmluZyYgc2NoZW0KICAgICByZXR1cm4gQ29udGVudFNlY3VyaXR5UG9saWN5Qnlw
YXNzaW5nU2NoZW1lcygpLmNvbnRhaW5zKHNjaGVtZSk7CiB9CiAKLWJvb2wgU2NoZW1lUmVnaXN0
cnk6OnNob3VsZENhY2hlUmVzcG9uc2VzRnJvbVVSTFNjaGVtZUluZGVmaW5pdGVseShjb25zdCBT
dHJpbmcmIHNjaGVtZSkKK3ZvaWQgU2NoZW1lUmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNB
bHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmIHNjaGVtZSkKIHsKLSNpZiBQTEFURk9STShD
T0NPQSkKLSAgICBpZiAoZXF1YWxJZ25vcmluZ0Nhc2Uoc2NoZW1lLCAiYXBwbGV3ZWJkYXRhIikp
Ci0gICAgICAgIHJldHVybiB0cnVlOwotI2VuZGlmCi0gICAgcmV0dXJuIGVxdWFsSWdub3JpbmdD
YXNlKHNjaGVtZSwgImRhdGEiKTsKKyAgICBhbHdheXNSZXZhbGlkYXRlZFNjaGVtZXMoKS5hZGQo
c2NoZW1lKTsKK30KKworYm9vbCBTY2hlbWVSZWdpc3RyeTo6c2hvdWxkQWx3YXlzUmV2YWxpZGF0
ZVVSTFNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSkKK3sKKyAgICBpZiAoc2NoZW1lLmlzRW1w
dHkoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBhbHdheXNSZXZhbGlkYXRl
ZFNjaGVtZXMoKS5jb250YWlucyhzY2hlbWUpOwogfQogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJ
VElPTklORykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NjaGVtZVJlZ2lz
dHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY2hlbWVSZWdpc3RyeS5oCmluZGV4IGY3
MDQ2Mzc3ZTIwMWUwYmU4M2U2ZDI3NGMwNTAxYTdiOTc2YjZlYzguLjFkYzc4MDMxNTkzM2YyOTE0
MWUwYzRjZmFiMzBjMTgxN2M5MDY1NWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NjaGVtZVJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2NoZW1l
UmVnaXN0cnkuaApAQCAtODgsOSArODgsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JU
IHN0YXRpYyB2b2lkIHJlZ2lzdGVyVVJMU2NoZW1lQXNCeXBhc3NpbmdDb250ZW50U2VjdXJpdHlQ
b2xpY3koY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2
b2lkIHJlbW92ZVVSTFNjaGVtZVJlZ2lzdGVyZWRBc0J5cGFzc2luZ0NvbnRlbnRTZWN1cml0eVBv
bGljeShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgc3RhdGljIGJvb2wgc2NoZW1lU2hvdWxk
QnlwYXNzQ29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFN0cmluZyYgc2NoZW1lKTsKLSAgICAK
LSAgICAvLyBTY2hlbWVzIHdob3NlIHJlc3BvbnNlcyBjYW4gYmUgY2FjaGVkIGluZGVmaW5pdGVs
eS4KLSAgICBzdGF0aWMgYm9vbCBzaG91bGRDYWNoZVJlc3BvbnNlc0Zyb21VUkxTY2hlbWVJbmRl
ZmluaXRlbHkoY29uc3QgU3RyaW5nJiBzY2hlbWUpOworCisgICAgLy8gU2NoZW1lcyB3aG9zZSBy
ZXNwb25zZXMgc2hvdWxkIG5ldmVyIGJlIGNhY2hlZC4KKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0
aWMgdm9pZCByZWdpc3RlclVSTFNjaGVtZUFzQWx3YXlzUmV2YWxpZGF0ZWQoY29uc3QgU3RyaW5n
Jik7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkQWx3YXlzUmV2YWxpZGF0ZVVSTFNjaGVtZShjb25z
dCBTdHJpbmcmKTsKIAogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAgICAgLy8gU2No
ZW1lcyB3aG9zZSByZXF1ZXN0cyBzaG91bGQgYmUgcGFydGl0aW9uZWQgaW4gdGhlIGNhY2hlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggNmFmMzE3ZWRjY2NiM2YzNzhlZDg5NDkxYzRhZGY3YjZjZWIxYmJlOS4u
ZGZhMzE4ZjcwNjBiZWRhMDlhOTZjMGNmZjc4ZjQxNmJkZjZiNTcxMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcApA
QCAtOTAsNiArOTAsNyBAQCB2b2lkIFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29k
ZShJUEM6OkFyZ3VtZW50RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IHVy
bFNjaGVtZXNSZWdpc3RlcmVkQXNOb0FjY2VzczsKICAgICBlbmNvZGVyIDw8IHVybFNjaGVtZXNS
ZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQ7CiAgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzUmVn
aXN0ZXJlZEFzQ09SU0VuYWJsZWQ7CisgICAgZW5jb2RlciA8PCB1cmxTY2hlbWVzVG9SZWdpc3Rl
ckFzQWx3YXlzUmV2YWxpZGF0ZWQ7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAg
ICBlbmNvZGVyIDw8IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkOwogI2Vu
ZGlmCkBAIC0yMDIsNiArMjAzLDggQEAgYm9vbCBXZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
OjpkZWNvZGUoSVBDOjpBcmd1bWVudERlY29kZXImIGRlY29kZXIsIFdlYlByb2MKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzQ09SU0VuYWJsZWQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
aWYgKCFkZWNvZGVyLmRlY29kZShwYXJhbWV0ZXJzLnVybFNjaGVtZXNUb1JlZ2lzdGVyQXNBbHdh
eXNSZXZhbGlkYXRlZCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKICNpZiBFTkFCTEUoQ0FDSEVf
UEFSVElUSU9OSU5HKQogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocGFyYW1ldGVycy51cmxTY2hl
bWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRpb25lZCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5oCmluZGV4IDJmODBjNjNkNzgzNTQ5MDllZWFkNTJlNjhiNGY4MjljMWMxNzk1NjIuLmRh
MDI3NjY4MDkzMDg3NjY1YTQ5Y2MxZTQwYzkzNDIwZmYzY2JlZmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1NoYXJlZC9XZWJQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKKysrIGIvU291
cmNlL1dlYktpdDIvU2hhcmVkL1dlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApAQCAtOTYs
NiArOTYsNyBAQCBzdHJ1Y3QgV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyB7CiAgICAgVmVj
dG9yPFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc05vQWNjZXNzOwogICAgIFZlY3RvcjxT
dHJpbmc+IHVybFNjaGVtZXNSZWdpc3RlcmVkQXNEaXNwbGF5SXNvbGF0ZWQ7CiAgICAgVmVjdG9y
PFN0cmluZz4gdXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkOworICAgIFZlY3RvcjxT
dHJpbmc+IHVybFNjaGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZDsKICNpZiBFTkFC
TEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIFZlY3RvcjxTdHJpbmc+IHVybFNjaGVtZXNSZWdp
c3RlcmVkQXNDYWNoZVBhcnRpdGlvbmVkOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5jcHAK
aW5kZXggNjcyYTM5N2VkNmJlYzUwOTIwZWYzNzRiNDEyNmE0MzM1MzAxZDg0MS4uNzg5NWUxMzdi
MDIzYzg4MDNkYmQwNGIwNDJhZWJmZjMyMGNkZDlmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cApAQCAtODQsNiArODQsNyBAQCBSZWY8UHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uPiBQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb246OmNvcHkoKQogICAgIGNvcHktPm1fbWVkaWFLZXlzU3RvcmFnZURp
cmVjdG9yeSA9IHRoaXMtPm1fbWVkaWFLZXlzU3RvcmFnZURpcmVjdG9yeTsKICAgICBjb3B5LT5t
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5ID0gdGhpcy0+bV93ZWJTUUxEYXRhYmFzZURpcmVjdG9y
eTsKICAgICBjb3B5LT5tX2NhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzID0gdGhpcy0+bV9jYWNo
ZVBhcnRpdGlvbmVkVVJMU2NoZW1lczsKKyAgICBjb3B5LT5tX2Fsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lcyA9IHRoaXMtPm1fYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOwogICAgIGNvcHkt
Pm1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nID0gdGhpcy0+bV9mdWxs
eVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3Rpbmc7CiAgICAgY29weS0+bV9vdmVycmlk
ZUxhbmd1YWdlcyA9IHRoaXMtPm1fb3ZlcnJpZGVMYW5ndWFnZXM7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3Vy
YXRpb24uaAppbmRleCBkMDM4NGNlMzllYjdlNDAzNTQ5MTQ1N2QxZGU4YjdiNTRiZDZhY2JiLi5h
NWQ4MTNmZjAyZmIyNzIyZWU3M2JlNTgzMGMzMDM5OTZmM2E0MjNhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmgKQEAgLTgwLDYgKzgwLDkgQEAgcHVibGljOgogICAgIGNvbnN0IFZlY3RvcjxXVEY6OlN0
cmluZz4mIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9jYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsgfQogICAgIHZvaWQgc2V0Q2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVt
ZXMoVmVjdG9yPFdURjo6U3RyaW5nPiYmIGNhY2hlUGFydGl0aW9uZWRVUkxTY2hlbWVzKSB7IG1f
Y2FjaGVQYXJ0aXRpb25lZFVSTFNjaGVtZXMgPSBXVEZNb3ZlKGNhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKTsgfQogCisgICAgY29uc3QgVmVjdG9yPFdURjo6U3RyaW5nPiYgYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzKCkgeyByZXR1cm4gbV9hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXM7
IH0KKyAgICB2b2lkIHNldEFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcyhWZWN0b3I8V1RGOjpT
dHJpbmc+JiYgYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzKSB7IG1fYWx3YXlzUmV2YWxpZGF0
ZWRVUkxTY2hlbWVzID0gV1RGTW92ZShhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMpOyB9CisK
ICAgICBib29sIGZ1bGx5U3luY2hyb25vdXNNb2RlSXNBbGxvd2VkRm9yVGVzdGluZygpIGNvbnN0
IHsgcmV0dXJuIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nOyB9CiAg
ICAgdm9pZCBzZXRGdWxseVN5bmNocm9ub3VzTW9kZUlzQWxsb3dlZEZvclRlc3RpbmcoYm9vbCBh
bGxvd2VkKSB7IG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JUZXN0aW5nID0gYWxs
b3dlZDsgfQogCkBAIC0xMDEsNiArMTA0LDcgQEAgcHJpdmF0ZToKICAgICBXVEY6OlN0cmluZyBt
X3dlYlNRTERhdGFiYXNlRGlyZWN0b3J5OwogICAgIFdURjo6U3RyaW5nIG1fbWVkaWFLZXlzU3Rv
cmFnZURpcmVjdG9yeTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fY2FjaGVQYXJ0aXRpb25l
ZFVSTFNjaGVtZXM7CisgICAgVmVjdG9yPFdURjo6U3RyaW5nPiBtX2Fsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lczsKICAgICBib29sIG1fZnVsbHlTeW5jaHJvbm91c01vZGVJc0FsbG93ZWRGb3JU
ZXN0aW5nIHsgZmFsc2UgfTsKICAgICBWZWN0b3I8V1RGOjpTdHJpbmc+IG1fb3ZlcnJpZGVMYW5n
dWFnZXM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgKaW5kZXggZDhkMTZiNzhk
YzNjYzQxYzZjNDc4MTRkZTdlZjBkMGYxNzkzNzFhMi4uMTVmNTY3NGIwZGM2MjhhNmVlODM5YTA0
YTY5NjY3Y2UxNTcwMjY5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCkBAIC0z
NSw2ICszNSw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRSgxMF8xMCwgOF8wKQogQHByb3BlcnR5IChu
b25hdG9taWMpIE5TVUludGVnZXIgbWF4aW11bVByb2Nlc3NDb3VudDsKIEBwcm9wZXJ0eSAobm9u
YXRvbWljKSBOU0ludGVnZXIgZGlza0NhY2hlU2l6ZU92ZXJyaWRlIFdLX0FWQUlMQUJMRSgxMF8x
MSwgOV8wKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0FycmF5ICpjYWNoZVBhcnRp
dGlvbmVkVVJMU2NoZW1lczsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBXS19BUlJBWShO
U1N0cmluZyAqKSAqYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzIFdLX0FWQUlMQUJMRShXS19N
QUNfVEJBLCBXS19JT1NfVEJBKTsKIAogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLm1tCmluZGV4IDk4ZGU1NGU5M2NkYTVhMDBjZjE2MTM2YWRkMzY5YTM5NjAyZGM1OWEuLjhh
OTgwNzRjYmY2NmQ3NmE0NmU2Yzk0M2MyOGU3ZGY2OGUyYjIxNTcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9u
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tCkBAIC0xMDYsNiArMTA2LDMxIEBAIC0gKHZvaWQpc2V0Q2FjaGVQ
YXJ0aXRpb25lZFVSTFNjaGVtZXM6KE5TQXJyYXkgKiljYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1l
cwogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldENhY2hlUGFydGl0aW9uZWRVUkxT
Y2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOwogfQogCistIChOU0FycmF5ICopYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzCit7CisgICAgYXV0byYgc2NoZW1lcyA9IF9wcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24tPmFsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lcygpOworICAgIGlmIChzY2hlbWVz
LmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIEBbXTsKKworICAgIE5TTXV0YWJsZUFycmF5ICph
cnJheSA9IFtOU011dGFibGVBcnJheSBhcnJheVdpdGhDYXBhY2l0eTpzY2hlbWVzLnNpemUoKV07
CisgICAgZm9yIChhdXRvJiBzY2hlbWUgOiBzY2hlbWVzKQorICAgICAgICBbYXJyYXkgYWRkT2Jq
ZWN0OihOU1N0cmluZyAqKXNjaGVtZV07CisKKyAgICByZXR1cm4gYXJyYXk7Cit9CisKKy0gKHZv
aWQpc2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOihOU0FycmF5ICopYWx3YXlzUmV2YWxp
ZGF0ZWRVUkxTY2hlbWVzCit7CisgICAgVmVjdG9yPFN0cmluZz4gc2NoZW1lczsKKyAgICBzY2hl
bWVzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoYWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLmNv
dW50KTsKKyAgICBmb3IgKGlkIHNjaGVtZSBpbiBhbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMp
IHsKKyAgICAgICAgaWYgKFtzY2hlbWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkK
KyAgICAgICAgICAgIHNjaGVtZXMuYXBwZW5kKChOU1N0cmluZyAqKXNjaGVtZSk7CisgICAgfQor
CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxT
Y2hlbWVzKFdURk1vdmUoc2NoZW1lcykpOworfQorCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9u
CiB7CiAgICAgTlNTdHJpbmcgKmRlc2NyaXB0aW9uID0gW05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCI8JUA6ICVwOyBtYXhpbXVtUHJvY2Vzc0NvdW50ID0gJWx1IiwgTlNTdHJpbmdGcm9tQ2xh
c3Moc2VsZi5jbGFzcyksIHNlbGYsIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KFtzZWxmIG1h
eGltdW1Qcm9jZXNzQ291bnRdKV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQb29sLmNwcAppbmRleCAyODBiYjZhYjdiYmRkZGY0NmNiZWZjMTZiZmUyZDlkYjkzNWE3MTY4
Li4xOTIwZDcxYzJiMjFkOTIxYTRiNTIwZDdiOGM5OThiYWU4ZmU5MzE3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKQEAgLTE2MSw2ICsxNjEsOSBAQCBX
ZWJQcm9jZXNzUG9vbDo6V2ViUHJvY2Vzc1Bvb2woQVBJOjpQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24mIGNvbmZpZ3VyYXRpb24pCiAgICAgLCBtX3VzZXJPYnNlcnZhYmxlUGFnZUNvdW50ZXIoW3Ro
aXNdKGJvb2wpIHsgdXBkYXRlUHJvY2Vzc1N1cHByZXNzaW9uU3RhdGUoKTsgfSkKICAgICAsIG1f
cHJvY2Vzc1N1cHByZXNzaW9uRGlzYWJsZWRGb3JQYWdlQ291bnRlcihbdGhpc10oYm9vbCkgeyB1
cGRhdGVQcm9jZXNzU3VwcHJlc3Npb25TdGF0ZSgpOyB9KQogeworICAgIGZvciAoYXV0byYgc2No
ZW1lIDogbV9jb25maWd1cmF0aW9uLT5hbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMoKSkKKyAg
ICAgICAgbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQuYWRkKHNjaGVtZSk7
CisKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIGZvciAoY29uc3QgYXV0byYg
dXJsU2NoZW1lIDogbV9jb25maWd1cmF0aW9uLT5jYWNoZVBhcnRpdGlvbmVkVVJMU2NoZW1lcygp
KQogICAgICAgICBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDYWNoZVBhcnRpdGlvbmVkLmFkZCh1cmxT
Y2hlbWUpOwpAQCAtNTcxLDYgKzU3NCw3IEBAIFdlYlByb2Nlc3NQcm94eSYgV2ViUHJvY2Vzc1Bv
b2w6OmNyZWF0ZU5ld1dlYlByb2Nlc3MoKQogICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1Jl
Z2lzdGVyQXNOb0FjY2VzcywgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzTm9BY2Nl
c3MpOwogICAgIGNvcHlUb1ZlY3RvcihtX3NjaGVtZXNUb1JlZ2lzdGVyQXNEaXNwbGF5SXNvbGF0
ZWQsIHBhcmFtZXRlcnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0Rpc3BsYXlJc29sYXRlZCk7CiAg
ICAgY29weVRvVmVjdG9yKG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0NPUlNFbmFibGVkLCBwYXJhbWV0
ZXJzLnVybFNjaGVtZXNSZWdpc3RlcmVkQXNDT1JTRW5hYmxlZCk7CisgICAgY29weVRvVmVjdG9y
KG1fc2NoZW1lc1RvUmVnaXN0ZXJBc0Fsd2F5c1JldmFsaWRhdGVkLCBwYXJhbWV0ZXJzLnVybFNj
aGVtZXNUb1JlZ2lzdGVyQXNBbHdheXNSZXZhbGlkYXRlZCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BB
UlRJVElPTklORykKICAgICBjb3B5VG9WZWN0b3IobV9zY2hlbWVzVG9SZWdpc3RlckFzQ2FjaGVQ
YXJ0aXRpb25lZCwgcGFyYW1ldGVycy51cmxTY2hlbWVzUmVnaXN0ZXJlZEFzQ2FjaGVQYXJ0aXRp
b25lZCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggZDA4OWYzNTkzZmZkNmRkYmVmZjY4MDE0NDU2MTk5MjQ0NTU4NDE1ZS4uMDBiOTQwMjI4
ZDFiMTkyZDgyZWM3YzE2MGUyODBiZDIzMzU5ZTY4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTQ0MCw2ICs0NDAsNyBAQCBwcml2YXRlOgogICAgIEhh
c2hTZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNOb0FjY2VzczsKICAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzRGlzcGxheUlzb2xhdGVkOwogICAgIEhhc2hT
ZXQ8U3RyaW5nPiBtX3NjaGVtZXNUb1JlZ2lzdGVyQXNDT1JTRW5hYmxlZDsKKyAgICBIYXNoU2V0
PFN0cmluZz4gbV9zY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQ7CiAjaWYgRU5B
QkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBIYXNoU2V0PFN0cmluZz4gbV9zY2hlbWVzVG9S
ZWdpc3RlckFzQ2FjaGVQYXJ0aXRpb25lZDsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUHJvY2Vzcy5jcHAKaW5kZXggMWNiNjgyNWY0NTViYzhjZjQyNzNkZGFhY2E2ZDMzYzQ3
Y2NmNzg4OS4uYTliMzQxYzUyNDYxNTMyMGIzNTRhNzFmZjg5Y2JjYWM0MjRhNGUxMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCkBAIC0zMDUsNiArMzA1LDkgQEAg
dm9pZCBXZWJQcm9jZXNzOjppbml0aWFsaXplV2ViUHJvY2VzcyhXZWJQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzJiYgcGFyYW1ldGVycykKICAgICBmb3IgKGF1dG8mIHNjaGVtZSA6IHBhcmFtZXRl
cnMudXJsU2NoZW1lc1JlZ2lzdGVyZWRBc0NPUlNFbmFibGVkKQogICAgICAgICByZWdpc3RlclVS
TFNjaGVtZUFzQ09SU0VuYWJsZWQoc2NoZW1lKTsKIAorICAgIGZvciAoYXV0byYgc2NoZW1lIDog
cGFyYW1ldGVycy51cmxTY2hlbWVzVG9SZWdpc3RlckFzQWx3YXlzUmV2YWxpZGF0ZWQpCisgICAg
ICAgIHJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChzY2hlbWUpOworCiAgICAg
V2ViQ29yZTo6U2V0dGluZ3M6OnNldFNob3VsZFJld3JpdGVDb25zdEFzVmFyKHBhcmFtZXRlcnMu
c2hvdWxkUmV3cml0ZUNvbnN0QXNWYXIpOwogCiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklO
RykKQEAgLTQyNSw2ICs0MjgsMTEgQEAgdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNjaGVt
ZUFzQ09SU0VuYWJsZWQoY29uc3QgU3RyaW5nJiB1cmxTY2hlbWUpIGNvbnN0CiAgICAgU2NoZW1l
UmVnaXN0cnk6OnJlZ2lzdGVyVVJMU2NoZW1lQXNDT1JTRW5hYmxlZCh1cmxTY2hlbWUpOwogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OnJlZ2lzdGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChj
b25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKK3sKKyAgICBTY2hlbWVSZWdpc3RyeTo6cmVn
aXN0ZXJVUkxTY2hlbWVBc0Fsd2F5c1JldmFsaWRhdGVkKHVybFNjaGVtZSk7Cit9CisKICNpZiBF
TkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogdm9pZCBXZWJQcm9jZXNzOjpyZWdpc3RlclVSTFNj
aGVtZUFzQ2FjaGVQYXJ0aXRpb25lZChjb25zdCBTdHJpbmcmIHVybFNjaGVtZSkgY29uc3QKIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKaW5kZXggODY3NWY5OGY1YzYwNTBm
NjdiNGIwOGE5ZDE0YWIzYjQ5ZTk5ZTkzMS4uYmI5YzAyNGQ0MGNiM2Q4YmU2MWQyNDJhM2ZkNDQ4
NTZlMTQ5NGUzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9j
ZXNzLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmgKQEAgLTIx
OSw2ICsyMTksNyBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc05vQWNj
ZXNzKGNvbnN0IFN0cmluZyYpIGNvbnN0OwogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVBc0Rp
c3BsYXlJc29sYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICAgICB2b2lkIHJlZ2lzdGVyVVJM
U2NoZW1lQXNDT1JTRW5hYmxlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKKyAgICB2b2lkIHJlZ2lz
dGVyVVJMU2NoZW1lQXNBbHdheXNSZXZhbGlkYXRlZChjb25zdCBTdHJpbmcmKSBjb25zdDsKICNp
ZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQogICAgIHZvaWQgcmVnaXN0ZXJVUkxTY2hlbWVB
c0NhY2hlUGFydGl0aW9uZWQoY29uc3QgU3RyaW5nJikgY29uc3Q7CiAjZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA0M2U1OGU0YjVlYmQw
NzJkMTU2MDVlOTU0YzUxOTdjZTgwNmY2NTNlLi5iZDgwNDIzOWU1OGMxMmE0MmFjYzBkMzEwNTFh
YWY2NzQ4N2Y2NTY1IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTYtMDEtMDkgIEFuZHkgRXN0ZXMgIDxhZXN0ZXNA
YXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gQWRkIFNQSSB0byBvcHQgb3V0IGEgVVJMIHNj
aGVtZSBmcm9tIHRoZSBtZW1vcnkgY2FjaGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE1Mjk1MAorICAgICAgICByZGFyOi8vcHJvYmxlbS8yNDA2NjY1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGFuIEFQSSB0ZXN0LgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXQyQ29jb2EvQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOiBBZGRlZC4KKyAgICAg
ICAgKCtbQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVQcm90b2NvbCBjYW5Jbml0V2l0aFJlcXVl
c3Q6XSk6CisgICAgICAgICgrW0Fsd2F5c1JldmFsaWRhdGVkVVJMU2NoZW1lUHJvdG9jb2wgY2Fu
b25pY2FsUmVxdWVzdEZvclJlcXVlc3Q6XSk6CisgICAgICAgICgrW0Fsd2F5c1JldmFsaWRhdGVk
VVJMU2NoZW1lUHJvdG9jb2wgcmVxdWVzdElzQ2FjaGVFcXVpdmFsZW50OnRvUmVxdWVzdDpdKToK
KyAgICAgICAgKC1bQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVQcm90b2NvbCBzdGFydExvYWRp
bmddKToKKyAgICAgICAgKC1bQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVQcm90b2NvbCBzdG9w
TG9hZGluZ10pOgorICAgICAgICAoLVtBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNEZWxlZ2F0
ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6CisgICAgICAgIChURVNUKToKKwogMjAx
Ni0wMS0wOCAgQWFrYXNoIEphaW4gIDxhYWthc2hfamFpbkBhcHBsZS5jb20+CiAKICAgICAgICAg
cnVuLXdlYmtpdC10ZXN0cyBtaXMtY291bnRzIHRvdGFscyB3aGVuIHRoZXJlIGFyZSBvdGhlciBj
cmFzaGVzCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDBlZmNjYThkNjk3MjNhOWMwYzljZjM2
NzkzMWExM2IyZjYxNWFjMGYuLmZhMDMxZmRlMjM2YTgxODc1NjIwMDZkM2MzYzNiNjRlMDM4MDA4
NjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0yODAsNiArMjgwLDcgQEAKIAkJQTE0RkM1
OTAxQjhBRTM2RjAwRDEwN0VCIC8qIFRlc3RQcm90b2NvbC5tbSBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEExNEZDNThFMUI4QUUzNjUwMEQxMDdFQiAvKiBU
ZXN0UHJvdG9jb2wubW0gKi87IH07CiAJCUExQzRGQjZFMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlj
a0xvb2subW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
MUM0RkI2QzFCQUNDRTUwMDAzNzQyRDAgLyogUXVpY2tMb29rLm1tICovOyB9OwogCQlBMUM0RkI3
MzFCQUNEMUNBMDAzNzQyRDAgLyogcGFnZXMucGFnZXMgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTFDNEZCNzIxQkFDRDFCNzAwMzc0MkQwIC8q
IHBhZ2VzLnBhZ2VzICovOyB9OworCQlBMURGNzQzMjFDNDFCNjU4MDBBMkY0RDAgLyogQWx3YXlz
UmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gQTFERjc0MzAxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRh
dGVkVVJMU2NoZW1lcy5tbSAqLzsgfTsKIAkJQTU3QTM0RjIxNkFGNkIyQjAwQzI1MDFGIC8qIFBh
Z2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sIGluIENvcHkgUmVzb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0EzNEYxMTZBRjY5RTIwMEMy
NTAxRiAvKiBQYWdlVmlzaWJpbGl0eVN0YXRlV2l0aFdpbmRvd0NoYW5nZXMuaHRtbCAqLzsgfTsK
IAkJQTVFMjAyNzUxNUIyMUY2RTAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlh
Lmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQTVFMjAyNzAxNUIyMTgwNjAwQzEzRTE0IC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlh
Lmh0bWwgKi87IH07CiAJCUI1NUFEMUQ1MTc5RjNCMzAwMEFDMTQ5NCAvKiBQcmV2ZW50SW1hZ2VM
b2FkV2l0aEF1dG9SZXNpemluZ19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQjU1QUQxRDMxNzlGM0FCRjAwQUMxNDk0IC8qIFByZXZlbnRJ
bWFnZUxvYWRXaXRoQXV0b1Jlc2l6aW5nX0J1bmRsZS5jcHAgKi87IH07CkBAIC02NzMsNiArNjc0
LDcgQEAKIAkJQTFBNEZFNUQxOEREM0RCNzAwQjVFQThBIC8qIERvd25sb2FkLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRG93bmxvYWQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUExQzRGQjZDMUJBQ0NFNTAwMDM3NDJEMCAvKiBRdWlja0xvb2su
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBRdWlja0xvb2subW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUExQzRGQjcyMUJBQ0QxQjcwMDM3NDJEMCAv
KiBwYWdlcy5wYWdlcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IGZpbGU7IG5hbWUgPSBwYWdlcy5wYWdlczsgcGF0aCA9IGlvcy9wYWdlcy5wYWdlczsg
c291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlBMURGNzQzMDFDNDFCNjU4MDBBMkY0RDAg
LyogQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlBMUZERkQyRTE5QzI4OEJCMDA1MTQ4QTQgLyogV0tJbWFn
ZUNyZWF0ZUNHSW1hZ2VDcmFzaC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBXS0ltYWdlQ3JlYXRlQ0dJbWFnZUNyYXNoLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTU3QTM0RUYxNkFGNjc3MjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmlsaXR5U3RhdGVX
aXRoV2luZG93Q2hhbmdlcy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFBhZ2VWaXNpYmlsaXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTU3QTM0RjExNkFGNjlFMjAwQzI1MDFGIC8qIFBhZ2VWaXNpYmls
aXR5U3RhdGVXaXRoV2luZG93Q2hhbmdlcy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRo
ID0gUGFnZVZpc2liaWxpdHlTdGF0ZVdpdGhXaW5kb3dDaGFuZ2VzLmh0bWw7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC05MzgsNiArOTQwLDcgQEAKIAkJCQkzN0QzNkVENjFBRjQyRUNE
MDBCQUY1RDkgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gKi8sCiAJCQkJNTFDRDFDNkEx
QjM4Q0UzNjAwMTQyQ0E1IC8qIE1vZGFsQWxlcnRzLm1tICovLAogCQkJCTFBQkMzREVEMTg5OUJF
NkQwMDRGMDYyNiAvKiBOYXZpZ2F0aW9uLm1tICovLAorCQkJCUExREY3NDMwMUM0MUI2NTgwMEEy
RjREMCAvKiBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gKi8sCiAJCQkJQ0VBNkNGMjIx
OUNDRjVCRDAwNjRGNUE3IC8qIE9wZW5BbmRDbG9zZVdpbmRvdy5tbSAqLywKIAkJCQlDOTU1MDFC
RTE5QUQyRkFGMDA0OUJFM0UgLyogUHJlZmVyZW5jZXMubW0gKi8sCiAJCQkJMzdEMzZGMzExQjAw
NERENDAwQkFGNUQ5IC8qIFByb3Zpc2lvbmFsVVJMQ2hhbmdlLm1tICovLApAQCAtMTc4MSw2ICsx
Nzg0LDcgQEAKIAkJCQk3Q0NFN0YxQjFBNDExQUU2MDA0NDdDNEMgLyogV2lsbExvYWQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDcxQTQxMUE3RTAwNDQ3QzRDIC8qIFdpbGxQZXJmb3Jt
Q2xpZW50UmVkaXJlY3RUb1VSTENyYXNoLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdGMUMx
QTQxMUFFNjAwNDQ3QzRDIC8qIFdpbGxTZW5kU3VibWl0RXZlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQTFERjc0MzIxQzQxQjY1ODAwQTJGNEQwIC8qIEFsd2F5c1JldmFsaWRhdGVkVVJMU2No
ZW1lcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUQ4MUE0MTFBN0UwMDQ0N0M0QyAvKiBX
aWxsU2VuZFN1Ym1pdEV2ZW50Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZFNDQ3OTkxQjc2RjFF
QjAwOTQ5OEVCIC8qIFBhcmtpbmdMb3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRDkx
QTQxMUE3RTAwNDQ3QzRDIC8qIFdpbmRvd2xlc3NXZWJWaWV3V2l0aE1lZGlhLm1tIGluIFNvdXJj
ZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdDJDb2Nv
YS9BbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdDJDb2NvYS9BbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZTg4ZjAyMGQzYjA4YTNkY2NkOTgxZmYyOWVjMjhmZTRhMzRhNjcyMwotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0MkNvY29hL0Fsd2F5c1JldmFs
aWRhdGVkVVJMU2NoZW1lcy5tbQpAQCAtMCwwICsxLDEyMSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0Jyb3dzaW5nQ29udGV4dENvbnRyb2xsZXIu
aD4KKyNpbXBvcnQgPFdlYktpdC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2Vi
S2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0
ci5oPgorCitzdGF0aWMgTlNTdHJpbmcgKiBjb25zdCBjdXN0b21TY2hlbWUgPSBAImN1c3RvbSI7
CitzdGF0aWMgYm9vbCBpc0RvbmU7CitzdGF0aWMgc2l6ZV90IGxvYWRzU3RhcnRlZDsKKworQGlu
dGVyZmFjZSBBbHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZVByb3RvY29sIDogTlNVUkxQcm90b2Nv
bAorQGVuZAorCitAaW1wbGVtZW50YXRpb24gQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVQcm90
b2NvbAorCisrIChCT09MKWNhbkluaXRXaXRoUmVxdWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVz
dAoreworICAgIHJldHVybiBbcmVxdWVzdC5VUkwuc2NoZW1lIGlzRXF1YWxUb1N0cmluZzpjdXN0
b21TY2hlbWVdOworfQorCisrIChOU1VSTFJlcXVlc3QgKiljYW5vbmljYWxSZXF1ZXN0Rm9yUmVx
dWVzdDooTlNVUkxSZXF1ZXN0ICopcmVxdWVzdAoreworICAgIHJldHVybiByZXF1ZXN0OworfQor
CisrIChCT09MKXJlcXVlc3RJc0NhY2hlRXF1aXZhbGVudDooTlNVUkxSZXF1ZXN0ICopYSB0b1Jl
cXVlc3Q6KE5TVVJMUmVxdWVzdCAqKWIKK3sKKyAgICByZXR1cm4gTk87Cit9CisKKy0gKHZvaWQp
c3RhcnRMb2FkaW5nCit7CisgICAgKytsb2Fkc1N0YXJ0ZWQ7CisKKyAgICBhdXRvIGRhdGEgPSBh
ZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJhc2U2NEVuY29kZWRTdHJpbmc6QCJpVkJP
UncwS0dnb0FBQUFOU1VoRVVnQUFBQW9BQUFBS0NBWUFBQUNOTXMrOUFBQUFHWFJGV0hSVGIyWjBk
MkZ5WlFCQlpHOWlaU0JKYldGblpWSmxZV1I1Y2NsbFBBQUFBRlpKUkVGVWVGNTl6NEVKQURFSVEx
RjM2azd1NUU3WktYZVVRUEFDSjN3SzdVTm9rVnhWazlrSG5RSDdiWTloYkR5RGhOWGdqcFJMcUZs
bzRNMkdnZnlKSGhqcThWNGFnZnJnUFFYM0p0SlFHYm9mbUNIZ0EvbkFLa3MrSkFqRkFBQUFBRWxG
VGtTdVFtQ0MiIG9wdGlvbnM6MF0pOworICAgIGF1dG8gcmVzcG9uc2UgPSBhZG9wdE5TKFtbTlNV
UkxSZXNwb25zZSBhbGxvY10gaW5pdFdpdGhVUkw6c2VsZi5yZXF1ZXN0LlVSTCBNSU1FVHlwZTpA
ImltYWdlL3BuZyIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOltkYXRhIGxlbmd0aF0gdGV4dEVuY29k
aW5nTmFtZTpuaWxdKTsKKyAgICBbc2VsZi5jbGllbnQgVVJMUHJvdG9jb2w6c2VsZiBkaWRSZWNl
aXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCkgY2FjaGVTdG9yYWdlUG9saWN5Ok5TVVJMQ2FjaGVT
dG9yYWdlTm90QWxsb3dlZF07CisgICAgW3NlbGYuY2xpZW50IFVSTFByb3RvY29sOnNlbGYgZGlk
TG9hZERhdGE6ZGF0YS5nZXQoKV07CisgICAgW3NlbGYuY2xpZW50IFVSTFByb3RvY29sRGlkRmlu
aXNoTG9hZGluZzpzZWxmXTsKK30KKworLSAodm9pZClzdG9wTG9hZGluZworeworfQorCitAZW5k
CisKK0BpbnRlcmZhY2UgQWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzRGVsZWdhdGUgOiBOU09i
amVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBBbHdh
eXNSZXZhbGlkYXRlZFVSTFNjaGVtZXNEZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2Vi
VmlldyAqKXdlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjooV0tOYXZpZ2F0aW9uICopbmF2aWdh
dGlvbgoreworICAgIGlzRG9uZSA9IHRydWU7Cit9CisKK0BlbmQKKworVEVTVChXZWJLaXQyLCBB
bHdheXNSZXZhbGlkYXRlZFVSTFNjaGVtZXMpCit7CisgICAgQGF1dG9yZWxlYXNlcG9vbCB7Cisg
ICAgICAgIFtOU1VSTFByb3RvY29sIHJlZ2lzdGVyQ2xhc3M6W0Fsd2F5c1JldmFsaWRhdGVkVVJM
U2NoZW1lUHJvdG9jb2wgY2xhc3NdXTsKKyAgICAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciByZWdpc3RlclNjaGVtZUZvckN1c3RvbVByb3RvY29sOmN1c3RvbVNjaGVtZV07CisKKyAg
ICAgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbX1dLUHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgICAgIFtwcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24gc2V0QWx3YXlzUmV2YWxpZGF0ZWRVUkxTY2hlbWVzOkBbY3VzdG9tU2NoZW1l
XV07CisKKyAgICAgICAgYXV0byBwcm9jZXNzUG9vbCA9IGFkb3B0TlMoW1tXS1Byb2Nlc3NQb29s
IGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5n
ZXQoKV0pOworICAgICAgICBhdXRvIHdlYlZpZXdDb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICAgICAgW3dlYlZpZXdDb25m
aWd1cmF0aW9uIHNldFByb2Nlc3NQb29sOnByb2Nlc3NQb29sLmdldCgpXTsKKworICAgICAgICBh
dXRvIG5hdmlnYXRpb25EZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBbHdheXNSZXZhbGlkYXRlZFVSTFNj
aGVtZXNEZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9w
dE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdFplcm8gY29uZmlndXJh
dGlvbjp3ZWJWaWV3Q29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgICAgICBbd2ViVmlldyBzZXRO
YXZpZ2F0aW9uRGVsZWdhdGU6bmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpXTsKKworICAgICAgICBO
U1N0cmluZyAqaHRtbFN0cmluZyA9IFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCFET0NU
WVBFIGh0bWw+PGJvZHk+PGltZyBzcmM9JyVAOi8vaW1hZ2UnPiIsIGN1c3RvbVNjaGVtZV07Cisg
ICAgICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOwor
ICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgICAgIEVYUEVD
VF9FUSgxVUwsIGxvYWRzU3RhcnRlZCk7CisKKyAgICAgICAgaXNEb25lID0gZmFsc2U7CisgICAg
ICAgIFt3ZWJWaWV3IGxvYWRIVE1MU3RyaW5nOmh0bWxTdHJpbmcgYmFzZVVSTDpuaWxdOworICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmlzRG9uZSk7CisgICAgICAgIEVYUEVDVF9F
USgyVUwsIGxvYWRzU3RhcnRlZCk7CisKKyAgICAgICAgW1dLQnJvd3NpbmdDb250ZXh0Q29udHJv
bGxlciB1bnJlZ2lzdGVyU2NoZW1lRm9yQ3VzdG9tUHJvdG9jb2w6Y3VzdG9tU2NoZW1lXTsKKyAg
ICAgICAgW05TVVJMUHJvdG9jb2wgdW5yZWdpc3RlckNsYXNzOltBbHdheXNSZXZhbGlkYXRlZFVS
TFNjaGVtZVByb3RvY29sIGNsYXNzXV07CisgICAgfQorfQorCisjZW5kaWYgLy8gV0tfQVBJX0VO
QUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>