<?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>192509</bug_id>
          
          <creation_ts>2018-12-07 12:12:09 -0800</creation_ts>
          <short_desc>Add SPI to allow the client to set the user-agent at main frame level, from the UIProcess</short_desc>
          <delta_ts>2018-12-10 13:26:49 -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>beidson</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>japhet</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1486109</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 12:12:09 -0800</bug_when>
    <thetext>Add SPI to allow the client to set the user-agent at frame level, from the UIProcess instead of doing it at resource-level from the injected bundle.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486110</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 12:12:30 -0800</bug_when>
    <thetext>&lt;rdar://problem/46500832&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486112</commentid>
    <comment_count>2</comment_count>
      <attachid>356829</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 12:22:24 -0800</bug_when>
    <thetext>Created attachment 356829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486113</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-07 12:23:29 -0800</bug_when>
    <thetext>Attachment 356829 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:923:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:934:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:936:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:947:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486223</commentid>
    <comment_count>4</comment_count>
      <attachid>356829</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-07 16:42:33 -0800</bug_when>
    <thetext>Comment on attachment 356829
Patch

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

&gt; Source/WebCore/loader/FrameLoader.cpp:2667
&gt;  String FrameLoader::userAgent(const URL&amp; url) const
&gt;  {
&gt; +    if (auto* documentLoader = activeDocumentLoader()) {

I think we will want subframes to have the same user agent as their parent?  I think this should go to the main frame&apos;s active document loader and have a test.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486229</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 16:45:31 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #4)
&gt; Comment on attachment 356829 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=356829&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2667
&gt; &gt;  String FrameLoader::userAgent(const URL&amp; url) const
&gt; &gt;  {
&gt; &gt; +    if (auto* documentLoader = activeDocumentLoader()) {
&gt; 
&gt; I think we will want subframes to have the same user agent as their parent? 
&gt; I think this should go to the main frame&apos;s active document loader and have a
&gt; test.

decidePolicyForNavigationAction is per-frame? So why does it make sense for the userAgent provided by decidePolicyForNavigationAction handler to impact the whole page?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486233</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 16:46:31 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #5)
&gt; (In reply to Alex Christensen from comment #4)
&gt; &gt; Comment on attachment 356829 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=356829&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/WebCore/loader/FrameLoader.cpp:2667
&gt; &gt; &gt;  String FrameLoader::userAgent(const URL&amp; url) const
&gt; &gt; &gt;  {
&gt; &gt; &gt; +    if (auto* documentLoader = activeDocumentLoader()) {
&gt; &gt; 
&gt; &gt; I think we will want subframes to have the same user agent as their parent? 
&gt; &gt; I think this should go to the main frame&apos;s active document loader and have a
&gt; &gt; test.
&gt; 
&gt; decidePolicyForNavigationAction is per-frame? So why does it make sense for
&gt; the userAgent provided by decidePolicyForNavigationAction handler to impact
&gt; the whole page?

I think the current design makes sense from an API point-of-view since decidePolicyForNavigationAction is per-frame. If the client want the user-agent to be the same for all frames, my current design still allows them to do so.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486239</commentid>
    <comment_count>7</comment_count>
      <attachid>356829</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-07 16:54:47 -0800</bug_when>
    <thetext>Comment on attachment 356829
Patch

If that&apos;s what the client of this SPI wants we should make the test have different a user agent for the iframe and verify the correct one is sent.  I&apos;m curious what the user agent on the main resource of the iframe will be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486240</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-07 16:58:16 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #7)
&gt; Comment on attachment 356829 [details]
&gt; Patch
&gt; 
&gt; If that&apos;s what the client of this SPI wants we should make the test have
&gt; different a user agent for the iframe and verify the correct one is sent. 
&gt; I&apos;m curious what the user agent on the main resource of the iframe will be.

To be clear, per-frame user-agent is not what Safari wants. However, this is what seem to make sense from an API point of view, if we add this to WebsitePolicies and thus to decidePolicyForNavigationAction.

So we do not need this flexibility, I however do not know how to make the API not confusing if we to it only for main frame.

If we keep the API as-is, I&apos;d be happy to write an extra API test coverage different user agents for different frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486577</commentid>
    <comment_count>9</comment_count>
      <attachid>356962</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-10 08:50:38 -0800</bug_when>
    <thetext>Created attachment 356962
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486579</commentid>
    <comment_count>10</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-10 08:51:58 -0800</bug_when>
    <thetext>Attachment 356962 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:929:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:940:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:942:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:953:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486587</commentid>
    <comment_count>11</comment_count>
      <attachid>356962</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-12-10 09:13:34 -0800</bug_when>
    <thetext>Comment on attachment 356962
Patch

In NavigationState::NavigationClient::decidePolicyForNavigationAction we raise an ObjC exception if the websiteDataStore was set on a non-mainframe navigation, because that is similarly nonsensical.  We could do something like that with the user agent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486589</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-10 09:22:29 -0800</bug_when>
    <thetext>(In reply to Alex Christensen from comment #11)
&gt; Comment on attachment 356962 [details]
&gt; Patch
&gt; 
&gt; In NavigationState::NavigationClient::decidePolicyForNavigationAction we
&gt; raise an ObjC exception if the websiteDataStore was set on a non-mainframe
&gt; navigation, because that is similarly nonsensical.  We could do something
&gt; like that with the user agent.

Fine by me. I&apos;ll look into doing this since it would make the SPI a little bit easier to adopt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486591</commentid>
    <comment_count>13</comment_count>
      <attachid>356966</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2018-12-10 09:31:18 -0800</bug_when>
    <thetext>Created attachment 356966
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486594</commentid>
    <comment_count>14</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2018-12-10 09:32:47 -0800</bug_when>
    <thetext>Attachment 356966 did not pass style-queue:


ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:925:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:936:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:938:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
ERROR: Tools/TestWebKitAPI/Tests/WebKitCocoa/WebsitePolicies.mm:949:  Multi-line string (&quot;...&quot;) found.  This lint script doesn&apos;t do well with such strings, and may give bogus warnings.  They&apos;re ugly and unnecessary, and you should use concatenation instead&quot;.  [readability/multiline_string] [5]
Total errors found: 4 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486692</commentid>
    <comment_count>15</comment_count>
      <attachid>356966</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-10 13:26:47 -0800</bug_when>
    <thetext>Comment on attachment 356966
Patch

Clearing flags on attachment: 356966

Committed r239046: &lt;https://trac.webkit.org/changeset/239046&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1486693</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-12-10 13:26:49 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356829</attachid>
            <date>2018-12-07 12:22:24 -0800</date>
            <delta_ts>2018-12-10 08:50:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192509-20181207122223.patch</filename>
            <type>text/plain</type>
            <size>17032</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkM2ZlNGIzYTA2MGI1
MDVmZGExZjk0N2U1MDA2NTkyYjAzZTM4NC4uNDIzYzRlMzRlMmU5OTg1YTE1NzcwOTNkZjZhZjMz
YzRlYjlmMTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEyLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBhbGxvdyB0
aGUgY2xpZW50IHRvIHNldCB0aGUgdXNlci1hZ2VudCBhdCBmcmFtZSBsZXZlbCwgZnJvbSB0aGUg
VUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI1MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2NTAwODMyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0Q3VzdG9tVXNlckFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjdXN0b21Vc2VyQWdlbnQg
Y29uc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXNlckFnZW50IGNvbnN0KToKKwogMjAxOC0xMi0wNyAgVGhpYmF1
bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBJ
bXBsZW1lbnQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciB0byBhbGxvdyBicmlkZ2lu
ZyBNZWRpYVN0cmVhbSBhbmQgdGhlIFdlYkF1ZGlvIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTg5NjAwM2Ri
Y2JkMGY2MjExNjYwYzU2ZDhhODBhMDI5MTJjOGI1Ny4uYzc0YWI1NzYwMGQ2NTlkYTMzZTY0ZmM1
MzI3Mjc5MTM5MmVlMTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0xMi0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gYWxs
b3cgdGhlIGNsaWVudCB0byBzZXQgdGhlIHVzZXItYWdlbnQgYXQgZnJhbWUgbGV2ZWwsIGZyb20g
dGhlIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkyNTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjUwMDgzMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU1BJIHRvIGFsbG93
IHRoZSBjbGllbnQgdG8gc2V0IHRoZSB1c2VyLWFnZW50IGF0IGZyYW1lIGxldmVsLCBmcm9tIHRo
ZSBVSVByb2Nlc3MgaW5zdGVhZCBvZiBkb2luZworICAgICAgICBpdCBhdCByZXNvdXJjZS1sZXZl
bCBmcm9tIHRoZSBpbmplY3RlZCBidW5kbGUuCisKKyAgICAgICAgVGhlIGN1c3RvbSB1c2VyLWFn
ZW50IHN0cmluZyBjYW4gbm93IGJlIHNldCBvbiBfV0tXZWJzaXRlUG9saWNpZXMgZHVyaW5nIHRo
ZQorICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGFzIGltcGFjdHMgdGhp
cyBtYWluIHJlc291cmNlIGxvYWQgYXMgd2VsbCBhcyBpdHMKKyAgICAgICAgZnV0dXJlIHN1YnJl
c291cmNlIGxvYWRzLgorCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNp
ZXM6OmRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAg
ICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAg
KC1bX1dLV2Vic2l0ZVBvbGljaWVzIGN1c3RvbVVzZXJBZ2VudF0pOgorCiAyMDE4LTEyLTA2ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgSW5qZWN0ZWQgYnVu
ZGxlIGZvciBXZWJLaXRUZXN0UnVubmVyIGxlYWtzIFdLVHlwZVJlZiBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGE2MmZmNDQyOGI0YzAwYzc0NDJjMTcz
N2RiZjBmYzA4MTRiMGVjNmIuLjUwMWE1MjczNzhmOTgxNjExNjZmMGExY2JlNzYxNDI1MTQxMTA1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yNjQsNiArMjY0
LDkgQEAgcHVibGljOgogICAgIEF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hdXRvcGxheVBvbGljeTsgfQogICAgIHZvaWQgc2V0QXV0b3BsYXlQb2xpY3ko
QXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBwb2xpY3k7IH0KIAor
ICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50
KSB7IG1fY3VzdG9tVXNlckFnZW50ID0gY3VzdG9tVXNlckFnZW50OyB9CisgICAgY29uc3QgU3Ry
aW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJBZ2VudDsg
fQorCiAgICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9CiAgICAgdm9pZCBzZXRB
bGxvd2VkQXV0b3BsYXlRdWlya3MoT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRRdWly
a3MpIHsgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBhbGxvd2VkUXVpcmtzOyB9CiAKQEAgLTUz
Miw2ICs1MzUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U3R5bGVT
aGVldENvbnRlbnRzPj4gbV9wZW5kaW5nTmFtZWRDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldHM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4+
PiBtX3BlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3RvcnM7CiAjZW5kaWYK
KyAgICBTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgYm9vbCBtX3VzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBv
bGljeSB7IEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07CiAgICAgT3B0aW9uU2V0PEF1dG9wbGF5
UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggYTg1N2U4ZmVlYTk2ZTFhNGJmYzI3YjFiM2E3NzE1NGUzMjcxNTYwYi4u
OTE1ZGRjYWUzNzdiZWQ3NzQ1MWI5ZDhlZjRkMWFmNjNmMzNmYmUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjY0LDYgKzI2NjQsMTIgQEAgaW50IEZyYW1lTG9h
ZGVyOjpudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdAogCiBT
dHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKKyAg
ICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7Cisg
ICAgICAgIGF1dG8mIGN1c3RvbVVzZXJBZ2VudCA9IGRvY3VtZW50TG9hZGVyLT5jdXN0b21Vc2Vy
QWdlbnQoKTsKKyAgICAgICAgaWYgKCFjdXN0b21Vc2VyQWdlbnQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGN1c3RvbVVzZXJBZ2VudDsKKyAgICB9CisKICAgICByZXR1cm4gbV9jbGll
bnQudXNlckFnZW50KHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBv
bGljaWVzRGF0YS5jcHAKaW5kZXggNjA3M2IyZmE1MTJkNTUxN2Y1YWIwOTdlOThkNjRiNWQ5ZjM3
MDk4Zi4uZGY2ZDNhZTJjMTg3ZGE0MDViNTQ4ZDY3NzRhODVkMjk1ZWRhZGExZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgdm9pZCBXZWJzaXRlUG9saWNpZXNEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIg
PDwgcG9wVXBQb2xpY3k7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
czsKKyAgICBlbmNvZGVyIDw8IGN1c3RvbVVzZXJBZ2VudDsKIH0KIAogc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNzUsNiArNzYsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWMK
ICAgICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50OworICAgIGRlY29kZXIg
Pj4gY3VzdG9tVXNlckFnZW50OworICAgIGlmICghY3VzdG9tVXNlckFnZW50KQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92
ZSgqY29udGVudEJsb2NrZXJzRW5hYmxlZCksCkBAIC04MywxMiArODksMTQgQEAgc3RkOjpvcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqY3VzdG9tSGVhZGVyRmllbGRzKSwKICAg
ICAgICAgV1RGTW92ZSgqcG9wVXBQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKCp3ZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyksCisgICAgICAgIFdURk1vdmUoKmN1c3RvbVVzZXJBZ2VudCksCiAg
ICAgfSB9OwogfQogCiB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExv
YWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzLCBXZWJDb3JlOjpEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3Vz
dG9tSGVhZGVyRmllbGRzKFdURk1vdmUod2Vic2l0ZVBvbGljaWVzLmN1c3RvbUhlYWRlckZpZWxk
cykpOworICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbVVzZXJBZ2VudCh3ZWJzaXRlUG9saWNp
ZXMuY3VzdG9tVXNlckFnZW50KTsKICAgICAKICAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBieSByZWxv
YWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgogICAgIGlmIChkb2N1bWVudExvYWRlci51
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlUG9saWNpZXNEYXRhLmgKaW5kZXggNDQ3ZGY2NWJmNGQxMTBhNmZmMjJjMzczMjhmZDM3MjRj
YjU5YjkzMy4uNzk0NGM0NjZlYzYwZTE2MzdhNWE5MzQyOGExN2ZhNmRhNjRkMjQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaApAQCAtNTIsNiArNTIsNyBA
QCBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YSB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBI
ZWFkZXJGaWVsZD4gY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFdlYnNpdGVQb3BVcFBvbGljeSBw
b3BVcFBvbGljeSB7IFdlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwogICAgIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOworICAgIFN0cmluZyBjdXN0b21Vc2VyQWdlbnQ7CiAgICAgCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCA3NDBiNmI1NmU3NmM3
MjlhNGYxNGE1Y2Q1YzU0ZTM4ZDlmOWE4NmE2Li5mNDQxNDQyNWE5ZDRhYmZhY2JiYTM4NzZmZTdj
NGMyOWNjNDUxMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xp
Y2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICAgICBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1ldGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKTsKLSAgICByZXR1cm4geyBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKCksIGFsbG93ZWRBdXRvcGxheVF1aXJrcygpLCBhdXRvcGxheVBvbGljeSgp
LCBjdXN0b21IZWFkZXJGaWVsZHMoKSwgcG9wVXBQb2xpY3koKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSB9OworICAgIHJldHVybiB7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwgYWxsb3dlZEF1dG9w
bGF5UXVpcmtzKCksIGF1dG9wbGF5UG9saWN5KCksIGN1c3RvbUhlYWRlckZpZWxkcygpLCBwb3BV
cFBvbGljeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX2N1c3RvbVVzZXJBZ2VudCB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBv
bGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmgKaW5kZXggOTVhZTFhMWVhMTBhYjdiNzFlNzkxMGU5NzNiMzE3ZjQyZDgzNThlMy4uNWY2NmFi
ZWJhNjE0YjhhNTE1Njc2Y2YwYWZjN2EwMDE5NmQ5ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaApAQCAtNjksNiArNjksOSBAQCBw
dWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgZGF0YSgpOwogCisgICAg
dm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2Vu
dCkgeyBtX2N1c3RvbVVzZXJBZ2VudCA9IGN1c3RvbVVzZXJBZ2VudDsgfQorICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJB
Z2VudDsgfQorCiBwcml2YXRlOgogICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CiAKQEAgLTc4LDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6
SFRUUEhlYWRlckZpZWxkPiBtX2N1c3RvbUhlYWRlckZpZWxkczsKICAgICBXZWJLaXQ6OldlYnNp
dGVQb3BVcFBvbGljeSBtX3BvcFVwUG9saWN5IHsgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3k6
OkRlZmF1bHQgfTsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFnZW50OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLmgKaW5kZXggZmU5NTcwNWQzNzc1MDVjN2IzYjljMzU3NjE5NzUz
NDZjMzY5Y2I1Yi4uZWFkNTAxOTE4NjMwNzlhOTQ0ZDU2YmY3ZTFkOTkyZjA3YTk1MDJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xp
Y2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXMuaApAQCAtNTcsNiArNTcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEw
LjEyLjMpLCBpb3MoMTAuMykpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICpjdXN0b21IZWFkZXJGaWVsZHMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
YykgX1dLV2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFdL
V2Vic2l0ZURhdGFTdG9yZSAqd2Vic2l0ZURhdGFTdG9yZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMy40KSwgaW9zKDExLjMpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqY3VzdG9tVXNlckFnZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDM3NWYwOGRm
NGZmYzc0NGVlYzE0ZDcxYWRlYjc1NzdhY2ZhMTdkMGMuLjAzYmQxNzc5NDJlNWJhYTkxZDVkNjli
MDhhNjA3MTUzZDgxNWNkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTgzLDYgKzE4MywxNiBAQCAt
ICh2b2lkKXNldFdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVE
YXRhU3RvcmUKICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRXZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKIH0KIAorLSAodm9pZClzZXRD
dXN0b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50Cit7CisgICAgX3dlYnNp
dGVQb2xpY2llcy0+c2V0Q3VzdG9tVXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7Cit9CisKKy0g
KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50Cit7CisgICAgcmV0dXJuIF93ZWJzaXRlUG9saWNp
ZXMtPmN1c3RvbVVzZXJBZ2VudCgpOworfQorCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7
CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCA9ICVkPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBz
ZWxmLCBzZWxmLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk3YTY5MmJhZDAxZGMzMTdlOTA4YjI2ZjAx
MzE4YmE3ZWI1MDZhNjQuLmZhMzA4MzFjODAyM2ZhOThkM2Q5OTliZDY2NWZkNWFjOGQxZDUzNzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOC0xMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzZXQgdGhlIHVzZXItYWdl
bnQgYXQgZnJhbWUgbGV2ZWwsIGZyb20gdGhlIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNTA5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjUwMDgzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bRGF0YU1h
cHBpbmdTY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOnRvRGF0YTpdKToKKyAg
ICAgICAgKC1bRGF0YU1hcHBpbmdTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVU
YXNrOl0pOgorICAgICAgICAoLVtEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9w
VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIHdlYlZpZXc6ZGlk
RmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKHdlYnNpdGVEYXRhU3RvcmVUZXN0V2ViVmll
dyk6IERlbGV0ZWQuCisKIDIwMTgtMTItMDYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIENvbnNlY3V0aXZlIER1bXBSZW5kZXJUcmVlIGNyYXNoZXMgYXJl
IGhhcHBlbmluZyBhZ2FpbiBvbiBXaW5DYWlybyBCdWlsZEJvdHMgc2luY2UgcjIzODkwMwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9s
aWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQ
b2xpY2llcy5tbQppbmRleCBmMTQ2Yjc5NmU5MGMyNTM3YzdkMmE4ZGJlZTQ1YjAxNzdkZTAxZTA0
Li4xNGNjMzllOGUwYTUyMGRmNWRlMmMzYzdiMDI1MDUxNzIyZDE0M2RkIDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2ll
cy5tbQpAQCAtMzgsOCArMzgsMTAgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGljaWVzLmg+
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTU0LDYgKzU2LDcgQEAgQGVuZAogCiBzdGF0aWMgYm9vbCBkb25lQ29tcGlsaW5nOwog
c3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsKK3N0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlv
bjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPF9XS0F1dG9wbGF5
RXZlbnQ+IHJlY2VpdmVkQXV0b3BsYXlFdmVudDsKQEAgLTg1OSw2ICs4NjIsMTE2IEBAIFRFU1Qo
V2ViS2l0LCBDdXN0b21IZWFkZXJGaWVsZHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZ0aGlyZFRlc3REb25lKTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGxvYWRDb3VudDsKKworQGlu
dGVyZmFjZSBEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVI
YW5kbGVyPiB7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU0RhdGEgKj4+IF9kYXRh
TWFwcGluZ3M7Cit9CistICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAq
KXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGE7CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIKKworLSAodm9pZClhZGRNYXBwaW5nRnJvbVVS
TFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCit7
CisgICAgX2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIE5TVVJMICpmaW5hbFVSTCA9
IHRhc2sucmVxdWVzdC5VUkw7CisKKyAgICArK2xvYWRDb3VudDsKKyAgICBFWFBFQ1RfU1RSRVEo
IkZvbyBDdXN0b20gVXNlckFnZW50IiwgW1t0YXNrLnJlcXVlc3QgdmFsdWVGb3JIVFRQSGVhZGVy
RmllbGQ6QCJVc2VyLUFnZW50Il0gVVRGOFN0cmluZ10pOworCisgICAgYXV0byByZXNwb25zZSA9
IGFkb3B0TlMoW1tOU1VSTFJlc3BvbnNlIGFsbG9jXSBpbml0V2l0aFVSTDpmaW5hbFVSTCBNSU1F
VHlwZTpAInRleHQvaHRtbCIgZXhwZWN0ZWRDb250ZW50TGVuZ3RoOjEgdGV4dEVuY29kaW5nTmFt
ZTpuaWxdKTsKKyAgICBbdGFzayBkaWRSZWNlaXZlUmVzcG9uc2U6cmVzcG9uc2UuZ2V0KCldOwor
CisgICAgaWYgKGF1dG8gZGF0YSA9IF9kYXRhTWFwcGluZ3MuZ2V0KFtmaW5hbFVSTCBhYnNvbHV0
ZVN0cmluZ10pKQorICAgICAgICBbdGFzayBkaWRSZWNlaXZlRGF0YTpkYXRhLmdldCgpXTsKKyAg
ICBlbHNlCisgICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOltAIkhlbGxvIiBkYXRhVXNpbmdF
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ11dOworICAgIFt0YXNrIGRpZEZpbmlzaF07Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9wVVJMU2NoZW1lVGFz
azooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworfQorCitAZW5kCisKK0BpbnRlcmZhY2Ug
Q3VzdG9tVXNlckFnZW50RGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGU+
IHsKK30KK0BlbmQKKworQGltcGxlbWVudGF0aW9uIEN1c3RvbVVzZXJBZ2VudERlbGVnYXRlCisK
Ky0gKHZvaWQpX3dlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlvbiB1c2Vy
SW5mbzooaWQgPE5TU2VjdXJlQ29kaW5nPil1c2VySW5mbyBkZWNpc2lvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSwgX1dLV2Vic2l0ZVBvbGljaWVzICopKWRlY2lz
aW9uSGFuZGxlcgoreworICAgIF9XS1dlYnNpdGVQb2xpY2llcyAqd2Vic2l0ZVBvbGljaWVzID0g
W1tbX1dLV2Vic2l0ZVBvbGljaWVzIGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV07CisgICAgW3dl
YnNpdGVQb2xpY2llcyBzZXRDdXN0b21Vc2VyQWdlbnQ6QCJGb28gQ3VzdG9tIFVzZXJBZ2VudCJd
OworICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vi
c2l0ZVBvbGljaWVzKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IGRpZEZpbmlzaE5hdmlnYXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBm
aW5pc2hlZE5hdmlnYXRpb24gPSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFy
KiBjdXN0b21Vc2VyQWdlbnRNYWluRnJhbWVUZXN0Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKKzxz
Y3JpcHQgc3JjPSJ0ZXN0Oi8vd3d3LndlYmtpdC5vcmcvc2NyaXB0LmpzIj48L3NjcmlwdD4KKzxp
bWcgc3JjPSJ0ZXN0Oi8vd3d3LndlYmtpdC5vcmcvaW1hZ2UucG5nIj48L2ltZz4KKzxpZnJhbWUg
c3JjPSJ0ZXN0Oi8vd3d3LmFwcGxlLmNvbS9zdWJmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxzY3Jp
cHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGZl
dGNoKCJ0ZXN0Oi8vd3d3LndlYmtpdC5vcmcvZmV0Y2hSZXNvdXJjZS5odG1sIik7CisgICAgfSwg
MCk7Cit9Cis8L3NjcmlwdD4KKylURVNUUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciog
Y3VzdG9tVXNlckFnZW50U3ViRnJhbWVUZXN0Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKKzxzY3Jp
cHQgc3JjPSJ0ZXN0Oi8vd3d3LmFwcGxlLmNvbS9zY3JpcHQuanMiPjwvc2NyaXB0PgorPGltZyBz
cmM9InRlc3Q6Ly93d3cuYXBwbGUuY29tL2ltYWdlLnBuZyI+PC9pbWc+Cis8aWZyYW1lIHNyYz0i
dGVzdDovL3d3dy5hcHBsZS5jb20vc3ViZnJhbWUyLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4K
K29ubG9hZCA9ICgpID0+IHsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgZmV0Y2go
InRlc3Q6Ly93d3cuYXBwbGUuY29tL2ZldGNoUmVzb3VyY2UuaHRtbCIpOworICAgIH0sIDApOwor
fQorPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xp
Y2llc0N1c3RvbVVzZXJBZ2VudCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5T
KFtbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBzY2hl
bWVIYW5kbGVyID0gYWRvcHROUyhbW0RhdGFNYXBwaW5nU2NoZW1lSGFuZGxlciBhbGxvY10gaW5p
dF0pOworICAgIFtzY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAidGVzdDov
L3d3dy53ZWJraXQub3JnL21haW4uaHRtbCIgdG9EYXRhOmN1c3RvbVVzZXJBZ2VudE1haW5GcmFt
ZVRlc3RCeXRlc107CisgICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6
QCJ0ZXN0Oi8vd3d3LmFwcGxlLmNvbS9zdWJmcmFtZS5odG1sIiB0b0RhdGE6Y3VzdG9tVXNlckFn
ZW50U3ViRnJhbWVUZXN0Qnl0ZXNdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhh
bmRsZXI6c2NoZW1lSGFuZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCldKTsKKworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tVXNlckFnZW50
RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgbG9hZENvdW50ID0gMDsKKyAgICBOU1VSTFJlcXVl
c3QgKnJlcXVlc3QgPSBbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRo
U3RyaW5nOkAidGVzdDovL3d3dy53ZWJraXQub3JnL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmll
dyBsb2FkUmVxdWVzdDpyZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZmluaXNoZWROYXZpZ2F0aW9uKTsKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKwor
ICAgIHdoaWxlIChsb2FkQ291bnQgIT0gOVUpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnNwaW5SdW5Mb29wKCk7CisgICAgbG9hZENvdW50ID0gMDsKK30KKwogQGludGVyZmFjZSBQb3BV
cFBvbGljaWVzRGVsZWdhdGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlE
ZWxlZ2F0ZVByaXZhdGU+CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgX1dLV2Vic2l0ZVBv
cFVwUG9saWN5KF5wb3BVcFBvbGljeUZvclVSTCkoTlNVUkwgKik7CiBAZW5kCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356962</attachid>
            <date>2018-12-10 08:50:38 -0800</date>
            <delta_ts>2018-12-10 09:27:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192509-20181210085037.patch</filename>
            <type>text/plain</type>
            <size>17378</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkM2ZlNGIzYTA2MGI1
MDVmZGExZjk0N2U1MDA2NTkyYjAzZTM4NC4uNDIzYzRlMzRlMmU5OTg1YTE1NzcwOTNkZjZhZjMz
YzRlYjlmMTJmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEyLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBhbGxvdyB0
aGUgY2xpZW50IHRvIHNldCB0aGUgdXNlci1hZ2VudCBhdCBmcmFtZSBsZXZlbCwgZnJvbSB0aGUg
VUlQcm9jZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTI1MDkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzQ2NTAwODMyPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9h
ZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0Q3VzdG9tVXNlckFn
ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpjdXN0b21Vc2VyQWdlbnQg
Y29uc3QpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6dXNlckFnZW50IGNvbnN0KToKKwogMjAxOC0xMi0wNyAgVGhpYmF1
bHQgU2F1bmllciAgPHRzYXVuaWVyQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1dQRV1bR1RLXSBJ
bXBsZW1lbnQgV2ViQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lciB0byBhbGxvdyBicmlkZ2lu
ZyBNZWRpYVN0cmVhbSBhbmQgdGhlIFdlYkF1ZGlvIEFQSXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNTg5NjAwM2Ri
Y2JkMGY2MjExNjYwYzU2ZDhhODBhMDI5MTJjOGI1Ny4uYzc0YWI1NzYwMGQ2NTlkYTMzZTY0ZmM1
MzI3Mjc5MTM5MmVlMTBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBAQAorMjAxOC0xMi0wNyAg
Q2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBTUEkgdG8gYWxs
b3cgdGhlIGNsaWVudCB0byBzZXQgdGhlIHVzZXItYWdlbnQgYXQgZnJhbWUgbGV2ZWwsIGZyb20g
dGhlIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkyNTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjUwMDgzMj4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgU1BJIHRvIGFsbG93
IHRoZSBjbGllbnQgdG8gc2V0IHRoZSB1c2VyLWFnZW50IGF0IGZyYW1lIGxldmVsLCBmcm9tIHRo
ZSBVSVByb2Nlc3MgaW5zdGVhZCBvZiBkb2luZworICAgICAgICBpdCBhdCByZXNvdXJjZS1sZXZl
bCBmcm9tIHRoZSBpbmplY3RlZCBidW5kbGUuCisKKyAgICAgICAgVGhlIGN1c3RvbSB1c2VyLWFn
ZW50IHN0cmluZyBjYW4gbm93IGJlIHNldCBvbiBfV0tXZWJzaXRlUG9saWNpZXMgZHVyaW5nIHRo
ZQorICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGFzIGltcGFjdHMgdGhp
cyBtYWluIHJlc291cmNlIGxvYWQgYXMgd2VsbCBhcyBpdHMKKyAgICAgICAgZnV0dXJlIHN1YnJl
c291cmNlIGxvYWRzLgorCisgICAgICAgICogU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjplbmNvZGUgY29uc3QpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJzaXRlUG9saWNpZXNEYXRhOjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAg
ICAgICAqIFNoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwOgorICAgICAgICAoQVBJOjpXZWJzaXRlUG9saWNp
ZXM6OmRhdGEpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAg
ICAgKC1bX1dLV2Vic2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpdKToKKyAgICAgICAg
KC1bX1dLV2Vic2l0ZVBvbGljaWVzIGN1c3RvbVVzZXJBZ2VudF0pOgorCiAyMDE4LTEyLTA2ICBE
YXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgSW5qZWN0ZWQgYnVu
ZGxlIGZvciBXZWJLaXRUZXN0UnVubmVyIGxlYWtzIFdLVHlwZVJlZiBvYmplY3RzCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGE2MmZmNDQyOGI0YzAwYzc0NDJjMTcz
N2RiZjBmYzA4MTRiMGVjNmIuLjUwMWE1MjczNzhmOTgxNjExNjZmMGExY2JlNzYxNDI1MTQxMTA1
ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yNjQsNiArMjY0
LDkgQEAgcHVibGljOgogICAgIEF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29uc3Qg
eyByZXR1cm4gbV9hdXRvcGxheVBvbGljeTsgfQogICAgIHZvaWQgc2V0QXV0b3BsYXlQb2xpY3ko
QXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBwb2xpY3k7IH0KIAor
ICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFnZW50
KSB7IG1fY3VzdG9tVXNlckFnZW50ID0gY3VzdG9tVXNlckFnZW50OyB9CisgICAgY29uc3QgU3Ry
aW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJBZ2VudDsg
fQorCiAgICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJrcygp
IGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9CiAgICAgdm9pZCBzZXRB
bGxvd2VkQXV0b3BsYXlRdWlya3MoT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRRdWly
a3MpIHsgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBhbGxvd2VkUXVpcmtzOyB9CiAKQEAgLTUz
Miw2ICs1MzUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U3R5bGVT
aGVldENvbnRlbnRzPj4gbV9wZW5kaW5nTmFtZWRDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldHM7
CiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJfdD4+
PiBtX3BlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3RvcnM7CiAjZW5kaWYK
KyAgICBTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgYm9vbCBtX3VzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxheVBv
bGljeSB7IEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07CiAgICAgT3B0aW9uU2V0PEF1dG9wbGF5
UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxv
YWRlci5jcHAKaW5kZXggYTg1N2U4ZmVlYTk2ZTFhNGJmYzI3YjFiM2E3NzE1NGUzMjcxNTYwYi4u
OTE1ZGRjYWUzNzdiZWQ3NzQ1MWI5ZDhlZjRkMWFmNjNmMzNmYmUzZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjY0LDYgKzI2NjQsMTIgQEAgaW50IEZyYW1lTG9h
ZGVyOjpudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdAogCiBT
dHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsKKyAg
ICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBhY3RpdmVEb2N1bWVudExvYWRlcigpKSB7Cisg
ICAgICAgIGF1dG8mIGN1c3RvbVVzZXJBZ2VudCA9IGRvY3VtZW50TG9hZGVyLT5jdXN0b21Vc2Vy
QWdlbnQoKTsKKyAgICAgICAgaWYgKCFjdXN0b21Vc2VyQWdlbnQuaXNFbXB0eSgpKQorICAgICAg
ICAgICAgcmV0dXJuIGN1c3RvbVVzZXJBZ2VudDsKKyAgICB9CisKICAgICByZXR1cm4gbV9jbGll
bnQudXNlckFnZW50KHVybCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYnNpdGVQb2xpY2llc0RhdGEuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBv
bGljaWVzRGF0YS5jcHAKaW5kZXggNjA3M2IyZmE1MTJkNTUxN2Y1YWIwOTdlOThkNjRiNWQ5ZjM3
MDk4Zi4uZGY2ZDNhZTJjMTg3ZGE0MDViNTQ4ZDY3NzRhODVkMjk1ZWRhZGExZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAKQEAgLTQyLDYgKzQyLDcg
QEAgdm9pZCBXZWJzaXRlUG9saWNpZXNEYXRhOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogICAgIGVuY29kZXIgPDwgY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIGVuY29kZXIg
PDwgcG9wVXBQb2xpY3k7CiAgICAgZW5jb2RlciA8PCB3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVy
czsKKyAgICBlbmNvZGVyIDw8IGN1c3RvbVVzZXJBZ2VudDsKIH0KIAogc3RkOjpvcHRpb25hbDxX
ZWJzaXRlUG9saWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyKQpAQCAtNzUsNiArNzYsMTEgQEAgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9s
aWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWMK
ICAgICBkZWNvZGVyID4+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogICAgIGlmICghd2Vi
c2l0ZURhdGFTdG9yZVBhcmFtZXRlcnMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gY3VzdG9tVXNlckFnZW50OworICAgIGRlY29kZXIg
Pj4gY3VzdG9tVXNlckFnZW50OworICAgIGlmICghY3VzdG9tVXNlckFnZW50KQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIAogICAgIHJldHVybiB7IHsKICAgICAgICAgV1RGTW92
ZSgqY29udGVudEJsb2NrZXJzRW5hYmxlZCksCkBAIC04MywxMiArODksMTQgQEAgc3RkOjpvcHRp
b25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBXZWJzaXRlUG9saWNpZXNEYXRhOjpkZWNvZGUoSVBD
OjpEZWNvZGVyJiBkZWMKICAgICAgICAgV1RGTW92ZSgqY3VzdG9tSGVhZGVyRmllbGRzKSwKICAg
ICAgICAgV1RGTW92ZSgqcG9wVXBQb2xpY3kpLAogICAgICAgICBXVEZNb3ZlKCp3ZWJzaXRlRGF0
YVN0b3JlUGFyYW1ldGVycyksCisgICAgICAgIFdURk1vdmUoKmN1c3RvbVVzZXJBZ2VudCksCiAg
ICAgfSB9OwogfQogCiB2b2lkIFdlYnNpdGVQb2xpY2llc0RhdGE6OmFwcGx5VG9Eb2N1bWVudExv
YWRlcihXZWJzaXRlUG9saWNpZXNEYXRhJiYgd2Vic2l0ZVBvbGljaWVzLCBXZWJDb3JlOjpEb2N1
bWVudExvYWRlciYgZG9jdW1lbnRMb2FkZXIpCiB7CiAgICAgZG9jdW1lbnRMb2FkZXIuc2V0Q3Vz
dG9tSGVhZGVyRmllbGRzKFdURk1vdmUod2Vic2l0ZVBvbGljaWVzLmN1c3RvbUhlYWRlckZpZWxk
cykpOworICAgIGRvY3VtZW50TG9hZGVyLnNldEN1c3RvbVVzZXJBZ2VudCh3ZWJzaXRlUG9saWNp
ZXMuY3VzdG9tVXNlckFnZW50KTsKICAgICAKICAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0
ZW5zaW9uc0VuYWJsZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBieSByZWxv
YWRpbmcgd2l0aG91dCBjb250ZW50IGJsb2NrZXJzLgogICAgIGlmIChkb2N1bWVudExvYWRlci51
c2VyQ29udGVudEV4dGVuc2lvbnNFbmFibGVkKCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmggYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJz
aXRlUG9saWNpZXNEYXRhLmgKaW5kZXggNDQ3ZGY2NWJmNGQxMTBhNmZmMjJjMzczMjhmZDM3MjRj
YjU5YjkzMy4uNzk0NGM0NjZlYzYwZTE2MzdhNWE5MzQyOGExN2ZhNmRhNjRkMjQyNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaApAQCAtNTIsNiArNTIsNyBA
QCBzdHJ1Y3QgV2Vic2l0ZVBvbGljaWVzRGF0YSB7CiAgICAgVmVjdG9yPFdlYkNvcmU6OkhUVFBI
ZWFkZXJGaWVsZD4gY3VzdG9tSGVhZGVyRmllbGRzOwogICAgIFdlYnNpdGVQb3BVcFBvbGljeSBw
b3BVcFBvbGljeSB7IFdlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwogICAgIHN0ZDo6b3B0
aW9uYWw8V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0
ZXJzOworICAgIFN0cmluZyBjdXN0b21Vc2VyQWdlbnQ7CiAgICAgCiAgICAgdm9pZCBlbmNvZGUo
SVBDOjpFbmNvZGVyJikgY29uc3Q7CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2Vic2l0ZVBv
bGljaWVzRGF0YT4gZGVjb2RlKElQQzo6RGVjb2RlciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVzLmNwcAppbmRleCA3NDBiNmI1NmU3NmM3
MjlhNGYxNGE1Y2Q1YzU0ZTM4ZDlmOWE4NmE2Li5mNDQxNDQyNWE5ZDRhYmZhY2JiYTM4NzZmZTdj
NGMyOWNjNDUxMDBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJ
V2Vic2l0ZVBvbGljaWVzLmNwcApAQCAtNTYsNyArNTYsNyBAQCBXZWJLaXQ6OldlYnNpdGVQb2xp
Y2llc0RhdGEgV2Vic2l0ZVBvbGljaWVzOjpkYXRhKCkKICAgICBzdGQ6Om9wdGlvbmFsPFdlYktp
dDo6V2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM+IHBhcmFtZXRlcnM7CiAgICAgaWYgKG1fd2Vi
c2l0ZURhdGFTdG9yZSkKICAgICAgICAgcGFyYW1ldGVycyA9IG1fd2Vic2l0ZURhdGFTdG9yZS0+
d2Vic2l0ZURhdGFTdG9yZSgpLnBhcmFtZXRlcnMoKTsKLSAgICByZXR1cm4geyBjb250ZW50Qmxv
Y2tlcnNFbmFibGVkKCksIGFsbG93ZWRBdXRvcGxheVF1aXJrcygpLCBhdXRvcGxheVBvbGljeSgp
LCBjdXN0b21IZWFkZXJGaWVsZHMoKSwgcG9wVXBQb2xpY3koKSwgV1RGTW92ZShwYXJhbWV0ZXJz
KSB9OworICAgIHJldHVybiB7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwgYWxsb3dlZEF1dG9w
bGF5UXVpcmtzKCksIGF1dG9wbGF5UG9saWN5KCksIGN1c3RvbUhlYWRlckZpZWxkcygpLCBwb3BV
cFBvbGljeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpLCBtX2N1c3RvbVVzZXJBZ2VudCB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBv
bGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBvbGljaWVz
LmgKaW5kZXggOTVhZTFhMWVhMTBhYjdiNzFlNzkxMGU5NzNiMzE3ZjQyZDgzNThlMy4uNWY2NmFi
ZWJhNjE0YjhhNTE1Njc2Y2YwYWZjN2EwMDE5NmQ5ZTYwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaApAQCAtNjksNiArNjksOSBAQCBw
dWJsaWM6CiAKICAgICBXZWJLaXQ6OldlYnNpdGVQb2xpY2llc0RhdGEgZGF0YSgpOwogCisgICAg
dm9pZCBzZXRDdXN0b21Vc2VyQWdlbnQoY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2Vu
dCkgeyBtX2N1c3RvbVVzZXJBZ2VudCA9IGN1c3RvbVVzZXJBZ2VudDsgfQorICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJB
Z2VudDsgfQorCiBwcml2YXRlOgogICAgIFdlYnNpdGVQb2xpY2llcyhib29sIGNvbnRlbnRCbG9j
a2Vyc0VuYWJsZWQsIE9wdGlvblNldDxXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVF1aXJrPiwgV2Vi
S2l0OjpXZWJzaXRlQXV0b3BsYXlQb2xpY3ksIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmll
bGQ+JiYsIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5LCBSZWZQdHI8V2Vic2l0ZURhdGFTdG9y
ZT4mJik7CiAKQEAgLTc4LDYgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBWZWN0b3I8V2ViQ29yZTo6
SFRUUEhlYWRlckZpZWxkPiBtX2N1c3RvbUhlYWRlckZpZWxkczsKICAgICBXZWJLaXQ6OldlYnNp
dGVQb3BVcFBvbGljeSBtX3BvcFVwUG9saWN5IHsgV2ViS2l0OjpXZWJzaXRlUG9wVXBQb2xpY3k6
OkRlZmF1bHQgfTsKICAgICBSZWZQdHI8V2Vic2l0ZURhdGFTdG9yZT4gbV93ZWJzaXRlRGF0YVN0
b3JlOworICAgIFdURjo6U3RyaW5nIG1fY3VzdG9tVXNlckFnZW50OwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgQVBJCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
X1dLV2Vic2l0ZVBvbGljaWVzLmgKaW5kZXggZmU5NTcwNWQzNzc1MDVjN2IzYjljMzU3NjE5NzUz
NDZjMzY5Y2I1Yi4uZWFkNTAxOTE4NjMwNzlhOTQ0ZDU2YmY3ZTFkOTkyZjA3YTk1MDJmYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xp
Y2llcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRl
UG9saWNpZXMuaApAQCAtNTcsNiArNTcsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUobWFjb3N4KDEw
LjEyLjMpLCBpb3MoMTAuMykpCiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgTlNEaWN0aW9u
YXJ5PE5TU3RyaW5nICosIE5TU3RyaW5nICo+ICpjdXN0b21IZWFkZXJGaWVsZHMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvc3goMTAuMTMuNCksIGlvcygxMS4zKSk7CiBAcHJvcGVydHkgKG5vbmF0b21p
YykgX1dLV2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBzdHJvbmcpIFdL
V2Vic2l0ZURhdGFTdG9yZSAqd2Vic2l0ZURhdGFTdG9yZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
eCgxMC4xMy40KSwgaW9zKDExLjMpKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU1N0
cmluZyAqY3VzdG9tVXNlckFnZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLm1tCmluZGV4IDM3NWYwOGRm
NGZmYzc0NGVlYzE0ZDcxYWRlYjc1NzdhY2ZhMTdkMGMuLjAzYmQxNzc5NDJlNWJhYTkxZDVkNjli
MDhhNjA3MTUzZDgxNWNkNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5tbQpAQCAtMTgzLDYgKzE4MywxNiBAQCAt
ICh2b2lkKXNldFdlYnNpdGVEYXRhU3RvcmU6KFdLV2Vic2l0ZURhdGFTdG9yZSAqKXdlYnNpdGVE
YXRhU3RvcmUKICAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRXZWJzaXRlRGF0YVN0b3JlKHdlYnNp
dGVEYXRhU3RvcmUtPl93ZWJzaXRlRGF0YVN0b3JlLmdldCgpKTsKIH0KIAorLSAodm9pZClzZXRD
dXN0b21Vc2VyQWdlbnQ6KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50Cit7CisgICAgX3dlYnNp
dGVQb2xpY2llcy0+c2V0Q3VzdG9tVXNlckFnZW50KGN1c3RvbVVzZXJBZ2VudCk7Cit9CisKKy0g
KE5TU3RyaW5nICopY3VzdG9tVXNlckFnZW50Cit7CisgICAgcmV0dXJuIF93ZWJzaXRlUG9saWNp
ZXMtPmN1c3RvbVVzZXJBZ2VudCgpOworfQorCiAtIChOU1N0cmluZyAqKWRlc2NyaXB0aW9uCiB7
CiAgICAgcmV0dXJuIFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiPCVAOiAlcDsgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCA9ICVkPiIsIE5TU3RyaW5nRnJvbUNsYXNzKHNlbGYuY2xhc3MpLCBz
ZWxmLCBzZWxmLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWRdOwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDk3YTY5MmJhZDAxZGMzMTdlOTA4YjI2ZjAx
MzE4YmE3ZWI1MDZhNjQuLmZhMzA4MzFjODAyM2ZhOThkM2Q5OTliZDY2NWZkNWFjOGQxZDUzNzkg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyMSBAQAorMjAxOC0xMi0wNyAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBTUEkgdG8gYWxsb3cgdGhlIGNsaWVudCB0byBzZXQgdGhlIHVzZXItYWdl
bnQgYXQgZnJhbWUgbGV2ZWwsIGZyb20gdGhlIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkyNTA5CisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS80NjUwMDgzMj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgQVBJIHRlc3QgY292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bRGF0YU1h
cHBpbmdTY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOnRvRGF0YTpdKToKKyAg
ICAgICAgKC1bRGF0YU1hcHBpbmdTY2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVU
YXNrOl0pOgorICAgICAgICAoLVtEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9w
VVJMU2NoZW1lVGFzazpdKToKKyAgICAgICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dl
YlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhh
bmRsZXI6XSk6CisgICAgICAgICgtW0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIHdlYlZpZXc6ZGlk
RmluaXNoTmF2aWdhdGlvbjpdKToKKyAgICAgICAgKHdlYnNpdGVEYXRhU3RvcmVUZXN0V2ViVmll
dyk6IERlbGV0ZWQuCisKIDIwMTgtMTItMDYgIEpvbmF0aGFuIEJlZGFyZCAgPGpiZWRhcmRAYXBw
bGUuY29tPgogCiAgICAgICAgIENvbnNlY3V0aXZlIER1bXBSZW5kZXJUcmVlIGNyYXNoZXMgYXJl
IGhhcHBlbmluZyBhZ2FpbiBvbiBXaW5DYWlybyBCdWlsZEJvdHMgc2luY2UgcjIzODkwMwpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJzaXRlUG9s
aWNpZXMubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQ
b2xpY2llcy5tbQppbmRleCBmMTQ2Yjc5NmU5MGMyNTM3YzdkMmE4ZGJlZTQ1YjAxNzdkZTAxZTA0
Li42MmQ3ZjgxYzM4ZmQwYzEzMTVhMDBmMDdmM2M4YjU1YTQxN2Q5OTM5IDEwMDY0NAotLS0gYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbQor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2ll
cy5tbQpAQCAtMzgsOCArMzgsMTAgQEAKICNpbXBvcnQgPFdlYktpdC9fV0tVc2VyQ29udGVudEV4
dGVuc2lvblN0b3JlUHJpdmF0ZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3Rv
cmVDb25maWd1cmF0aW9uLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZVBvbGljaWVzLmg+
CisjaW1wb3J0IDx3dGYvSGFzaE1hcC5oPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KICNp
bXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbXBvcnQgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4K
ICNpbXBvcnQgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlM
WSkKQEAgLTU0LDYgKzU2LDcgQEAgQGVuZAogCiBzdGF0aWMgYm9vbCBkb25lQ29tcGlsaW5nOwog
c3RhdGljIGJvb2wgcmVjZWl2ZWRBbGVydDsKK3N0YXRpYyBib29sIGZpbmlzaGVkTmF2aWdhdGlv
bjsKIAogI2lmIFBMQVRGT1JNKE1BQykKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPF9XS0F1dG9wbGF5
RXZlbnQ+IHJlY2VpdmVkQXV0b3BsYXlFdmVudDsKQEAgLTg1OSw2ICs4NjIsMTIyIEBAIFRFU1Qo
V2ViS2l0LCBDdXN0b21IZWFkZXJGaWVsZHMpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZ0aGlyZFRlc3REb25lKTsKIH0KIAorc3RhdGljIHVuc2lnbmVkIGxvYWRDb3VudDsKKworQGlu
dGVyZmFjZSBEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgOiBOU09iamVjdCA8V0tVUkxTY2hlbWVI
YW5kbGVyPiB7CisgICAgSGFzaE1hcDxTdHJpbmcsIFJldGFpblB0cjxOU0RhdGEgKj4+IF9kYXRh
TWFwcGluZ3M7Cit9CistICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0cmluZyAq
KXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGE7CitAZW5kCisKK0BpbXBsZW1lbnRh
dGlvbiBEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIKKworLSAodm9pZClhZGRNYXBwaW5nRnJvbVVS
TFN0cmluZzooTlNTdHJpbmcgKil1cmxTdHJpbmcgdG9EYXRhOihjb25zdCBjaGFyKilkYXRhCit7
CisgICAgX2RhdGFNYXBwaW5ncy5zZXQodXJsU3RyaW5nLCBbTlNEYXRhIGRhdGFXaXRoQnl0ZXNO
b0NvcHk6KHZvaWQqKWRhdGEgbGVuZ3RoOnN0cmxlbihkYXRhKSBmcmVlV2hlbkRvbmU6Tk9dKTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0YXJ0VVJMU2NoZW1l
VGFzazooaWQgPFdLVVJMU2NoZW1lVGFzaz4pdGFzaworeworICAgIE5TVVJMICpmaW5hbFVSTCA9
IHRhc2sucmVxdWVzdC5VUkw7CisKKyAgICArK2xvYWRDb3VudDsKKyAgICBpZiAoW2ZpbmFsVVJM
Lmhvc3QgaXNFcXVhbFRvU3RyaW5nOkAid3d3LndlYmtpdC5vcmciXSkKKyAgICAgICAgRVhQRUNU
X1NUUkVRKCJNYWluIEZyYW1lIEN1c3RvbSBVc2VyQWdlbnQiLCBbW3Rhc2sucmVxdWVzdCB2YWx1
ZUZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXSBVVEY4U3RyaW5nXSk7CisgICAgZWxz
ZQorICAgICAgICBFWFBFQ1RfU1RSRVEoIlN1YmZyYW1lIEN1c3RvbSBVc2VyQWdlbnQiLCBbW3Rh
c2sucmVxdWVzdCB2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXItQWdlbnQiXSBVVEY4U3Ry
aW5nXSk7CisKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05TVVJMUmVzcG9uc2UgYWxs
b2NdIGluaXRXaXRoVVJMOmZpbmFsVVJMIE1JTUVUeXBlOkAidGV4dC9odG1sIiBleHBlY3RlZENv
bnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAgIFt0YXNrIGRpZFJlY2Vp
dmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisKKyAgICBpZiAoYXV0byBkYXRhID0gX2RhdGFN
YXBwaW5ncy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSkpCisgICAgICAgIFt0YXNrIGRp
ZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOworICAgIGVsc2UKKyAgICAgICAgW3Rhc2sgZGlkUmVj
ZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5n
XV07CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZp
ZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxTY2hlbWVUYXNrPil0YXNr
Cit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBDdXN0b21Vc2VyQWdlbnREZWxlZ2F0ZSA6IE5T
T2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4geworfQorQGVuZAorCitAaW1wbGVtZW50YXRp
b24gQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUKKworLSAodm9pZClfd2ViVmlldzooV0tXZWJWaWV3
ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRpb25B
Y3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNTZWN1cmVDb2Rpbmc+KXVz
ZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5
LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCit7CisgICAgX1dLV2Vic2l0
ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRlUG9saWNpZXMgYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAobmF2aWdhdGlvbkFjdGlvbi50YXJnZXRGcmFt
ZS5tYWluRnJhbWUpCisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgc2V0Q3VzdG9tVXNlckFnZW50
OkAiTWFpbiBGcmFtZSBDdXN0b20gVXNlckFnZW50Il07CisgICAgZWxzZQorICAgICAgICBbd2Vi
c2l0ZVBvbGljaWVzIHNldEN1c3RvbVVzZXJBZ2VudDpAIlN1YmZyYW1lIEN1c3RvbSBVc2VyQWdl
bnQiXTsKKyAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cs
IHdlYnNpdGVQb2xpY2llcyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2Vi
VmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihXS05hdmlnYXRpb24gKiluYXZpZ2F0aW9uCit7Cisg
ICAgZmluaXNoZWROYXZpZ2F0aW9uID0gdHJ1ZTsKK30KKworQGVuZAorCitzdGF0aWMgY29uc3Qg
Y2hhciogY3VzdG9tVXNlckFnZW50TWFpbkZyYW1lVGVzdEJ5dGVzID0gUiJURVNUUkVTT1VSQ0Uo
Cis8c2NyaXB0IHNyYz0idGVzdDovL3d3dy53ZWJraXQub3JnL3NjcmlwdC5qcyI+PC9zY3JpcHQ+
Cis8aW1nIHNyYz0idGVzdDovL3d3dy53ZWJraXQub3JnL2ltYWdlLnBuZyI+PC9pbWc+Cis8aWZy
YW1lIHNyYz0idGVzdDovL3d3dy5hcHBsZS5jb20vc3ViZnJhbWUuaHRtbCI+PC9pZnJhbWU+Cis8
c2NyaXB0Pgorb25sb2FkID0gKCkgPT4geworICAgIHNldFRpbWVvdXQoKCkgPT4geworICAgICAg
ICBmZXRjaCgidGVzdDovL3d3dy53ZWJraXQub3JnL2ZldGNoUmVzb3VyY2UuaHRtbCIpOworICAg
IH0sIDApOworfQorPC9zY3JpcHQ+CispVEVTVFJFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNo
YXIqIGN1c3RvbVVzZXJBZ2VudFN1YkZyYW1lVGVzdEJ5dGVzID0gUiJURVNUUkVTT1VSQ0UoCis8
c2NyaXB0IHNyYz0idGVzdDovL3d3dy5hcHBsZS5jb20vc2NyaXB0LmpzIj48L3NjcmlwdD4KKzxp
bWcgc3JjPSJ0ZXN0Oi8vd3d3LmFwcGxlLmNvbS9pbWFnZS5wbmciPjwvaW1nPgorPGlmcmFtZSBz
cmM9InRlc3Q6Ly93d3cuYXBwbGUuY29tL3N1YmZyYW1lMi5odG1sIj48L2lmcmFtZT4KKzxzY3Jp
cHQ+CitvbmxvYWQgPSAoKSA9PiB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGZl
dGNoKCJ0ZXN0Oi8vd3d3LmFwcGxlLmNvbS9mZXRjaFJlc291cmNlLmh0bWwiKTsKKyAgICB9LCAw
KTsKK30KKzwvc2NyaXB0PgorKVRFU1RSRVNPVVJDRSI7CisKK1RFU1QoV2ViS2l0LCBXZWJzaXRl
UG9saWNpZXNDdXN0b21Vc2VyQWdlbnQpCit7CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRv
cHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIGF1dG8g
c2NoZW1lSGFuZGxlciA9IGFkb3B0TlMoW1tEYXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgYWxsb2Nd
IGluaXRdKTsKKyAgICBbc2NoZW1lSGFuZGxlciBhZGRNYXBwaW5nRnJvbVVSTFN0cmluZzpAInRl
c3Q6Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiIHRvRGF0YTpjdXN0b21Vc2VyQWdlbnRNYWlu
RnJhbWVUZXN0Qnl0ZXNdOworICAgIFtzY2hlbWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3Ry
aW5nOkAidGVzdDovL3d3dy5hcHBsZS5jb20vc3ViZnJhbWUuaHRtbCIgdG9EYXRhOmN1c3RvbVVz
ZXJBZ2VudFN1YkZyYW1lVGVzdEJ5dGVzXTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRVUkxTY2hl
bWVIYW5kbGVyOnNjaGVtZUhhbmRsZXIuZ2V0KCkgZm9yVVJMU2NoZW1lOkAidGVzdCJdOworCisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0
aW9uLmdldCgpXSk7CisKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0N1c3RvbVVzZXJB
Z2VudERlbGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRl
bGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKworICAgIGxvYWRDb3VudCA9IDA7CisgICAgTlNVUkxS
ZXF1ZXN0ICpyZXF1ZXN0ID0gW05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJM
V2l0aFN0cmluZzpAInRlc3Q6Ly93d3cud2Via2l0Lm9yZy9tYWluLmh0bWwiXV07CisgICAgW3dl
YlZpZXcgbG9hZFJlcXVlc3Q6cmVxdWVzdF07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmZpbmlzaGVkTmF2aWdhdGlvbik7CisgICAgZmluaXNoZWROYXZpZ2F0aW9uID0gZmFsc2U7
CisKKyAgICB3aGlsZSAobG9hZENvdW50ICE9IDlVKQorICAgICAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpzcGluUnVuTG9vcCgpOworICAgIGxvYWRDb3VudCA9IDA7Cit9CisKIEBpbnRlcmZhY2Ug
UG9wVXBQb2xpY2llc0RlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2aWdhdGlvbkRlbGVnYXRlLCBX
S1VJRGVsZWdhdGVQcml2YXRlPgogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIF9XS1dlYnNp
dGVQb3BVcFBvbGljeShecG9wVXBQb2xpY3lGb3JVUkwpKE5TVVJMICopOwogQGVuZAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>356966</attachid>
            <date>2018-12-10 09:31:18 -0800</date>
            <delta_ts>2018-12-10 13:26:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-192509-20181210093117.patch</filename>
            <type>text/plain</type>
            <size>18157</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM4OTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2ZkM2ZlNGIzYTA2MGI1
MDVmZGExZjk0N2U1MDA2NTkyYjAzZTM4NC4uNDhjZWJmYjY2ZDhjNThiMWYzZmE5ZWVmNGEzNGQ2
N2U5ZDhhYzRkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE4LTEyLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0byBhbGxvdyB0
aGUgY2xpZW50IHRvIHNldCB0aGUgdXNlci1hZ2VudCBhdCBtYWluIGZyYW1lIGxldmVsLCBmcm9t
IHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE5MjUwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY1MDA4MzI+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRDdXN0b21V
c2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmN1c3RvbVVzZXJB
Z2VudCBjb25zdCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1c2VyQWdlbnQgY29uc3QpOgorCiAyMDE4LTEyLTA3ICBU
aGliYXVsdCBTYXVuaWVyICA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KIAogICAgICAgICBbV1BFXVtH
VEtdIEltcGxlbWVudCBXZWJBdWRpb1NvdXJjZVByb3ZpZGVyR1N0cmVhbWVyIHRvIGFsbG93IGJy
aWRnaW5nIE1lZGlhU3RyZWFtIGFuZCB0aGUgV2ViQXVkaW8gQVBJcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA1ODk2
MDAzZGJjYmQwZjYyMTE2NjBjNTZkOGE4MGEwMjkxMmM4YjU3Li4xMmUzMTczNWRjYzZmMTBlMjdk
MTNmNjYyMjc3NDkxMTEyMmNiMTIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDE4LTEy
LTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIFNQSSB0
byBhbGxvdyB0aGUgY2xpZW50IHRvIHNldCB0aGUgdXNlci1hZ2VudCBhdCBtYWluIGZyYW1lIGxl
dmVsLCBmcm9tIHRoZSBVSVByb2Nlc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MjUwOQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY1MDA4MzI+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIFNQ
SSB0byBhbGxvdyB0aGUgY2xpZW50IHRvIHNldCB0aGUgdXNlci1hZ2VudCBhdCBtYWluIGZyYW1l
IGxldmVsLCBmcm9tIHRoZSBVSVByb2Nlc3MgaW5zdGVhZCBvZiBkb2luZworICAgICAgICBpdCBh
dCByZXNvdXJjZS1sZXZlbCBmcm9tIHRoZSBpbmplY3RlZCBidW5kbGUuCisKKyAgICAgICAgVGhl
IGN1c3RvbSB1c2VyLWFnZW50IHN0cmluZyBjYW4gbm93IGJlIHNldCBvbiBfV0tXZWJzaXRlUG9s
aWNpZXMgZHVyaW5nIHRoZQorICAgICAgICBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
IGZvciB0aGUgbWFpbiBmZWFtZSwgYW5kIHdpbGwgaW1wYWN0IHRoaXMgbWFpbiByZXNvdXJjZSBs
b2FkIGFzIHdlbGwgYXMgaXRzCisgICAgICAgIGZ1dHVyZSBzdWJyZXNvdXJjZSBsb2Fkcy4KKwor
ICAgICAgICAqIFNoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2Vic2l0ZVBvbGljaWVzRGF0YTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6
V2Vic2l0ZVBvbGljaWVzRGF0YTo6ZGVjb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2Vic2l0ZVBv
bGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKToKKyAgICAgICAgKiBTaGFyZWQvV2Vi
c2l0ZVBvbGljaWVzRGF0YS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQVBJV2Vic2l0ZVBv
bGljaWVzLmNwcDoKKyAgICAgICAgKEFQSTo6V2Vic2l0ZVBvbGljaWVzOjpkYXRhKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0FQSVdlYnNpdGVQb2xpY2llcy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMubW06CisgICAgICAgICgtW19XS1dlYnNpdGVQ
b2xpY2llcyBzZXRDdXN0b21Vc2VyQWdlbnQ6XSk6CisgICAgICAgICgtW19XS1dlYnNpdGVQb2xp
Y2llcyBjdXN0b21Vc2VyQWdlbnRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvTmF2aWdh
dGlvblN0YXRlLm1tOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6Ok5hdmlnYXRp
b25DbGllbnQ6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pOgorCiAyMDE4LTEyLTA2
ICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgSW5qZWN0ZWQg
YnVuZGxlIGZvciBXZWJLaXRUZXN0UnVubmVyIGxlYWtzIFdLVHlwZVJlZiBvYmplY3RzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCmluZGV4IGE2MmZmNDQyOGI0YzAwYzc0NDJj
MTczN2RiZjBmYzA4MTRiMGVjNmIuLjUwMWE1MjczNzhmOTgxNjExNjZmMGExY2JlNzYxNDI1MTQx
MTA1ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCkBAIC0yNjQsNiAr
MjY0LDkgQEAgcHVibGljOgogICAgIEF1dG9wbGF5UG9saWN5IGF1dG9wbGF5UG9saWN5KCkgY29u
c3QgeyByZXR1cm4gbV9hdXRvcGxheVBvbGljeTsgfQogICAgIHZvaWQgc2V0QXV0b3BsYXlQb2xp
Y3koQXV0b3BsYXlQb2xpY3kgcG9saWN5KSB7IG1fYXV0b3BsYXlQb2xpY3kgPSBwb2xpY3k7IH0K
IAorICAgIHZvaWQgc2V0Q3VzdG9tVXNlckFnZW50KGNvbnN0IFN0cmluZyYgY3VzdG9tVXNlckFn
ZW50KSB7IG1fY3VzdG9tVXNlckFnZW50ID0gY3VzdG9tVXNlckFnZW50OyB9CisgICAgY29uc3Qg
U3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2N1c3RvbVVzZXJBZ2Vu
dDsgfQorCiAgICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRBdXRvcGxheVF1aXJr
cygpIGNvbnN0IHsgcmV0dXJuIG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOyB9CiAgICAgdm9pZCBz
ZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MoT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IGFsbG93ZWRR
dWlya3MpIHsgbV9hbGxvd2VkQXV0b3BsYXlRdWlya3MgPSBhbGxvd2VkUXVpcmtzOyB9CiAKQEAg
LTUzMiw2ICs1MzUsNyBAQCBwcml2YXRlOgogICAgIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8U3R5
bGVTaGVldENvbnRlbnRzPj4gbV9wZW5kaW5nTmFtZWRDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVl
dHM7CiAgICAgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxzdGQ6OnBhaXI8U3RyaW5nLCB1aW50MzJf
dD4+PiBtX3BlbmRpbmdDb250ZW50RXh0ZW5zaW9uRGlzcGxheU5vbmVTZWxlY3RvcnM7CiAjZW5k
aWYKKyAgICBTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAgICAgYm9vbCBtX3VzZXJDb250ZW50
RXh0ZW5zaW9uc0VuYWJsZWQgeyB0cnVlIH07CiAgICAgQXV0b3BsYXlQb2xpY3kgbV9hdXRvcGxh
eVBvbGljeSB7IEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0IH07CiAgICAgT3B0aW9uU2V0PEF1dG9w
bGF5UXVpcms+IG1fYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHAKaW5kZXggYTg1N2U4ZmVlYTk2ZTFhNGJmYzI3YjFiM2E3NzE1NGUzMjcxNTYw
Yi4uODMzNjUyMmE2MTA2MjhiODRlM2RkMTc5NDYwOWJjZjJlYzEyZmIxMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCkBAIC0yNjY0LDYgKzI2NjQsMTIgQEAgaW50IEZyYW1l
TG9hZGVyOjpudW1QZW5kaW5nT3JMb2FkaW5nUmVxdWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdAog
CiBTdHJpbmcgRnJhbWVMb2FkZXI6OnVzZXJBZ2VudChjb25zdCBVUkwmIHVybCkgY29uc3QKIHsK
KyAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRl
cigpLmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgYXV0byYgY3VzdG9tVXNlckFn
ZW50ID0gZG9jdW1lbnRMb2FkZXItPmN1c3RvbVVzZXJBZ2VudCgpOworICAgICAgICBpZiAoIWN1
c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCisgICAgICAgICAgICByZXR1cm4gY3VzdG9tVXNlckFn
ZW50OworICAgIH0KKwogICAgIHJldHVybiBtX2NsaWVudC51c2VyQWdlbnQodXJsKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0ZVBvbGljaWVzRGF0YS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRlUG9saWNpZXNEYXRhLmNwcAppbmRleCA2MDcz
YjJmYTUxMmQ1NTE3ZjVhYjA5N2U5OGQ2NGI1ZDlmMzcwOThmLi5kZjZkM2FlMmMxODdkYTQwNWI1
NDhkNjc3NGE4NWQyOTVlZGFkYTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJzaXRlUG9saWNpZXNEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJzaXRl
UG9saWNpZXNEYXRhLmNwcApAQCAtNDIsNiArNDIsNyBAQCB2b2lkIFdlYnNpdGVQb2xpY2llc0Rh
dGE6OmVuY29kZShJUEM6OkVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBj
dXN0b21IZWFkZXJGaWVsZHM7CiAgICAgZW5jb2RlciA8PCBwb3BVcFBvbGljeTsKICAgICBlbmNv
ZGVyIDw8IHdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOworICAgIGVuY29kZXIgPDwgY3VzdG9t
VXNlckFnZW50OwogfQogCiBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNp
dGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlY29kZXIpCkBAIC03NSw2ICs3
NiwxMSBAQCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+IFdlYnNpdGVQb2xpY2ll
c0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlYwogICAgIGRlY29kZXIgPj4gd2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnM7CiAgICAgaWYgKCF3ZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVycykK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5n
PiBjdXN0b21Vc2VyQWdlbnQ7CisgICAgZGVjb2RlciA+PiBjdXN0b21Vc2VyQWdlbnQ7CisgICAg
aWYgKCFjdXN0b21Vc2VyQWdlbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAg
CiAgICAgcmV0dXJuIHsgewogICAgICAgICBXVEZNb3ZlKCpjb250ZW50QmxvY2tlcnNFbmFibGVk
KSwKQEAgLTgzLDEyICs4OSwxNCBAQCBzdGQ6Om9wdGlvbmFsPFdlYnNpdGVQb2xpY2llc0RhdGE+
IFdlYnNpdGVQb2xpY2llc0RhdGE6OmRlY29kZShJUEM6OkRlY29kZXImIGRlYwogICAgICAgICBX
VEZNb3ZlKCpjdXN0b21IZWFkZXJGaWVsZHMpLAogICAgICAgICBXVEZNb3ZlKCpwb3BVcFBvbGlj
eSksCiAgICAgICAgIFdURk1vdmUoKndlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzKSwKKyAgICAg
ICAgV1RGTW92ZSgqY3VzdG9tVXNlckFnZW50KSwKICAgICB9IH07CiB9CiAKIHZvaWQgV2Vic2l0
ZVBvbGljaWVzRGF0YTo6YXBwbHlUb0RvY3VtZW50TG9hZGVyKFdlYnNpdGVQb2xpY2llc0RhdGEm
JiB3ZWJzaXRlUG9saWNpZXMsIFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyJiBkb2N1bWVudExvYWRl
cikKIHsKICAgICBkb2N1bWVudExvYWRlci5zZXRDdXN0b21IZWFkZXJGaWVsZHMoV1RGTW92ZSh3
ZWJzaXRlUG9saWNpZXMuY3VzdG9tSGVhZGVyRmllbGRzKSk7CisgICAgZG9jdW1lbnRMb2FkZXIu
c2V0Q3VzdG9tVXNlckFnZW50KHdlYnNpdGVQb2xpY2llcy5jdXN0b21Vc2VyQWdlbnQpOwogICAg
IAogICAgIC8vIE9ubHkgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpZiBpdCBoYXNu
J3QgYWxyZWFkeSBiZWVuIGRpc2FibGVkIGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRlbnQgYmxv
Y2tlcnMuCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyLnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0Rh
dGEuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYnNpdGVQb2xpY2llc0RhdGEuaAppbmRleCA0
NDdkZjY1YmY0ZDExMGE2ZmYyMmMzNzMyOGZkMzcyNGNiNTliOTMzLi43OTQ0YzQ2NmVjNjBlMTYz
N2E1YTkzNDI4YTE3ZmE2ZGE2NGQyNDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJl
ZC9XZWJzaXRlUG9saWNpZXNEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2Vic2l0
ZVBvbGljaWVzRGF0YS5oCkBAIC01Miw2ICs1Miw3IEBAIHN0cnVjdCBXZWJzaXRlUG9saWNpZXNE
YXRhIHsKICAgICBWZWN0b3I8V2ViQ29yZTo6SFRUUEhlYWRlckZpZWxkPiBjdXN0b21IZWFkZXJG
aWVsZHM7CiAgICAgV2Vic2l0ZVBvcFVwUG9saWN5IHBvcFVwUG9saWN5IHsgV2Vic2l0ZVBvcFVw
UG9saWN5OjpEZWZhdWx0IH07CiAgICAgc3RkOjpvcHRpb25hbDxXZWJzaXRlRGF0YVN0b3JlUGFy
YW1ldGVycz4gd2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CisgICAgU3RyaW5nIGN1c3RvbVVz
ZXJBZ2VudDsKICAgICAKICAgICB2b2lkIGVuY29kZShJUEM6OkVuY29kZXImKSBjb25zdDsKICAg
ICBzdGF0aWMgc3RkOjpvcHRpb25hbDxXZWJzaXRlUG9saWNpZXNEYXRhPiBkZWNvZGUoSVBDOjpE
ZWNvZGVyJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRl
UG9saWNpZXMuY3BwCmluZGV4IDc0MGI2YjU2ZTc2YzcyOWE0ZjE0YTVjZDVjNTRlMzhkOWY5YTg2
YTYuLmY0NDE0NDI1YTlkNGFiZmFjYmJhMzg3NmZlN2M0YzI5Y2M0NTEwMGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuY3BwCkBAIC01
Niw3ICs1Niw3IEBAIFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzRGF0YSBXZWJzaXRlUG9saWNpZXM6
OmRhdGEoKQogICAgIHN0ZDo6b3B0aW9uYWw8V2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlUGFyYW1l
dGVycz4gcGFyYW1ldGVyczsKICAgICBpZiAobV93ZWJzaXRlRGF0YVN0b3JlKQogICAgICAgICBw
YXJhbWV0ZXJzID0gbV93ZWJzaXRlRGF0YVN0b3JlLT53ZWJzaXRlRGF0YVN0b3JlKCkucGFyYW1l
dGVycygpOwotICAgIHJldHVybiB7IGNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQoKSwgYWxsb3dlZEF1
dG9wbGF5UXVpcmtzKCksIGF1dG9wbGF5UG9saWN5KCksIGN1c3RvbUhlYWRlckZpZWxkcygpLCBw
b3BVcFBvbGljeSgpLCBXVEZNb3ZlKHBhcmFtZXRlcnMpIH07CisgICAgcmV0dXJuIHsgY29udGVu
dEJsb2NrZXJzRW5hYmxlZCgpLCBhbGxvd2VkQXV0b3BsYXlRdWlya3MoKSwgYXV0b3BsYXlQb2xp
Y3koKSwgY3VzdG9tSGVhZGVyRmllbGRzKCksIHBvcFVwUG9saWN5KCksIFdURk1vdmUocGFyYW1l
dGVycyksIG1fY3VzdG9tVXNlckFnZW50IH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaCBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElXZWJzaXRlUG9saWNpZXMuaAppbmRleCA5NWFlMWExZWExMGFiN2I3
MWU3OTEwZTk3M2IzMTdmNDJkODM1OGUzLi41ZjY2YWJlYmE2MTRiOGE1MTU2NzZjZjBhZmM3YTAw
MTk2ZDllNjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJV2Vi
c2l0ZVBvbGljaWVzLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVdlYnNp
dGVQb2xpY2llcy5oCkBAIC02OSw2ICs2OSw5IEBAIHB1YmxpYzoKIAogICAgIFdlYktpdDo6V2Vi
c2l0ZVBvbGljaWVzRGF0YSBkYXRhKCk7CiAKKyAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChj
b25zdCBXVEY6OlN0cmluZyYgY3VzdG9tVXNlckFnZW50KSB7IG1fY3VzdG9tVXNlckFnZW50ID0g
Y3VzdG9tVXNlckFnZW50OyB9CisgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN1c3RvbVVzZXJBZ2Vu
dCgpIGNvbnN0IHsgcmV0dXJuIG1fY3VzdG9tVXNlckFnZW50OyB9CisKIHByaXZhdGU6CiAgICAg
V2Vic2l0ZVBvbGljaWVzKGJvb2wgY29udGVudEJsb2NrZXJzRW5hYmxlZCwgT3B0aW9uU2V0PFdl
YktpdDo6V2Vic2l0ZUF1dG9wbGF5UXVpcms+LCBXZWJLaXQ6OldlYnNpdGVBdXRvcGxheVBvbGlj
eSwgVmVjdG9yPFdlYkNvcmU6OkhUVFBIZWFkZXJGaWVsZD4mJiwgV2ViS2l0OjpXZWJzaXRlUG9w
VXBQb2xpY3ksIFJlZlB0cjxXZWJzaXRlRGF0YVN0b3JlPiYmKTsKIApAQCAtNzgsNiArODEsNyBA
QCBwcml2YXRlOgogICAgIFZlY3RvcjxXZWJDb3JlOjpIVFRQSGVhZGVyRmllbGQ+IG1fY3VzdG9t
SGVhZGVyRmllbGRzOwogICAgIFdlYktpdDo6V2Vic2l0ZVBvcFVwUG9saWN5IG1fcG9wVXBQb2xp
Y3kgeyBXZWJLaXQ6OldlYnNpdGVQb3BVcFBvbGljeTo6RGVmYXVsdCB9OwogICAgIFJlZlB0cjxX
ZWJzaXRlRGF0YVN0b3JlPiBtX3dlYnNpdGVEYXRhU3RvcmU7CisgICAgV1RGOjpTdHJpbmcgbV9j
dXN0b21Vc2VyQWdlbnQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBBUEkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tXZWJzaXRlUG9saWNpZXMuaAppbmRl
eCBmZTk1NzA1ZDM3NzUwNWM3YjNiOWMzNTc2MTk3NTM0NmMzNjljYjViLi5lYWQ1MDE5MTg2MzA3
OWE5NDRkNTZiZjdlMWQ5OTJmMDdhOTUwMmZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBvbGljaWVzLmgKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2llcy5oCkBAIC01Nyw2ICs1Nyw3
IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTIuMyksIGlvcygxMC4zKSkKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSBOU0RpY3Rpb25hcnk8TlNTdHJpbmcgKiwgTlNTdHJpbmcg
Kj4gKmN1c3RvbUhlYWRlckZpZWxkcyBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xMy40KSwg
aW9zKDExLjMpKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBfV0tXZWJzaXRlUG9wVXBQb2xpY3kg
cG9wVXBQb2xpY3kgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3MoMTIuMCkpOwog
QHByb3BlcnR5IChub25hdG9taWMsIHN0cm9uZykgV0tXZWJzaXRlRGF0YVN0b3JlICp3ZWJzaXRl
RGF0YVN0b3JlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjEzLjQpLCBpb3MoMTEuMykpOwor
QHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIE5TU3RyaW5nICpjdXN0b21Vc2VyQWdlbnQgV0tf
QVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBl
bmQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dl
YnNpdGVQb2xpY2llcy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tX
ZWJzaXRlUG9saWNpZXMubW0KaW5kZXggMzc1ZjA4ZGY0ZmZjNzQ0ZWVjMTRkNzFhZGViNzU3N2Fj
ZmExN2QwYy4uMDNiZDE3Nzk0MmU1YmFhOTFkNWQ2OWIwOGE2MDcxNTNkODE1Y2Q0NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1dlYnNpdGVQb2xpY2ll
cy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLV2Vic2l0ZVBv
bGljaWVzLm1tCkBAIC0xODMsNiArMTgzLDE2IEBAIC0gKHZvaWQpc2V0V2Vic2l0ZURhdGFTdG9y
ZTooV0tXZWJzaXRlRGF0YVN0b3JlICopd2Vic2l0ZURhdGFTdG9yZQogICAgIF93ZWJzaXRlUG9s
aWNpZXMtPnNldFdlYnNpdGVEYXRhU3RvcmUod2Vic2l0ZURhdGFTdG9yZS0+X3dlYnNpdGVEYXRh
U3RvcmUuZ2V0KCkpOwogfQogCistICh2b2lkKXNldEN1c3RvbVVzZXJBZ2VudDooTlNTdHJpbmcg
KiljdXN0b21Vc2VyQWdlbnQKK3sKKyAgICBfd2Vic2l0ZVBvbGljaWVzLT5zZXRDdXN0b21Vc2Vy
QWdlbnQoY3VzdG9tVXNlckFnZW50KTsKK30KKworLSAoTlNTdHJpbmcgKiljdXN0b21Vc2VyQWdl
bnQKK3sKKyAgICByZXR1cm4gX3dlYnNpdGVQb2xpY2llcy0+Y3VzdG9tVXNlckFnZW50KCk7Cit9
CisKIC0gKE5TU3RyaW5nICopZGVzY3JpcHRpb24KIHsKICAgICByZXR1cm4gW05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCI8JUA6ICVwOyBjb250ZW50QmxvY2tlcnNFbmFibGVkID0gJWQ+Iiwg
TlNTdHJpbmdGcm9tQ2xhc3Moc2VsZi5jbGFzcyksIHNlbGYsIHNlbGYuY29udGVudEJsb2NrZXJz
RW5hYmxlZF07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9u
U3RhdGUubW0KaW5kZXggNmY4MmQ1NGMwNGRiM2ZjM2VmZjZjOWIwYTJmODU1ZGIxNWE1MmZjMy4u
ZWFiNzFhZGQ3NTcxM2VhOTc5NjRkMzY1YWZjMmQ2ZjlhZWM5ZGRmNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5tbQpAQCAtNTQ3LDYgKzU0
Nyw4IEBAIHZvaWQgTmF2aWdhdGlvblN0YXRlOjpOYXZpZ2F0aW9uQ2xpZW50OjpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQCiAgICAgICAgICAgICAgICAgaWYgKHN1YmZy
YW1lTmF2aWdhdGlvbikKICAgICAgICAgICAgICAgICAgICAgW05TRXhjZXB0aW9uIHJhaXNlOk5T
SW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpAIl9XS1dlYnNpdGVQb2xpY2llcy53ZWJz
aXRlRGF0YVN0b3JlIG11c3QgYmUgbmlsIGZvciBzdWJmcmFtZSBuYXZpZ2F0aW9ucy4iXTsKICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghYXBpV2Vic2l0ZVBvbGljaWVzLT5jdXN0b21V
c2VyQWdlbnQoKS5pc051bGwoKSAmJiBzdWJmcmFtZU5hdmlnYXRpb24pCisgICAgICAgICAgICAg
ICAgW05TRXhjZXB0aW9uIHJhaXNlOk5TSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uIGZvcm1hdDpA
Il9XS1dlYnNpdGVQb2xpY2llcy5jdXN0b21Vc2VyQWdlbnQgbXVzdCBiZSBuaWwgZm9yIHN1YmZy
YW1lIG5hdmlnYXRpb25zLiJdOwogICAgICAgICB9CiAKICAgICAgICAgc3dpdGNoIChhY3Rpb25Q
b2xpY3kpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwpp
bmRleCA5N2E2OTJiYWQwMWRjMzE3ZTkwOGIyNmYwMTMxOGJhN2ViNTA2YTY0Li4xNzYzYWFhZDBh
OGY1NmQyMDc5YzVlYWM4NDk3MzFiYjQ2MDI1ZDRkIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VM
b2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTgtMTItMTAgIENo
cmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgU1BJIHRvIGFsbG93
IHRoZSBjbGllbnQgdG8gc2V0IHRoZSB1c2VyLWFnZW50IGF0IG1haW4gZnJhbWUgbGV2ZWwsIGZy
b20gdGhlIFVJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTkyNTA5CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80NjUwMDgzMj4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgQVBJIHRlc3Qg
Y292ZXJhZ2UuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dl
YnNpdGVQb2xpY2llcy5tbToKKyAgICAgICAgKC1bRGF0YU1hcHBpbmdTY2hlbWVIYW5kbGVyIGFk
ZE1hcHBpbmdGcm9tVVJMU3RyaW5nOnRvRGF0YTpdKToKKyAgICAgICAgKC1bRGF0YU1hcHBpbmdT
Y2hlbWVIYW5kbGVyIHdlYlZpZXc6c3RhcnRVUkxTY2hlbWVUYXNrOl0pOgorICAgICAgICAoLVtE
YXRhTWFwcGluZ1NjaGVtZUhhbmRsZXIgd2ViVmlldzpzdG9wVVJMU2NoZW1lVGFzazpdKToKKyAg
ICAgICAgKC1bQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgX3dlYlZpZXc6ZGVjaWRlUG9saWN5Rm9y
TmF2aWdhdGlvbkFjdGlvbjp1c2VySW5mbzpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgt
W0N1c3RvbVVzZXJBZ2VudERlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlvbjpdKToK
KwogMjAxOC0xMi0wNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ29uc2VjdXRpdmUgRHVtcFJlbmRlclRyZWUgY3Jhc2hlcyBhcmUgaGFwcGVuaW5nIGFn
YWluIG9uIFdpbkNhaXJvIEJ1aWxkQm90cyBzaW5jZSByMjM4OTAzCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYnNpdGVQb2xpY2llcy5tbSBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCmlu
ZGV4IGYxNDZiNzk2ZTkwYzI1MzdjN2QyYThkYmVlNDViMDE3N2RlMDFlMDQuLjg4YzRhZjRjMDQz
NDVjNDRjYTBkMzk5NDdiOGQ4MTljNTE4ZmYxYjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCisrKyBiL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2Vic2l0ZVBvbGljaWVzLm1tCkBAIC0zOCw4
ICszOCwxMCBAQAogI2ltcG9ydCA8V2ViS2l0L19XS1VzZXJDb250ZW50RXh0ZW5zaW9uU3RvcmVQ
cml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRp
b24uaD4KICNpbXBvcnQgPFdlYktpdC9fV0tXZWJzaXRlUG9saWNpZXMuaD4KKyNpbXBvcnQgPHd0
Zi9IYXNoTWFwLmg+CiAjaW1wb3J0IDx3dGYvTWFpblRocmVhZC5oPgogI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorI2ltcG9ydCA8d3RmL3RleHQvU3RyaW5nSGFzaC5oPgogI2ltcG9ydCA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpAQCAtNTQsNiAr
NTYsNyBAQCBAZW5kCiAKIHN0YXRpYyBib29sIGRvbmVDb21waWxpbmc7CiBzdGF0aWMgYm9vbCBy
ZWNlaXZlZEFsZXJ0Oworc3RhdGljIGJvb2wgZmluaXNoZWROYXZpZ2F0aW9uOwogCiAjaWYgUExB
VEZPUk0oTUFDKQogc3RhdGljIHN0ZDo6b3B0aW9uYWw8X1dLQXV0b3BsYXlFdmVudD4gcmVjZWl2
ZWRBdXRvcGxheUV2ZW50OwpAQCAtODU5LDYgKzg2MiwxMTggQEAgVEVTVChXZWJLaXQsIEN1c3Rv
bUhlYWRlckZpZWxkcykKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnRoaXJkVGVzdERv
bmUpOwogfQogCitzdGF0aWMgdW5zaWduZWQgbG9hZENvdW50OworCitAaW50ZXJmYWNlIERhdGFN
YXBwaW5nU2NoZW1lSGFuZGxlciA6IE5TT2JqZWN0IDxXS1VSTFNjaGVtZUhhbmRsZXI+IHsKKyAg
ICBIYXNoTWFwPFN0cmluZywgUmV0YWluUHRyPE5TRGF0YSAqPj4gX2RhdGFNYXBwaW5nczsKK30K
Ky0gKHZvaWQpYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6KE5TU3RyaW5nICopdXJsU3RyaW5nIHRv
RGF0YTooY29uc3QgY2hhciopZGF0YTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIERhdGFNYXBw
aW5nU2NoZW1lSGFuZGxlcgorCistICh2b2lkKWFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOihOU1N0
cmluZyAqKXVybFN0cmluZyB0b0RhdGE6KGNvbnN0IGNoYXIqKWRhdGEKK3sKKyAgICBfZGF0YU1h
cHBpbmdzLnNldCh1cmxTdHJpbmcsIFtOU0RhdGEgZGF0YVdpdGhCeXRlc05vQ29weToodm9pZCop
ZGF0YSBsZW5ndGg6c3RybGVuKGRhdGEpIGZyZWVXaGVuRG9uZTpOT10pOworfQorCistICh2b2lk
KXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RhcnRVUkxTY2hlbWVUYXNrOihpZCA8V0tV
UkxTY2hlbWVUYXNrPil0YXNrCit7CisgICAgTlNVUkwgKmZpbmFsVVJMID0gdGFzay5yZXF1ZXN0
LlVSTDsKKworICAgICsrbG9hZENvdW50OworICAgIEVYUEVDVF9TVFJFUSgiRm9vIEN1c3RvbSBV
c2VyQWdlbnQiLCBbW3Rhc2sucmVxdWVzdCB2YWx1ZUZvckhUVFBIZWFkZXJGaWVsZDpAIlVzZXIt
QWdlbnQiXSBVVEY4U3RyaW5nXSk7CisKKyAgICBhdXRvIHJlc3BvbnNlID0gYWRvcHROUyhbW05T
VVJMUmVzcG9uc2UgYWxsb2NdIGluaXRXaXRoVVJMOmZpbmFsVVJMIE1JTUVUeXBlOkAidGV4dC9o
dG1sIiBleHBlY3RlZENvbnRlbnRMZW5ndGg6MSB0ZXh0RW5jb2RpbmdOYW1lOm5pbF0pOworICAg
IFt0YXNrIGRpZFJlY2VpdmVSZXNwb25zZTpyZXNwb25zZS5nZXQoKV07CisKKyAgICBpZiAoYXV0
byBkYXRhID0gX2RhdGFNYXBwaW5ncy5nZXQoW2ZpbmFsVVJMIGFic29sdXRlU3RyaW5nXSkpCisg
ICAgICAgIFt0YXNrIGRpZFJlY2VpdmVEYXRhOmRhdGEuZ2V0KCldOworICAgIGVsc2UKKyAgICAg
ICAgW3Rhc2sgZGlkUmVjZWl2ZURhdGE6W0AiSGVsbG8iIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRG
OFN0cmluZ0VuY29kaW5nXV07CisgICAgW3Rhc2sgZGlkRmluaXNoXTsKK30KKworLSAodm9pZCl3
ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IHN0b3BVUkxTY2hlbWVUYXNrOihpZCA8V0tVUkxT
Y2hlbWVUYXNrPil0YXNrCit7Cit9CisKK0BlbmQKKworQGludGVyZmFjZSBDdXN0b21Vc2VyQWdl
bnREZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZT4geworfQorQGVuZAor
CitAaW1wbGVtZW50YXRpb24gQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUKKworLSAodm9pZClfd2Vi
VmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OihXS05hdmlnYXRpb25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIHVzZXJJbmZvOihpZCA8TlNT
ZWN1cmVDb2Rpbmc+KXVzZXJJbmZvIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tOYXZpZ2F0
aW9uQWN0aW9uUG9saWN5LCBfV0tXZWJzaXRlUG9saWNpZXMgKikpZGVjaXNpb25IYW5kbGVyCit7
CisgICAgX1dLV2Vic2l0ZVBvbGljaWVzICp3ZWJzaXRlUG9saWNpZXMgPSBbW1tfV0tXZWJzaXRl
UG9saWNpZXMgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICBpZiAobmF2aWdhdGlvbkFj
dGlvbi50YXJnZXRGcmFtZS5tYWluRnJhbWUpCisgICAgICAgIFt3ZWJzaXRlUG9saWNpZXMgc2V0
Q3VzdG9tVXNlckFnZW50OkAiRm9vIEN1c3RvbSBVc2VyQWdlbnQiXTsKKworICAgIGRlY2lzaW9u
SGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBbGxvdywgd2Vic2l0ZVBvbGljaWVzKTsK
K30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmln
YXRpb246KFdLTmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBmaW5pc2hlZE5hdmlnYXRp
b24gPSB0cnVlOworfQorCitAZW5kCisKK3N0YXRpYyBjb25zdCBjaGFyKiBjdXN0b21Vc2VyQWdl
bnRNYWluRnJhbWVUZXN0Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKKzxzY3JpcHQgc3JjPSJ0ZXN0
Oi8vd3d3LndlYmtpdC5vcmcvc2NyaXB0LmpzIj48L3NjcmlwdD4KKzxpbWcgc3JjPSJ0ZXN0Oi8v
d3d3LndlYmtpdC5vcmcvaW1hZ2UucG5nIj48L2ltZz4KKzxpZnJhbWUgc3JjPSJ0ZXN0Oi8vd3d3
LmFwcGxlLmNvbS9zdWJmcmFtZS5odG1sIj48L2lmcmFtZT4KKzxzY3JpcHQ+CitvbmxvYWQgPSAo
KSA9PiB7CisgICAgc2V0VGltZW91dCgoKSA9PiB7CisgICAgICAgIGZldGNoKCJ0ZXN0Oi8vd3d3
LndlYmtpdC5vcmcvZmV0Y2hSZXNvdXJjZS5odG1sIik7CisgICAgfSwgMCk7Cit9Cis8L3Njcmlw
dD4KKylURVNUUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogY3VzdG9tVXNlckFnZW50
U3ViRnJhbWVUZXN0Qnl0ZXMgPSBSIlRFU1RSRVNPVVJDRSgKKzxzY3JpcHQgc3JjPSJ0ZXN0Oi8v
d3d3LmFwcGxlLmNvbS9zY3JpcHQuanMiPjwvc2NyaXB0PgorPGltZyBzcmM9InRlc3Q6Ly93d3cu
YXBwbGUuY29tL2ltYWdlLnBuZyI+PC9pbWc+Cis8aWZyYW1lIHNyYz0idGVzdDovL3d3dy5hcHBs
ZS5jb20vc3ViZnJhbWUyLmh0bWwiPjwvaWZyYW1lPgorPHNjcmlwdD4KK29ubG9hZCA9ICgpID0+
IHsKKyAgICBzZXRUaW1lb3V0KCgpID0+IHsKKyAgICAgICAgZmV0Y2goInRlc3Q6Ly93d3cuYXBw
bGUuY29tL2ZldGNoUmVzb3VyY2UuaHRtbCIpOworICAgIH0sIDApOworfQorPC9zY3JpcHQ+Cisp
VEVTVFJFU09VUkNFIjsKKworVEVTVChXZWJLaXQsIFdlYnNpdGVQb2xpY2llc0N1c3RvbVVzZXJB
Z2VudCkKK3sKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tXZWJWaWV3Q29u
ZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworCisgICAgYXV0byBzY2hlbWVIYW5kbGVyID0gYWRv
cHROUyhbW0RhdGFNYXBwaW5nU2NoZW1lSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtzY2hl
bWVIYW5kbGVyIGFkZE1hcHBpbmdGcm9tVVJMU3RyaW5nOkAidGVzdDovL3d3dy53ZWJraXQub3Jn
L21haW4uaHRtbCIgdG9EYXRhOmN1c3RvbVVzZXJBZ2VudE1haW5GcmFtZVRlc3RCeXRlc107Cisg
ICAgW3NjaGVtZUhhbmRsZXIgYWRkTWFwcGluZ0Zyb21VUkxTdHJpbmc6QCJ0ZXN0Oi8vd3d3LmFw
cGxlLmNvbS9zdWJmcmFtZS5odG1sIiB0b0RhdGE6Y3VzdG9tVXNlckFnZW50U3ViRnJhbWVUZXN0
Qnl0ZXNdOworICAgIFtjb25maWd1cmF0aW9uIHNldFVSTFNjaGVtZUhhbmRsZXI6c2NoZW1lSGFu
ZGxlci5nZXQoKSBmb3JVUkxTY2hlbWU6QCJ0ZXN0Il07CisKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAg
IGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQ3VzdG9tVXNlckFnZW50RGVsZWdhdGUgYWxsb2Nd
IGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0
KCldOworCisgICAgbG9hZENvdW50ID0gMDsKKyAgICBOU1VSTFJlcXVlc3QgKnJlcXVlc3QgPSBb
TlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOkAidGVzdDov
L3d3dy53ZWJraXQub3JnL21haW4uaHRtbCJdXTsKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpy
ZXF1ZXN0XTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWROYXZpZ2F0
aW9uKTsKKyAgICBmaW5pc2hlZE5hdmlnYXRpb24gPSBmYWxzZTsKKworICAgIHdoaWxlIChsb2Fk
Q291bnQgIT0gOVUpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7
CisgICAgbG9hZENvdW50ID0gMDsKK30KKwogQGludGVyZmFjZSBQb3BVcFBvbGljaWVzRGVsZWdh
dGUgOiBOU09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZVByaXZhdGU+
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgX1dLV2Vic2l0ZVBvcFVwUG9saWN5KF5wb3BV
cFBvbGljeUZvclVSTCkoTlNVUkwgKik7CiBAZW5kCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>