<?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>185990</bug_id>
          
          <creation_ts>2018-05-25 13:05:50 -0700</creation_ts>
          <short_desc>Drop support for NSURLCache in WebKit2</short_desc>
          <delta_ts>2018-12-18 18:15:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>donald_mm_smith</cc>
    
    <cc>ggaren</cc>
    
    <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1427419</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 13:05:50 -0700</bug_when>
    <thetext>Drop support for NSURLCache in WebKit2 now that the WebKit network cache is stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427422</commentid>
    <comment_count>1</comment_count>
      <attachid>341315</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 13:08:04 -0700</bug_when>
    <thetext>Created attachment 341315
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427423</commentid>
    <comment_count>2</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-05-25 13:09:32 -0700</bug_when>
    <thetext>Also avoids initializing a NSURLCache in the UIProcess:
Sample Count, Samples %, CPU %, Symbol
11, 0.1%, 0.1%, WebKit::WebProcessPool::ensureNetworkProcess(WebKit::WebsiteDataStore*) (in WebKit)
5, 0.0%, 0.0%,     WebKit::WebProcessPool::platformInitializeNetworkProcess(WebKit::NetworkProcessCreationParameters&amp;) (in WebKit)
4, 0.0%, 0.0%,         +[NSURLCache sharedURLCache] (in CFNetwork)
4, 0.0%, 0.0%,             -[NSURLCache initWithMemoryCapacity:diskCapacity:diskPath:] (in CFNetwork)
4, 0.0%, 0.0%,                 __CFURLCacheCreateInternal(__CFAllocator const*, long, long, __CFString const*, bool, bool) (in CFNetwork)
3, 0.0%, 0.0%,                     __CFURLCache::createNSURLStorageClient(__CFString const*, long, std::__1::shared_ptr&lt;__CFURLCache&gt;) (in CFNetwork)
3, 0.0%, 0.0%,                         -[NSURLCacheDBReader openAndPrepareReadCacheDB] (in CFNetwork)
3, 0.0%, 0.0%,                             -[NSURLCacheDBReader _prepareDBSelectStatements] (in CFNetwork)
3, 0.0%, 0.0%,                                 sqlite3_exec (in libsqlite3.dylib)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427425</commentid>
    <comment_count>3</comment_count>
      <attachid>341315</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-25 13:17:18 -0700</bug_when>
    <thetext>Comment on attachment 341315
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427458</commentid>
    <comment_count>4</comment_count>
      <attachid>341315</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 14:27:25 -0700</bug_when>
    <thetext>Comment on attachment 341315
Patch

Clearing flags on attachment: 341315

Committed r232201: &lt;https://trac.webkit.org/changeset/232201&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427459</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-05-25 14:27:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427467</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-05-25 14:37:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/40566377&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1427669</commentid>
    <comment_count>7</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2018-05-25 21:30:57 -0700</bug_when>
    <thetext>Do we need to find a place to do a one-time &quot;migration&quot; deletion of any NSURLCache that happens to have been left behind by an older version of WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1428135</commentid>
    <comment_count>8</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-05-29 11:18:34 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #7)
&gt; Do we need to find a place to do a one-time &quot;migration&quot; deletion of any
&gt; NSURLCache that happens to have been left behind by an older version of
&gt; WebKit?

I think that would be a good idea. (We probably should have done this when we first enabled the WebKit HTTP cache.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488391</commentid>
    <comment_count>9</comment_count>
    <who name="Donnie">donald_mm_smith</who>
    <bug_when>2018-12-16 21:18:10 -0800</bug_when>
    <thetext>I&apos;d like to know if this commit could have caused the following behavior change in iOS UIWebViews.

In a UIWebView delegate method webViewDidFinishLoad: I have the following code:

NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache] cachedResponseForRequest:webView.request];

For the same request,
In iOS 11.4 the cachedResponse is non-nil.
In iOS 12.1 the cachedResponse is nil.

Should I create a new bug ticket and/or create a radar for this?

Our real use case is that in our SDK we swizzle webViewDidFinishLoad: and call cachedResponseForRequest: to track the response status code.

