<?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>153549</bug_id>
          
          <creation_ts>2016-01-27 09:43:48 -0800</creation_ts>
          <short_desc>Allow CachedResourceLoader clients to opt out of the MemoryCache.</short_desc>
          <delta_ts>2016-06-22 14:15: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>Page Loading</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jer Noble">jer.noble</reporter>
          <assigned_to name="Jer Noble">jer.noble</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>darin</cc>
    
    <cc>ossy</cc>
    
    <cc>peavo</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1159300</commentid>
    <comment_count>0</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 09:43:48 -0800</bug_when>
    <thetext>Allow CachedResourceLoader clients to opt out of the MemoryCache.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159316</commentid>
    <comment_count>1</comment_count>
      <attachid>270003</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 10:26:27 -0800</bug_when>
    <thetext>Created attachment 270003
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159402</commentid>
    <comment_count>2</comment_count>
      <attachid>270033</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 13:33:46 -0800</bug_when>
    <thetext>Created attachment 270033
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159429</commentid>
    <comment_count>3</comment_count>
      <attachid>270040</attachid>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 14:29:16 -0800</bug_when>
    <thetext>Created attachment 270040
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159472</commentid>
    <comment_count>4</comment_count>
      <attachid>270040</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-27 15:25:51 -0800</bug_when>
    <thetext>Comment on attachment 270040
Patch

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

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1160
&gt; -        if (resource-&gt;errorOccurred())
&gt; +        if (resource-&gt;errorOccurred() &amp;&amp; resource-&gt;preloadResult() == CachedResource::PreloadNotReferenced)

I don’t see anything in the change log that explains this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159493</commentid>
    <comment_count>5</comment_count>
      <attachid>270040</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-27 15:51:13 -0800</bug_when>
    <thetext>Comment on attachment 270040
Patch

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

&gt; Source/WebCore/loader/ResourceLoaderOptions.h:98
&gt; +    ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacks, ContentSniffingPolicy sniffContent, DataBufferingPolicy dataBufferingPolicy, StoredCredentials allowCredentials, ClientCredentialPolicy credentialPolicy, CredentialRequest credentialRequest, SecurityCheckPolicy securityCheck, RequestOriginPolicy requestOriginPolicy, CertificateInfoPolicy certificateInfoPolicy, ContentSecurityPolicyImposition contentSecurityPolicyImposition, DefersLoadingPolicy defersLoadingPolicy, CachingPolicy cachingPolicy)

Since this is the last parameter, would it be a good idea to use a default value here so we don&apos;t have to worry about adding CachingPolicy::AllowCaching everywhere we create a ResourceLoaderOptions?

&gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:224
&gt; +    if (request.allowsCaching()) {

requestUserCSSStyleSheet should always allow caching, right?  Shouldn&apos;t this just be an assert?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159516</commentid>
    <comment_count>6</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 16:41:49 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 270040 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270040&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:1160
&gt; &gt; -        if (resource-&gt;errorOccurred())
&gt; &gt; +        if (resource-&gt;errorOccurred() &amp;&amp; resource-&gt;preloadResult() == CachedResource::PreloadNotReferenced)
&gt; 
&gt; I don’t see anything in the change log that explains this change.

That was inadvertent; I&apos;ll remove it before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159519</commentid>
    <comment_count>7</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-27 16:44:06 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; Comment on attachment 270040 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=270040&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/ResourceLoaderOptions.h:98
&gt; &gt; +    ResourceLoaderOptions(SendCallbackPolicy sendLoadCallbacks, ContentSniffingPolicy sniffContent, DataBufferingPolicy dataBufferingPolicy, StoredCredentials allowCredentials, ClientCredentialPolicy credentialPolicy, CredentialRequest credentialRequest, SecurityCheckPolicy securityCheck, RequestOriginPolicy requestOriginPolicy, CertificateInfoPolicy certificateInfoPolicy, ContentSecurityPolicyImposition contentSecurityPolicyImposition, DefersLoadingPolicy defersLoadingPolicy, CachingPolicy cachingPolicy)
&gt; 
&gt; Since this is the last parameter, would it be a good idea to use a default
&gt; value here so we don&apos;t have to worry about adding
&gt; CachingPolicy::AllowCaching everywhere we create a ResourceLoaderOptions?

Most of the policy arguments could probably use default values, and CachingPolicy is no different. We should probably come up with a better way of initializing a ResourceLoaderOptions with defaults-except-for-one-policy, but I don&apos;t think just adding a default to the cachingPolicy parameter helps here.

&gt; &gt; Source/WebCore/loader/cache/CachedResourceLoader.cpp:224
&gt; &gt; +    if (request.allowsCaching()) {
&gt; 
&gt; requestUserCSSStyleSheet should always allow caching, right?  Shouldn&apos;t this
&gt; just be an assert?

Sure!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159563</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-27 18:11:57 -0800</bug_when>
    <thetext>After talking with Darin, we&apos;re not sure it&apos;s a good idea to not check the cache at all for media loads.  Maybe this policy should only prevent data from being put in the cache, but if it has already been put in the cache some other way (someone pre-loading a small video with xhr, for example) then we should use it from the cache.  If that&apos;s true, this patch should be rewritten before landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159826</commentid>
    <comment_count>9</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-28 11:53:08 -0800</bug_when>
    <thetext>Committed r195770: &lt;http://trac.webkit.org/changeset/195770&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159930</commentid>
    <comment_count>10</comment_count>
    <who name="Jer Noble">jer.noble</who>
    <bug_when>2016-01-28 16:12:59 -0800</bug_when>
    <thetext>I explained to Alex offline why allowing pre-loading via XHR of media data is a bad idea. TL;DR, it will seriously mess with the &quot;canplaythrough&quot; calculations, authors will get the preload amount wrong, and we provide another way to pre-load entire media data for small videos (XHR -&gt; blob -&gt; blob URL -&gt; video).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1159946</commentid>
    <comment_count>11</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-01-28 16:59:29 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; I explained to Alex offline why allowing pre-loading via XHR of media data
&gt; is a bad idea. TL;DR, it will seriously mess with the &quot;canplaythrough&quot;
&gt; calculations, authors will get the preload amount wrong, and we provide
&gt; another way to pre-load entire media data for small videos (XHR -&gt; blob -&gt;
&gt; blob URL -&gt; video).
So this is a new kind of loading that never caches anything and never checks the cache for anything.  This is why I think long-term we should refactor the loading code instead of tacking things on like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160033</commentid>
    <comment_count>12</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-01-28 22:15:12 -0800</bug_when>
    <thetext>(In reply to comment #9)
&gt; Committed r195770: &lt;http://trac.webkit.org/changeset/195770&gt;

It broke the Windows build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160034</commentid>
    <comment_count>13</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2016-01-28 22:16:32 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #9)
&gt; &gt; Committed r195770: &lt;http://trac.webkit.org/changeset/195770&gt;
&gt; 
&gt; It broke the Windows build.

... as the EWS noticed it ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1160661</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-31 11:17:45 -0800</bug_when>
    <thetext>This caused a use-after-free, detected by ASan after landing. It seems to be isolated to one test and not causing much instability on the bots, so I will not be rolling out immediately.

Please let me know if this can be fixed by Monday - if it&apos;s tricky, let&apos;s roll out after all.

Filed bug 153727 to track the regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1163358</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-02-09 17:19:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/195816 fixed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204510</commentid>
    <comment_count>16</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2016-06-22 08:47:07 -0700</bug_when>
    <thetext>I am trying to relate this flag with fetch cache mode.
How is it different/similar to fetch cache mode being set to &quot;no-store&quot;?

I am not exactly sure of the purpose of this flag (performances, security?).
Why removing it from the memory cache and not from other HTTP caches (network process, http library)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1204662</commentid>
    <comment_count>17</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-06-22 14:15:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I am trying to relate this flag with fetch cache mode.
&gt; How is it different/similar to fetch cache mode being set to &quot;no-store&quot;?
It&apos;s similar.  The memory cache is not in any spec, though.
&gt; 
&gt; I am not exactly sure of the purpose of this flag (performances, security?).
&gt; Why removing it from the memory cache and not from other HTTP caches
&gt; (network process, http library)?
It was removed from the memory cache here and from the disk cache in http://trac.webkit.org/changeset/200578 because we are using AVFoundation&apos;s cache instead right now.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270003</attachid>
            <date>2016-01-27 10:26:27 -0800</date>
            <delta_ts>2016-01-27 13:33:44 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153549-20160127102601.patch</filename>
            <type>text/plain</type>
            <size>23390</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNjNGEzMjc4OWFiMjYz
YTI5ODhjMGIxNDQ1OWJkNGMyZmE1ZDI1MC4uZTQ5ODUyZTRhNTI4ODljYzk3ZGZiM2U4MzMwMDky
YzNhMjliNmUxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0IEBACisyMDE2LTAxLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IENhY2hlZFJlc291
cmNlTG9hZGVyIGNsaWVudHMgdG8gb3B0IG91dCBvZiB0aGUgTWVtb3J5Q2FjaGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmbGFnIHRvIFJl
c291cmNlTG9hZGVyT3B0aW9ucyB3aGljaCBhbGxvdyBsb2FkZXIgY2xpZW50cyB0byBvcHQgb3V0
IG9mIGhhdmluZworICAgICAgICByZXNvdXJjZXMgc3RvcmVkIGluIHRoZSBNZW1vcnlDYWNoZS4g
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OlJlc291cmNlTG9hZGVyT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OmNhY2hpbmdQb2xpY3kpOgor
CisgICAgICAgIEV4aXN0aW5nIGNsaWVudHMgd2lsbCBoYXZlIHRvIGFkZCB0aGUgKGRlZmF1bHQp
IEFsbG93Q2FjaGluZyBmbGFnIHdoZW4gdGhleSBjcmVhdGUgYQorICAgICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb2JqZWN0LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9uczo6c2V0Q2FjaGluZ1BvbGljeSk6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorCisgICAgICAgIEV2ZXJ5IHRpbWUgdGhlIENh
Y2hlZFJlc291cmNlIG9yIENhY2hlZFJlc291cmNlTG9hZGVyIGFjY2Vzc2VzIHRoZSBNZW1vcnlD
YWNoZSwgY2hlY2sKKyAgICAgICAgdG8gc2VlIHdoZXRoZXIgdGhlIHJlc291cmNlIG9yIHRoZSBy
ZXF1ZXN0IGhhdmUgYWxsb3dlZCBjYWNoaW5nIGJlZm9yZSBhZGRpbmcgcmVzb3VyY2VzCisgICAg
ICAgIHRvLCByZW1vdmluZyByZXNvdXJjZXMgZnJvbSwgb3Igc291cmNpbmcgcmVzb3VyY2UgZGF0
YSBmcm9tIHRoZSBNZW1vcnlDYWNoZS4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6fkNhY2hlZFJl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpmYWlsQmVmb3JlU3Rh
cnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0
KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OnNldERlY29kZWRTaXplKToKKyAgICAgICAg
KFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRFbmNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJD
b3JlOjpDYWNoZWRSZXNvdXJjZTo6ZGlkQWNjZXNzRGVjb2RlZERhdGEpOgorICAgICAgICAqIGxv
YWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2U6OmFsbG93c0NhY2hpbmcpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
cmVxdWVzdFVzZXJDU1NTdHlsZVNoZWV0KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291
cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJldmFsaWRhdGVSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hl
ZFJlc291cmNlTG9hZGVyOjpwcmludFByZWxvYWRTdGF0cyk6CisgICAgICAgIChXZWJDb3JlOjpD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucyk6CisgICAg
ICAgICogbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oOgorICAgICAgICAoV2Vi
Q29yZTo6Q2FjaGVkUmVzb3VyY2VSZXF1ZXN0OjphbGxvd3NDYWNoaW5nKToKKwogMjAxNi0wMS0y
NiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbRU1FXVtNYWNd
IE1lZGlhS2V5cy5jcmVhdGVTZXNzaW9uKCkgZmFpbHMgd2l0aCBpbml0RGF0YSBjb250YWluaW5n
IGEgY29udGVudElkIHdob3NlIGxlbmd0aCBpcyA+IDEvMiB0aGUgaW5pdERhdGEuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAppbmRleCAxN2E2MjhjOTgwOTQ0NzJhNmZk
NDAxZGFiM2VkNjFhYjIwYjdiMTNiLi41ZDdlNDIwOTMyMmVmMGRiMjE2NWNlOWYyMzE4N2IwZjRm
MTA4ZjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKQEAgLTE0
NzUsNyArMTQ3NSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0YXJ0TG9hZGluZ01haW5SZXNv
dXJjZSgpCiAgICAgLy8gSWYgdGhpcyBpcyBhIHJlbG9hZCB0aGUgY2FjaGUgbGF5ZXIgbWlnaHQg
aGF2ZSBtYWRlIHRoZSBwcmV2aW91cyByZXF1ZXN0IGNvbmRpdGlvbmFsLiBEb2N1bWVudExvYWRl
ciBjYW4ndCBoYW5kbGUgMzA0IHJlc3BvbnNlcyBpdHNlbGYuCiAgICAgcmVxdWVzdC5tYWtlVW5j
b25kaXRpb25hbCgpOwogCi0gICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlc291cmNlTG9hZGVy
T3B0aW9ucz4gbWFpblJlc291cmNlTG9hZE9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxD
cmVkZW50aWFscywgQ2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNr
LCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgSW5jbHVkZUNlcnRpZmljYXRl
SW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVm
ZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKTsKKyAgICBzdGF0aWMgTmV2ZXJE
ZXN0cm95ZWQ8UmVzb3VyY2VMb2FkZXJPcHRpb25zPiBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyhT
ZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMsIEFza0NsaWVudEZvckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50
aWFscywgU2tpcFNlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JU
eXBlLCBJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0
aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRp
bmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VSZXF1
ZXN0IGNhY2hlZFJlc291cmNlUmVxdWVzdChyZXF1ZXN0LCBtYWluUmVzb3VyY2VMb2FkT3B0aW9u
cyk7CiAgICAgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0LnNldEluaXRpYXRvcigqdGhpcyk7CiAgICAg
bV9tYWluUmVzb3VyY2UgPSBtX2NhY2hlZFJlc291cmNlTG9hZGVyLT5yZXF1ZXN0TWFpblJlc291
cmNlKGNhY2hlZFJlc291cmNlUmVxdWVzdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVk
aWFSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZGE0N2RkOWQyODNmMTZkODJhNzExMzE2YzZkY2Yw
MGE5MjAyNzI1My4uNWRiMWViNTg0NWI3MGZlYWYzMzc5Y2NhYmJjNmUwYjdjMjQ1M2U5NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcApAQCAtNjEs
NyArNjEsNyBAQCBib29sIE1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYgcmVxdWVzdCwgTG9hZE9wdGlvbnMgb3B0aQogICAgIFN0b3JlZENyZWRlbnRpYWxz
IGFsbG93Q3JlZGVudGlhbHMgPSBtX2Nyb3NzT3JpZ2luTW9kZS5pc051bGwoKSB8fCBlcXVhbExl
dHRlcnNJZ25vcmluZ0FTQ0lJQ2FzZShtX2Nyb3NzT3JpZ2luTW9kZSwgInVzZS1jcmVkZW50aWFs
cyIpID8gQWxsb3dTdG9yZWRDcmVkZW50aWFscyA6IERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFs
czsKIAogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0
IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNv
dXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1
ZmZlcmluZ1BvbGljeSwgYWxsb3dDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09y
aWdpbkNyZWRlbnRpYWxzLCBDbGllbnREaWROb3RSZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJp
dHlDaGVjaywgY29yc1BvbGljeSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50
U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9s
aWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2Fj
aGVSZXF1ZXN0KHJlcXVlc3QsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBE
b05vdFNuaWZmQ29udGVudCwgYnVmZmVyaW5nUG9saWN5LCBhbGxvd0NyZWRlbnRpYWxzLCBEb05v
dEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJlcXVlc3RD
cmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5LCBEb05vdEluY2x1ZGVDZXJ0
aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGlj
eTo6QWxsb3dDYWNoaW5nKSk7CiAKICAgICBpZiAoIW1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgp
KQogICAgICAgICB1cGRhdGVSZXF1ZXN0Rm9yQWNjZXNzQ29udHJvbChjYWNoZVJlcXVlc3QubXV0
YWJsZVJlc291cmNlUmVxdWVzdCgpLCBtX2RvY3VtZW50LnNlY3VyaXR5T3JpZ2luKCksIGFsbG93
Q3JlZGVudGlhbHMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBl
UGx1Z0luU3RyZWFtTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlci5jcHAKaW5kZXggY2IzNWUyMmUxMTczMWY5NzAyMTg5NTk4Yzg2ZjVh
ODFjYmZjNzIxMi4uN2MxOWQzZDMxNWU1MzQwOThhZDE1MDc0ZGFlMWE1OTRmY2VkOTkwNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2Fk
ZXIuY3BwCkBAIC00Myw3ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIC8vIEZJWE1FOiBT
a2lwIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGNoZWNrIHdoZW4gYXNzb2NpYXRlZCBwbHVnaW4g
ZWxlbWVudCBpcyBpbiBhIHVzZXIgYWdlbnQgc2hhZG93IHRyZWUuCiAvLyBTZWUgPGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDY2NjM+LgogTmV0c2NhcGVQbHVnSW5T
dHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKEZyYW1lKiBmcmFtZSwgTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXJDbGllbnQqIGNsaWVudCkKLSAgICA6IFJlc291cmNlTG9h
ZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBEb05vdEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZv
ckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5
Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVD
ZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5
Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZykpCisgICAgOiBS
ZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3Ms
IFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBB
c2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgQ2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIFNr
aXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9O
b3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9u
OjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcs
IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZykpCiAgICAgLCBtX2NsaWVudChjbGllbnQpCiB7
CiAjaWYgRU5BQkxFKENPTlRFTlRfRVhURU5TSU9OUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlck9wdGlvbnMuaAppbmRleCAxODVkMWNjYTFjMmEzYzU1N2JmZGVjY2E3
NDExZWJlNjIzZGE2MWJkLi5kMjU4ZTFlNjI0OGE0ZjUxODFlNTExNTI3MzFmYjIzOTI5ZWE0ZDNk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCkBA
IC03Niw2ICs3NiwxMSBAQCBlbnVtIGNsYXNzIERlZmVyc0xvYWRpbmdQb2xpY3kgOiB1aW50OF90
IHsKICAgICBEaXNhbGxvd0RlZmVyc0xvYWRpbmcKIH07CiAKK2VudW0gY2xhc3MgQ2FjaGluZ1Bv
bGljeSA6IHVpbnQ4X3QgeworICAgIEFsbG93Q2FjaGluZywKKyAgICBEaXNhbGxvd0NhY2hpbmcK
K307CisKIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewogICAgIFJlc291cmNlTG9hZGVy
T3B0aW9ucygpCiAgICAgICAgIDogbV9zZW5kTG9hZENhbGxiYWNrcyhEb05vdFNlbmRDYWxsYmFj
a3MpCkBAIC05MCw3ICs5NSw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewogICAg
IHsKICAgICB9CiAKLSAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrUG9saWN5
IHNlbmRMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25pZmZpbmdQb2xpY3kgc25pZmZDb250ZW50LCBE
YXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3ksIFN0b3JlZENyZWRlbnRpYWxz
IGFsbG93Q3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY3JlZGVudGlhbFBvbGlj
eSwgQ3JlZGVudGlhbFJlcXVlc3QgY3JlZGVudGlhbFJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xp
Y3kgc2VjdXJpdHlDaGVjaywgUmVxdWVzdE9yaWdpblBvbGljeSByZXF1ZXN0T3JpZ2luUG9saWN5
LCBDZXJ0aWZpY2F0ZUluZm9Qb2xpY3kgY2VydGlmaWNhdGVJbmZvUG9saWN5LCBDb250ZW50U2Vj
dXJpdHlQb2xpY3lJbXBvc2l0aW9uIGNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24sIERl
ZmVyc0xvYWRpbmdQb2xpY3kgZGVmZXJzTG9hZGluZ1BvbGljeSkKKyAgICBSZXNvdXJjZUxvYWRl
ck9wdGlvbnMoU2VuZENhbGxiYWNrUG9saWN5IHNlbmRMb2FkQ2FsbGJhY2tzLCBDb250ZW50U25p
ZmZpbmdQb2xpY3kgc25pZmZDb250ZW50LCBEYXRhQnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJp
bmdQb2xpY3ksIFN0b3JlZENyZWRlbnRpYWxzIGFsbG93Q3JlZGVudGlhbHMsIENsaWVudENyZWRl
bnRpYWxQb2xpY3kgY3JlZGVudGlhbFBvbGljeSwgQ3JlZGVudGlhbFJlcXVlc3QgY3JlZGVudGlh
bFJlcXVlc3QsIFNlY3VyaXR5Q2hlY2tQb2xpY3kgc2VjdXJpdHlDaGVjaywgUmVxdWVzdE9yaWdp
blBvbGljeSByZXF1ZXN0T3JpZ2luUG9saWN5LCBDZXJ0aWZpY2F0ZUluZm9Qb2xpY3kgY2VydGlm
aWNhdGVJbmZvUG9saWN5LCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uIGNvbnRlbnRT
ZWN1cml0eVBvbGljeUltcG9zaXRpb24sIERlZmVyc0xvYWRpbmdQb2xpY3kgZGVmZXJzTG9hZGlu
Z1BvbGljeSwgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9saWN5KQogICAgICAgICA6IG1fc2VuZExv
YWRDYWxsYmFja3Moc2VuZExvYWRDYWxsYmFja3MpCiAgICAgICAgICwgbV9zbmlmZkNvbnRlbnQo
c25pZmZDb250ZW50KQogICAgICAgICAsIG1fZGF0YUJ1ZmZlcmluZ1BvbGljeShkYXRhQnVmZmVy
aW5nUG9saWN5KQpAQCAtMTAyLDYgKzEwNyw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlv
bnMgewogICAgICAgICAsIG1fY2VydGlmaWNhdGVJbmZvUG9saWN5KGNlcnRpZmljYXRlSW5mb1Bv
bGljeSkKICAgICAgICAgLCBtX2NvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24oY29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbikKICAgICAgICAgLCBtX2RlZmVyc0xvYWRpbmdQb2xp
Y3koZGVmZXJzTG9hZGluZ1BvbGljeSkKKyAgICAgICAgLCBtX2NhY2hpbmdQb2xpY3koY2FjaGlu
Z1BvbGljeSkKICAgICB7CiAgICAgfQogCkBAIC0xMjcsNiArMTMzLDggQEAgc3RydWN0IFJlc291
cmNlTG9hZGVyT3B0aW9ucyB7CiAgICAgdm9pZCBzZXRDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBv
c2l0aW9uKENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gaW1wb3NpdGlvbikgeyBtX2Nv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gPSBpbXBvc2l0aW9uOyB9CiAgICAgRGVmZXJz
TG9hZGluZ1BvbGljeSBkZWZlcnNMb2FkaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9kZWZl
cnNMb2FkaW5nUG9saWN5OyB9CiAgICAgdm9pZCBzZXREZWZlcnNMb2FkaW5nUG9saWN5KERlZmVy
c0xvYWRpbmdQb2xpY3kgZGVmZXJzTG9hZGluZ1BvbGljeSkgeyBtX2RlZmVyc0xvYWRpbmdQb2xp
Y3kgPSBkZWZlcnNMb2FkaW5nUG9saWN5OyB9CisgICAgQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9s
aWN5KCkgY29uc3QgeyByZXR1cm4gbV9jYWNoaW5nUG9saWN5OyB9CisgICAgdm9pZCBzZXRDYWNo
aW5nUG9saWN5KENhY2hpbmdQb2xpY3kgY2FjaGluZ1BvbGljeSkgeyBtX2NhY2hpbmdQb2xpY3kg
PSBjYWNoaW5nUG9saWN5OyB9CiAKICAgICB1bnNpZ25lZCBtX3NlbmRMb2FkQ2FsbGJhY2tzIDog
MTsKICAgICB1bnNpZ25lZCBtX3NuaWZmQ29udGVudCA6IDE7CkBAIC0xMzksNiArMTQ3LDcgQEAg
c3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyB7CiAgICAgdW5zaWduZWQgbV9jZXJ0aWZpY2F0
ZUluZm9Qb2xpY3kgOiAxOyAvLyBXaGV0aGVyIHRoZSByZXNwb25zZSBzaG91bGQgaW5jbHVkZSBj
ZXJ0aWZpY2F0ZSBpbmZvLgogICAgIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gbV9j
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uIHsgQ29udGVudFNlY3VyaXR5UG9saWN5SW1w
b3NpdGlvbjo6RG9Qb2xpY3lDaGVjayB9OwogICAgIERlZmVyc0xvYWRpbmdQb2xpY3kgbV9kZWZl
cnNMb2FkaW5nUG9saWN5IHsgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5n
IH07CisgICAgQ2FjaGluZ1BvbGljeSBtX2NhY2hpbmdQb2xpY3kgeyBDYWNoaW5nUG9saWN5OjpB
bGxvd0NhY2hpbmcgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUgICAgCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCBjM2YxOGFi
NmQ3YzE5NGZiNjQzNDMwMzk3YmQwMGNiMTdiMDUwYmM5Li43MjdhNzJlOTVlYThmYTdlNzQyYzRk
MjZmN2ZiMDVhMzhmZmQ3ZmU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9D
YWNoZWRSZXNvdXJjZS5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQCBDYWNoZWRSZXNvdXJjZTo6fkNh
Y2hlZFJlc291cmNlKCkKICAgICBBU1NFUlQoY2FuRGVsZXRlKCkpOwogICAgIEFTU0VSVCghaW5D
YWNoZSgpKTsKICAgICBBU1NFUlQoIW1fZGVsZXRlZCk7Ci0gICAgQVNTRVJUKHVybCgpLmlzTnVs
bCgpIHx8IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXNvdXJjZUZvclJlcXVlc3QocmVzb3Vy
Y2VSZXF1ZXN0KCksIHNlc3Npb25JRCgpKSAhPSB0aGlzKTsKKyAgICBBU1NFUlQodXJsKCkuaXNO
dWxsKCkgfHwgIWFsbG93c0NhY2hpbmcoKSB8fCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KHJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkgIT0gdGhpcyk7
CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgbV9kZWxldGVkID0gdHJ1ZTsKQEAgLTE3NCw3ICsxNzQs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpmYWlsQmVmb3JlU3RhcnRpbmcoKQogewogICAgIC8v
IEZJWE1FOiBXaGF0IGlmIHJlc291cmNlcyBpbiBvdGhlciBmcmFtZXMgd2VyZSB3YWl0aW5nIGZv
ciB0aGlzIHJldmFsaWRhdGlvbj8KICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2Fubm90IHN0
YXJ0IGxvYWRpbmcgJyVzJyIsIHVybCgpLnN0cmluZygpLmxhdGluMSgpLmRhdGEoKSk7Ci0gICAg
aWYgKG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpIAorICAgIGlmIChhbGxvd3NDYWNoaW5nKCkgJiYg
bV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSkKICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigp
LnJldmFsaWRhdGlvbkZhaWxlZCgqdGhpcyk7CiAgICAgZXJyb3IoQ2FjaGVkUmVzb3VyY2U6Okxv
YWRFcnJvcik7CiB9CkBAIC00NTIsNyArNDUyLDcgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZTo6YWRk
Q2xpZW50VG9TZXQoQ2FjaGVkUmVzb3VyY2VDbGllbnQqIGNsaWVudCkKICAgICAgICAgZWxzZQog
ICAgICAgICAgICAgbV9wcmVsb2FkUmVzdWx0ID0gUHJlbG9hZFJlZmVyZW5jZWQ7CiAgICAgfQot
ICAgIGlmICghaGFzQ2xpZW50cygpICYmIGluQ2FjaGUoKSkKKyAgICBpZiAoYWxsb3dzQ2FjaGlu
ZygpICYmICFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQogICAgICAgICBNZW1vcnlDYWNoZTo6
c2luZ2xldG9uKCkuYWRkVG9MaXZlUmVzb3VyY2VzU2l6ZSgqdGhpcyk7CiAKICAgICBpZiAoKG1f
dHlwZSA9PSBSYXdSZXNvdXJjZSB8fCBtX3R5cGUgPT0gTWFpblJlc291cmNlKSAmJiAhbV9yZXNw
b25zZS5pc051bGwoKSAmJiAhbV9wcm94eVJlc291cmNlKSB7CkBAIC00ODMsNyArNDgzLDcgQEAg
dm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVtb3ZlQ2xpZW50KENhY2hlZFJlc291cmNlQ2xpZW50KiBj
bGllbnQpCiAgICAgfQogCiAgICAgYm9vbCBkZWxldGVkID0gZGVsZXRlSWZQb3NzaWJsZSgpOwot
ICAgIGlmICghZGVsZXRlZCAmJiAhaGFzQ2xpZW50cygpKSB7CisgICAgaWYgKGFsbG93c0NhY2hp
bmcoKSAmJiAhZGVsZXRlZCAmJiAhaGFzQ2xpZW50cygpKSB7CiAgICAgICAgIGF1dG8mIG1lbW9y
eUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgICAgICBpZiAoaW5DYWNoZSgp
KSB7CiAgICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmVGcm9tTGl2ZVJlc291cmNlc1NpemUo
KnRoaXMpOwpAQCAtNTQxLDEyICs1NDEsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RGVj
b2RlZFNpemUodW5zaWduZWQgc2l6ZSkKIAogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3Zl
ZCB0byBhIGRpZmZlcmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4K
ICAgICAvLyBSZW1vdmUgYmVmb3JlIHVwZGF0aW5nIG1fZGVjb2RlZFNpemUsIHNvIHdlIGZpbmQg
dGhlIHJlc291cmNlIGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgotICAgIGlmIChpbkNhY2hlKCkp
CisgICAgaWYgKGFsbG93c0NhY2hpbmcoKSAmJiBpbkNhY2hlKCkpCiAgICAgICAgIE1lbW9yeUNh
Y2hlOjpzaW5nbGV0b24oKS5yZW1vdmVGcm9tTFJVTGlzdCgqdGhpcyk7CiAgICAgCiAgICAgbV9k
ZWNvZGVkU2l6ZSA9IHNpemU7CiAgICAKLSAgICBpZiAoaW5DYWNoZSgpKSB7CisgICAgaWYgKGFs
bG93c0NhY2hpbmcoKSAmJiBpbkNhY2hlKCkpIHsKICAgICAgICAgYXV0byYgbWVtb3J5Q2FjaGUg
PSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgICAgIC8vIE5vdyBpbnNlcnQgaW50byB0
aGUgbmV3IExSVSBsaXN0LgogICAgICAgICBtZW1vcnlDYWNoZS5pbnNlcnRJbkxSVUxpc3QoKnRo
aXMpOwpAQCAtNTc4LDEyICs1NzgsMTIgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2Rl
ZFNpemUodW5zaWduZWQgc2l6ZSkKIAogICAgIC8vIFRoZSBvYmplY3QgbXVzdCBiZSBtb3ZlZCB0
byBhIGRpZmZlcmVudCBxdWV1ZSwgc2luY2UgaXRzIHNpemUgaGFzIGJlZW4gY2hhbmdlZC4KICAg
ICAvLyBSZW1vdmUgYmVmb3JlIHVwZGF0aW5nIG1fZW5jb2RlZFNpemUsIHNvIHdlIGZpbmQgdGhl
IHJlc291cmNlIGluIHRoZSBjb3JyZWN0IExSVSBsaXN0LgotICAgIGlmIChpbkNhY2hlKCkpCisg
ICAgaWYgKGFsbG93c0NhY2hpbmcoKSAmJiBpbkNhY2hlKCkpCiAgICAgICAgIE1lbW9yeUNhY2hl
OjpzaW5nbGV0b24oKS5yZW1vdmVGcm9tTFJVTGlzdCgqdGhpcyk7CiAKICAgICBtX2VuY29kZWRT
aXplID0gc2l6ZTsKIAotICAgIGlmIChpbkNhY2hlKCkpIHsKKyAgICBpZiAoYWxsb3dzQ2FjaGlu
ZygpICYmIGluQ2FjaGUoKSkgewogICAgICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNh
Y2hlOjpzaW5nbGV0b24oKTsKICAgICAgICAgbWVtb3J5Q2FjaGUuaW5zZXJ0SW5MUlVMaXN0KCp0
aGlzKTsKICAgICAgICAgbWVtb3J5Q2FjaGUuYWRqdXN0U2l6ZShoYXNDbGllbnRzKCksIGRlbHRh
KTsKQEAgLTU5NCw3ICs1OTQsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpkaWRBY2Nlc3NEZWNv
ZGVkRGF0YShkb3VibGUgdGltZVN0YW1wKQogewogICAgIG1fbGFzdERlY29kZWRBY2Nlc3NUaW1l
ID0gdGltZVN0YW1wOwogICAgIAotICAgIGlmIChpbkNhY2hlKCkpIHsKKyAgICBpZiAoYWxsb3dz
Q2FjaGluZygpICYmIGluQ2FjaGUoKSkgewogICAgICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1l
bW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICAgICAgaWYgKG1lbW9yeUNhY2hlLmluTGl2ZURl
Y29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKSkgewogICAgICAgICAgICAgbWVtb3J5Q2FjaGUucmVt
b3ZlRnJvbUxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCgqdGhpcyk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaCBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oCmluZGV4IGE0NTIzZDZhOGEzM2MxMWQyMzdi
OWQxYTBmYmEwZDJjZWM3MzIzODQuLjU0NjZiZTYwNDU0ZDI2OGQ3NjA0YmJjZDUxMzUzMzYzZDhj
MDdmNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5o
CkBAIC0yMTgsNiArMjE4LDggQEAgcHVibGljOgogCiAgICAgYm9vbCBzaG91bGRTZW5kUmVzb3Vy
Y2VMb2FkQ2FsbGJhY2tzKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLnNlbmRMb2FkQ2FsbGJh
Y2tzKCkgPT0gU2VuZENhbGxiYWNrczsgfQogICAgIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5kYXRhQnVmZmVyaW5nUG9s
aWN5KCk7IH0KKworICAgIGJvb2wgYWxsb3dzQ2FjaGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3B0
aW9ucy5jYWNoaW5nUG9saWN5KCkgPT0gQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nOyB9CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIGRlc3Ryb3lEZWNvZGVkRGF0YSgpIHsgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3Bw
IGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApp
bmRleCBlMzRmZDdkM2RhNDMxMjhiYjM1YTRmOTJmMzMyMmI4ZmIyNzVmNjdiLi4wMDBmOWFhODM1
MmVjMjAyMzZmYTdiYzJmYzU5ZDI0Nzc0ODZkYzgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTIyMSwyMCArMjIx
LDI0IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENTU1N0eWxlU2hlZXQ+IENhY2hlZFJl
c291cmNlTG9hZGVyOjpyZXF1ZXN0VXNlckNTU1N0CiAjZW5kaWYKIAogICAgIGF1dG8mIG1lbW9y
eUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmIChDYWNoZWRSZXNvdXJj
ZSogZXhpc3RpbmcgPSBtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpKSB7Ci0gICAgICAgIGlmIChpczxDYWNoZWRDU1NT
dHlsZVNoZWV0PigqZXhpc3RpbmcpKQotICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENhY2hl
ZENTU1N0eWxlU2hlZXQ+KGV4aXN0aW5nKTsKLSAgICAgICAgbWVtb3J5Q2FjaGUucmVtb3ZlKCpl
eGlzdGluZyk7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2FjaGluZygpKSB7CisgICAgICAgIGlm
IChDYWNoZWRSZXNvdXJjZSogZXhpc3RpbmcgPSBtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVl
c3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpKSB7CisgICAgICAgICAg
ICBpZiAoaXM8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5nKSkKKyAgICAgICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oZXhpc3RpbmcpOworICAgICAg
ICAgICAgbWVtb3J5Q2FjaGUucmVtb3ZlKCpleGlzdGluZyk7CisgICAgICAgIH0KICAgICB9CisK
ICAgICBpZiAodXJsLnN0cmluZygpICE9IHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkp
CiAgICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFVSTCh1cmwpOwog
CiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gdXNlclNoZWV0
ID0gbmV3IENhY2hlZENTU1N0eWxlU2hlZXQocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKSwgcmVx
dWVzdC5jaGFyc2V0KCksIHNlc3Npb25JRCgpKTsKIAotICAgIG1lbW9yeUNhY2hlLmFkZCgqdXNl
clNoZWV0KTsKKyAgICBpZiAocmVxdWVzdC5hbGxvd3NDYWNoaW5nKCkpCisgICAgICAgIG1lbW9y
eUNhY2hlLmFkZCgqdXNlclNoZWV0KTsKICAgICAvLyBGSVhNRTogbG9hZFJlc291cmNlIGNhbGxz
IHNldE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKCkgaWYgdGhlIHJlc291cmNlIGNvdWxkbid0
IGJlIGFkZGVkIHRvIGNhY2hlLiBEb2VzIHRoaXMgZnVuY3Rpb24gbmVlZCB0byBjYWxsIGl0LCB0
b28/CiAKLSAgICB1c2VyU2hlZXQtPmxvYWQoKnRoaXMsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhE
b05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRD
cmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJlcXVlc3RlZENy
ZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9u
c0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxv
d0RlZmVyc0xvYWRpbmcpKTsKKyAgICB1c2VyU2hlZXQtPmxvYWQoKnRoaXMsIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyhEb05vdFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwg
QWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVu
dFJlcXVlc3RlZENyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdp
blJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6U2tpcFBvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5n
UG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZykp
OwogICAgIAogICAgIHJldHVybiB1c2VyU2hlZXQ7CiB9CkBAIC01NTUsNyArNTU5LDcgQEAgQ2Fj
aGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpy
ZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICNlbmRpZgogCiAgICAgYXV0byYgbWVtb3J5Q2FjaGUgPSBN
ZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKG1lbW9yeUNhY2hlLmRpc2FibGVkKCkp
IHsKKyAgICBpZiAocmVxdWVzdC5hbGxvd3NDYWNoaW5nKCkgJiYgbWVtb3J5Q2FjaGUuZGlzYWJs
ZWQoKSkgewogICAgICAgICBEb2N1bWVudFJlc291cmNlTWFwOjppdGVyYXRvciBpdCA9IG1fZG9j
dW1lbnRSZXNvdXJjZXMuZmluZCh1cmwuc3RyaW5nKCkpOwogICAgICAgICBpZiAoaXQgIT0gbV9k
b2N1bWVudFJlc291cmNlcy5lbmQoKSkgewogICAgICAgICAgICAgaXQtPnZhbHVlLT5zZXRPd25p
bmdDYWNoZWRSZXNvdXJjZUxvYWRlcihudWxscHRyKTsKQEAgLTU3MCw3ICs1NzQsOCBAQCBDYWNo
ZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJl
cXVlc3RSZXNvdXJjZShDYWNoZQogICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVl
c3QoKS5zZXREb21haW5Gb3JDYWNoZVBhcnRpdGlvbihkb2N1bWVudCgpLT50b3BPcmlnaW4oKS0+
ZG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKIAotICAgIHJlc291cmNlID0gbWVt
b3J5Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNl
c3Npb25JRCgpKTsKKyAgICBpZiAocmVxdWVzdC5hbGxvd3NDYWNoaW5nKCkpCisgICAgICAgIHJl
c291cmNlID0gbWVtb3J5Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCksIHNlc3Npb25JRCgpKTsKIAogICAgIGxvZ01lbW9yeUNhY2hlUmVzb3VyY2VSZXF1
ZXN0KGZyYW1lKCksIHJlc291cmNlID8gRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjppbk1lbW9yeUNh
Y2hlS2V5KCkgOiBEaWFnbm9zdGljTG9nZ2luZ0tleXM6Om5vdEluTWVtb3J5Q2FjaGVLZXkoKSk7
CiAKQEAgLTYwOCw3ICs2MTMsNyBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogCiAgICAgICAg
IC8vIFdlIGRvbid0IHN1cHBvcnQgaW1tZWRpYXRlIGxvYWRzLCBidXQgd2UgZG8gc3VwcG9ydCBp
bW1lZGlhdGUgZmFpbHVyZS4KICAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkp
IHsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+aW5DYWNoZSgpKQorICAgICAgICAgICAgaWYg
KHJlc291cmNlLT5hbGxvd3NDYWNoaW5nKCkgJiYgcmVzb3VyY2UtPmluQ2FjaGUoKSkKICAgICAg
ICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKnJlc291cmNlKTsKICAgICAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgICAgICB9CkBAIC02MzYsNiArNjQxLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRl
UmVzb3VyY2UoY28KICAgICBBU1NFUlQocmVzb3VyY2UtPmNhblVzZUNhY2hlVmFsaWRhdG9yKCkp
OwogICAgIEFTU0VSVCghcmVzb3VyY2UtPnJlc291cmNlVG9SZXZhbGlkYXRlKCkpOwogICAgIEFT
U0VSVChyZXNvdXJjZS0+c2Vzc2lvbklEKCkgPT0gc2Vzc2lvbklEKCkpOworICAgIEFTU0VSVChy
ZXNvdXJjZS0+YWxsb3dzQ2FjaGluZygpKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENh
Y2hlZFJlc291cmNlPiBuZXdSZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHJlc291cmNlLT50eXBl
KCksIHJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKSwgcmVzb3VyY2UtPmVuY29kaW5nKCksIHJl
c291cmNlLT5zZXNzaW9uSUQoKSk7CiAKQEAgLTY2MSw3ICs2NjcsNyBAQCBDYWNoZWRSZXNvdXJj
ZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJj
ZShDYWNoZWRSZQogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IHJl
c291cmNlID0gY3JlYXRlUmVzb3VyY2UodHlwZSwgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1
ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNzaW9uSUQoKSk7CiAKLSAgICBpZiAoIW1lbW9y
eUNhY2hlLmFkZCgqcmVzb3VyY2UpKQorICAgIGlmIChyZXF1ZXN0LmFsbG93c0NhY2hpbmcoKSAm
JiAhbWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJjZSkpCiAgICAgICAgIHJlc291cmNlLT5zZXRPd25p
bmdDYWNoZWRSZXNvdXJjZUxvYWRlcih0aGlzKTsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfVElNSU5H
KQogICAgIHN0b3JlUmVzb3VyY2VUaW1pbmdJbml0aWF0b3JJbmZvcm1hdGlvbihyZXNvdXJjZSwg
cmVxdWVzdCk7CkBAIC0xMTUxLDcgKzExNTcsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVy
OjpwcmludFByZWxvYWRTdGF0cygpCiAgICAgICAgICAgICAgICAgaW1hZ2VNaXNzZXMrKzsKICAg
ICAgICAgfQogICAgICAgICAKLSAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkp
CisgICAgICAgIGlmIChyZXNvdXJjZS0+ZXJyb3JPY2N1cnJlZCgpICYmIHJlc291cmNlLT5wcmVs
b2FkUmVzdWx0KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlByZWxvYWROb3RSZWZlcmVuY2VkKQogICAg
ICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZShyZXNvdXJjZSk7CiAgICAg
ICAgIAogICAgICAgICByZXNvdXJjZS0+ZGVjcmVhc2VQcmVsb2FkQ291bnQoKTsKQEAgLTExNjks
NyArMTE3NSw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnByaW50UHJlbG9hZFN0YXRz
KCkKIAogY29uc3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zJiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
ZGVmYXVsdENhY2hlZFJlc291cmNlT3B0aW9ucygpCiB7Ci0gICAgc3RhdGljIFJlc291cmNlTG9h
ZGVyT3B0aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0
YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENs
aWVudFJlcXVlc3RlZENyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmln
aW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQ
b2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZyk7CisgICAgc3RhdGljIFJlc291cmNlTG9hZGVyT3B0
aW9ucyBvcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJl
cXVlc3RlZENyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0
cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1
cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6
OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKTsKICAgICBy
ZXR1cm4gb3B0aW9uczsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hl
L0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCmluZGV4IDQxZGNkZGNhNDE4ZDY2YzNjNGQyYjhmYzhm
NGI1YzFjMTY4Y2U4NjEuLmM4YTIxZWYzMDhiZWE3MDNkODJmZjZiZmQ2Y2U1YjFkNmIxYTZjZDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VS
ZXF1ZXN0LmgKQEAgLTYwLDYgKzYwLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5pdGlhdG9y
KFBhc3NSZWZQdHI8RWxlbWVudD4pOwogICAgIHZvaWQgc2V0SW5pdGlhdG9yKGNvbnN0IEF0b21p
Y1N0cmluZyYgbmFtZSk7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpbml0aWF0b3JOYW1lKCkg
Y29uc3Q7CisgICAgYm9vbCBhbGxvd3NDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25z
LmNhY2hpbmdQb2xpY3koKSA9PSBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmc7IH0KIAogICAg
IHZvaWQgc2V0SW5pdGlhdG9yKERvY3VtZW50TG9hZGVyJik7CiAgICAgRG9jdW1lbnRMb2FkZXIq
IGluaXRpYXRpbmdEb2N1bWVudExvYWRlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5pdGlhdGluZ0Rv
Y3VtZW50TG9hZGVyLmdldCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2Fk
ZXIuY3BwCmluZGV4IDc3Y2FiZjczZTMzN2NlNTRjYzI2YzJiMGIxZWJkZThhZmYzMjA1YTkuLjRh
MGZkMjdjNjAxNmU3NmFjYjYwNGYwOTVlYjMzZDNlMzU0ODMwMDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9pY29uL0ljb25Mb2FkZXIuY3BwCkBAIC01OSw3ICs1OSw3IEBAIHZvaWQgSWNvbkxv
YWRlcjo6c3RhcnRMb2FkaW5nKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjayBpcyBhIHBsYWNlaG9sZGVyIHZh
bHVlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJlcXVlc3Qgc2luY2UgQ29udGVudCBTZWN1cml0
eSBQb2xpY3kgZG9lcyBub3QgYXBwbHkgdG8gcmF3IHJlc291cmNlcy4KLSAgICBDYWNoZWRSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobV9mcmFtZS5sb2FkZXIoKS5pY29u
KCkudXJsKCkpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250
ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIERvTm90QXNrQ2xp
ZW50Rm9yQW55Q3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJlcXVlc3RDcmVkZW50aWFscywgRG9T
ZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJ
bmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpE
b1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcpKTsK
KyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChSZXNvdXJjZVJlcXVlc3QobV9mcmFt
ZS5sb2FkZXIoKS5pY29uKCkudXJsKCkpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBEb05vdEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIERvTm90QXNrQ2xpZW50Rm9yQW55Q3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJlcXVlc3RD
cmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25z
Rm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZykpOwogCiAgICAgcmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3Jp
dHk6Okxvdyk7CiAgICAgcmVxdWVzdC5zZXRJbml0aWF0b3IoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0
SW5pdGlhdG9ycygpLmljb24pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270033</attachid>
            <date>2016-01-27 13:33:46 -0800</date>
            <delta_ts>2016-01-27 14:29:13 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153549-20160127133320.patch</filename>
            <type>text/plain</type>
            <size>25236</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjNjNGEzMjc4OWFiMjYz
YTI5ODhjMGIxNDQ1OWJkNGMyZmE1ZDI1MC4uNDQxZjcyYTM0OWU1ZDNjMTA2NDU4NjU3NTFhNWRm
YzkzZTg5MzQ3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAxLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IENhY2hlZFJlc291
cmNlTG9hZGVyIGNsaWVudHMgdG8gb3B0IG91dCBvZiB0aGUgTWVtb3J5Q2FjaGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmbGFnIHRvIFJl
c291cmNlTG9hZGVyT3B0aW9ucyB3aGljaCBhbGxvdyBsb2FkZXIgY2xpZW50cyB0byBvcHQgb3V0
IG9mIGhhdmluZworICAgICAgICByZXNvdXJjZXMgc3RvcmVkIGluIHRoZSBNZW1vcnlDYWNoZS4g
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OlJlc291cmNlTG9hZGVyT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OmNhY2hpbmdQb2xpY3kpOgor
CisgICAgICAgIEV4aXN0aW5nIGNsaWVudHMgd2lsbCBoYXZlIHRvIGFkZCB0aGUgKGRlZmF1bHQp
IEFsbG93Q2FjaGluZyBmbGFnIHdoZW4gdGhleSBjcmVhdGUgYQorICAgICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb2JqZWN0LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9uczo6c2V0Q2FjaGluZ1BvbGljeSk6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKworICAg
ICAgICBFdmVyeSB0aW1lIHRoZSBDYWNoZWRSZXNvdXJjZSBvciBDYWNoZWRSZXNvdXJjZUxvYWRl
ciBhY2Nlc3NlcyB0aGUgTWVtb3J5Q2FjaGUsIGNoZWNrCisgICAgICAgIHRvIHNlZSB3aGV0aGVy
IHRoZSByZXNvdXJjZSBvciB0aGUgcmVxdWVzdCBoYXZlIGFsbG93ZWQgY2FjaGluZyBiZWZvcmUg
YWRkaW5nIHJlc291cmNlcworICAgICAgICB0bywgcmVtb3ZpbmcgcmVzb3VyY2VzIGZyb20sIG9y
IHNvdXJjaW5nIHJlc291cmNlIGRhdGEgZnJvbSB0aGUgTWVtb3J5Q2FjaGUuCisKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6ZmFpbEJlZm9yZVN0YXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRE
ZWNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2Rl
ZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFjY2Vzc0RlY29k
ZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphbGxvd3NDYWNoaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6YWxsb3dz
Q2FjaGluZyk6CisKIDIwMTYtMDEtMjYgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+
CiAKICAgICAgICAgW0VNRV1bTWFjXSBNZWRpYUtleXMuY3JlYXRlU2Vzc2lvbigpIGZhaWxzIHdp
dGggaW5pdERhdGEgY29udGFpbmluZyBhIGNvbnRlbnRJZCB3aG9zZSBsZW5ndGggaXMgPiAxLzIg
dGhlIGluaXREYXRhLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKaW5k
ZXggMTdhNjI4Yzk4MDk0NDcyYTZmZDQwMWRhYjNlZDYxYWIyMGI3YjEzYi4uNWQ3ZTQyMDkzMjJl
ZjBkYjIxNjVjZTlmMjMxODdiMGY0ZjEwOGY4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0xNDc1LDcgKzE0NzUsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVy
OjpzdGFydExvYWRpbmdNYWluUmVzb3VyY2UoKQogICAgIC8vIElmIHRoaXMgaXMgYSByZWxvYWQg
dGhlIGNhY2hlIGxheWVyIG1pZ2h0IGhhdmUgbWFkZSB0aGUgcHJldmlvdXMgcmVxdWVzdCBjb25k
aXRpb25hbC4gRG9jdW1lbnRMb2FkZXIgY2FuJ3QgaGFuZGxlIDMwNCByZXNwb25zZXMgaXRzZWxm
LgogICAgIHJlcXVlc3QubWFrZVVuY29uZGl0aW9uYWwoKTsKIAotICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxSZXNvdXJjZUxvYWRlck9wdGlvbnM+IG1haW5SZXNvdXJjZUxvYWRPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50
aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJlcXVlc3RlZENyZWRlbnRp
YWxzLCBTa2lwU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5
cGUsIEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGlu
Zyk7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlc291cmNlTG9hZGVyT3B0aW9ucz4gbWFp
blJlc291cmNlTG9hZE9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJE
YXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywg
Q2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0
T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgSW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1Bv
bGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpOwog
ICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBjYWNoZWRSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCwg
bWFpblJlc291cmNlTG9hZE9wdGlvbnMpOwogICAgIGNhY2hlZFJlc291cmNlUmVxdWVzdC5zZXRJ
bml0aWF0b3IoKnRoaXMpOwogICAgIG1fbWFpblJlc291cmNlID0gbV9jYWNoZWRSZXNvdXJjZUxv
YWRlci0+cmVxdWVzdE1haW5SZXNvdXJjZShjYWNoZWRSZXNvdXJjZVJlcXVlc3QpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGRhNDdkZDlk
MjgzZjE2ZDgyYTcxMTMxNmM2ZGNmMDBhOTIwMjcyNTMuLjVkYjFlYjU4NDViNzBmZWFmMzM3OWNj
YWJiYzZlMGI3YzI0NTNlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NZWRp
YVJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNv
dXJjZUxvYWRlci5jcHAKQEAgLTYxLDcgKzYxLDcgQEAgYm9vbCBNZWRpYVJlc291cmNlTG9hZGVy
OjpzdGFydChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIExvYWRPcHRpb25zIG9wdGkK
ICAgICBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzID0gbV9jcm9zc09yaWdpbk1v
ZGUuaXNOdWxsKCkgfHwgZXF1YWxMZXR0ZXJzSWdub3JpbmdBU0NJSUNhc2UobV9jcm9zc09yaWdp
bk1vZGUsICJ1c2UtY3JlZGVudGlhbHMiKSA/IEFsbG93U3RvcmVkQ3JlZGVudGlhbHMgOiBEb05v
dEFsbG93U3RvcmVkQ3JlZGVudGlhbHM7CiAKICAgICAvLyBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIGlzIGEgcGxhY2Vob2xkZXIgdmFsdWUuIEl0IGRvZXMg
bm90IGFmZmVjdCB0aGUgcmVxdWVzdCBzaW5jZSBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBkb2Vz
IG5vdCBhcHBseSB0byByYXcgcmVzb3VyY2VzLgotICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCBj
YWNoZVJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3Ms
IERvTm90U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMsIERv
Tm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgQ2xpZW50RGlkTm90UmVxdWVz
dENyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIGNvcnNQb2xpY3ksIERvTm90SW5jbHVkZUNl
cnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lD
aGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKSk7CisgICAgQ2Fj
aGVkUmVzb3VyY2VSZXF1ZXN0IGNhY2hlUmVxdWVzdChyZXF1ZXN0LCBSZXNvdXJjZUxvYWRlck9w
dGlvbnMoU2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIGJ1ZmZlcmluZ1BvbGljeSwg
YWxsb3dDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxz
LCBDbGllbnREaWROb3RSZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgY29yc1Bv
bGljeSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJ
bXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVy
c0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZykpOwogCiAgICAgaWYgKCFtX2Ny
b3NzT3JpZ2luTW9kZS5pc051bGwoKSkKICAgICAgICAgdXBkYXRlUmVxdWVzdEZvckFjY2Vzc0Nv
bnRyb2woY2FjaGVSZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKSwgbV9kb2N1bWVudC5z
ZWN1cml0eU9yaWdpbigpLCBhbGxvd0NyZWRlbnRpYWxzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwCmluZGV4IGNiMzVlMjJl
MTE3MzFmOTcwMjE4OTU5OGM4NmY1YTgxY2JmYzcyMTIuLjdjMTlkM2QzMTVlNTM0MDk4YWQxNTA3
NGRhZTFhNTk0ZmNlZDk5MDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRz
Y2FwZVBsdWdJblN0cmVhbUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05l
dHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcApAQCAtNDMsNyArNDMsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAvLyBGSVhNRTogU2tpcCBDb250ZW50IFNlY3VyaXR5IFBvbGljeSBjaGVjayB3
aGVuIGFzc29jaWF0ZWQgcGx1Z2luIGVsZW1lbnQgaXMgaW4gYSB1c2VyIGFnZW50IHNoYWRvdyB0
cmVlLgogLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2
NjYzPi4KIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpOZXRzY2FwZVBsdWdJblN0cmVhbUxv
YWRlcihGcmFtZSogZnJhbWUsIE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyQ2xpZW50KiBjbGll
bnQpCi0gICAgOiBSZXNvdXJjZUxvYWRlcihmcmFtZSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgRG9Ob3RCdWZmZXJEYXRhLCBBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgQ2xpZW50UmVxdWVzdGVkQ3Jl
ZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25z
Rm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0Rl
ZmVyc0xvYWRpbmcpKQorICAgIDogUmVzb3VyY2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVy
T3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxs
b3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJl
cXVlc3RlZENyZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJl
c3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNl
Y3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGlj
eTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpKQogICAg
ICwgbV9jbGllbnQoY2xpZW50KQogewogI2lmIEVOQUJMRShDT05URU5UX0VYVEVOU0lPTlMpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmgKaW5kZXggMTg1
ZDFjY2ExYzJhM2M1NTdiZmRlY2NhNzQxMWViZTYyM2RhNjFiZC4uZDI1OGUxZTYyNDhhNGY1MTgx
ZTUxMTUyNzMxZmIyMzkyOWVhNGQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNv
dXJjZUxvYWRlck9wdGlvbnMuaApAQCAtNzYsNiArNzYsMTEgQEAgZW51bSBjbGFzcyBEZWZlcnNM
b2FkaW5nUG9saWN5IDogdWludDhfdCB7CiAgICAgRGlzYWxsb3dEZWZlcnNMb2FkaW5nCiB9Owog
CitlbnVtIGNsYXNzIENhY2hpbmdQb2xpY3kgOiB1aW50OF90IHsKKyAgICBBbGxvd0NhY2hpbmcs
CisgICAgRGlzYWxsb3dDYWNoaW5nCit9OworCiBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25z
IHsKICAgICBSZXNvdXJjZUxvYWRlck9wdGlvbnMoKQogICAgICAgICA6IG1fc2VuZExvYWRDYWxs
YmFja3MoRG9Ob3RTZW5kQ2FsbGJhY2tzKQpAQCAtOTAsNyArOTUsNyBAQCBzdHJ1Y3QgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zIHsKICAgICB7CiAgICAgfQogCi0gICAgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKFNlbmRDYWxsYmFja1BvbGljeSBzZW5kTG9hZENhbGxiYWNrcywgQ29udGVudFNuaWZmaW5n
UG9saWN5IHNuaWZmQ29udGVudCwgRGF0YUJ1ZmZlcmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9s
aWN5LCBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0NyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFs
UG9saWN5IGNyZWRlbnRpYWxQb2xpY3ksIENyZWRlbnRpYWxSZXF1ZXN0IGNyZWRlbnRpYWxSZXF1
ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3VyaXR5Q2hlY2ssIFJlcXVlc3RPcmlnaW5Qb2xp
Y3kgcmVxdWVzdE9yaWdpblBvbGljeSwgQ2VydGlmaWNhdGVJbmZvUG9saWN5IGNlcnRpZmljYXRl
SW5mb1BvbGljeSwgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiBjb250ZW50U2VjdXJp
dHlQb2xpY3lJbXBvc2l0aW9uLCBEZWZlcnNMb2FkaW5nUG9saWN5IGRlZmVyc0xvYWRpbmdQb2xp
Y3kpCisgICAgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja1BvbGljeSBzZW5kTG9h
ZENhbGxiYWNrcywgQ29udGVudFNuaWZmaW5nUG9saWN5IHNuaWZmQ29udGVudCwgRGF0YUJ1ZmZl
cmluZ1BvbGljeSBkYXRhQnVmZmVyaW5nUG9saWN5LCBTdG9yZWRDcmVkZW50aWFscyBhbGxvd0Ny
ZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNyZWRlbnRpYWxQb2xpY3ksIENyZWRl
bnRpYWxSZXF1ZXN0IGNyZWRlbnRpYWxSZXF1ZXN0LCBTZWN1cml0eUNoZWNrUG9saWN5IHNlY3Vy
aXR5Q2hlY2ssIFJlcXVlc3RPcmlnaW5Qb2xpY3kgcmVxdWVzdE9yaWdpblBvbGljeSwgQ2VydGlm
aWNhdGVJbmZvUG9saWN5IGNlcnRpZmljYXRlSW5mb1BvbGljeSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5SW1wb3NpdGlvbiBjb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uLCBEZWZlcnNMb2Fk
aW5nUG9saWN5IGRlZmVyc0xvYWRpbmdQb2xpY3ksIENhY2hpbmdQb2xpY3kgY2FjaGluZ1BvbGlj
eSkKICAgICAgICAgOiBtX3NlbmRMb2FkQ2FsbGJhY2tzKHNlbmRMb2FkQ2FsbGJhY2tzKQogICAg
ICAgICAsIG1fc25pZmZDb250ZW50KHNuaWZmQ29udGVudCkKICAgICAgICAgLCBtX2RhdGFCdWZm
ZXJpbmdQb2xpY3koZGF0YUJ1ZmZlcmluZ1BvbGljeSkKQEAgLTEwMiw2ICsxMDcsNyBAQCBzdHJ1
Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIHsKICAgICAgICAgLCBtX2NlcnRpZmljYXRlSW5mb1Bv
bGljeShjZXJ0aWZpY2F0ZUluZm9Qb2xpY3kpCiAgICAgICAgICwgbV9jb250ZW50U2VjdXJpdHlQ
b2xpY3lJbXBvc2l0aW9uKGNvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24pCiAgICAgICAg
ICwgbV9kZWZlcnNMb2FkaW5nUG9saWN5KGRlZmVyc0xvYWRpbmdQb2xpY3kpCisgICAgICAgICwg
bV9jYWNoaW5nUG9saWN5KGNhY2hpbmdQb2xpY3kpCiAgICAgewogICAgIH0KIApAQCAtMTI3LDYg
KzEzMyw4IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewogICAgIHZvaWQgc2V0Q29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbihDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0
aW9uIGltcG9zaXRpb24pIHsgbV9jb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uID0gaW1w
b3NpdGlvbjsgfQogICAgIERlZmVyc0xvYWRpbmdQb2xpY3kgZGVmZXJzTG9hZGluZ1BvbGljeSgp
IGNvbnN0IHsgcmV0dXJuIG1fZGVmZXJzTG9hZGluZ1BvbGljeTsgfQogICAgIHZvaWQgc2V0RGVm
ZXJzTG9hZGluZ1BvbGljeShEZWZlcnNMb2FkaW5nUG9saWN5IGRlZmVyc0xvYWRpbmdQb2xpY3kp
IHsgbV9kZWZlcnNMb2FkaW5nUG9saWN5ID0gZGVmZXJzTG9hZGluZ1BvbGljeTsgfQorICAgIENh
Y2hpbmdQb2xpY3kgY2FjaGluZ1BvbGljeSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FjaGluZ1BvbGlj
eTsgfQorICAgIHZvaWQgc2V0Q2FjaGluZ1BvbGljeShDYWNoaW5nUG9saWN5IGNhY2hpbmdQb2xp
Y3kpIHsgbV9jYWNoaW5nUG9saWN5ID0gY2FjaGluZ1BvbGljeTsgfQogCiAgICAgdW5zaWduZWQg
bV9zZW5kTG9hZENhbGxiYWNrcyA6IDE7CiAgICAgdW5zaWduZWQgbV9zbmlmZkNvbnRlbnQgOiAx
OwpAQCAtMTM5LDYgKzE0Nyw3IEBAIHN0cnVjdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMgewogICAg
IHVuc2lnbmVkIG1fY2VydGlmaWNhdGVJbmZvUG9saWN5IDogMTsgLy8gV2hldGhlciB0aGUgcmVz
cG9uc2Ugc2hvdWxkIGluY2x1ZGUgY2VydGlmaWNhdGUgaW5mby4KICAgICBDb250ZW50U2VjdXJp
dHlQb2xpY3lJbXBvc2l0aW9uIG1fY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiB7IENv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2sgfTsKICAgICBEZWZl
cnNMb2FkaW5nUG9saWN5IG1fZGVmZXJzTG9hZGluZ1BvbGljeSB7IERlZmVyc0xvYWRpbmdQb2xp
Y3k6OkFsbG93RGVmZXJzTG9hZGluZyB9OworICAgIENhY2hpbmdQb2xpY3kgbV9jYWNoaW5nUG9s
aWN5IHsgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nIH07CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZS5jcHAKaW5kZXggYzNmMThhYjZkN2MxOTRmYjY0MzQzMDM5N2JkMDBjYjE3YjA1MGJjOS4u
NzI3YTcyZTk1ZWE4ZmE3ZTc0MmM0ZDI2ZjdmYjA1YTM4ZmZkN2ZlNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCkBAIC0xNTksNyArMTU5LDcg
QEAgQ2FjaGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSgpCiAgICAgQVNTRVJUKGNhbkRlbGV0
ZSgpKTsKICAgICBBU1NFUlQoIWluQ2FjaGUoKSk7CiAgICAgQVNTRVJUKCFtX2RlbGV0ZWQpOwot
ICAgIEFTU0VSVCh1cmwoKS5pc051bGwoKSB8fCBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVz
b3VyY2VGb3JSZXF1ZXN0KHJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkgIT0gdGhpcyk7
CisgICAgQVNTRVJUKHVybCgpLmlzTnVsbCgpIHx8ICFhbGxvd3NDYWNoaW5nKCkgfHwgTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChyZXNvdXJjZVJlcXVlc3QoKSwg
c2Vzc2lvbklEKCkpICE9IHRoaXMpOwogCiAjaWZuZGVmIE5ERUJVRwogICAgIG1fZGVsZXRlZCA9
IHRydWU7CkBAIC0xNzQsNyArMTc0LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZTo6ZmFpbEJlZm9y
ZVN0YXJ0aW5nKCkKIHsKICAgICAvLyBGSVhNRTogV2hhdCBpZiByZXNvdXJjZXMgaW4gb3RoZXIg
ZnJhbWVzIHdlcmUgd2FpdGluZyBmb3IgdGhpcyByZXZhbGlkYXRpb24/CiAgICAgTE9HKFJlc291
cmNlTG9hZGluZywgIkNhbm5vdCBzdGFydCBsb2FkaW5nICclcyciLCB1cmwoKS5zdHJpbmcoKS5s
YXRpbjEoKS5kYXRhKCkpOwotICAgIGlmIChtX3Jlc291cmNlVG9SZXZhbGlkYXRlKSAKKyAgICBp
ZiAoYWxsb3dzQ2FjaGluZygpICYmIG1fcmVzb3VyY2VUb1JldmFsaWRhdGUpCiAgICAgICAgIE1l
bW9yeUNhY2hlOjpzaW5nbGV0b24oKS5yZXZhbGlkYXRpb25GYWlsZWQoKnRoaXMpOwogICAgIGVy
cm9yKENhY2hlZFJlc291cmNlOjpMb2FkRXJyb3IpOwogfQpAQCAtNDUyLDcgKzQ1Miw3IEBAIGJv
b2wgQ2FjaGVkUmVzb3VyY2U6OmFkZENsaWVudFRvU2V0KENhY2hlZFJlc291cmNlQ2xpZW50KiBj
bGllbnQpCiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG1fcHJlbG9hZFJlc3VsdCA9IFByZWxv
YWRSZWZlcmVuY2VkOwogICAgIH0KLSAgICBpZiAoIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkp
CisgICAgaWYgKGFsbG93c0NhY2hpbmcoKSAmJiAhaGFzQ2xpZW50cygpICYmIGluQ2FjaGUoKSkK
ICAgICAgICAgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLmFkZFRvTGl2ZVJlc291cmNlc1NpemUo
KnRoaXMpOwogCiAgICAgaWYgKChtX3R5cGUgPT0gUmF3UmVzb3VyY2UgfHwgbV90eXBlID09IE1h
aW5SZXNvdXJjZSkgJiYgIW1fcmVzcG9uc2UuaXNOdWxsKCkgJiYgIW1fcHJveHlSZXNvdXJjZSkg
ewpAQCAtNDgzLDcgKzQ4Myw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OnJlbW92ZUNsaWVudChD
YWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgIH0KIAogICAgIGJvb2wgZGVsZXRlZCA9
IGRlbGV0ZUlmUG9zc2libGUoKTsKLSAgICBpZiAoIWRlbGV0ZWQgJiYgIWhhc0NsaWVudHMoKSkg
eworICAgIGlmIChhbGxvd3NDYWNoaW5nKCkgJiYgIWRlbGV0ZWQgJiYgIWhhc0NsaWVudHMoKSkg
ewogICAgICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsK
ICAgICAgICAgaWYgKGluQ2FjaGUoKSkgewogICAgICAgICAgICAgbWVtb3J5Q2FjaGUucmVtb3Zl
RnJvbUxpdmVSZXNvdXJjZXNTaXplKCp0aGlzKTsKQEAgLTU0MSwxMiArNTQxLDEyIEBAIHZvaWQg
Q2FjaGVkUmVzb3VyY2U6OnNldERlY29kZWRTaXplKHVuc2lnbmVkIHNpemUpCiAKICAgICAvLyBU
aGUgb2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0cyBz
aXplIGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBtX2Rl
Y29kZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUgbGlz
dC4KLSAgICBpZiAoaW5DYWNoZSgpKQorICAgIGlmIChhbGxvd3NDYWNoaW5nKCkgJiYgaW5DYWNo
ZSgpKQogICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlRnJvbUxSVUxpc3Qo
KnRoaXMpOwogICAgIAogICAgIG1fZGVjb2RlZFNpemUgPSBzaXplOwogICAgCi0gICAgaWYgKGlu
Q2FjaGUoKSkgeworICAgIGlmIChhbGxvd3NDYWNoaW5nKCkgJiYgaW5DYWNoZSgpKSB7CiAgICAg
ICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgICAg
ICAvLyBOb3cgaW5zZXJ0IGludG8gdGhlIG5ldyBMUlUgbGlzdC4KICAgICAgICAgbWVtb3J5Q2Fj
aGUuaW5zZXJ0SW5MUlVMaXN0KCp0aGlzKTsKQEAgLTU3OCwxMiArNTc4LDEyIEBAIHZvaWQgQ2Fj
aGVkUmVzb3VyY2U6OnNldEVuY29kZWRTaXplKHVuc2lnbmVkIHNpemUpCiAKICAgICAvLyBUaGUg
b2JqZWN0IG11c3QgYmUgbW92ZWQgdG8gYSBkaWZmZXJlbnQgcXVldWUsIHNpbmNlIGl0cyBzaXpl
IGhhcyBiZWVuIGNoYW5nZWQuCiAgICAgLy8gUmVtb3ZlIGJlZm9yZSB1cGRhdGluZyBtX2VuY29k
ZWRTaXplLCBzbyB3ZSBmaW5kIHRoZSByZXNvdXJjZSBpbiB0aGUgY29ycmVjdCBMUlUgbGlzdC4K
LSAgICBpZiAoaW5DYWNoZSgpKQorICAgIGlmIChhbGxvd3NDYWNoaW5nKCkgJiYgaW5DYWNoZSgp
KQogICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlRnJvbUxSVUxpc3QoKnRo
aXMpOwogCiAgICAgbV9lbmNvZGVkU2l6ZSA9IHNpemU7CiAKLSAgICBpZiAoaW5DYWNoZSgpKSB7
CisgICAgaWYgKGFsbG93c0NhY2hpbmcoKSAmJiBpbkNhY2hlKCkpIHsKICAgICAgICAgYXV0byYg
bWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgICAgIG1lbW9yeUNh
Y2hlLmluc2VydEluTFJVTGlzdCgqdGhpcyk7CiAgICAgICAgIG1lbW9yeUNhY2hlLmFkanVzdFNp
emUoaGFzQ2xpZW50cygpLCBkZWx0YSk7CkBAIC01OTQsNyArNTk0LDcgQEAgdm9pZCBDYWNoZWRS
ZXNvdXJjZTo6ZGlkQWNjZXNzRGVjb2RlZERhdGEoZG91YmxlIHRpbWVTdGFtcCkKIHsKICAgICBt
X2xhc3REZWNvZGVkQWNjZXNzVGltZSA9IHRpbWVTdGFtcDsKICAgICAKLSAgICBpZiAoaW5DYWNo
ZSgpKSB7CisgICAgaWYgKGFsbG93c0NhY2hpbmcoKSAmJiBpbkNhY2hlKCkpIHsKICAgICAgICAg
YXV0byYgbWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgICAgIGlm
IChtZW1vcnlDYWNoZS5pbkxpdmVEZWNvZGVkUmVzb3VyY2VzTGlzdCgqdGhpcykpIHsKICAgICAg
ICAgICAgIG1lbW9yeUNhY2hlLnJlbW92ZUZyb21MaXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRo
aXMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAppbmRl
eCBhNDUyM2Q2YThhMzNjMTFkMjM3YjlkMWEwZmJhMGQyY2VjNzMyMzg0Li41NDY2YmU2MDQ1NGQy
NjhkNzYwNGJiY2Q1MTM1MzM2M2Q4YzA3ZjQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuaApAQCAtMjE4LDYgKzIxOCw4IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgc2hvdWxkU2VuZFJlc291cmNlTG9hZENhbGxiYWNrcygpIGNvbnN0IHsgcmV0dXJuIG1f
b3B0aW9ucy5zZW5kTG9hZENhbGxiYWNrcygpID09IFNlbmRDYWxsYmFja3M7IH0KICAgICBEYXRh
QnVmZmVyaW5nUG9saWN5IGRhdGFCdWZmZXJpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnMuZGF0YUJ1ZmZlcmluZ1BvbGljeSgpOyB9CisKKyAgICBib29sIGFsbG93c0NhY2hpbmco
KSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuY2FjaGluZ1BvbGljeSgpID09IENhY2hpbmdQb2xp
Y3k6OkFsbG93Q2FjaGluZzsgfQogICAgIAogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95RGVjb2Rl
ZERhdGEoKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZTM0ZmQ3ZDNkYTQzMTI4YmIzNWE0ZjkyZjMzMjJi
OGZiMjc1ZjY3Yi4uMDAwZjlhYTgzNTJlYzIwMjM2ZmE3YmMyZmM1OWQyNDc3NDg2ZGM4MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXIuY3BwCkBAIC0yMjEsMjAgKzIyMSwyNCBAQCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRD
U1NTdHlsZVNoZWV0PiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFVzZXJDU1NTdAogI2Vu
ZGlmCiAKICAgICBhdXRvJiBtZW1vcnlDYWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsK
LSAgICBpZiAoQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nID0gbWVtb3J5Q2FjaGUucmVzb3VyY2VG
b3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCgpKSkgewotICAg
ICAgICBpZiAoaXM8Q2FjaGVkQ1NTU3R5bGVTaGVldD4oKmV4aXN0aW5nKSkKLSAgICAgICAgICAg
IHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlzdGluZyk7Ci0gICAgICAg
IG1lbW9yeUNhY2hlLnJlbW92ZSgqZXhpc3RpbmcpOworICAgIGlmIChyZXF1ZXN0LmFsbG93c0Nh
Y2hpbmcoKSkgeworICAgICAgICBpZiAoQ2FjaGVkUmVzb3VyY2UqIGV4aXN0aW5nID0gbWVtb3J5
Q2FjaGUucmVzb3VyY2VGb3JSZXF1ZXN0KHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Np
b25JRCgpKSkgeworICAgICAgICAgICAgaWYgKGlzPENhY2hlZENTU1N0eWxlU2hlZXQ+KCpleGlz
dGluZykpCisgICAgICAgICAgICAgICAgcmV0dXJuIGRvd25jYXN0PENhY2hlZENTU1N0eWxlU2hl
ZXQ+KGV4aXN0aW5nKTsKKyAgICAgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92ZSgqZXhpc3Rpbmcp
OworICAgICAgICB9CiAgICAgfQorCiAgICAgaWYgKHVybC5zdHJpbmcoKSAhPSByZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnVybCgpKQogICAgICAgICByZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJl
cXVlc3QoKS5zZXRVUkwodXJsKTsKIAogICAgIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZENT
U1N0eWxlU2hlZXQ+IHVzZXJTaGVldCA9IG5ldyBDYWNoZWRDU1NTdHlsZVNoZWV0KHJlcXVlc3Qu
cmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QuY2hhcnNldCgpLCBzZXNzaW9uSUQoKSk7CiAKLSAg
ICBtZW1vcnlDYWNoZS5hZGQoKnVzZXJTaGVldCk7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2Fj
aGluZygpKQorICAgICAgICBtZW1vcnlDYWNoZS5hZGQoKnVzZXJTaGVldCk7CiAgICAgLy8gRklY
TUU6IGxvYWRSZXNvdXJjZSBjYWxscyBzZXRPd25pbmdDYWNoZWRSZXNvdXJjZUxvYWRlcigpIGlm
IHRoZSByZXNvdXJjZSBjb3VsZG4ndCBiZSBhZGRlZCB0byBjYWNoZS4gRG9lcyB0aGlzIGZ1bmN0
aW9uIG5lZWQgdG8gY2FsbCBpdCwgdG9vPwogCi0gICAgdXNlclNoZWV0LT5sb2FkKCp0aGlzLCBS
ZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1
ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckFsbENyZWRlbnRp
YWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5Q2hlY2ssIFVzZURl
ZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUlu
Zm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xpY3lDaGVjaywgRGVm
ZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKSk7CisgICAgdXNlclNoZWV0LT5s
b2FkKCp0aGlzLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoRG9Ob3RTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZv
ckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5
Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVD
ZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OlNraXBQb2xp
Y3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5n
UG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKICAgICAKICAgICByZXR1cm4gdXNlclNoZWV0OwogfQpA
QCAtNTU1LDcgKzU1OSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAjZW5kaWYKIAogICAg
IGF1dG8mIG1lbW9yeUNhY2hlID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwotICAgIGlmICht
ZW1vcnlDYWNoZS5kaXNhYmxlZCgpKSB7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2FjaGluZygp
ICYmIG1lbW9yeUNhY2hlLmRpc2FibGVkKCkpIHsKICAgICAgICAgRG9jdW1lbnRSZXNvdXJjZU1h
cDo6aXRlcmF0b3IgaXQgPSBtX2RvY3VtZW50UmVzb3VyY2VzLmZpbmQodXJsLnN0cmluZygpKTsK
ICAgICAgICAgaWYgKGl0ICE9IG1fZG9jdW1lbnRSZXNvdXJjZXMuZW5kKCkpIHsKICAgICAgICAg
ICAgIGl0LT52YWx1ZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIobnVsbHB0cik7CkBA
IC01NzAsNyArNTc0LDggQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENh
Y2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UoQ2FjaGUKICAgICAgICAgcmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0RG9tYWluRm9yQ2FjaGVQYXJ0aXRpb24oZG9j
dW1lbnQoKS0+dG9wT3JpZ2luKCktPmRvbWFpbkZvckNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlm
CiAKLSAgICByZXNvdXJjZSA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSk7CisgICAgaWYgKHJlcXVlc3QuYWxsb3dz
Q2FjaGluZygpKQorICAgICAgICByZXNvdXJjZSA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVx
dWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSk7CiAKICAgICBsb2dN
ZW1vcnlDYWNoZVJlc291cmNlUmVxdWVzdChmcmFtZSgpLCByZXNvdXJjZSA/IERpYWdub3N0aWNM
b2dnaW5nS2V5czo6aW5NZW1vcnlDYWNoZUtleSgpIDogRGlhZ25vc3RpY0xvZ2dpbmdLZXlzOjpu
b3RJbk1lbW9yeUNhY2hlS2V5KCkpOwogCkBAIC02MDgsNyArNjEzLDcgQEAgQ2FjaGVkUmVzb3Vy
Y2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVz
b3VyY2UoQ2FjaGUKIAogICAgICAgICAvLyBXZSBkb24ndCBzdXBwb3J0IGltbWVkaWF0ZSBsb2Fk
cywgYnV0IHdlIGRvIHN1cHBvcnQgaW1tZWRpYXRlIGZhaWx1cmUuCiAgICAgICAgIGlmIChyZXNv
dXJjZS0+ZXJyb3JPY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICBpZiAocmVzb3VyY2UtPmluQ2Fj
aGUoKSkKKyAgICAgICAgICAgIGlmIChyZXNvdXJjZS0+YWxsb3dzQ2FjaGluZygpICYmIHJlc291
cmNlLT5pbkNhY2hlKCkpCiAgICAgICAgICAgICAgICAgbWVtb3J5Q2FjaGUucmVtb3ZlKCpyZXNv
dXJjZSk7CiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAgICAgfQpAQCAtNjM2LDYg
KzY0MSw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6cmV2YWxpZGF0ZVJlc291cmNlKGNvCiAgICAgQVNTRVJUKHJlc291cmNlLT5j
YW5Vc2VDYWNoZVZhbGlkYXRvcigpKTsKICAgICBBU1NFUlQoIXJlc291cmNlLT5yZXNvdXJjZVRv
UmV2YWxpZGF0ZSgpKTsKICAgICBBU1NFUlQocmVzb3VyY2UtPnNlc3Npb25JRCgpID09IHNlc3Np
b25JRCgpKTsKKyAgICBBU1NFUlQocmVzb3VyY2UtPmFsbG93c0NhY2hpbmcoKSk7CiAKICAgICBD
YWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gbmV3UmVzb3VyY2UgPSBjcmVhdGVS
ZXNvdXJjZShyZXNvdXJjZS0+dHlwZSgpLCByZXNvdXJjZS0+cmVzb3VyY2VSZXF1ZXN0KCksIHJl
c291cmNlLT5lbmNvZGluZygpLCByZXNvdXJjZS0+c2Vzc2lvbklEKCkpOwogCkBAIC02NjEsNyAr
NjY3LDcgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkUmVzb3VyY2U+IENhY2hlZFJlc291
cmNlTG9hZGVyOjpsb2FkUmVzb3VyY2UoQ2FjaGVkUmUKIAogICAgIENhY2hlZFJlc291cmNlSGFu
ZGxlPENhY2hlZFJlc291cmNlPiByZXNvdXJjZSA9IGNyZWF0ZVJlc291cmNlKHR5cGUsIHJlcXVl
c3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklE
KCkpOwogCi0gICAgaWYgKCFtZW1vcnlDYWNoZS5hZGQoKnJlc291cmNlKSkKKyAgICBpZiAocmVx
dWVzdC5hbGxvd3NDYWNoaW5nKCkgJiYgIW1lbW9yeUNhY2hlLmFkZCgqcmVzb3VyY2UpKQogICAg
ICAgICByZXNvdXJjZS0+c2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIodGhpcyk7CiAjaWYg
RU5BQkxFKFJFU09VUkNFX1RJTUlORykKICAgICBzdG9yZVJlc291cmNlVGltaW5nSW5pdGlhdG9y
SW5mb3JtYXRpb24ocmVzb3VyY2UsIHJlcXVlc3QpOwpAQCAtMTE1MSw3ICsxMTU3LDcgQEAgdm9p
ZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMoKQogICAgICAgICAgICAg
ICAgIGltYWdlTWlzc2VzKys7CiAgICAgICAgIH0KICAgICAgICAgCi0gICAgICAgIGlmIChyZXNv
dXJjZS0+ZXJyb3JPY2N1cnJlZCgpKQorICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSAmJiByZXNvdXJjZS0+cHJlbG9hZFJlc3VsdCgpID09IENhY2hlZFJlc291cmNlOjpQcmVs
b2FkTm90UmVmZXJlbmNlZCkKICAgICAgICAgICAgIE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKS5y
ZW1vdmUocmVzb3VyY2UpOwogICAgICAgICAKICAgICAgICAgcmVzb3VyY2UtPmRlY3JlYXNlUHJl
bG9hZENvdW50KCk7CkBAIC0xMTY5LDcgKzExNzUsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpwcmludFByZWxvYWRTdGF0cygpCiAKIGNvbnN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyYg
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRSZXNvdXJjZU9wdGlvbnMoKQogewot
ICAgIHN0YXRpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBT
bmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVu
dEZvckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgRG9TZWN1cml0
eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRl
Q2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGlj
eUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcpOworICAgIHN0
YXRpYyBSZXNvdXJjZUxvYWRlck9wdGlvbnMgb3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNv
bnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZvckFs
bENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNr
LCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
LCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6
OkFsbG93Q2FjaGluZyk7CiAgICAgcmV0dXJuIG9wdGlvbnM7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJlcXVlc3QuaAppbmRleCA0MWRj
ZGRjYTQxOGQ2NmMzYzRkMmI4ZmM4ZjRiNWMxYzE2OGNlODYxLi5jOGEyMWVmMzA4YmVhNzAzZDgy
ZmY2YmZkNmNlNWIxZDZiMWE2Y2Q4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlUmVxdWVzdC5oCkBAIC02MCw2ICs2MCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEluaXRpYXRvcihQYXNzUmVmUHRyPEVsZW1lbnQ+KTsKICAgICB2b2lkIHNl
dEluaXRpYXRvcihjb25zdCBBdG9taWNTdHJpbmcmIG5hbWUpOwogICAgIGNvbnN0IEF0b21pY1N0
cmluZyYgaW5pdGlhdG9yTmFtZSgpIGNvbnN0OworICAgIGJvb2wgYWxsb3dzQ2FjaGluZygpIGNv
bnN0IHsgcmV0dXJuIG1fb3B0aW9ucy5jYWNoaW5nUG9saWN5KCkgPT0gQ2FjaGluZ1BvbGljeTo6
QWxsb3dDYWNoaW5nOyB9CiAKICAgICB2b2lkIHNldEluaXRpYXRvcihEb2N1bWVudExvYWRlciYp
OwogICAgIERvY3VtZW50TG9hZGVyKiBpbml0aWF0aW5nRG9jdW1lbnRMb2FkZXIoKSBjb25zdCB7
IHJldHVybiBtX2luaXRpYXRpbmdEb2N1bWVudExvYWRlci5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCA3N2NhYmY3M2UzMzdjZTU0Y2MyNmMy
YjBiMWViZGU4YWZmMzIwNWE5Li40YTBmZDI3YzYwMTZlNzZhY2I2MDRmMDk1ZWIzM2QzZTM1NDgz
MDA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcApAQCAtNTks
NyArNTksNyBAQCB2b2lkIEljb25Mb2FkZXI6OnN0YXJ0TG9hZGluZygpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hl
Y2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0IHRoZSByZXF1ZXN0
IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5IHRvIHJhdyByZXNv
dXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0
KG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpKSwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNl
bmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxzLCBDbGllbnREaWROb3RS
ZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3Ry
aWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3Vy
aXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6
QWxsb3dEZWZlcnNMb2FkaW5nKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qo
UmVzb3VyY2VSZXF1ZXN0KG1fZnJhbWUubG9hZGVyKCkuaWNvbigpLnVybCgpKSwgUmVzb3VyY2VM
b2FkZXJPcHRpb25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9O
b3RBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckFueUNyZWRlbnRpYWxz
LCBDbGllbnREaWROb3RSZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVm
YXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5m
bywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJz
TG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0Nh
Y2hpbmcpKTsKIAogICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVB
VkZSZXNvdXJjZUxvYWRlci5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2
Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbQppbmRleCA4ZjA0NWYy
Nzc5OWM4MDNhYzljNzE3Y2M0YzhkNTAyZGIwYTc4ZWExLi4yZGJjZDM4MGE1N2VlZjIzZDBkOGE4
OWE3MDJjYTE5MmQyMDAwOWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvV2Vi
Q29yZUFWRlJlc291cmNlTG9hZGVyLm1tCkBAIC02OCw3ICs2OCw3IEBAIHZvaWQgV2ViQ29yZUFW
RlJlc291cmNlTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgIE5TVVJMUmVxdWVzdCAqbnNSZXF1
ZXN0ID0gW21fYXZSZXF1ZXN0LmdldCgpIHJlcXVlc3RdOwogCiAgICAgLy8gQ29udGVudFNlY3Vy
aXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjayBpcyBhIHBsYWNlaG9sZGVyIHZhbHVl
LiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJlcXVlc3Qgc2luY2UgQ29udGVudCBTZWN1cml0eSBQ
b2xpY3kgZG9lcyBub3QgYXBwbHkgdG8gcmF3IHJlc291cmNlcy4KLSAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgcmVxdWVzdChuc1JlcXVlc3QsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2Fs
bGJhY2tzLCBEb05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENy
ZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIENsaWVu
dERpZE5vdFJlcXVlc3RDcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3Jp
Z2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5n
UG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcpKTsKKyAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdChuc1JlcXVlc3QsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBE
b05vdFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgRG9Ob3RBbGxvd1N0b3JlZENyZWRlbnRpYWxz
LCBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJl
cXVlc3RDcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJp
Y3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrLCBEZWZlcnNMb2FkaW5nUG9saWN5OjpB
bGxvd0RlZmVyc0xvYWRpbmcsIENhY2hpbmdQb2xpY3k6OkRpc2FsbG93Q2FjaGluZykpOwogCiAg
ICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VM
b2FkUHJpb3JpdHk6Okxvdyk7CiAgICAgQ2FjaGVkUmVzb3VyY2VMb2FkZXIqIGxvYWRlciA9IG1f
cGFyZW50LT5wbGF5ZXIoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>270040</attachid>
            <date>2016-01-27 14:29:16 -0800</date>
            <delta_ts>2016-01-27 15:25:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153549-20160127142850.patch</filename>
            <type>text/plain</type>
            <size>25192</size>
            <attacher name="Jer Noble">jer.noble</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1NjczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjcyMTM4N2QwODgwMmM4
NDQ3NDg2NDNjYjQxMzhiYTBhYWYwNzlkNC4uZjZmMDg1YTRkOTc1ZDg2NDE2N2M1MDJkMWY1OWY0
N2I0NjM0ZTE5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE2LTAxLTI3ICBKZXIg
Tm9ibGUgIDxqZXIubm9ibGVAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IENhY2hlZFJlc291
cmNlTG9hZGVyIGNsaWVudHMgdG8gb3B0IG91dCBvZiB0aGUgTWVtb3J5Q2FjaGUuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTM1NDkKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBmbGFnIHRvIFJl
c291cmNlTG9hZGVyT3B0aW9ucyB3aGljaCBhbGxvdyBsb2FkZXIgY2xpZW50cyB0byBvcHQgb3V0
IG9mIGhhdmluZworICAgICAgICByZXNvdXJjZXMgc3RvcmVkIGluIHRoZSBNZW1vcnlDYWNoZS4g
CisKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25zLmg6CisgICAgICAgIChX
ZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OlJlc291cmNlTG9hZGVyT3B0aW9ucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlck9wdGlvbnM6OmNhY2hpbmdQb2xpY3kpOgor
CisgICAgICAgIEV4aXN0aW5nIGNsaWVudHMgd2lsbCBoYXZlIHRvIGFkZCB0aGUgKGRlZmF1bHQp
IEFsbG93Q2FjaGluZyBmbGFnIHdoZW4gdGhleSBjcmVhdGUgYQorICAgICAgICBSZXNvdXJjZUxv
YWRlck9wdGlvbnMgb2JqZWN0LgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzdGFydExvYWRpbmdNYWluUmVz
b3VyY2UpOgorICAgICAgICAqIGxvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lZGlhUmVzb3VyY2VMb2FkZXI6OnN0YXJ0KToKKyAgICAgICAgKiBsb2Fk
ZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6Ok5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyKToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyT3B0aW9uczo6c2V0Q2FjaGluZ1BvbGljeSk6
CisgICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJY29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxvYWRlci5tbToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6c3RhcnRMb2FkaW5nKToKKworICAg
ICAgICBFdmVyeSB0aW1lIHRoZSBDYWNoZWRSZXNvdXJjZSBvciBDYWNoZWRSZXNvdXJjZUxvYWRl
ciBhY2Nlc3NlcyB0aGUgTWVtb3J5Q2FjaGUsIGNoZWNrCisgICAgICAgIHRvIHNlZSB3aGV0aGVy
IHRoZSByZXNvdXJjZSBvciB0aGUgcmVxdWVzdCBoYXZlIGFsbG93ZWQgY2FjaGluZyBiZWZvcmUg
YWRkaW5nIHJlc291cmNlcworICAgICAgICB0bywgcmVtb3ZpbmcgcmVzb3VyY2VzIGZyb20sIG9y
IHNvdXJjaW5nIHJlc291cmNlIGRhdGEgZnJvbSB0aGUgTWVtb3J5Q2FjaGUuCisKKyAgICAgICAg
KiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2U6On5DYWNoZWRSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRS
ZXNvdXJjZTo6ZmFpbEJlZm9yZVN0YXJ0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJl
c291cmNlOjphZGRDbGllbnRUb1NldCk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJj
ZTo6cmVtb3ZlQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjpzZXRE
ZWNvZGVkU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZTo6c2V0RW5jb2Rl
ZFNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6OmRpZEFjY2Vzc0RlY29k
ZWREYXRhKToKKyAgICAgICAgKiBsb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlOjphbGxvd3NDYWNoaW5nKToKKyAgICAgICAgKiBs
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3R5bGVTaGVldCk6CisgICAgICAg
IChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXZhbGlkYXRlUmVzb3VyY2UpOgor
ICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmxvYWRSZXNvdXJjZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2FkU3RhdHMp
OgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2VMb2FkZXI6OmRlZmF1bHRDYWNoZWRS
ZXNvdXJjZU9wdGlvbnMpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZVJl
cXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFJlc291cmNlUmVxdWVzdDo6YWxsb3dz
Q2FjaGluZyk6CisKIDIwMTYtMDEtMjYgIEFuZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxl
LmNvbT4KIAogICAgICAgICBTdG9wIGVjaG9pbmcgZWNobyBjb21tYW5kcyB0byBzdGRvdXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDE3YTYyOGM5ODA5NDQ3
MmE2ZmQ0MDFkYWIzZWQ2MWFiMjBiN2IxM2IuLjVkN2U0MjA5MzIyZWYwZGIyMTY1Y2U5ZjIzMTg3
YjBmNGYxMDhmODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExv
YWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApA
QCAtMTQ3NSw3ICsxNDc1LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c3RhcnRMb2FkaW5nTWFp
blJlc291cmNlKCkKICAgICAvLyBJZiB0aGlzIGlzIGEgcmVsb2FkIHRoZSBjYWNoZSBsYXllciBt
aWdodCBoYXZlIG1hZGUgdGhlIHByZXZpb3VzIHJlcXVlc3QgY29uZGl0aW9uYWwuIERvY3VtZW50
TG9hZGVyIGNhbid0IGhhbmRsZSAzMDQgcmVzcG9uc2VzIGl0c2VsZi4KICAgICByZXF1ZXN0Lm1h
a2VVbmNvbmRpdGlvbmFsKCk7CiAKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVzb3VyY2VM
b2FkZXJPcHRpb25zPiBtYWluUmVzb3VyY2VMb2FkT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlhbHMsIEFza0NsaWVudEZv
ckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFscywgU2tpcFNlY3VyaXR5
Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBJbmNsdWRlQ2VydGlm
aWNhdGVJbmZvLCBDb250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNr
LCBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xvYWRpbmcpOworICAgIHN0YXRpYyBO
ZXZlckRlc3Ryb3llZDxSZXNvdXJjZUxvYWRlck9wdGlvbnM+IG1haW5SZXNvdXJjZUxvYWRPcHRp
b25zKFNlbmRDYWxsYmFja3MsIFNuaWZmQ29udGVudCwgQnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRD
cmVkZW50aWFscywgQXNrQ2xpZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJlcXVlc3RlZENy
ZWRlbnRpYWxzLCBTa2lwU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9u
c0ZvclR5cGUsIEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUlt
cG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJz
TG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKTsKICAgICBDYWNoZWRSZXNvdXJj
ZVJlcXVlc3QgY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QsIG1haW5SZXNvdXJjZUxvYWRP
cHRpb25zKTsKICAgICBjYWNoZWRSZXNvdXJjZVJlcXVlc3Quc2V0SW5pdGlhdG9yKCp0aGlzKTsK
ICAgICBtX21haW5SZXNvdXJjZSA9IG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RNYWlu
UmVzb3VyY2UoY2FjaGVkUmVzb3VyY2VSZXF1ZXN0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9NZWRpYVJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkYTQ3ZGQ5ZDI4M2YxNmQ4MmE3MTEzMTZj
NmRjZjAwYTkyMDI3MjUzLi41ZGIxZWI1ODQ1YjcwZmVhZjMzNzljY2FiYmM2ZTBiN2MyNDUzZTk1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWVkaWFSZXNvdXJjZUxvYWRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01lZGlhUmVzb3VyY2VMb2FkZXIuY3BwCkBA
IC02MSw3ICs2MSw3IEBAIGJvb2wgTWVkaWFSZXNvdXJjZUxvYWRlcjo6c3RhcnQoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBMb2FkT3B0aW9ucyBvcHRpCiAgICAgU3RvcmVkQ3JlZGVu
dGlhbHMgYWxsb3dDcmVkZW50aWFscyA9IG1fY3Jvc3NPcmlnaW5Nb2RlLmlzTnVsbCgpIHx8IGVx
dWFsTGV0dGVyc0lnbm9yaW5nQVNDSUlDYXNlKG1fY3Jvc3NPcmlnaW5Nb2RlLCAidXNlLWNyZWRl
bnRpYWxzIikgPyBBbGxvd1N0b3JlZENyZWRlbnRpYWxzIDogRG9Ob3RBbGxvd1N0b3JlZENyZWRl
bnRpYWxzOwogCiAgICAgLy8gQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xp
Y3lDaGVjayBpcyBhIHBsYWNlaG9sZGVyIHZhbHVlLiBJdCBkb2VzIG5vdCBhZmZlY3QgdGhlIHJl
cXVlc3Qgc2luY2UgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgZG9lcyBub3QgYXBwbHkgdG8gcmF3
IHJlc291cmNlcy4KLSAgICBDYWNoZWRSZXNvdXJjZVJlcXVlc3QgY2FjaGVSZXF1ZXN0KHJlcXVl
c3QsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBEb05vdFNuaWZmQ29udGVu
dCwgYnVmZmVyaW5nUG9saWN5LCBhbGxvd0NyZWRlbnRpYWxzLCBEb05vdEFza0NsaWVudEZvckNy
b3NzT3JpZ2luQ3JlZGVudGlhbHMsIENsaWVudERpZE5vdFJlcXVlc3RDcmVkZW50aWFscywgRG9T
ZWN1cml0eUNoZWNrLCBjb3JzUG9saWN5LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENv
bnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRp
bmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZykpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCBjYWNoZVJlcXVlc3QocmVxdWVzdCwgUmVzb3VyY2VMb2FkZXJPcHRpb25zKFNlbmRDYWxsYmFj
a3MsIERvTm90U25pZmZDb250ZW50LCBidWZmZXJpbmdQb2xpY3ksIGFsbG93Q3JlZGVudGlhbHMs
IERvTm90QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscywgQ2xpZW50RGlkTm90UmVx
dWVzdENyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIGNvcnNQb2xpY3ksIERvTm90SW5jbHVk
ZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xp
Y3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5n
UG9saWN5OjpBbGxvd0NhY2hpbmcpKTsKIAogICAgIGlmICghbV9jcm9zc09yaWdpbk1vZGUuaXNO
dWxsKCkpCiAgICAgICAgIHVwZGF0ZVJlcXVlc3RGb3JBY2Nlc3NDb250cm9sKGNhY2hlUmVxdWVz
dC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCksIG1fZG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwg
YWxsb3dDcmVkZW50aWFscyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0
c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05ldHNj
YXBlUGx1Z0luU3RyZWFtTG9hZGVyLmNwcAppbmRleCBjYjM1ZTIyZTExNzMxZjk3MDIxODk1OThj
ODZmNWE4MWNiZmM3MjEyLi43YzE5ZDNkMzE1ZTUzNDA5OGFkMTUwNzRkYWUxYTU5NGZjZWQ5OTA2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmV0c2NhcGVQbHVnSW5TdHJlYW1M
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OZXRzY2FwZVBsdWdJblN0cmVh
bUxvYWRlci5jcHAKQEAgLTQzLDcgKzQzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogLy8gRklY
TUU6IFNraXAgQ29udGVudCBTZWN1cml0eSBQb2xpY3kgY2hlY2sgd2hlbiBhc3NvY2lhdGVkIHBs
dWdpbiBlbGVtZW50IGlzIGluIGEgdXNlciBhZ2VudCBzaGFkb3cgdHJlZS4KIC8vIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjY2Mz4uCiBOZXRzY2FwZVBs
dWdJblN0cmVhbUxvYWRlcjo6TmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXIoRnJhbWUqIGZyYW1l
LCBOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlckNsaWVudCogY2xpZW50KQotICAgIDogUmVzb3Vy
Y2VMb2FkZXIoZnJhbWUsIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIERvTm90QnVmZmVyRGF0YSwgQWxsb3dTdG9yZWRDcmVkZW50aWFscywgQXNrQ2xp
ZW50Rm9yQWxsQ3JlZGVudGlhbHMsIENsaWVudFJlcXVlc3RlZENyZWRlbnRpYWxzLCBTa2lwU2Vj
dXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5j
bHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Q
b2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKSkKKyAg
ICA6IFJlc291cmNlTG9hZGVyKGZyYW1lLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgU25pZmZDb250ZW50LCBEb05vdEJ1ZmZlckRhdGEsIEFsbG93U3RvcmVkQ3JlZGVudGlh
bHMsIEFza0NsaWVudEZvckFsbENyZWRlbnRpYWxzLCBDbGllbnRSZXF1ZXN0ZWRDcmVkZW50aWFs
cywgU2tpcFNlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBl
LCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9z
aXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9h
ZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKSkKICAgICAsIG1fY2xpZW50KGNsaWVu
dCkKIHsKICNpZiBFTkFCTEUoQ09OVEVOVF9FWFRFTlNJT05TKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyT3B0aW9ucy5oCmluZGV4IDE4NWQxY2NhMWMyYTNjNTU3YmZk
ZWNjYTc0MTFlYmU2MjNkYTYxYmQuLmQyNThlMWU2MjQ4YTRmNTE4MWU1MTE1MjczMWZiMjM5Mjll
YTRkM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlck9w
dGlvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXJPcHRpb25z
LmgKQEAgLTc2LDYgKzc2LDExIEBAIGVudW0gY2xhc3MgRGVmZXJzTG9hZGluZ1BvbGljeSA6IHVp
bnQ4X3QgewogICAgIERpc2FsbG93RGVmZXJzTG9hZGluZwogfTsKIAorZW51bSBjbGFzcyBDYWNo
aW5nUG9saWN5IDogdWludDhfdCB7CisgICAgQWxsb3dDYWNoaW5nLAorICAgIERpc2FsbG93Q2Fj
aGluZworfTsKKwogc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyB7CiAgICAgUmVzb3VyY2VM
b2FkZXJPcHRpb25zKCkKICAgICAgICAgOiBtX3NlbmRMb2FkQ2FsbGJhY2tzKERvTm90U2VuZENh
bGxiYWNrcykKQEAgLTkwLDcgKzk1LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZGVyT3B0aW9ucyB7
CiAgICAgewogICAgIH0KIAotICAgIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQ
b2xpY3kgc2VuZExvYWRDYWxsYmFja3MsIENvbnRlbnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRl
bnQsIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1ZmZlcmluZ1BvbGljeSwgU3RvcmVkQ3JlZGVu
dGlhbHMgYWxsb3dDcmVkZW50aWFscywgQ2xpZW50Q3JlZGVudGlhbFBvbGljeSBjcmVkZW50aWFs
UG9saWN5LCBDcmVkZW50aWFsUmVxdWVzdCBjcmVkZW50aWFsUmVxdWVzdCwgU2VjdXJpdHlDaGVj
a1BvbGljeSBzZWN1cml0eUNoZWNrLCBSZXF1ZXN0T3JpZ2luUG9saWN5IHJlcXVlc3RPcmlnaW5Q
b2xpY3ksIENlcnRpZmljYXRlSW5mb1BvbGljeSBjZXJ0aWZpY2F0ZUluZm9Qb2xpY3ksIENvbnRl
bnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
biwgRGVmZXJzTG9hZGluZ1BvbGljeSBkZWZlcnNMb2FkaW5nUG9saWN5KQorICAgIFJlc291cmNl
TG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tQb2xpY3kgc2VuZExvYWRDYWxsYmFja3MsIENvbnRl
bnRTbmlmZmluZ1BvbGljeSBzbmlmZkNvbnRlbnQsIERhdGFCdWZmZXJpbmdQb2xpY3kgZGF0YUJ1
ZmZlcmluZ1BvbGljeSwgU3RvcmVkQ3JlZGVudGlhbHMgYWxsb3dDcmVkZW50aWFscywgQ2xpZW50
Q3JlZGVudGlhbFBvbGljeSBjcmVkZW50aWFsUG9saWN5LCBDcmVkZW50aWFsUmVxdWVzdCBjcmVk
ZW50aWFsUmVxdWVzdCwgU2VjdXJpdHlDaGVja1BvbGljeSBzZWN1cml0eUNoZWNrLCBSZXF1ZXN0
T3JpZ2luUG9saWN5IHJlcXVlc3RPcmlnaW5Qb2xpY3ksIENlcnRpZmljYXRlSW5mb1BvbGljeSBj
ZXJ0aWZpY2F0ZUluZm9Qb2xpY3ksIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24gY29u
dGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiwgRGVmZXJzTG9hZGluZ1BvbGljeSBkZWZlcnNM
b2FkaW5nUG9saWN5LCBDYWNoaW5nUG9saWN5IGNhY2hpbmdQb2xpY3kpCiAgICAgICAgIDogbV9z
ZW5kTG9hZENhbGxiYWNrcyhzZW5kTG9hZENhbGxiYWNrcykKICAgICAgICAgLCBtX3NuaWZmQ29u
dGVudChzbmlmZkNvbnRlbnQpCiAgICAgICAgICwgbV9kYXRhQnVmZmVyaW5nUG9saWN5KGRhdGFC
dWZmZXJpbmdQb2xpY3kpCkBAIC0xMDIsNiArMTA3LDcgQEAgc3RydWN0IFJlc291cmNlTG9hZGVy
T3B0aW9ucyB7CiAgICAgICAgICwgbV9jZXJ0aWZpY2F0ZUluZm9Qb2xpY3koY2VydGlmaWNhdGVJ
bmZvUG9saWN5KQogICAgICAgICAsIG1fY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbihj
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uKQogICAgICAgICAsIG1fZGVmZXJzTG9hZGlu
Z1BvbGljeShkZWZlcnNMb2FkaW5nUG9saWN5KQorICAgICAgICAsIG1fY2FjaGluZ1BvbGljeShj
YWNoaW5nUG9saWN5KQogICAgIHsKICAgICB9CiAKQEAgLTEyNyw2ICsxMzMsOCBAQCBzdHJ1Y3Qg
UmVzb3VyY2VMb2FkZXJPcHRpb25zIHsKICAgICB2b2lkIHNldENvbnRlbnRTZWN1cml0eVBvbGlj
eUltcG9zaXRpb24oQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiBpbXBvc2l0aW9uKSB7
IG1fY29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbiA9IGltcG9zaXRpb247IH0KICAgICBE
ZWZlcnNMb2FkaW5nUG9saWN5IGRlZmVyc0xvYWRpbmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBt
X2RlZmVyc0xvYWRpbmdQb2xpY3k7IH0KICAgICB2b2lkIHNldERlZmVyc0xvYWRpbmdQb2xpY3ko
RGVmZXJzTG9hZGluZ1BvbGljeSBkZWZlcnNMb2FkaW5nUG9saWN5KSB7IG1fZGVmZXJzTG9hZGlu
Z1BvbGljeSA9IGRlZmVyc0xvYWRpbmdQb2xpY3k7IH0KKyAgICBDYWNoaW5nUG9saWN5IGNhY2hp
bmdQb2xpY3koKSBjb25zdCB7IHJldHVybiBtX2NhY2hpbmdQb2xpY3k7IH0KKyAgICB2b2lkIHNl
dENhY2hpbmdQb2xpY3koQ2FjaGluZ1BvbGljeSBjYWNoaW5nUG9saWN5KSB7IG1fY2FjaGluZ1Bv
bGljeSA9IGNhY2hpbmdQb2xpY3k7IH0KIAogICAgIHVuc2lnbmVkIG1fc2VuZExvYWRDYWxsYmFj
a3MgOiAxOwogICAgIHVuc2lnbmVkIG1fc25pZmZDb250ZW50IDogMTsKQEAgLTEzOSw2ICsxNDcs
NyBAQCBzdHJ1Y3QgUmVzb3VyY2VMb2FkZXJPcHRpb25zIHsKICAgICB1bnNpZ25lZCBtX2NlcnRp
ZmljYXRlSW5mb1BvbGljeSA6IDE7IC8vIFdoZXRoZXIgdGhlIHJlc3BvbnNlIHNob3VsZCBpbmNs
dWRlIGNlcnRpZmljYXRlIGluZm8uCiAgICAgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlv
biBtX2NvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb24geyBDb250ZW50U2VjdXJpdHlQb2xp
Y3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIH07CiAgICAgRGVmZXJzTG9hZGluZ1BvbGljeSBt
X2RlZmVyc0xvYWRpbmdQb2xpY3kgeyBEZWZlcnNMb2FkaW5nUG9saWN5OjpBbGxvd0RlZmVyc0xv
YWRpbmcgfTsKKyAgICBDYWNoaW5nUG9saWN5IG1fY2FjaGluZ1BvbGljeSB7IENhY2hpbmdQb2xp
Y3k6OkFsbG93Q2FjaGluZyB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZSAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwCmluZGV4IGMz
ZjE4YWI2ZDdjMTk0ZmI2NDM0MzAzOTdiZDAwY2IxN2IwNTBiYzkuLjcyN2E3MmU5NWVhOGZhN2U3
NDJjNGQyNmY3ZmIwNWEzOGZmZDdmZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIENhY2hlZFJlc291cmNl
Ojp+Q2FjaGVkUmVzb3VyY2UoKQogICAgIEFTU0VSVChjYW5EZWxldGUoKSk7CiAgICAgQVNTRVJU
KCFpbkNhY2hlKCkpOwogICAgIEFTU0VSVCghbV9kZWxldGVkKTsKLSAgICBBU1NFUlQodXJsKCku
aXNOdWxsKCkgfHwgTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlc291cmNlRm9yUmVxdWVzdChy
ZXNvdXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpICE9IHRoaXMpOworICAgIEFTU0VSVCh1cmwo
KS5pc051bGwoKSB8fCAhYWxsb3dzQ2FjaGluZygpIHx8IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24o
KS5yZXNvdXJjZUZvclJlcXVlc3QocmVzb3VyY2VSZXF1ZXN0KCksIHNlc3Npb25JRCgpKSAhPSB0
aGlzKTsKIAogI2lmbmRlZiBOREVCVUcKICAgICBtX2RlbGV0ZWQgPSB0cnVlOwpAQCAtMTc0LDcg
KzE3NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmZhaWxCZWZvcmVTdGFydGluZygpCiB7CiAg
ICAgLy8gRklYTUU6IFdoYXQgaWYgcmVzb3VyY2VzIGluIG90aGVyIGZyYW1lcyB3ZXJlIHdhaXRp
bmcgZm9yIHRoaXMgcmV2YWxpZGF0aW9uPwogICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYW5u
b3Qgc3RhcnQgbG9hZGluZyAnJXMnIiwgdXJsKCkuc3RyaW5nKCkubGF0aW4xKCkuZGF0YSgpKTsK
LSAgICBpZiAobV9yZXNvdXJjZVRvUmV2YWxpZGF0ZSkgCisgICAgaWYgKGFsbG93c0NhY2hpbmco
KSAmJiBtX3Jlc291cmNlVG9SZXZhbGlkYXRlKQogICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xl
dG9uKCkucmV2YWxpZGF0aW9uRmFpbGVkKCp0aGlzKTsKICAgICBlcnJvcihDYWNoZWRSZXNvdXJj
ZTo6TG9hZEVycm9yKTsKIH0KQEAgLTQ1Miw3ICs0NTIsNyBAQCBib29sIENhY2hlZFJlc291cmNl
OjphZGRDbGllbnRUb1NldChDYWNoZWRSZXNvdXJjZUNsaWVudCogY2xpZW50KQogICAgICAgICBl
bHNlCiAgICAgICAgICAgICBtX3ByZWxvYWRSZXN1bHQgPSBQcmVsb2FkUmVmZXJlbmNlZDsKICAg
ICB9Ci0gICAgaWYgKCFoYXNDbGllbnRzKCkgJiYgaW5DYWNoZSgpKQorICAgIGlmIChhbGxvd3ND
YWNoaW5nKCkgJiYgIWhhc0NsaWVudHMoKSAmJiBpbkNhY2hlKCkpCiAgICAgICAgIE1lbW9yeUNh
Y2hlOjpzaW5nbGV0b24oKS5hZGRUb0xpdmVSZXNvdXJjZXNTaXplKCp0aGlzKTsKIAogICAgIGlm
ICgobV90eXBlID09IFJhd1Jlc291cmNlIHx8IG1fdHlwZSA9PSBNYWluUmVzb3VyY2UpICYmICFt
X3Jlc3BvbnNlLmlzTnVsbCgpICYmICFtX3Byb3h5UmVzb3VyY2UpIHsKQEAgLTQ4Myw3ICs0ODMs
NyBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpyZW1vdmVDbGllbnQoQ2FjaGVkUmVzb3VyY2VDbGll
bnQqIGNsaWVudCkKICAgICB9CiAKICAgICBib29sIGRlbGV0ZWQgPSBkZWxldGVJZlBvc3NpYmxl
KCk7Ci0gICAgaWYgKCFkZWxldGVkICYmICFoYXNDbGllbnRzKCkpIHsKKyAgICBpZiAoYWxsb3dz
Q2FjaGluZygpICYmICFkZWxldGVkICYmICFoYXNDbGllbnRzKCkpIHsKICAgICAgICAgYXV0byYg
bWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7CiAgICAgICAgIGlmIChpbkNh
Y2hlKCkpIHsKICAgICAgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92ZUZyb21MaXZlUmVzb3VyY2Vz
U2l6ZSgqdGhpcyk7CkBAIC01NDEsMTIgKzU0MSwxMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpz
ZXREZWNvZGVkU2l6ZSh1bnNpZ25lZCBzaXplKQogCiAgICAgLy8gVGhlIG9iamVjdCBtdXN0IGJl
IG1vdmVkIHRvIGEgZGlmZmVyZW50IHF1ZXVlLCBzaW5jZSBpdHMgc2l6ZSBoYXMgYmVlbiBjaGFu
Z2VkLgogICAgIC8vIFJlbW92ZSBiZWZvcmUgdXBkYXRpbmcgbV9kZWNvZGVkU2l6ZSwgc28gd2Ug
ZmluZCB0aGUgcmVzb3VyY2UgaW4gdGhlIGNvcnJlY3QgTFJVIGxpc3QuCi0gICAgaWYgKGluQ2Fj
aGUoKSkKKyAgICBpZiAoYWxsb3dzQ2FjaGluZygpICYmIGluQ2FjaGUoKSkKICAgICAgICAgTWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZUZyb21MUlVMaXN0KCp0aGlzKTsKICAgICAKICAg
ICBtX2RlY29kZWRTaXplID0gc2l6ZTsKICAgIAotICAgIGlmIChpbkNhY2hlKCkpIHsKKyAgICBp
ZiAoYWxsb3dzQ2FjaGluZygpICYmIGluQ2FjaGUoKSkgewogICAgICAgICBhdXRvJiBtZW1vcnlD
YWNoZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKICAgICAgICAgLy8gTm93IGluc2VydCBp
bnRvIHRoZSBuZXcgTFJVIGxpc3QuCiAgICAgICAgIG1lbW9yeUNhY2hlLmluc2VydEluTFJVTGlz
dCgqdGhpcyk7CkBAIC01NzgsMTIgKzU3OCwxMiBAQCB2b2lkIENhY2hlZFJlc291cmNlOjpzZXRF
bmNvZGVkU2l6ZSh1bnNpZ25lZCBzaXplKQogCiAgICAgLy8gVGhlIG9iamVjdCBtdXN0IGJlIG1v
dmVkIHRvIGEgZGlmZmVyZW50IHF1ZXVlLCBzaW5jZSBpdHMgc2l6ZSBoYXMgYmVlbiBjaGFuZ2Vk
LgogICAgIC8vIFJlbW92ZSBiZWZvcmUgdXBkYXRpbmcgbV9lbmNvZGVkU2l6ZSwgc28gd2UgZmlu
ZCB0aGUgcmVzb3VyY2UgaW4gdGhlIGNvcnJlY3QgTFJVIGxpc3QuCi0gICAgaWYgKGluQ2FjaGUo
KSkKKyAgICBpZiAoYWxsb3dzQ2FjaGluZygpICYmIGluQ2FjaGUoKSkKICAgICAgICAgTWVtb3J5
Q2FjaGU6OnNpbmdsZXRvbigpLnJlbW92ZUZyb21MUlVMaXN0KCp0aGlzKTsKIAogICAgIG1fZW5j
b2RlZFNpemUgPSBzaXplOwogCi0gICAgaWYgKGluQ2FjaGUoKSkgeworICAgIGlmIChhbGxvd3ND
YWNoaW5nKCkgJiYgaW5DYWNoZSgpKSB7CiAgICAgICAgIGF1dG8mIG1lbW9yeUNhY2hlID0gTWVt
b3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgICAgICBtZW1vcnlDYWNoZS5pbnNlcnRJbkxSVUxp
c3QoKnRoaXMpOwogICAgICAgICBtZW1vcnlDYWNoZS5hZGp1c3RTaXplKGhhc0NsaWVudHMoKSwg
ZGVsdGEpOwpAQCAtNTk0LDcgKzU5NCw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2U6OmRpZEFjY2Vz
c0RlY29kZWREYXRhKGRvdWJsZSB0aW1lU3RhbXApCiB7CiAgICAgbV9sYXN0RGVjb2RlZEFjY2Vz
c1RpbWUgPSB0aW1lU3RhbXA7CiAgICAgCi0gICAgaWYgKGluQ2FjaGUoKSkgeworICAgIGlmIChh
bGxvd3NDYWNoaW5nKCkgJiYgaW5DYWNoZSgpKSB7CiAgICAgICAgIGF1dG8mIG1lbW9yeUNhY2hl
ID0gTWVtb3J5Q2FjaGU6OnNpbmdsZXRvbigpOwogICAgICAgICBpZiAobWVtb3J5Q2FjaGUuaW5M
aXZlRGVjb2RlZFJlc291cmNlc0xpc3QoKnRoaXMpKSB7CiAgICAgICAgICAgICBtZW1vcnlDYWNo
ZS5yZW1vdmVGcm9tTGl2ZURlY29kZWRSZXNvdXJjZXNMaXN0KCp0aGlzKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5oIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmgKaW5kZXggYTQ1MjNkNmE4YTMzYzEx
ZDIzN2I5ZDFhMGZiYTBkMmNlYzczMjM4NC4uNTQ2NmJlNjA0NTRkMjY4ZDc2MDRiYmNkNTEzNTMz
NjNkOGMwN2Y0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJlc291cmNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlLmgKQEAgLTIxOCw2ICsyMTgsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHNob3VsZFNlbmRS
ZXNvdXJjZUxvYWRDYWxsYmFja3MoKSBjb25zdCB7IHJldHVybiBtX29wdGlvbnMuc2VuZExvYWRD
YWxsYmFja3MoKSA9PSBTZW5kQ2FsbGJhY2tzOyB9CiAgICAgRGF0YUJ1ZmZlcmluZ1BvbGljeSBk
YXRhQnVmZmVyaW5nUG9saWN5KCkgY29uc3QgeyByZXR1cm4gbV9vcHRpb25zLmRhdGFCdWZmZXJp
bmdQb2xpY3koKTsgfQorCisgICAgYm9vbCBhbGxvd3NDYWNoaW5nKCkgY29uc3QgeyByZXR1cm4g
bV9vcHRpb25zLmNhY2hpbmdQb2xpY3koKSA9PSBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmc7
IH0KICAgICAKICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveURlY29kZWREYXRhKCkgeyB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIu
Y3BwCmluZGV4IGUzNGZkN2QzZGE0MzEyOGJiMzVhNGY5MmYzMzIyYjhmYjI3NWY2N2IuLjAwMGY5
YWE4MzUyZWMyMDIzNmZhN2JjMmZjNTlkMjQ3NzQ4NmRjODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcApAQCAtMjIxLDIw
ICsyMjEsMjQgQEAgQ2FjaGVkUmVzb3VyY2VIYW5kbGU8Q2FjaGVkQ1NTU3R5bGVTaGVldD4gQ2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnJlcXVlc3RVc2VyQ1NTU3QKICNlbmRpZgogCiAgICAgYXV0byYg
bWVtb3J5Q2FjaGUgPSBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCk7Ci0gICAgaWYgKENhY2hlZFJl
c291cmNlKiBleGlzdGluZyA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0
LnJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkpIHsKLSAgICAgICAgaWYgKGlzPENhY2hl
ZENTU1N0eWxlU2hlZXQ+KCpleGlzdGluZykpCi0gICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8
Q2FjaGVkQ1NTU3R5bGVTaGVldD4oZXhpc3RpbmcpOwotICAgICAgICBtZW1vcnlDYWNoZS5yZW1v
dmUoKmV4aXN0aW5nKTsKKyAgICBpZiAocmVxdWVzdC5hbGxvd3NDYWNoaW5nKCkpIHsKKyAgICAg
ICAgaWYgKENhY2hlZFJlc291cmNlKiBleGlzdGluZyA9IG1lbW9yeUNhY2hlLnJlc291cmNlRm9y
UmVxdWVzdChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLCBzZXNzaW9uSUQoKSkpIHsKKyAgICAg
ICAgICAgIGlmIChpczxDYWNoZWRDU1NTdHlsZVNoZWV0PigqZXhpc3RpbmcpKQorICAgICAgICAg
ICAgICAgIHJldHVybiBkb3duY2FzdDxDYWNoZWRDU1NTdHlsZVNoZWV0PihleGlzdGluZyk7Cisg
ICAgICAgICAgICBtZW1vcnlDYWNoZS5yZW1vdmUoKmV4aXN0aW5nKTsKKyAgICAgICAgfQogICAg
IH0KKwogICAgIGlmICh1cmwuc3RyaW5nKCkgIT0gcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSkKICAgICAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKHVy
bCk7CiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRDU1NTdHlsZVNoZWV0PiB1c2Vy
U2hlZXQgPSBuZXcgQ2FjaGVkQ1NTU3R5bGVTaGVldChyZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgp
LCByZXF1ZXN0LmNoYXJzZXQoKSwgc2Vzc2lvbklEKCkpOwogCi0gICAgbWVtb3J5Q2FjaGUuYWRk
KCp1c2VyU2hlZXQpOworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NhY2hpbmcoKSkKKyAgICAgICAg
bWVtb3J5Q2FjaGUuYWRkKCp1c2VyU2hlZXQpOwogICAgIC8vIEZJWE1FOiBsb2FkUmVzb3VyY2Ug
Y2FsbHMgc2V0T3duaW5nQ2FjaGVkUmVzb3VyY2VMb2FkZXIoKSBpZiB0aGUgcmVzb3VyY2UgY291
bGRuJ3QgYmUgYWRkZWQgdG8gY2FjaGUuIERvZXMgdGhpcyBmdW5jdGlvbiBuZWVkIHRvIGNhbGwg
aXQsIHRvbz8KIAotICAgIHVzZXJTaGVldC0+bG9hZCgqdGhpcywgUmVzb3VyY2VMb2FkZXJPcHRp
b25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRhLCBBbGxvd1N0
b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgQ2xpZW50UmVxdWVz
dGVkQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJp
Y3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBDb250ZW50U2VjdXJp
dHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6
OkFsbG93RGVmZXJzTG9hZGluZykpOworICAgIHVzZXJTaGVldC0+bG9hZCgqdGhpcywgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zKERvTm90U2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJE
YXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywg
Q2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIFNraXBTZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0
T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSwgRG9Ob3RJbmNsdWRlQ2VydGlmaWNhdGVJbmZvLCBD
b250ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpTa2lwUG9saWN5Q2hlY2ssIERlZmVyc0xv
YWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNo
aW5nKSk7CiAgICAgCiAgICAgcmV0dXJuIHVzZXJTaGVldDsKIH0KQEAgLTU1NSw3ICs1NTksNyBA
QCBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2Fk
ZXI6OnJlcXVlc3RSZXNvdXJjZShDYWNoZQogI2VuZGlmCiAKICAgICBhdXRvJiBtZW1vcnlDYWNo
ZSA9IE1lbW9yeUNhY2hlOjpzaW5nbGV0b24oKTsKLSAgICBpZiAobWVtb3J5Q2FjaGUuZGlzYWJs
ZWQoKSkgeworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NhY2hpbmcoKSAmJiBtZW1vcnlDYWNoZS5k
aXNhYmxlZCgpKSB7CiAgICAgICAgIERvY3VtZW50UmVzb3VyY2VNYXA6Oml0ZXJhdG9yIGl0ID0g
bV9kb2N1bWVudFJlc291cmNlcy5maW5kKHVybC5zdHJpbmcoKSk7CiAgICAgICAgIGlmIChpdCAh
PSBtX2RvY3VtZW50UmVzb3VyY2VzLmVuZCgpKSB7CiAgICAgICAgICAgICBpdC0+dmFsdWUtPnNl
dE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKG51bGxwdHIpOwpAQCAtNTcwLDcgKzU3NCw4IEBA
IENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRl
cjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAgICAgICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNl
UmVxdWVzdCgpLnNldERvbWFpbkZvckNhY2hlUGFydGl0aW9uKGRvY3VtZW50KCktPnRvcE9yaWdp
bigpLT5kb21haW5Gb3JDYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgogCi0gICAgcmVzb3VyY2Ug
PSBtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5yZXNvdXJjZVJlcXVlc3Qo
KSwgc2Vzc2lvbklEKCkpOworICAgIGlmIChyZXF1ZXN0LmFsbG93c0NhY2hpbmcoKSkKKyAgICAg
ICAgcmVzb3VyY2UgPSBtZW1vcnlDYWNoZS5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKSwgc2Vzc2lvbklEKCkpOwogCiAgICAgbG9nTWVtb3J5Q2FjaGVSZXNvdXJj
ZVJlcXVlc3QoZnJhbWUoKSwgcmVzb3VyY2UgPyBEaWFnbm9zdGljTG9nZ2luZ0tleXM6OmluTWVt
b3J5Q2FjaGVLZXkoKSA6IERpYWdub3N0aWNMb2dnaW5nS2V5czo6bm90SW5NZW1vcnlDYWNoZUtl
eSgpKTsKIApAQCAtNjA4LDcgKzYxMyw3IEBAIENhY2hlZFJlc291cmNlSGFuZGxlPENhY2hlZFJl
c291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cmVxdWVzdFJlc291cmNlKENhY2hlCiAKICAg
ICAgICAgLy8gV2UgZG9uJ3Qgc3VwcG9ydCBpbW1lZGlhdGUgbG9hZHMsIGJ1dCB3ZSBkbyBzdXBw
b3J0IGltbWVkaWF0ZSBmYWlsdXJlLgogICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSkgewotICAgICAgICAgICAgaWYgKHJlc291cmNlLT5pbkNhY2hlKCkpCisgICAgICAgICAg
ICBpZiAocmVzb3VyY2UtPmFsbG93c0NhY2hpbmcoKSAmJiByZXNvdXJjZS0+aW5DYWNoZSgpKQog
ICAgICAgICAgICAgICAgIG1lbW9yeUNhY2hlLnJlbW92ZSgqcmVzb3VyY2UpOwogICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAgICAgICAgIH0KQEAgLTYzNiw2ICs2NDEsNyBAQCBDYWNoZWRS
ZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJjZT4gQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnJldmFs
aWRhdGVSZXNvdXJjZShjbwogICAgIEFTU0VSVChyZXNvdXJjZS0+Y2FuVXNlQ2FjaGVWYWxpZGF0
b3IoKSk7CiAgICAgQVNTRVJUKCFyZXNvdXJjZS0+cmVzb3VyY2VUb1JldmFsaWRhdGUoKSk7CiAg
ICAgQVNTRVJUKHJlc291cmNlLT5zZXNzaW9uSUQoKSA9PSBzZXNzaW9uSUQoKSk7CisgICAgQVNT
RVJUKHJlc291cmNlLT5hbGxvd3NDYWNoaW5nKCkpOwogCiAgICAgQ2FjaGVkUmVzb3VyY2VIYW5k
bGU8Q2FjaGVkUmVzb3VyY2U+IG5ld1Jlc291cmNlID0gY3JlYXRlUmVzb3VyY2UocmVzb3VyY2Ut
PnR5cGUoKSwgcmVzb3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLCByZXNvdXJjZS0+ZW5jb2Rpbmco
KSwgcmVzb3VyY2UtPnNlc3Npb25JRCgpKTsKIApAQCAtNjYxLDcgKzY2Nyw3IEBAIENhY2hlZFJl
c291cmNlSGFuZGxlPENhY2hlZFJlc291cmNlPiBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6bG9hZFJl
c291cmNlKENhY2hlZFJlCiAKICAgICBDYWNoZWRSZXNvdXJjZUhhbmRsZTxDYWNoZWRSZXNvdXJj
ZT4gcmVzb3VyY2UgPSBjcmVhdGVSZXNvdXJjZSh0eXBlLCByZXF1ZXN0Lm11dGFibGVSZXNvdXJj
ZVJlcXVlc3QoKSwgcmVxdWVzdC5jaGFyc2V0KCksIHNlc3Npb25JRCgpKTsKIAotICAgIGlmICgh
bWVtb3J5Q2FjaGUuYWRkKCpyZXNvdXJjZSkpCisgICAgaWYgKHJlcXVlc3QuYWxsb3dzQ2FjaGlu
ZygpICYmICFtZW1vcnlDYWNoZS5hZGQoKnJlc291cmNlKSkKICAgICAgICAgcmVzb3VyY2UtPnNl
dE93bmluZ0NhY2hlZFJlc291cmNlTG9hZGVyKHRoaXMpOwogI2lmIEVOQUJMRShSRVNPVVJDRV9U
SU1JTkcpCiAgICAgc3RvcmVSZXNvdXJjZVRpbWluZ0luaXRpYXRvckluZm9ybWF0aW9uKHJlc291
cmNlLCByZXF1ZXN0KTsKQEAgLTExNTEsNyArMTE1Nyw3IEBAIHZvaWQgQ2FjaGVkUmVzb3VyY2VM
b2FkZXI6OnByaW50UHJlbG9hZFN0YXRzKCkKICAgICAgICAgICAgICAgICBpbWFnZU1pc3Nlcysr
OwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAocmVzb3VyY2UtPmVycm9yT2NjdXJy
ZWQoKSkKKyAgICAgICAgaWYgKHJlc291cmNlLT5lcnJvck9jY3VycmVkKCkgJiYgcmVzb3VyY2Ut
PnByZWxvYWRSZXN1bHQoKSA9PSBDYWNoZWRSZXNvdXJjZTo6UHJlbG9hZE5vdFJlZmVyZW5jZWQp
CiAgICAgICAgICAgICBNZW1vcnlDYWNoZTo6c2luZ2xldG9uKCkucmVtb3ZlKHJlc291cmNlKTsK
ICAgICAgICAgCiAgICAgICAgIHJlc291cmNlLT5kZWNyZWFzZVByZWxvYWRDb3VudCgpOwpAQCAt
MTE2OSw3ICsxMTc1LDcgQEAgdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6cHJpbnRQcmVsb2Fk
U3RhdHMoKQogCiBjb25zdCBSZXNvdXJjZUxvYWRlck9wdGlvbnMmIENhY2hlZFJlc291cmNlTG9h
ZGVyOjpkZWZhdWx0Q2FjaGVkUmVzb3VyY2VPcHRpb25zKCkKIHsKLSAgICBzdGF0aWMgUmVzb3Vy
Y2VMb2FkZXJPcHRpb25zIG9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZm
ZXJEYXRhLCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFs
cywgQ2xpZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVs
dE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywg
Q29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9h
ZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKTsKKyAgICBzdGF0aWMgUmVzb3VyY2VMb2Fk
ZXJPcHRpb25zIG9wdGlvbnMoU2VuZENhbGxiYWNrcywgU25pZmZDb250ZW50LCBCdWZmZXJEYXRh
LCBBbGxvd1N0b3JlZENyZWRlbnRpYWxzLCBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscywgQ2xp
ZW50UmVxdWVzdGVkQ3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdp
blJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1Bv
bGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0NhY2hpbmcpOwog
ICAgIHJldHVybiBvcHRpb25zOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0LmgKaW5kZXggNDFkY2RkY2E0MThkNjZjM2M0ZDJi
OGZjOGY0YjVjMWMxNjhjZTg2MS4uYzhhMjFlZjMwOGJlYTcwM2Q4MmZmNmJmZDZjZTViMWQ2YjFh
NmNkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291
cmNlUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZVJlcXVlc3QuaApAQCAtNjAsNiArNjAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbml0
aWF0b3IoUGFzc1JlZlB0cjxFbGVtZW50Pik7CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGluaXRpYXRvck5h
bWUoKSBjb25zdDsKKyAgICBib29sIGFsbG93c0NhY2hpbmcoKSBjb25zdCB7IHJldHVybiBtX29w
dGlvbnMuY2FjaGluZ1BvbGljeSgpID09IENhY2hpbmdQb2xpY3k6OkFsbG93Q2FjaGluZzsgfQog
CiAgICAgdm9pZCBzZXRJbml0aWF0b3IoRG9jdW1lbnRMb2FkZXImKTsKICAgICBEb2N1bWVudExv
YWRlciogaW5pdGlhdGluZ0RvY3VtZW50TG9hZGVyKCkgY29uc3QgeyByZXR1cm4gbV9pbml0aWF0
aW5nRG9jdW1lbnRMb2FkZXIuZ2V0KCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9pY29uL0ljb25Mb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNv
bkxvYWRlci5jcHAKaW5kZXggNzdjYWJmNzNlMzM3Y2U1NGNjMjZjMmIwYjFlYmRlOGFmZjMyMDVh
OS4uNGEwZmQyN2M2MDE2ZTc2YWNiNjA0ZjA5NWViMzNkM2UzNTQ4MzAwNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHAKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBJ
Y29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBDb250
ZW50U2VjdXJpdHlQb2xpY3lJbXBvc2l0aW9uOjpEb1BvbGljeUNoZWNrIGlzIGEgcGxhY2Vob2xk
ZXIgdmFsdWUuIEl0IGRvZXMgbm90IGFmZmVjdCB0aGUgcmVxdWVzdCBzaW5jZSBDb250ZW50IFNl
Y3VyaXR5IFBvbGljeSBkb2VzIG5vdCBhcHBseSB0byByYXcgcmVzb3VyY2VzLgotICAgIENhY2hl
ZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX2ZyYW1lLmxvYWRlcigp
Lmljb24oKS51cmwoKSksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlm
ZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RB
c2tDbGllbnRGb3JBbnlDcmVkZW50aWFscywgQ2xpZW50RGlkTm90UmVxdWVzdENyZWRlbnRpYWxz
LCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmljdGlvbnNGb3JUeXBlLCBE
b05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRp
b246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFsbG93RGVmZXJzTG9hZGlu
ZykpOworICAgIENhY2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdCht
X2ZyYW1lLmxvYWRlcigpLmljb24oKS51cmwoKSksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5k
Q2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscywgQ2xpZW50RGlkTm90UmVx
dWVzdENyZWRlbnRpYWxzLCBEb1NlY3VyaXR5Q2hlY2ssIFVzZURlZmF1bHRPcmlnaW5SZXN0cmlj
dGlvbnNGb3JUeXBlLCBEb05vdEluY2x1ZGVDZXJ0aWZpY2F0ZUluZm8sIENvbnRlbnRTZWN1cml0
eVBvbGljeUltcG9zaXRpb246OkRvUG9saWN5Q2hlY2ssIERlZmVyc0xvYWRpbmdQb2xpY3k6OkFs
bG93RGVmZXJzTG9hZGluZywgQ2FjaGluZ1BvbGljeTo6QWxsb3dDYWNoaW5nKSk7CiAKICAgICBy
ZXF1ZXN0Lm11dGFibGVSZXNvdXJjZVJlcXVlc3QoKS5zZXRQcmlvcml0eShSZXNvdXJjZUxvYWRQ
cmlvcml0eTo6TG93KTsKICAgICByZXF1ZXN0LnNldEluaXRpYXRvcihjYWNoZWRSZXNvdXJjZVJl
cXVlc3RJbml0aWF0b3JzKCkuaWNvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9XZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9X
ZWJDb3JlQVZGUmVzb3VyY2VMb2FkZXIubW0KaW5kZXggMDM4NDgyMjM4ODZlZWE5ODlkOTQ2MjZk
NTAzMjBkYjU3ZWM0Y2YwYy4uYzlmYmQzMmI5YWUxNDFkNzc1N2ZkOGUyYmRkNWNiZTc2ZDlhOTky
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL29iamMvV2ViQ29yZUFWRlJlc291cmNlTG9hZGVyLm1tCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL1dlYkNvcmVBVkZSZXNvdXJjZUxv
YWRlci5tbQpAQCAtNjgsNyArNjgsNyBAQCB2b2lkIFdlYkNvcmVBVkZSZXNvdXJjZUxvYWRlcjo6
c3RhcnRMb2FkaW5nKCkKICAgICBVUkwgcmVxdWVzdFVSTCA9IFtbbV9hdlJlcXVlc3QuZ2V0KCkg
cmVxdWVzdF0gVVJMXTsKIAogICAgIC8vIENvbnRlbnRTZWN1cml0eVBvbGljeUltcG9zaXRpb246
OkRvUG9saWN5Q2hlY2sgaXMgYSBwbGFjZWhvbGRlciB2YWx1ZS4gSXQgZG9lcyBub3QgYWZmZWN0
IHRoZSByZXF1ZXN0IHNpbmNlIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGRvZXMgbm90IGFwcGx5
IHRvIHJhdyByZXNvdXJjZXMuCi0gICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoUmVz
b3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMoU2VuZENhbGxi
YWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVk
ZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxzLCBDbGllbnRE
aWROb3RSZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVmYXVsdE9yaWdp
blJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5mbywgQ29udGVu
dFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJzTG9hZGluZ1Bv
bGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nKSk7CisgICAgQ2FjaGVkUmVzb3VyY2VSZXF1ZXN0IHJl
cXVlc3QoUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3RVUkwpLCBSZXNvdXJjZUxvYWRlck9wdGlvbnMo
U2VuZENhbGxiYWNrcywgRG9Ob3RTbmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dT
dG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRpYWxz
LCBDbGllbnREaWROb3RSZXF1ZXN0Q3JlZGVudGlhbHMsIERvU2VjdXJpdHlDaGVjaywgVXNlRGVm
YXVsdE9yaWdpblJlc3RyaWN0aW9uc0ZvclR5cGUsIERvTm90SW5jbHVkZUNlcnRpZmljYXRlSW5m
bywgQ29udGVudFNlY3VyaXR5UG9saWN5SW1wb3NpdGlvbjo6RG9Qb2xpY3lDaGVjaywgRGVmZXJz
TG9hZGluZ1BvbGljeTo6QWxsb3dEZWZlcnNMb2FkaW5nLCBDYWNoaW5nUG9saWN5OjpBbGxvd0Nh
Y2hpbmcpKTsKIAogICAgIHJlcXVlc3QubXV0YWJsZVJlc291cmNlUmVxdWVzdCgpLnNldFByaW9y
aXR5KFJlc291cmNlTG9hZFByaW9yaXR5OjpMb3cpOwogICAgIENhY2hlZFJlc291cmNlTG9hZGVy
KiBsb2FkZXIgPSBtX3BhcmVudC0+cGxheWVyKCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCk7Cg==
</data>
<flag name="review"
          id="294900"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>