Any response appreciated.
Thanks</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488394</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-16 21:57:59 -0800</bug_when>
    <thetext>(In reply to Donnie from comment #9)
&gt; I&apos;d like to know if this commit could have caused the following behavior
&gt; change in iOS UIWebViews.
&gt; 
&gt; In a UIWebView delegate method webViewDidFinishLoad: I have the following
&gt; code:
&gt; 
&gt; NSCachedURLResponse *cachedResponse = [[NSURLCache sharedURLCache]
&gt; cachedResponseForRequest:webView.request];
&gt; 
&gt; For the same request,
&gt; In iOS 11.4 the cachedResponse is non-nil.
&gt; In iOS 12.1 the cachedResponse is nil.
&gt; 
&gt; Should I create a new bug ticket and/or create a radar for this?
&gt; 
&gt; Our real use case is that in our SDK we swizzle webViewDidFinishLoad: and
&gt; call cachedResponseForRequest: to track the response status code.
&gt; 
&gt; Any response appreciated.
&gt; Thanks

No, this change had no impact on UIWebView, only WKWebView.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488395</commentid>
    <comment_count>11</comment_count>
    <who name="Donnie">donald_mm_smith</who>
    <bug_when>2018-12-16 22:12:00 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #10) 
&gt; No, this change had no impact on UIWebView, only WKWebView.

Thanks for the quick confirmation!

Is my issue a WebKit-related issue or nothing to do with WebKit?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488396</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-16 22:21:37 -0800</bug_when>
    <thetext>(In reply to Donnie from comment #11)
&gt; (In reply to Chris Dumez from comment #10) 
&gt; &gt; No, this change had no impact on UIWebView, only WKWebView.
&gt; 
&gt; Thanks for the quick confirmation!
&gt; 
&gt; Is my issue a WebKit-related issue or nothing to do with WebKit?

Adding Alex in cc. Sounds to me like it could be due to a CFNetwork change but Alex May know more.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1488471</commentid>
    <comment_count>13</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-17 10:44:33 -0800</bug_when>
    <thetext>I&apos;m not aware of any change that would&apos;ve affected Donnie&apos;s use case, but that doesn&apos;t mean there isn&apos;t one.  We would appreciate migration to WKWebView or a radar with a description of any blockers for doing so and what their use case is.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1489169</commentid>
    <comment_count>14</comment_count>
    <who name="Donnie">donald_mm_smith</who>
    <bug_when>2018-12-18 18:15:50 -0800</bug_when>
    <thetext>Thanks Alex.

I created rdar://46828356 (https://openradar.appspot.com/radar?id=5027499947851776)

Our team provides a performance tracking SDK to other apps in our company so we&apos;d still like to support tracking response status codes in UIWebViews for those apps still using them.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>341315</attachid>
            <date>2018-05-25 13:08:04 -0700</date>
            <delta_ts>2018-05-25 14:27:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-185990-20180525130804.patch</filename>
            <type>text/plain</type>
            <size>35974</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjMyMTkyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Q
QUwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwppbmRleCA3YjU2NmE4
ZjhhMGZjNTJiYWQxNWE3ZmZjMWFhZGQwMjkyZGM2ZTZjLi4xNDAzZDVlZDE4OTY3YmIwMjQwZDUw
MjRlODIzNTY3YjlmYTc2MDAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAor
MjAxOC0wNS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIERy
b3Agc3VwcG9ydCBmb3IgTlNVUkxDYWNoZSBpbiBXZWJLaXQyCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODU5OTAKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBEcm9wIHN1cHBvcnQgZm9yIE5TVVJMQ2FjaGUg
aW4gV2ViS2l0MiBub3cgdGhhdCB0aGUgV2ViS2l0IG5ldHdvcmsgY2FjaGUgaXMgc3RhYmxlLgor
CisgICAgICAgICogcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaDoKKwogMjAxOC0wNS0yNCAgSmll
d2VuIFRhbiAgPGppZXdlbl90YW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkb3B0IFNlY0tleVBy
b3h5IFNQSSBpbiBjZXJ0aWZpY2F0ZSBiYXNlZCBjaGFsbGVuZ2UgcmVzcG9uc2UgY29kZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCBkMTFmZmJmN2M4YThjYTMzYTk2YjYzYzM0ZGIyYjRjZDNlZTNiZjgwLi4wMzBlMmUz
YjU0NDA2MDRlMjBlOGQzYmNjOTJiYjBiNzVhMDc5NDE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1
IEBACisyMDE4LTA1LTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAg
ICAgRHJvcCBzdXBwb3J0IGZvciBOU1VSTENhY2hlIGluIFdlYktpdDIKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4NTk5MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIERyb3Agc3VwcG9ydCBmb3IgTlNVUkxD
YWNoZSBpbiBXZWJLaXQyIG5vdyB0aGF0IHRoZSBXZWJLaXQgbmV0d29yayBjYWNoZSBpcyBzdGFi
bGUuCisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHA6CisgICAg
ICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpzZXRDYWNoZU1vZGVsKToKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6
TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmVuY29kZSBjb25zdCk6CisgICAgICAg
IChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUpOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmg6
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbToK
KyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzQ29jb2EpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Y2xlYXJE
aXNrQ2FjaGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1TZXRV
UkxDYWNoZVNpemUpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpjbGVhck5TVVJMQ2FjaGUp
OiBEZWxldGVkLgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9u
Q29jb2EuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNv
Y29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrU2Vzc2lvbkNvY29hOjpOZXR3b3JrU2Vz
c2lvbkNvY29hKToKKyAgICAgICAgKCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6Ok5ldHdv
cmtTZXNzaW9uQ29jb2E6OnNldFVzZXNOZXR3b3JrQ2FjaGUpOiBEZWxldGVkLgorICAgICAgICAq
IE5ldHdvcmtQcm9jZXNzL2N1cmwvTmV0d29ya1Byb2Nlc3NDdXJsLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtU2V0VVJMQ2FjaGVTaXplKTogRGVsZXRlZC4K
KyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSk6
IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpwbGF0Zm9ybUluaXRpYWxpemVO
ZXR3b3JrUHJvY2Vzcyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQb29sOjpsZWdhY3lQ
bGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUG9vbDo6aXNOZXR3b3JrQ2FjaGVFbmFibGVkKTogRGVsZXRlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6c3VnZ2VzdGVkRmls
ZW5hbWVGb3JSZXNvdXJjZVdpdGhVUkwgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZTo6bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwgY29uc3QpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Z2V0UmVz
b3VyY2VEYXRhRnJvbUZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFzTG9jYWxE
YXRhRm9yVVJMKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFnZUd0ay5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1l
Rm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9u
c2VEYXRhRm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsYXRmb3JtSGFzTG9j
YWxEYXRhRm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVk
U3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQ
YWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKTogRGVsZXRlZC4KKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmFjY2Vzc2liaWxpdHlSZW1vdGVPYmplY3QpOgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJLaXQ6OmNhY2hlZFJlc3BvbnNlRm9yVVJMKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwpOiBEZWxldGVkLgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKTogRGVs
ZXRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJM
KTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVS
TCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlN
RVR5cGVGb3JVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRT
dWdnZXN0ZWRGaWxlbmFtZUZvclVSTCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwpOiBEZWxldGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwpOiBEZWxl
dGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwp
OiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vzc0NvY29hLm1t
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVXZWJQcm9j
ZXNzKToKKwogMjAxOC0wNS0yNSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAg
ICAgICAgIE1pbm9yIEFwcGxpY2F0aW9uQ2FjaGVTdG9yYWdlIGNsZWFuIHVwCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9QQUwvcGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaCBiL1NvdXJjZS9X
ZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oCmluZGV4IGI1OTNjYzkxNzZlNDU4
MzQ4N2E1Y2RhYzgyOWM4OWYwN2UxYjI5ZjUuLmU4Mjc5ODdiYjY3MmM0OTBhM2FkNzU0MDc4OWFh
Mzg0M2Y4Yzg1MGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0d29y
a1NQSS5oCkBAIC04OCw3ICs4OCw2IEBAIHR5cGVkZWYgdm9pZCAoXkNGQ2FjaGVkVVJMUmVzcG9u
c2VDYWxsQmFja0Jsb2NrKShDRkNhY2hlZFVSTFJlc3BvbnNlUmVmKTsKICNpZiBkZWZpbmVkKF9f
T0JKQ19fKQogCiBAaW50ZXJmYWNlIE5TVVJMQ2FjaGUgKCkKLS0oaW5zdGFuY2V0eXBlKV9pbml0
V2l0aE1lbW9yeUNhcGFjaXR5OihOU1VJbnRlZ2VyKW1lbW9yeUNhcGFjaXR5IGRpc2tDYXBhY2l0
eTooTlNVSW50ZWdlcilkaXNrQ2FwYWNpdHkgcmVsYXRpdmVQYXRoOihOU1N0cmluZyAqKXBhdGg7
CiAtIChDRlVSTENhY2hlUmVmKV9DRlVSTENhY2hlOwogQGVuZAogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcCBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCmluZGV4IGE0YmM0NWUxOWQxN2Q5
Y2VhYzIxNGYzZTVkNWI0YWMwOGI5MzcxM2MuLmM3MWI4MzcyYmFkMWU3NzVjOGI3NzYwYjQxY2Jj
YWQ0MWFmYWQ3NmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29y
a1Byb2Nlc3MuY3BwCkBAIC03MjQsMTIgKzcyNCw4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNl
dENhY2hlTW9kZWwodWludDMyX3QgY20pCiAgICAgaWYgKG1fZGlza0NhY2hlU2l6ZU92ZXJyaWRl
ID49IDApCiAgICAgICAgIHVybENhY2hlRGlza0NhcGFjaXR5ID0gbV9kaXNrQ2FjaGVTaXplT3Zl
cnJpZGU7CiAKLSAgICBpZiAobV9jYWNoZSkgeworICAgIGlmIChtX2NhY2hlKQogICAgICAgICBt
X2NhY2hlLT5zZXRDYXBhY2l0eSh1cmxDYWNoZURpc2tDYXBhY2l0eSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1cmxDYWNoZU1lbW9yeUNh
cGFjaXR5LCB1cmxDYWNoZURpc2tDYXBhY2l0eSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3M6
OnNldENhbkhhbmRsZUhUVFBTU2VydmVyVHJ1c3RFdmFsdWF0aW9uKGJvb2wgdmFsdWUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggYWVmNmRh
NzQ5ZThjMDVlOTVmMTM4NzMwNTAyNDNhNzdiYjhjMDdiNC4uNWVkZTgwNGIxOWZlYTIxY2RlMTc0
MGZlMDJkMTU5OTMyNTIwOGQ1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
TmV0d29ya1Byb2Nlc3MuaApAQCAtMjQzLDkgKzI0Myw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBz
ZXROZXR3b3JrUHJveHlTZXR0aW5ncyhjb25zdCBXZWJDb3JlOjpTb3VwTmV0d29ya1Byb3h5U2V0
dGluZ3MmKTsKICNlbmRpZgogCi0gICAgLy8gUGxhdGZvcm0gSGVscGVycwotICAgIHZvaWQgcGxh
dGZvcm1TZXRVUkxDYWNoZVNpemUodW5zaWduZWQgdXJsQ2FjaGVNZW1vcnlDYXBhY2l0eSwgdWlu
dDY0X3QgdXJsQ2FjaGVEaXNrQ2FwYWNpdHkpOwotCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAg
c3RhdGljIHZvaWQgc2V0U2hhcmVkSFRUUENvb2tpZVN0b3JhZ2UoY29uc3QgVmVjdG9yPHVpbnQ4
X3Q+JiBpZGVudGlmaWVyKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNw
cAppbmRleCBmODU1MjkzMzk2ZWZhYmE5NGE5ZmIwMWJhZDU1ODMxNGM3ZjdlMjM4Li4xMjljMTcw
MGVjZWVmNGIxNzA3NDU4ODEwZjU2OTljOTA2N2QyODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25Q
YXJhbWV0ZXJzLmNwcApAQCAtNTEsNyArNTEsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRp
b25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOwogICAgIGVuY29k
ZXIgPDwgZGlza0NhY2hlRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgZGlza0NhY2hlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOwotICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0Nh
Y2hlOwogICAgIGVuY29kZXIgPDwgc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNhY3lMb2dn
aW5nOwogI2lmIEVOQUJMRShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikK
ICAgICBlbmNvZGVyIDw8IHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxp
ZGF0aW9uOwpAQCAtNzIsOCArNzEsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogI2lmIFBMQVRGT1JN
KENPQ09BKQogICAgIGVuY29kZXIgPDwgcGFyZW50UHJvY2Vzc05hbWU7CiAgICAgZW5jb2RlciA8
PCB1aVByb2Nlc3NCdW5kbGVJZGVudGlmaWVyOwotICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZU1l
bW9yeUNhcGFjaXR5OwotICAgIGVuY29kZXIgPDwgbnNVUkxDYWNoZURpc2tDYXBhY2l0eTsKICAg
ICBlbmNvZGVyIDw8IHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKICAgICBlbmNv
ZGVyIDw8IHNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcjsKICNpZiBQTEFURk9S
TShJT1MpCkBAIC0xNTYsOCArMTUzLDYgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJlc3VsdC5kaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25I
YW5kbGUgPSBXVEZNb3ZlKCpkaXNrQ2FjaGVEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGUpOwogCi0g
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShyZXN1bHQuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LnNo
b3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICNpZiBFTkFCTEUoTkVUV09SS19DQUNIRV9TUEVDVUxBVElWRV9SRVZBTElEQVRJT04p
CkBAIC0yMDIsMTAgKzE5Nyw2IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnM6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC51aVByb2Nlc3NCdW5k
bGVJZGVudGlmaWVyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUocmVzdWx0Lm5zVVJMQ2FjaGVNZW1vcnlDYXBhY2l0eSkpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5uc1VSTENhY2hlRGlza0NhcGFj
aXR5KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghZGVjb2Rlci5kZWNvZGUocmVz
dWx0LnNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcikpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5zb3VyY2VBcHBsaWNhdGlvblNl
Y29uZGFyeUlkZW50aWZpZXIpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDVk
MGZlMTNhNWU2YTc1ZDgwZWI3OWM1ZjRiYmJkZDZiMmI2MTdiZWEuLmQ1NzQyNWM1ODk3MDhlZjcx
ZDhjOWQ0YmRmMWNkMzdlYzBlZDk2MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
QEAgLTYxLDcgKzYxLDYgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
IHsKICAgICBTYW5kYm94RXh0ZW5zaW9uOjpIYW5kbGUgY2FjaGVTdG9yYWdlRGlyZWN0b3J5RXh0
ZW5zaW9uSGFuZGxlOwogICAgIFN0cmluZyBkaXNrQ2FjaGVEaXJlY3Rvcnk7CiAgICAgU2FuZGJv
eEV4dGVuc2lvbjo6SGFuZGxlIGRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKLSAg
ICBib29sIHNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZSB7IGZhbHNlIH07CiAgICAgYm9vbCBzaG91
bGRFbmFibGVOZXR3b3JrQ2FjaGVFZmZpY2FjeUxvZ2dpbmcgeyBmYWxzZSB9OwogI2lmIEVOQUJM
RShORVRXT1JLX0NBQ0hFX1NQRUNVTEFUSVZFX1JFVkFMSURBVElPTikKICAgICBib29sIHNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uIHsgZmFsc2UgfTsKQEAg
LTg0LDggKzgzLDYgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIHsK
ICNpZiBQTEFURk9STShDT0NPQSkKICAgICBTdHJpbmcgcGFyZW50UHJvY2Vzc05hbWU7CiAgICAg
U3RyaW5nIHVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXI7Ci0gICAgdWludDY0X3QgbnNVUkxDYWNo
ZU1lbW9yeUNhcGFjaXR5OwotICAgIHVpbnQ2NF90IG5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHk7CiAg
ICAgU3RyaW5nIHNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcjsKICAgICBTdHJpbmcg
c291cmNlQXBwbGljYXRpb25TZWNvbmRhcnlJZGVudGlmaWVyOwogI2lmIFBMQVRGT1JNKElPUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1By
b2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQppbmRleCA5YmYyZWRlMDJhZTY2NmRjZDViN2EzYTM2Y2JlZTk2Zjg4
NzFiMzllLi5jYjZjZTEwN2I5MzUwNDZmNzM1ZDhjNGE5ODhiYWQ5YjMwNzQ0YzQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tCkBAIC0yNyw2ICsyNyw3IEBACiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzcy5o
IgogCiAjaW1wb3J0ICJDb29raWVTdG9yYWdlVXRpbHNDRi5oIgorI2ltcG9ydCAiTG9nZ2luZy5o
IgogI2ltcG9ydCAiTmV0d29ya0NhY2hlLmgiCiAjaW1wb3J0ICJOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVycy5oIgogI2ltcG9ydCAiTmV0d29ya1Jlc291cmNlTG9hZGVyLmgiCkBAIC04
OCw3ICs4OSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAgICAgTmV0d29ya1Nlc3Npb25D
b2NvYTo6c2V0U291cmNlQXBwbGljYXRpb25BdWRpdFRva2VuRGF0YShzb3VyY2VBcHBsaWNhdGlv
bkF1ZGl0RGF0YSgpKTsKICAgICBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3VyY2VBcHBsaWNh
dGlvbkJ1bmRsZUlkZW50aWZpZXIocGFyYW1ldGVycy5zb3VyY2VBcHBsaWNhdGlvbkJ1bmRsZUlk
ZW50aWZpZXIpOwogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldFNvdXJjZUFwcGxpY2F0aW9u
U2Vjb25kYXJ5SWRlbnRpZmllcihwYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5
SWRlbnRpZmllcik7Ci0gICAgTmV0d29ya1Nlc3Npb25Db2NvYTo6c2V0VXNlc05ldHdvcmtDYWNo
ZShwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZSk7CiAjaWYgUExBVEZPUk0oSU9T
KQogICAgIE5ldHdvcmtTZXNzaW9uQ29jb2E6OnNldENURGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlw
ZShwYXJhbWV0ZXJzLmN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSk7CiAjZW5kaWYKQEAgLTEw
Nyw3ICsxMDcsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQwogICAgIC8vIC0gZGlzayBjYWNo
ZSBzaXplIHBhc3NlZCBmcm9tIFVJIHByb2Nlc3MgaXMgZWZmZWN0aXZlbHkgYSBtaW5pbXVtIHNp
emUuCiAgICAgLy8gT25lIG5vbi1vYnZpb3VzIGNvbnN0cmFpbnQgaXMgdGhhdCB3ZSBuZWVkIHRv
IHVzZSAtc2V0U2hhcmVkVVJMQ2FjaGU6IGV2ZW4gaW4gdGVzdGluZyBtb2RlLCB0byBwcmV2ZW50
IGNyZWF0aW5nIGEgZGVmYXVsdCBvbmUgb24gZGlzayBsYXRlciwgd2hlbiBzb21lIG90aGVyIGNv
ZGUgdG91Y2hlcyB0aGUgY2FjaGUuCiAKLSAgICBBU1NFUlQoIW1fZGlza0NhY2hlSXNEaXNhYmxl
ZEZvclRlc3RpbmcgfHwgIXBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eSk7CisgICAg
QVNTRVJUKCFtX2Rpc2tDYWNoZUlzRGlzYWJsZWRGb3JUZXN0aW5nKTsKIAogICAgIGlmICghcGFy
YW1ldGVycy5jYWNoZVN0b3JhZ2VEaXJlY3RvcnkuaXNOdWxsKCkpIHsKICAgICAgICAgbV9jYWNo
ZVN0b3JhZ2VEaXJlY3RvcnkgPSBwYXJhbWV0ZXJzLmNhY2hlU3RvcmFnZURpcmVjdG9yeTsKQEAg
LTExOSw0NiArMTE5LDI4IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6
ZU5ldHdvcmtQcm9jZXNzQ29jb2EoY29uc3QgTmV0d29ya1Byb2Nlc3NDCiAgICAgaW5pdGlhbGl6
ZVdpRmlBc3NlcnRpb25zKHBhcmFtZXRlcnMpOwogI2VuZGlmCiAKLSAgICBpZiAoIW1fZGlza0Nh
Y2hlRGlyZWN0b3J5LmlzTnVsbCgpKSB7Ci0gICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1
bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRpc2tDYWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRs
ZSk7Ci0gICAgICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZSkgewot
ICAgICAgICAgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVP
cHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpSZWdpc3Rlck5vdGlmeSB9Owot
ICAgICAgICAgICAgaWYgKHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlRWZmaWNh
Y3lMb2dnaW5nKQotICAgICAgICAgICAgICAgIGNhY2hlT3B0aW9ucyB8PSBOZXR3b3JrQ2FjaGU6
OkNhY2hlOjpPcHRpb246OkVmZmljYWN5TG9nZ2luZzsKLSAgICAgICAgICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKLSAgICAgICAgICAgICAgICBjYWNo
ZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpUZXN0aW5nTW9kZTsKKyAg
ICBpZiAobV9kaXNrQ2FjaGVEaXJlY3RvcnkuaXNOdWxsKCkpCisgICAgICAgIHJldHVybjsKKwor
ICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseShwYXJhbWV0ZXJzLmRpc2tD
YWNoZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSk7CisgICAgT3B0aW9uU2V0PE5ldHdvcmtDYWNo
ZTo6Q2FjaGU6Ok9wdGlvbj4gY2FjaGVPcHRpb25zIHsgTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0
aW9uOjpSZWdpc3Rlck5vdGlmeSB9OworICAgIGlmIChwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5l
dHdvcmtDYWNoZUVmZmljYWN5TG9nZ2luZykKKyAgICAgICAgY2FjaGVPcHRpb25zIHw9IE5ldHdv
cmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6RWZmaWNhY3lMb2dnaW5nOworICAgIGlmIChwYXJhbWV0
ZXJzLnNob3VsZFVzZVRlc3RpbmdOZXR3b3JrU2Vzc2lvbikKKyAgICAgICAgY2FjaGVPcHRpb25z
IHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6Ok9wdGlvbjo6VGVzdGluZ01vZGU7CiAjaWYgRU5BQkxF
KE5FVFdPUktfQ0FDSEVfU1BFQ1VMQVRJVkVfUkVWQUxJREFUSU9OKQotICAgICAgICAgICAgaWYg
KHBhcmFtZXRlcnMuc2hvdWxkRW5hYmxlTmV0d29ya0NhY2hlU3BlY3VsYXRpdmVSZXZhbGlkYXRp
b24pCi0gICAgICAgICAgICAgICAgY2FjaGVPcHRpb25zIHw9IE5ldHdvcmtDYWNoZTo6Q2FjaGU6
Ok9wdGlvbjo6U3BlY3VsYXRpdmVSZXZhbGlkYXRpb247Ci0jZW5kaWYKLSAgICAgICAgICAgIG1f
Y2FjaGUgPSBOZXR3b3JrQ2FjaGU6OkNhY2hlOjpvcGVuKG1fZGlza0NhY2hlRGlyZWN0b3J5LCBj
YWNoZU9wdGlvbnMpOwotCi0gICAgICAgICAgICBpZiAobV9jYWNoZSkgewotICAgICAgICAgICAg
ICAgIC8vIERpc2FibGUgTlNVUkxDYWNoZS4KLSAgICAgICAgICAgICAgICBhdXRvIHVybENhY2hl
KGFkb3B0TlMoW1tOU1VSTENhY2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjAgZGlz
a0NhcGFjaXR5OjAgZGlza1BhdGg6bmlsXSkpOwotICAgICAgICAgICAgICAgIFtOU1VSTENhY2hl
IHNldFNoYXJlZFVSTENhY2hlOnVybENhY2hlLmdldCgpXTsKLSAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgU3RyaW5nIG5zVVJMQ2FjaGVE
aXJlY3RvcnkgPSBtX2Rpc2tDYWNoZURpcmVjdG9yeTsKLSNpZiBQTEFURk9STShJT1MpCi0gICAg
ICAgIC8vIE5TVVJMQ2FjaGUgcGF0aCBpcyByZWxhdGl2ZSB0byBuZXR3b3JrIHByb2Nlc3MgY2Fj
aGUgZGlyZWN0b3J5LgotICAgICAgICAvLyBUaGlzIHB1dHMgY2FjaGUgZmlsZXMgdW5kZXIgPGNv
bnRhaW5lcj4vTGlicmFyeS9DYWNoZXMvY29tLmFwcGxlLldlYktpdC5OZXR3b3JraW5nLwotICAg
ICAgICBuc1VSTENhY2hlRGlyZWN0b3J5ID0gIi4iOworICAgIGlmIChwYXJhbWV0ZXJzLnNob3Vs
ZEVuYWJsZU5ldHdvcmtDYWNoZVNwZWN1bGF0aXZlUmV2YWxpZGF0aW9uKQorICAgICAgICBjYWNo
ZU9wdGlvbnMgfD0gTmV0d29ya0NhY2hlOjpDYWNoZTo6T3B0aW9uOjpTcGVjdWxhdGl2ZVJldmFs
aWRhdGlvbjsKICNlbmRpZgotICAgICAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxDYWNoZTph
ZG9wdE5TKFtbTlNVUkxDYWNoZSBhbGxvY10KLSAgICAgICAgICAgIGluaXRXaXRoTWVtb3J5Q2Fw
YWNpdHk6cGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkKLSAgICAgICAgICAgIGRp
c2tDYXBhY2l0eTpwYXJhbWV0ZXJzLm5zVVJMQ2FjaGVEaXNrQ2FwYWNpdHkKLSAgICAgICAgICAg
IGRpc2tQYXRoOm5zVVJMQ2FjaGVEaXJlY3RvcnldKS5nZXQoKV07Ci0gICAgfQotfQogCi12b2lk
IE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCB1cmxDYWNo
ZU1lbW9yeUNhcGFjaXR5LCB1aW50NjRfdCB1cmxDYWNoZURpc2tDYXBhY2l0eSkKLXsKLSAgICBO
U1VSTENhY2hlICpuc3VybENhY2hlID0gW05TVVJMQ2FjaGUgc2hhcmVkVVJMQ2FjaGVdOwotICAg
IFtuc3VybENhY2hlIHNldE1lbW9yeUNhcGFjaXR5OnVybENhY2hlTWVtb3J5Q2FwYWNpdHldOwot
ICAgIGlmICghbV9kaXNrQ2FjaGVJc0Rpc2FibGVkRm9yVGVzdGluZykKLSAgICAgICAgW25zdXJs
Q2FjaGUgc2V0RGlza0NhcGFjaXR5OnN0ZDo6bWF4PHVpbnQ2NF90Pih1cmxDYWNoZURpc2tDYXBh
Y2l0eSwgW25zdXJsQ2FjaGUgZGlza0NhcGFjaXR5XSldOyAvLyBEb24ndCBzaHJpbmsgYSBiaWcg
ZGlzayBjYWNoZSwgc2luY2UgdGhhdCB3b3VsZCBjYXVzZSBjaHVybi4KKyAgICBtX2NhY2hlID0g
TmV0d29ya0NhY2hlOjpDYWNoZTo6b3BlbihtX2Rpc2tDYWNoZURpcmVjdG9yeSwgY2FjaGVPcHRp
b25zKTsKKyAgICBpZiAoIW1fY2FjaGUpCisgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKE5ldHdv
cmtDYWNoZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHRoZSBXZWJLaXQgbmV0d29yayBkaXNrIGNh
Y2hlIik7CisKKyAgICAvLyBEaXNhYmxlIE5TVVJMQ2FjaGUuCisgICAgYXV0byB1cmxDYWNoZShh
ZG9wdE5TKFtbTlNVUkxDYWNoZSBhbGxvY10gaW5pdFdpdGhNZW1vcnlDYXBhY2l0eTowIGRpc2tD
YXBhY2l0eTowIGRpc2tQYXRoOm5pbF0pKTsKKyAgICBbTlNVUkxDYWNoZSBzZXRTaGFyZWRVUkxD
YWNoZTp1cmxDYWNoZS5nZXQoKV07CisgICAgcmV0dXJuOwogfQogCiBSZXRhaW5QdHI8Q0ZEYXRh
UmVmPiBOZXR3b3JrUHJvY2Vzczo6c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEoKSBjb25zdApA
QCAtMTgyLDIxICsxNjQsNiBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckhTVFNDYWNoZShX
ZWJDb3JlOjpOZXR3b3JrU3RvcmFnZVNlc3Npb24mIHNlc3Npb24sIFdhbAogICAgIF9DRk5ldHdv
cmtSZXNldEhTVFNIb3N0c1NpbmNlRGF0ZShzZXNzaW9uLnBsYXRmb3JtU2Vzc2lvbigpLCAoX19i
cmlkZ2UgQ0ZEYXRlUmVmKWRhdGUpOwogfQogCi1zdGF0aWMgdm9pZCBjbGVhck5TVVJMQ2FjaGUo
ZGlzcGF0Y2hfZ3JvdXBfdCBncm91cCwgV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248
dm9pZCAoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKLXsKLSAgICBkaXNwYXRjaF9ncm91cF9hc3lu
Yyhncm91cCwgZGlzcGF0Y2hfZ2V0X2dsb2JhbF9xdWV1ZShESVNQQVRDSF9RVUVVRV9QUklPUklU
WV9ERUZBVUxULCAwKSwgQmxvY2tQdHI8dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFttb2RpZmllZFNp
bmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgTlNVUkxDYWNoZSAqY2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRV
UkxDYWNoZV07Ci0KLSAgICAgICAgTlNUaW1lSW50ZXJ2YWwgdGltZUludGVydmFsID0gbW9kaWZp
ZWRTaW5jZS5zZWNvbmRzU2luY2VFcG9jaCgpLnNlY29uZHMoKTsKLSAgICAgICAgTlNEYXRlICpk
YXRlID0gW05TRGF0ZSBkYXRlV2l0aFRpbWVJbnRlcnZhbFNpbmNlMTk3MDp0aW1lSW50ZXJ2YWxd
OwotICAgICAgICBbY2FjaGUgcmVtb3ZlQ2FjaGVkUmVzcG9uc2VzU2luY2VEYXRlOmRhdGVdOwot
Ci0gICAgICAgIGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIEJsb2Nr
UHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAg
ICAgICAgfSkuZ2V0KCkpOwotICAgIH0pLmdldCgpKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vz
czo6Y2xlYXJEaXNrQ2FjaGUoV2FsbFRpbWUgbW9kaWZpZWRTaW5jZSwgRnVuY3Rpb248dm9pZCAo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoIW1fY2xlYXJDYWNoZURpc3BhdGNo
R3JvdXApCkBAIC0yMDQsMTUgKzE3MSwxMSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjpjbGVhckRp
c2tDYWNoZShXYWxsVGltZSBtb2RpZmllZFNpbmNlLCBGdW5jdGlvbjx2b2lkICgpPiYmCiAKICAg
ICBpZiAoYXV0byogY2FjaGUgPSBOZXR3b3JrUHJvY2Vzczo6c2luZ2xldG9uKCkuY2FjaGUoKSkg
ewogICAgICAgICBhdXRvIGdyb3VwID0gbV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cDsKLSAgICAg
ICAgZGlzcGF0Y2hfZ3JvdXBfYXN5bmMoZ3JvdXAsIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCks
IEJsb2NrUHRyPHZvaWQoKT46OmZyb21DYWxsYWJsZShbY2FjaGUsIGdyb3VwLCBtb2RpZmllZFNp
bmNlLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBt
dXRhYmxlIHsKLSAgICAgICAgICAgIGNhY2hlLT5jbGVhcihtb2RpZmllZFNpbmNlLCBbZ3JvdXAs
IG1vZGlmaWVkU2luY2UsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBQcm9iYWJseSBu
b3QgbmVjZXNzYXJ5LgotICAgICAgICAgICAgICAgIGNsZWFyTlNVUkxDYWNoZShncm91cCwgbW9k
aWZpZWRTaW5jZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICBkaXNwYXRj
aF9ncm91cF9hc3luYyhncm91cCwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgQmxvY2tQdHI8
dm9pZCgpPjo6ZnJvbUNhbGxhYmxlKFtjYWNoZSwgbW9kaWZpZWRTaW5jZSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgICAg
ICAgICBjYWNoZS0+Y2xlYXIobW9kaWZpZWRTaW5jZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAgICAgICAgfSk7CiAg
ICAgICAgIH0pLmdldCgpKTsKLSAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBjbGVhck5TVVJM
Q2FjaGUobV9jbGVhckNhY2hlRGlzcGF0Y2hHcm91cCwgbW9kaWZpZWRTaW5jZSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2Eu
aCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2Nv
YS5oCmluZGV4IDUxZGViZGYzYTRmZWUyZmIwZmI1YzNiZjgzOGQyNzFmMmYyMzEwZTMuLmE5ZDhm
NDlkYTBiMjNhMjM3MjE2M2Y3ZmVjNjdlY2UyOWI5N2E1MDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5oCkBA
IC01Miw3ICs1Miw2IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgdm9pZCBzZXRTb3VyY2VBcHBsaWNh
dGlvbkF1ZGl0VG9rZW5EYXRhKFJldGFpblB0cjxDRkRhdGFSZWY+JiYpOwogICAgIHN0YXRpYyB2
b2lkIHNldFNvdXJjZUFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihjb25zdCBTdHJpbmcmKTsK
ICAgICBzdGF0aWMgdm9pZCBzZXRTb3VyY2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIo
Y29uc3QgU3RyaW5nJik7Ci0gICAgc3RhdGljIHZvaWQgc2V0VXNlc05ldHdvcmtDYWNoZShib29s
KTsKICNpZiBQTEFURk9STShJT1MpCiAgICAgc3RhdGljIHZvaWQgc2V0Q1REYXRhQ29ubmVjdGlv
blNlcnZpY2VUeXBlKGNvbnN0IFN0cmluZyYpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0gYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtTZXNzaW9uQ29jb2EubW0KaW5k
ZXggOWIwYmVmYjNmNDMxODRlNzA5MzBmMGQ5NzllOGFjZmE5ZTFhNzZkMC4uM2RlOTViY2NlMTVm
ODhmZDMzMjVhOTU5ZjYyZjM4YWE2NzAyODhiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrU2Vzc2lvbkNvY29hLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Nlc3Npb25Db2NvYS5tbQpAQCAtNTcz
LDggKzU3Myw2IEBAIC0gKHZvaWQpVVJMU2Vzc2lvbjooTlNVUkxTZXNzaW9uICopc2Vzc2lvbiBk
YXRhVGFzazooTlNVUkxTZXNzaW9uRGF0YVRhc2sgKilkYXRhCiBAZW5kCiAKIG5hbWVzcGFjZSBX
ZWJLaXQgewotICAgIAotc3RhdGljIGJvb2wgdXNlc05ldHdvcmtDYWNoZSB7IGZhbHNlIH07CiAK
ICNpZiAhQVNTRVJUX0RJU0FCTEVECiBzdGF0aWMgYm9vbCBzZXNzaW9uc0NyZWF0ZWQgPSBmYWxz
ZTsKQEAgLTYzNCwxMSArNjMyLDYgQEAgdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRTb3Vy
Y2VBcHBsaWNhdGlvblNlY29uZGFyeUlkZW50aWZpZXIoY29uc3QgU3RyaW5nJgogICAgIGdsb2Jh
bFNvdXJjZUFwcGxpY2F0aW9uU2Vjb25kYXJ5SWRlbnRpZmllcigpID0gaWRlbnRpZmllcjsKIH0K
IAotdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRVc2VzTmV0d29ya0NhY2hlKGJvb2wgdmFs
dWUpCi17Ci0gICAgdXNlc05ldHdvcmtDYWNoZSA9IHZhbHVlOwotfQotCiAjaWYgUExBVEZPUk0o
SU9TKQogdm9pZCBOZXR3b3JrU2Vzc2lvbkNvY29hOjpzZXRDVERhdGFDb25uZWN0aW9uU2Vydmlj
ZVR5cGUoY29uc3QgU3RyaW5nJiB0eXBlKQogewpAQCAtNjc2LDggKzY2OSw4IEBAIE5ldHdvcmtT
ZXNzaW9uQ29jb2E6Ok5ldHdvcmtTZXNzaW9uQ29jb2EoTmV0d29ya1Nlc3Npb25DcmVhdGlvblBh
cmFtZXRlcnMmJiBwYXJhCiAgICAgaWYgKHBhcmFtZXRlcnMuYWxsb3dzQ2VsbHVsYXJBY2Nlc3Mg
PT0gQWxsb3dzQ2VsbHVsYXJBY2Nlc3M6Ok5vKQogICAgICAgICBjb25maWd1cmF0aW9uLmFsbG93
c0NlbGx1bGFyQWNjZXNzID0gTk87CiAKLSAgICBpZiAodXNlc05ldHdvcmtDYWNoZSkKLSAgICAg
ICAgY29uZmlndXJhdGlvbi5VUkxDYWNoZSA9IG5pbDsKKyAgICAvLyBUaGUgV2ViS2l0IG5ldHdv
cmsgY2FjaGUgd2FzIGFscmVhZHkgcXVlcmllZC4KKyAgICBjb25maWd1cmF0aW9uLlVSTENhY2hl
ID0gbmlsOwogCiAgICAgaWYgKGF1dG8mIGRhdGEgPSBnbG9iYWxTb3VyY2VBcHBsaWNhdGlvbkF1
ZGl0VG9rZW5EYXRhKCkpCiAgICAgICAgIGNvbmZpZ3VyYXRpb24uX3NvdXJjZUFwcGxpY2F0aW9u
QXVkaXRUb2tlbkRhdGEgPSAoTlNEYXRhICopZGF0YS5nZXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY3VybC9OZXR3b3JrUHJvY2Vzc0N1cmwuY3BwIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKaW5k
ZXggZGI2YWQ3NDQ1MzI5ZDM1ZjAyN2NmZWJlNzI3OTBhZGQ2YjQ1OTdkNy4uODE4ODQxOWY4NGNi
ZmViZGZhMTUzM2Q0MjBmOTVmZDk1OWNmMGYwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9jdXJsL05ldHdvcmtQcm9jZXNzQ3VybC5jcHAKQEAgLTQ5LDEx
ICs0OSw2IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQ
cm9jZXNzKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpCiAgICAgICAgIHN1cHBsZW1lbnQ8V2Vi
Q29va2llTWFuYWdlcj4oKS0+c2V0Q29va2llUGVyc2lzdGVudFN0b3JhZ2UocGFyYW1ldGVycy5j
b29raWVQZXJzaXN0ZW50U3RvcmFnZUZpbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpw
bGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCwgdWludDY0X3QpCi17Ci0gICAgbm90SW1w
bGVtZW50ZWQoKTsKLX0KLQogdm9pZCBOZXR3b3JrUHJvY2Vzczo6YWxsb3dTcGVjaWZpY0hUVFBT
Q2VydGlmaWNhdGVGb3JIb3N0KGNvbnN0IENlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZv
LCBjb25zdCBTdHJpbmcmIGhvc3QpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mvc291cC9OZXR3b3JrUHJvY2Vzc1NvdXAu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291
cC5jcHAKaW5kZXggMzdjNDIwNWMwZDVlNTNkNTZhYWNmODUxNTVkNDEyNTdlMTE3Y2M4MS4uZmFl
YjRjMTA5M2FjNDc0YzNhMGE2MGNhMWU4NzQxMjk4OGMyMjFlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9zb3VwL05ldHdvcmtQcm9jZXNzU291cC5jcHAK
QEAgLTEzMywxMCArMTMzLDYgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFs
aXplTmV0d29ya1Byb2Nlc3MoY29uc3QgTmV0d29ya1Byb2Nlc3NDcmVhdGkKICAgICBzZXRJZ25v
cmVUTFNFcnJvcnMocGFyYW1ldGVycy5pZ25vcmVUTFNFcnJvcnMpOwogfQogCi12b2lkIE5ldHdv
cmtQcm9jZXNzOjpwbGF0Zm9ybVNldFVSTENhY2hlU2l6ZSh1bnNpZ25lZCwgdWludDY0X3QpCi17
Ci19Ci0KIHZvaWQgTmV0d29ya1Byb2Nlc3M6OnNldElnbm9yZVRMU0Vycm9ycyhib29sIGlnbm9y
ZVRMU0Vycm9ycykKIHsKICAgICBTb3VwTmV0d29ya1Nlc3Npb246OnNldFNob3VsZElnbm9yZVRM
U0Vycm9ycyhpZ25vcmVUTFNFcnJvcnMpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KaW5kZXggNDcwMzgyNDM5MDc1OTlkOThl
ZGFjZjRjNmMyMTI1Nzk3MDU0ZDMyNi4uYmE2NTQ5ZGEzNDdkOWEzMWI4MTYzNGQxNTBkMjcyYmFi
MjMyNTFhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJv
Y2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQ
cm9jZXNzUG9vbENvY29hLm1tCkBAIC0yODQsMTAgKzI4NCw2IEBAIHZvaWQgV2ViUHJvY2Vzc1Bv
b2w6OnBsYXRmb3JtSW5pdGlhbGl6ZVdlYlByb2Nlc3MoV2ViUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycyYKIAogdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpCiB7Ci0g
ICAgTlNVUkxDYWNoZSAqdXJsQ2FjaGUgPSBbTlNVUkxDYWNoZSBzaGFyZWRVUkxDYWNoZV07Ci0g
ICAgcGFyYW1ldGVycy5uc1VSTENhY2hlTWVtb3J5Q2FwYWNpdHkgPSBbdXJsQ2FjaGUgbWVtb3J5
Q2FwYWNpdHldOwotICAgIHBhcmFtZXRlcnMubnNVUkxDYWNoZURpc2tDYXBhY2l0eSA9IFt1cmxD
YWNoZSBkaXNrQ2FwYWNpdHldOwotCiAgICAgcGFyYW1ldGVycy5wYXJlbnRQcm9jZXNzTmFtZSA9
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gcHJvY2Vzc05hbWVdOwogICAgIHBhcmFtZXRl
cnMudWlQcm9jZXNzQnVuZGxlSWRlbnRpZmllciA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gYnVu
ZGxlSWRlbnRpZmllcl07CiAKQEAgLTI5Nyw3ICsyOTMsNiBAQCB2b2lkIFdlYlByb2Nlc3NQb29s
OjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3b3JrUHJvY2VzcyhOZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYQogICAgIHBhcmFtZXRlcnMuaHR0cHNQcm94eSA9IFtkZWZhdWx0cyBzdHJpbmdGb3JLZXk6
V2ViS2l0MkhUVFBTUHJveHlEZWZhdWx0c0tleV07CiAgICAgcGFyYW1ldGVycy5uZXR3b3JrQVRT
Q29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0KCkpOwogCi0gICAgcGFy
YW1ldGVycy5zaG91bGRFbmFibGVOZXR3b3JrQ2FjaGUgPSBpc05ldHdvcmtDYWNoZUVuYWJsZWQo
KTsKICAgICBwYXJhbWV0ZXJzLnNob3VsZEVuYWJsZU5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2lu
ZyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OldlYktpdE5ldHdvcmtDYWNoZUVmZmljYWN5TG9nZ2lu
Z0VuYWJsZWREZWZhdWx0c0tleV07CiAKICAgICBwYXJhbWV0ZXJzLnNvdXJjZUFwcGxpY2F0aW9u
QnVuZGxlSWRlbnRpZmllciA9IG1fY29uZmlndXJhdGlvbi0+c291cmNlQXBwbGljYXRpb25CdW5k
bGVJZGVudGlmaWVyKCk7CkBAIC00ODIsOCArNDc3LDcgQEAgU3RyaW5nIFdlYlByb2Nlc3NQb29s
OjpsZWdhY3lQbGF0Zm9ybURlZmF1bHROZXR3b3JrQ2FjaGVEaXJlY3RvcnkoKQogICAgIGlmICgh
Y2FjaGVQYXRoKQogICAgICAgICBjYWNoZVBhdGggPSBAIn4vTGlicmFyeS9DYWNoZXMvY29tLmFw
cGxlLldlYktpdC5XZWJQcm9jZXNzIjsKIAotICAgIGlmIChpc05ldHdvcmtDYWNoZUVuYWJsZWQo
KSkKLSAgICAgICAgY2FjaGVQYXRoID0gW2NhY2hlUGF0aCBzdHJpbmdCeUFwcGVuZGluZ1BhdGhD
b21wb25lbnQ6QCJXZWJLaXRDYWNoZSJdOworICAgIGNhY2hlUGF0aCA9IFtjYWNoZVBhdGggc3Ry
aW5nQnlBcHBlbmRpbmdQYXRoQ29tcG9uZW50OkAiV2ViS2l0Q2FjaGUiXTsKIAogICAgIHJldHVy
biBzdHJpbmdCeVJlc29sdmluZ1N5bWxpbmtzSW5QYXRoKFtjYWNoZVBhdGggc3RyaW5nQnlTdGFu
ZGFyZGl6aW5nUGF0aF0pOwogfQpAQCAtNTE1LDE3ICs1MDksNiBAQCB2b2lkIFdlYlByb2Nlc3NQ
b29sOjpzZXRKYXZhU2NyaXB0Q29uZmlndXJhdGlvbkZpbGVFbmFibGVkRnJvbURlZmF1bHRzKCkK
IH0KICNlbmRpZgogCi1ib29sIFdlYlByb2Nlc3NQb29sOjppc05ldHdvcmtDYWNoZUVuYWJsZWQo
KQotewotICAgIHJlZ2lzdGVyVXNlckRlZmF1bHRzSWZOZWVkZWQoKTsKLQotICAgIE5TVXNlckRl
ZmF1bHRzICpkZWZhdWx0cyA9IFtOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c107
Ci0KLSAgICBib29sIG5ldHdvcmtDYWNoZUVuYWJsZWRCeURlZmF1bHRzID0gW2RlZmF1bHRzIGJv
b2xGb3JLZXk6V2ViS2l0TmV0d29ya0NhY2hlRW5hYmxlZERlZmF1bHRzS2V5XTsKLQotICAgIHJl
dHVybiBuZXR3b3JrQ2FjaGVFbmFibGVkQnlEZWZhdWx0cyAmJiBsaW5rZWRPbk9yQWZ0ZXIoU0RL
VmVyc2lvbjo6Rmlyc3RXaXRoTmV0d29ya0NhY2hlKTsKLX0KLQogYm9vbCBXZWJQcm9jZXNzUG9v
bDo6b21pdFBERlN1cHBvcnQoKQogewogICAgIC8vIFNpbmNlIHRoaXMgaXMgYSAic2VjcmV0IGRl
ZmF1bHQiIHdlIGRvbid0IGJvdGhlciByZWdpc3RlcmluZyBpdC4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IDIxZDcxZjVmMGE0Yzg4ZDI5OTY2NDhmYTZiYzQz
OWVkMWVlMTNmZDguLjE5MmZjMzlmMDBmODU5NDhjNzNmYTUzYzkyYWZhYWQ1NTA3YTE1YmYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDEzLDcgKzQxMyw2
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3JtRGVmYXVsdEFwcGxp
Y2F0aW9uQ2FjaGVEaXJlY3RvcnkoKTsKICAgICBzdGF0aWMgU3RyaW5nIGxlZ2FjeVBsYXRmb3Jt
RGVmYXVsdE5ldHdvcmtDYWNoZURpcmVjdG9yeSgpOwogICAgIHN0YXRpYyBTdHJpbmcgbGVnYWN5
UGxhdGZvcm1EZWZhdWx0SmF2YVNjcmlwdENvbmZpZ3VyYXRpb25EaXJlY3RvcnkoKTsKLSAgICBz
dGF0aWMgYm9vbCBpc05ldHdvcmtDYWNoZUVuYWJsZWQoKTsKIAogICAgIGJvb2wgcmVzb3VyY2VM
b2FkU3RhdGlzdGljc0VuYWJsZWQoKSB7IHJldHVybiBtX3Jlc291cmNlTG9hZFN0YXRpc3RpY3NF
bmFibGVkOyB9CiAgICAgdm9pZCBzZXRSZXNvdXJjZUxvYWRTdGF0aXN0aWNzRW5hYmxlZChib29s
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRl
eCA0M2MxYWUwMTAxYWNiMDQ3YWNjODY5YzYxMzVmNzgxOWRhYTVjMzNlLi42MDY3MWVjZWE4YzI4
NWM0ZjdmNjY3ZmIxOWE0NGM0YjUyNDkwYzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC03ODEsNyArNzgxLDcgQEAgU3RyaW5nIFdlYkZy
YW1lOjpzdWdnZXN0ZWRGaWxlbmFtZUZvclJlc291cmNlV2l0aFVSTChjb25zdCBVUkwmIHVybCkg
Y29uc3QKICAgICBpZiAocmVzb3VyY2UpCiAgICAgICAgIHJldHVybiByZXNvdXJjZS0+cmVzcG9u
c2UoKS5zdWdnZXN0ZWRGaWxlbmFtZSgpOwogCi0gICAgcmV0dXJuIHBhZ2UoKS0+Y2FjaGVkU3Vn
Z2VzdGVkRmlsZW5hbWVGb3JVUkwodXJsKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKIFN0
cmluZyBXZWJGcmFtZTo6bWltZVR5cGVGb3JSZXNvdXJjZVdpdGhVUkwoY29uc3QgVVJMJiB1cmwp
IGNvbnN0CkBAIC04MDIsNyArODAyLDcgQEAgU3RyaW5nIFdlYkZyYW1lOjptaW1lVHlwZUZvclJl
c291cmNlV2l0aFVSTChjb25zdCBVUkwmIHVybCkgY29uc3QKICAgICBpZiAocmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybiByZXNvdXJjZS0+bWltZVR5cGUoKTsKIAotICAgIHJldHVybiBwYWdlKCkt
PmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwodXJsKTsKKyAgICByZXR1cm4gU3RyaW5nKCk7
CiB9CiAKIHZvaWQgV2ViRnJhbWU6OnNldFRleHREaXJlY3Rpb24oY29uc3QgU3RyaW5nJiBkaXJl
Y3Rpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGMxYTMxM2U4MDcyMzRiM2Y4NjE0ZTJiYjk2NTY3ODkwNGQ4ZDM5OGQuLjk5MWUxODRhMTdj
Yjc0ZGJkMzlkMmVkYjJlZjQ5MTI4NGRjMmJmMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC0zMDU2LDEzICszMDU2LDkgQEAgc3RhdGljIFJl
ZlB0cjxTaGFyZWRCdWZmZXI+IHJlc291cmNlRGF0YUZvckZyYW1lKEZyYW1lKiBmcmFtZSwgY29u
c3QgVVJMJiByZXNvdXIKIHZvaWQgV2ViUGFnZTo6Z2V0UmVzb3VyY2VEYXRhRnJvbUZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgcmVzb3VyY2VVUkxTdHJpbmcsIENhbGxiYWNr
SUQgY2FsbGJhY2tJRCkKIHsKICAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBidWZmZXI7Ci0gICAg
aWYgKFdlYkZyYW1lKiBmcmFtZSA9IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLndlYkZyYW1lKGZy
YW1lSUQpKSB7CisgICAgaWYgKGF1dG8qIGZyYW1lID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
d2ViRnJhbWUoZnJhbWVJRCkpIHsKICAgICAgICAgVVJMIHJlc291cmNlVVJMKFVSTCgpLCByZXNv
dXJjZVVSTFN0cmluZyk7CiAgICAgICAgIGJ1ZmZlciA9IHJlc291cmNlRGF0YUZvckZyYW1lKGZy
YW1lLT5jb3JlRnJhbWUoKSwgcmVzb3VyY2VVUkwpOwotICAgICAgICBpZiAoIWJ1ZmZlcikgewot
ICAgICAgICAgICAgLy8gVHJ5IHRvIGdldCB0aGUgcmVzb3VyY2UgZGF0YSBmcm9tIHRoZSBjYWNo
ZS4KLSAgICAgICAgICAgIGJ1ZmZlciA9IGNhY2hlZFJlc3BvbnNlRGF0YUZvclVSTChyZXNvdXJj
ZVVSTCk7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvLyBGSVhNRTogVXNlIFNoYXJlZEJ1ZmZl
ckRhdGFSZWZlcmVuY2UuCkBAIC00MTAxLDcgKzQwOTcsNyBAQCBib29sIFdlYlBhZ2U6Omhhc0xv
Y2FsRGF0YUZvclVSTChjb25zdCBVUkwmIHVybCkKICAgICBpZiAoZG9jdW1lbnRMb2FkZXIgJiYg
ZG9jdW1lbnRMb2FkZXItPnN1YnJlc291cmNlKHVybCkpCiAgICAgICAgIHJldHVybiB0cnVlOwog
Ci0gICAgcmV0dXJuIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKHVybCk7CisgICAgcmV0dXJu
IGZhbHNlOwogfQogCiB2b2lkIFdlYlBhZ2U6OnNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJiBlbmNvZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuaAppbmRleCBkMjYzMzM5NTg2MTBmMmRiMzEwNjE2NjZlOGVkNDZjODJjZDJjZDhjLi4z
MzNjN2NjODNlMzI0OTA3MDkxMGM0YzNlYTliNzg4ZWFiMDZiOTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC02NzIsOSArNjcyLDYgQEAgcHVibGlj
OgogI2VuZGlmCiAKICAgICBib29sIGhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpV
UkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBXZWJD
b3JlOjpVUkwmKTsKLSAgICBTdHJpbmcgY2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29u
c3QgV2ViQ29yZTo6VVJMJik7Ci0gICAgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gY2Fj
aGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCiAgICAgc3RhdGlj
IGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKTsK
IApAQCAtMTE1NCw4ICsxMTUxLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIGxvYWREYXRhSW1wbCh1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYsIGNvbnN0
IFN0cmluZyYgTUlNRVR5cGUsIGNvbnN0IFN0cmluZyYgZW5jb2RpbmdOYW1lLCBjb25zdCBXZWJD
b3JlOjpVUkwmIGJhc2VVUkwsIGNvbnN0IFdlYkNvcmU6OlVSTCYgZmFpbGluZ1VSTCwgY29uc3Qg
VXNlckRhdGEmKTsKICAgICB2b2lkIGxvYWRTdHJpbmdJbXBsKHVpbnQ2NF90IG5hdmlnYXRpb25J
RCwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBNSU1FVHlwZSwgY29uc3QgV2ViQ29yZTo6
VVJMJiBiYXNlVVJMLCBjb25zdCBXZWJDb3JlOjpVUkwmIGZhaWxpbmdVUkwsIGNvbnN0IFVzZXJE
YXRhJik7CiAKLSAgICBib29sIHBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJMKGNvbnN0IFdlYkNv
cmU6OlVSTCYpOwotCiAgICAgLy8gQWN0aW9ucwogICAgIHZvaWQgdHJ5Q2xvc2UoKTsKICAgICB2
b2lkIHBsYXRmb3JtRGlkUmVjZWl2ZUxvYWRQYXJhbWV0ZXJzKGNvbnN0IExvYWRQYXJhbWV0ZXJz
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2Vi
UGFnZUd0ay5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvV2ViUGFn
ZUd0ay5jcHAKaW5kZXggNDkzY2IxNjNiZWZiZTliYzY0ZGE2NjJhNzY2ODlhYmEyYTM1NzY3MS4u
NjcyMTJmOGYyZTQ4NzVkNjViOTY5NjEzM2UzNGVmNTM0ODBlNzJhMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL1dlYlBhZ2VHdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9XZWJQYWdlR3RrLmNwcApAQCAtMTU3
LDM2ICsxNTcsMTIgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVmYXVsdEJlaGF2aW9yRm9yS2V5
RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmQKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBVUkwm
KQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJp
bmcgV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VNSU1FVHlwZUZvclVSTChjb25zdCBVUkwmKQotewot
ICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQotCiBib29sIFdl
YlBhZ2U6OnBsYXRmb3JtQ2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1TdHJpbmcg
V2ViUGFnZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKLXsKLSAg
ICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotUmVmUHRyPFNo
YXJlZEJ1ZmZlcj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYp
Ci17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gMDsKLX0KLQogU3RyaW5nIFdl
YlBhZ2U6OnBsYXRmb3JtVXNlckFnZW50KGNvbnN0IFVSTCYgdXJsKSBjb25zdAogewogICAgIGlm
ICh1cmwuaXNOdWxsKCkgfHwgIW1fcGFnZS0+c2V0dGluZ3MoKS5uZWVkc1NpdGVTcGVjaWZpY1F1
aXJrcygpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9z
L1dlYlBhZ2VJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2Vi
UGFnZUlPUy5tbQppbmRleCBjNmNkMGExM2EwZTE3YTA1NzhkNDEzMGI0ZWExMTc4OGM0MGMyNGQz
Li44MzY3NTI1NDdmNDRlMzA1MDEzNzViYWFlMzZhMmM4YTljNzIxNTI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpAQCAtNDg3
LDMwICs0ODcsNiBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdlT2JqZWN0KiBXZWJQYWdlOjphY2Nl
c3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKICAgICByZXR1cm4gMDsKIH0KIAotYm9vbCBXZWJQYWdl
OjpwbGF0Zm9ybUhhc0xvY2FsRGF0YUZvclVSTChjb25zdCBXZWJDb3JlOjpVUkwmKQotewotICAg
IG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1TdHJpbmcgV2ViUGFn
ZTo6Y2FjaGVkU3VnZ2VzdGVkRmlsZW5hbWVGb3JVUkwoY29uc3QgVVJMJikKLXsKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotU3RyaW5nIFdlYlBhZ2U6
OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJikKLXsKLSAgICBub3RJbXBs
ZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmcoKTsKLX0KLQotUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gV2ViUGFnZTo6Y2FjaGVkUmVzcG9uc2VEYXRhRm9yVVJMKGNvbnN0IFVSTCYpCi17Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKLX0KLQogYm9vbCBXZWJQYWdl
OjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0gYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQppbmRleCA0YWEzMTZiNmQ2ZTQ2ZGRkYTAz
NGM4YTVjYTQ2ZTg4NTQzN2M0MTE1Li5jOWE0MDgxNGRiMTRmNjRmNzg4MjU2YmIyMzk4YzgxYzI5
NjJhMTkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMv
V2ViUGFnZU1hYy5tbQpAQCAtNjc3LDQ4ICs2NzcsNiBAQCBXS0FjY2Vzc2liaWxpdHlXZWJQYWdl
T2JqZWN0KiBXZWJQYWdlOjphY2Nlc3NpYmlsaXR5UmVtb3RlT2JqZWN0KCkKIHsKICAgICByZXR1
cm4gbV9tb2NrQWNjZXNzaWJpbGl0eUVsZW1lbnQuZ2V0KCk7CiB9Ci0gICAgICAgICAKLWJvb2wg
V2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFGb3JVUkwoY29uc3QgV2ViQ29yZTo6VVJMJiB1
cmwpCi17Ci0gICAgTlNNdXRhYmxlVVJMUmVxdWVzdCogcmVxdWVzdCA9IFtbTlNNdXRhYmxlVVJM
UmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXTsKLSAgICBbcmVxdWVzdCBzZXRWYWx1ZToo
TlNTdHJpbmcqKXVzZXJBZ2VudCh1cmwpIGZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQi
XTsKLSAgICBOU0NhY2hlZFVSTFJlc3BvbnNlICpjYWNoZWRSZXNwb25zZTsKLSAgICBhdXRvKiBz
dG9yYWdlU2Vzc2lvbiA9IE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6c3RvcmFnZVNlc3Npb24oY29y
ZVBhZ2UoKS0+c2Vzc2lvbklEKCkpOwotICAgIGlmIChDRlVSTFN0b3JhZ2VTZXNzaW9uUmVmIHBs
YXRmb3JtU2Vzc2lvbiA9IHN0b3JhZ2VTZXNzaW9uID8gc3RvcmFnZVNlc3Npb24tPnBsYXRmb3Jt
U2Vzc2lvbigpIDogbnVsbHB0cikKLSAgICAgICAgY2FjaGVkUmVzcG9uc2UgPSBjYWNoZWRSZXNw
b25zZUZvclJlcXVlc3QocGxhdGZvcm1TZXNzaW9uLCByZXF1ZXN0KTsKLSAgICBlbHNlCi0gICAg
ICAgIGNhY2hlZFJlc3BvbnNlID0gW1tOU1VSTENhY2hlIHNoYXJlZFVSTENhY2hlXSBjYWNoZWRS
ZXNwb25zZUZvclJlcXVlc3Q6cmVxdWVzdF07Ci0gICAgW3JlcXVlc3QgcmVsZWFzZV07Ci0gICAg
Ci0gICAgcmV0dXJuIGNhY2hlZFJlc3BvbnNlOwotfQotCi1zdGF0aWMgTlNDYWNoZWRVUkxSZXNw
b25zZSAqY2FjaGVkUmVzcG9uc2VGb3JVUkwoV2ViUGFnZSogd2ViUGFnZSwgY29uc3QgVVJMJiB1
cmwpCi17Ci0gICAgUmV0YWluUHRyPE5TTXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9w
dE5TKFtbTlNNdXRhYmxlVVJMUmVxdWVzdCBhbGxvY10gaW5pdFdpdGhVUkw6dXJsXSk7Ci0gICAg
W3JlcXVlc3Qgc2V0VmFsdWU6KE5TU3RyaW5nICopd2ViUGFnZS0+dXNlckFnZW50KHVybCkgZm9y
SFRUUEhlYWRlckZpZWxkOkAiVXNlci1BZ2VudCJdOwotCi0gICAgYXV0byogc3RvcmFnZVNlc3Np
b24gPSBOZXR3b3JrU3RvcmFnZVNlc3Npb246OnN0b3JhZ2VTZXNzaW9uKHdlYlBhZ2UtPmNvcmVQ
YWdlKCktPnNlc3Npb25JRCgpKTsKLSAgICBpZiAoQ0ZVUkxTdG9yYWdlU2Vzc2lvblJlZiBwbGF0
Zm9ybVNlc3Npb24gPSBzdG9yYWdlU2Vzc2lvbiA/IHN0b3JhZ2VTZXNzaW9uLT5wbGF0Zm9ybVNl
c3Npb24oKSA6IG51bGxwdHIpCi0gICAgICAgIHJldHVybiBjYWNoZWRSZXNwb25zZUZvclJlcXVl
c3QocGxhdGZvcm1TZXNzaW9uLCByZXF1ZXN0LmdldCgpKTsKLQotICAgIHJldHVybiBbW05TVVJM
Q2FjaGUgc2hhcmVkVVJMQ2FjaGVdIGNhY2hlZFJlc3BvbnNlRm9yUmVxdWVzdDpyZXF1ZXN0Lmdl
dCgpXTsKLX0KLQotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJM
KGNvbnN0IFVSTCYgdXJsKQotewotICAgIHJldHVybiBbW2NhY2hlZFJlc3BvbnNlRm9yVVJMKHRo
aXMsIHVybCkgcmVzcG9uc2VdIHN1Z2dlc3RlZEZpbGVuYW1lXTsKLX0KLQotU3RyaW5nIFdlYlBh
Z2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAg
cmV0dXJuIFtbY2FjaGVkUmVzcG9uc2VGb3JVUkwodGhpcywgdXJsKSByZXNwb25zZV0gTUlNRVR5
cGVdOwotfQotCi1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURh
dGFGb3JVUkwoY29uc3QgVVJMJiB1cmwpCi17Ci0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3Jl
YXRlKFtjYWNoZWRSZXNwb25zZUZvclVSTCh0aGlzLCB1cmwpIGRhdGFdKTsKLX0KIAogYm9vbCBX
ZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2Uvd2luL1dlYlBhZ2VXaW4uY3BwCmluZGV4IGVmNDBjOGEwOTgzZDdkM2UxOGI0MzliYzE3
YmQ1NmQ0ZTFjNTYwZjkuLjA2NjgxYzYzYzc2ZmM2ZDM5MDFmZGQwMTQ3NmJjZWVhNzRlMmEzYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL3dpbi9XZWJQYWdl
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93aW4vV2ViUGFn
ZVdpbi5jcHAKQEAgLTEwNCwzNiArMTA0LDEyIEBAIGJvb2wgV2ViUGFnZTo6cGVyZm9ybURlZmF1
bHRCZWhhdmlvckZvcktleUV2ZW50KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGtleWJvYXJkCiAg
ICAgcmV0dXJuIHRydWU7CiB9CiAKLWJvb2wgV2ViUGFnZTo6cGxhdGZvcm1IYXNMb2NhbERhdGFG
b3JVUkwoY29uc3QgVVJMJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBm
YWxzZTsKLX0KLQotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlTUlNRVR5cGVGb3JVUkwo
Y29uc3QgVVJMJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBTdHJpbmco
KTsKLX0KLQogYm9vbCBXZWJQYWdlOjpwbGF0Zm9ybUNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogICAgIHJldHVybiBmYWxz
ZTsKIH0KIAotU3RyaW5nIFdlYlBhZ2U6OmNhY2hlZFN1Z2dlc3RlZEZpbGVuYW1lRm9yVVJMKGNv
bnN0IFVSTCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7
Ci19Ci0KLVJlZlB0cjxTaGFyZWRCdWZmZXI+IFdlYlBhZ2U6OmNhY2hlZFJlc3BvbnNlRGF0YUZv
clVSTChjb25zdCBVUkwmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIDA7
Ci19Ci0KIFN0cmluZyBXZWJQYWdlOjpwbGF0Zm9ybVVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkg
Y29uc3QKIHsKICAgICBpZiAodXJsLmlzTnVsbCgpIHx8ICFtX3BhZ2UtPnNldHRpbmdzKCkubmVl
ZHNTaXRlU3BlY2lmaWNRdWlya3MoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL3dwZS9XZWJQYWdlV1BFLmNwcAppbmRleCAyZjRhYjk0Mzk2OGQ2OWQwODJjNTlm
YmU4NjdiYjYzYjA4Mzg5MTI1Li42MTYzMjE3OWFkOTdmMDZmNDJhZmNlNTRjZGJjZTM2MzUxMzM0
YmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS93cGUvV2Vi
UGFnZVdQRS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uvd3BlL1dl
YlBhZ2VXUEUuY3BwCkBAIC01NSwzNiArNTUsMTIgQEAgYm9vbCBXZWJQYWdlOjpwZXJmb3JtRGVm
YXVsdEJlaGF2aW9yRm9yS2V5RXZlbnQoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYpCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi1ib29sIFdlYlBhZ2U6OnBsYXRmb3JtSGFzTG9jYWxEYXRhRm9yVVJM
KGNvbnN0IFVSTCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gZmFsc2U7
Ci19Ci0KLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZU1JTUVUeXBlRm9yVVJMKGNvbnN0
IFVSTCYpCi17Ci0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gU3RyaW5nKCk7Ci19
Ci0KIGJvb2wgV2ViUGFnZTo6cGxhdGZvcm1DYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNl
UmVxdWVzdCYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLVN0cmluZyBXZWJQYWdlOjpjYWNoZWRTdWdnZXN0ZWRGaWxlbmFtZUZvclVSTChjb25zdCBV
UkwmKQotewotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuIFN0cmluZygpOwotfQot
Ci1SZWZQdHI8U2hhcmVkQnVmZmVyPiBXZWJQYWdlOjpjYWNoZWRSZXNwb25zZURhdGFGb3JVUkwo
Y29uc3QgVVJMJikKLXsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiBudWxscHRy
OwotfQotCiBTdHJpbmcgV2ViUGFnZTo6cGxhdGZvcm1Vc2VyQWdlbnQoY29uc3QgVVJMJikgY29u
c3QKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nlc3NDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9XZWJQcm9jZXNzQ29jb2EubW0KaW5kZXggZjVmYWQzYzUxMGEwNTU5NDE5OTdi
MTg0ZWJjZDNhZjczMmE2YzI1My4uMzIyNTlkMjY5NDAwMDI0NWM3YTJlOTQ4M2VhZjU0NTE1MThm
NzY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1dlYlByb2Nl
c3NDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvV2ViUHJvY2Vz
c0NvY29hLm1tCkBAIC0xNDcsNiArMTQ3LDcgQEAgdm9pZCBXZWJQcm9jZXNzOjpwbGF0Zm9ybUlu
aXRpYWxpemVXZWJQcm9jZXNzKFdlYlByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmJiBwYXIKICAg
ICAgICAgSlNDOjpwcm9jZXNzQ29uZmlnRmlsZShqYXZhU2NyaXB0Q29uZmlnRmlsZS5sYXRpbjEo
KS5kYXRhKCksICJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQiLCBwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc0J1bmRsZUlkZW50aWZpZXIubGF0aW4xKCkuZGF0YSgpKTsKICAgICB9CiAKKyAgICAvLyBE
aXNhYmxlIE5TVVJMQ2FjaGUuCiAgICAgYXV0byB1cmxDYWNoZSA9IGFkb3B0TlMoW1tOU1VSTENh
Y2hlIGFsbG9jXSBpbml0V2l0aE1lbW9yeUNhcGFjaXR5OjAgZGlza0NhcGFjaXR5OjAgZGlza1Bh
dGg6bmlsXSk7CiAgICAgW05TVVJMQ2FjaGUgc2V0U2hhcmVkVVJMQ2FjaGU6dXJsQ2FjaGUuZ2V0
KCldOwogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>