<?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>238159</bug_id>
          
          <creation_ts>2022-03-21 15:53:34 -0700</creation_ts>
          <short_desc>[Cocoa] Ensure correct isAppInitiated state when creating URLRequests from URL</short_desc>
          <delta_ts>2022-03-31 09:19:45 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>236111</dependson>
    
    <dependson>236167</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>katherine_cheney</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1853381</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-21 15:53:34 -0700</bug_when>
    <thetext>This patch follows on the work from Bug 236167. It corrects a few more load paths are getting incorrect state for &apos;isAppInitiated&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853382</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-21 15:53:49 -0700</bug_when>
    <thetext>&lt;rdar://problem/88490742&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853400</commentid>
    <comment_count>2</comment_count>
      <attachid>455296</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-21 16:24:45 -0700</bug_when>
    <thetext>Created attachment 455296
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853407</commentid>
    <comment_count>3</comment_count>
      <attachid>455296</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-21 16:37:56 -0700</bug_when>
    <thetext>Comment on attachment 455296
Patch

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

Have you seen these code paths be hit with incorrect app initiated values? For all of the NavigationScheduler functions we eventually call frame.changeLocation() which will set the app initiated value on the request in FrameLoader::updateRequestAndAddExtraFields based on the main frame document loader&apos;s value. Ditto for FrameLoader::loadFrameRequest() in the contextMenuItem case.

&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:831
&gt; +    preconnectTo(WTFMove(resourceRequest), *webPage, webFrame, storedCredentialsPolicy, shouldPreconnectAsFirstParty, WTFMove(completionHandler));

I think we already do this, see the preconnectTo function below.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853779</commentid>
    <comment_count>4</comment_count>
      <attachid>455296</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-22 11:11:17 -0700</bug_when>
    <thetext>Comment on attachment 455296
Patch

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

&gt;&gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:831
&gt;&gt; +    preconnectTo(WTFMove(resourceRequest), *webPage, webFrame, storedCredentialsPolicy, shouldPreconnectAsFirstParty, WTFMove(completionHandler));
&gt; 
&gt; I think we already do this, see the preconnectTo function below.

You are right -- this isn&apos;t needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853781</commentid>
    <comment_count>5</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-22 11:13:56 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #3)
&gt; Comment on attachment 455296 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455296&amp;action=review
&gt; 
&gt; Have you seen these code paths be hit with incorrect app initiated values?
&gt; For all of the NavigationScheduler functions we eventually call
&gt; frame.changeLocation() which will set the app initiated value on the request
&gt; in FrameLoader::updateRequestAndAddExtraFields based on the main frame
&gt; document loader&apos;s value. Ditto for FrameLoader::loadFrameRequest() in the
&gt; contextMenuItem case.

Ah, okay. I can remove those.

&gt; 
&gt; &gt; Source/WebKit/WebProcess/Network/WebLoaderStrategy.cpp:831
&gt; &gt; +    preconnectTo(WTFMove(resourceRequest), *webPage, webFrame, storedCredentialsPolicy, shouldPreconnectAsFirstParty, WTFMove(completionHandler));
&gt; 
&gt; I think we already do this, see the preconnectTo function below.

I&apos;m suspicious of this code path because the hits we&apos;ve been getting seem to be related to code like this:

&lt;link rel=&quot;preconnect&quot; href=&quot;https://something.example.com&quot;&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853812</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-22 11:58:50 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #3)
&gt; Comment on attachment 455296 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455296&amp;action=review
&gt; 
&gt; Have you seen these code paths be hit with incorrect app initiated values?
&gt; For all of the NavigationScheduler functions we eventually call
&gt; frame.changeLocation() which will set the app initiated value on the request
&gt; in FrameLoader::updateRequestAndAddExtraFields based on the main frame
&gt; document loader&apos;s value. Ditto for FrameLoader::loadFrameRequest() in the
&gt; contextMenuItem case.
&gt; 

I believe that NavigationScheduler does have one case that uses:

    frame.loader().load(WTFMove(frameLoadRequest));

It looks like FrameLoader::load(FrameLoadRequest&amp;&amp; request) can bypass &apos;updateRequestAndAddExtraFields&apos; in the case where request.shouldCheckNewWindowPolicy() is true, which I think can get through the load without setting AppInitiated state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854751</commentid>
    <comment_count>7</comment_count>
      <attachid>455653</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-24 10:52:00 -0700</bug_when>
    <thetext>Created attachment 455653
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854760</commentid>
    <comment_count>8</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-24 11:00:14 -0700</bug_when>
    <thetext>(In reply to Brent Fulgham from comment #6)
&gt; (In reply to Kate Cheney from comment #3)
&gt; &gt; Comment on attachment 455296 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=455296&amp;action=review
&gt; &gt; 
&gt; &gt; Have you seen these code paths be hit with incorrect app initiated values?
&gt; &gt; For all of the NavigationScheduler functions we eventually call
&gt; &gt; frame.changeLocation() which will set the app initiated value on the request
&gt; &gt; in FrameLoader::updateRequestAndAddExtraFields based on the main frame
&gt; &gt; document loader&apos;s value. Ditto for FrameLoader::loadFrameRequest() in the
&gt; &gt; contextMenuItem case.
&gt; &gt; 
&gt; 
&gt; I believe that NavigationScheduler does have one case that uses:
&gt; 
&gt;     frame.loader().load(WTFMove(frameLoadRequest));
&gt; 
&gt; It looks like FrameLoader::load(FrameLoadRequest&amp;&amp; request) can bypass
&gt; &apos;updateRequestAndAddExtraFields&apos; in the case where
&gt; request.shouldCheckNewWindowPolicy() is true, which I think can get through
&gt; the load without setting AppInitiated state.

Oh, good catch.

Weird about the &lt;link&gt; preconnect case causing issues. Does it repro in a reduced test case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854761</commentid>
    <comment_count>9</comment_count>
      <attachid>455653</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-24 11:03:41 -0700</bug_when>
    <thetext>Comment on attachment 455653
Patch

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

&gt; Source/WebCore/loader/ThreadableLoader.cpp:117
&gt; +    if (auto* documentLoader = document ? document-&gt;loader() : nullptr)

Was this a place you were catching errors? A test case would be nice. Or if it is speculative maybe we should add this to WorkerThreadableLoader as well?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854897</commentid>
    <comment_count>10</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-24 16:05:31 -0700</bug_when>
    <thetext>(In reply to Kate Cheney from comment #8)
&gt; (In reply to Brent Fulgham from comment #6)
&gt; &gt; (In reply to Kate Cheney from comment #3)
&gt; &gt; &gt; Comment on attachment 455296 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; View in context:
&gt; &gt; &gt; https://bugs.webkit.org/attachment.cgi?id=455296&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; Have you seen these code paths be hit with incorrect app initiated values?
&gt; &gt; &gt; For all of the NavigationScheduler functions we eventually call
&gt; &gt; &gt; frame.changeLocation() which will set the app initiated value on the request
&gt; &gt; &gt; in FrameLoader::updateRequestAndAddExtraFields based on the main frame
&gt; &gt; &gt; document loader&apos;s value. Ditto for FrameLoader::loadFrameRequest() in the
&gt; &gt; &gt; contextMenuItem case.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; I believe that NavigationScheduler does have one case that uses:
&gt; &gt; 
&gt; &gt;     frame.loader().load(WTFMove(frameLoadRequest));
&gt; &gt; 
&gt; &gt; It looks like FrameLoader::load(FrameLoadRequest&amp;&amp; request) can bypass
&gt; &gt; &apos;updateRequestAndAddExtraFields&apos; in the case where
&gt; &gt; request.shouldCheckNewWindowPolicy() is true, which I think can get through
&gt; &gt; the load without setting AppInitiated state.
&gt; 
&gt; Oh, good catch.
&gt; 
&gt; Weird about the &lt;link&gt; preconnect case causing issues. Does it repro in a
&gt; reduced test case?

I need to try to build one. I&apos;ve been testing with an iOS Simulator build, and I can&apos;t get those two cases to trigger a mismatch, so perhaps something else is going on.

Another possibility is that the Cache loader doesn&apos;t handle AppInitiated state, and so the first load that goes to Cache gets flagged as App-Initiated?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854903</commentid>
    <comment_count>11</comment_count>
      <attachid>455653</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-24 16:07:24 -0700</bug_when>
    <thetext>Comment on attachment 455653
Patch

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

&gt;&gt; Source/WebCore/loader/ThreadableLoader.cpp:117
&gt;&gt; +    if (auto* documentLoader = document ? document-&gt;loader() : nullptr)
&gt; 
&gt; Was this a place you were catching errors? A test case would be nice. Or if it is speculative maybe we should add this to WorkerThreadableLoader as well?

Yes, this was a case that I encountered mismatches, but I&apos;m not sure if lower-level loading code might correct it. At a minimum, I should probably move this above the WorkerThreadableLoader::create so that if the context has a document we can properly reflect it&apos;s AppInitiated state.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856189</commentid>
    <comment_count>12</comment_count>
      <attachid>456058</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-29 14:29:13 -0700</bug_when>
    <thetext>Created attachment 456058
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856450</commentid>
    <comment_count>13</comment_count>
      <attachid>456144</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-30 10:37:11 -0700</bug_when>
    <thetext>Created attachment 456144
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856500</commentid>
    <comment_count>14</comment_count>
      <attachid>456144</attachid>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-30 11:38:47 -0700</bug_when>
    <thetext>Comment on attachment 456144
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856660</commentid>
    <comment_count>15</comment_count>
      <attachid>456144</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2022-03-30 20:33:26 -0700</bug_when>
    <thetext>Comment on attachment 456144
Patch

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

&gt; Source/WebCore/loader/NavigationScheduler.cpp:385
&gt; +        if (auto* documentLoader = m_originDocument.loader())
&gt; +            resourceRequest.setIsAppInitiated(documentLoader-&gt;lastNavigationWasAppInitiated());

Is it really OK to leave this set to the default if there is no document loader associated? Does that mean it gets set to true or false? Which is the correct value for that case?

&gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; +    if (auto* documentLoader = document ? document-&gt;loader() : nullptr)
&gt; +        request.setIsAppInitiated(documentLoader-&gt;lastNavigationWasAppInitiated());

Is it really OK to leave this set to the default if there is no document loader associated? Does that mean it gets set to true or false? Which is the correct value for that case?

&gt; Source/WebCore/page/DragController.cpp:298
&gt; +    resourceRequest.setIsAppInitiated(false);

Why is this needed? Isn’t false the default?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856667</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-30 20:46:31 -0700</bug_when>
    <thetext>Committed r292139 (249046@main): &lt;https://commits.webkit.org/249046@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 456144.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856824</commentid>
    <comment_count>17</comment_count>
    <who name="Kate Cheney">katherine_cheney</who>
    <bug_when>2022-03-31 08:58:45 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #15)
&gt; Comment on attachment 456144 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=456144&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/NavigationScheduler.cpp:385
&gt; &gt; +        if (auto* documentLoader = m_originDocument.loader())
&gt; &gt; +            resourceRequest.setIsAppInitiated(documentLoader-&gt;lastNavigationWasAppInitiated());
&gt; 
&gt; Is it really OK to leave this set to the default if there is no document
&gt; loader associated? Does that mean it gets set to true or false? Which is the
&gt; correct value for that case?
&gt; 
&gt; &gt; Source/WebCore/loader/ThreadableLoader.cpp:115
&gt; &gt; +    if (auto* documentLoader = document ? document-&gt;loader() : nullptr)
&gt; &gt; +        request.setIsAppInitiated(documentLoader-&gt;lastNavigationWasAppInitiated());
&gt; 
&gt; Is it really OK to leave this set to the default if there is no document
&gt; loader associated? Does that mean it gets set to true or false? Which is the
&gt; correct value for that case?
&gt; 
&gt; &gt; Source/WebCore/page/DragController.cpp:298
&gt; &gt; +    resourceRequest.setIsAppInitiated(false);
&gt; 
&gt; Why is this needed? Isn’t false the default?

The default for a request&apos;s attribution value is to attribute to the app/developer (https://developer.apple.com/documentation/foundation/nsurlrequest/attribution) which equates to app-initiated being &quot;true&quot;.

I am not sure of the full extent of cases where we create a request without a document loader, which is where we store the attribution value from the initial request. Maybe an investigation into that would be useful. For now, in the case where we are unsure of the attribution value because the document loader is null, I think it makes sense to keep the default value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1856828</commentid>
    <comment_count>18</comment_count>
      <attachid>456144</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2022-03-31 09:19:45 -0700</bug_when>
    <thetext>Comment on attachment 456144
Patch

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

&gt;&gt; Source/WebCore/page/DragController.cpp:298
&gt;&gt; +    resourceRequest.setIsAppInitiated(false);
&gt; 
&gt; Why is this needed? Isn’t false the default?

The default value is app initiated; we have to set to non-app-initiated if we have reason to believe a user triggered the load. In this case, since the request is happening because of a user drag operation, we can set to &quot;non-app-initiated&quot;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455296</attachid>
            <date>2022-03-21 16:24:45 -0700</date>
            <delta_ts>2022-03-24 10:51:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238159-20220321162444.patch</filename>
            <type>text/plain</type>
            <size>12171</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjdlM2JkZDM0YzdjODI5
YjA1M2U4NTY1MTlkYzRmZjNmOWI0ODA5Zi4uYTRiNGQ4OWNhZjhhODU3YmJjZmM3M2RjZjY5NmQ0
NTdhM2I3NWFjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIyLTAzLTIxICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gRW5zdXJl
IGNvcnJlY3QgaXNBcHBJbml0aWF0ZWQgc3RhdGUgd2hlbiBjcmVhdGluZyBVUkxSZXF1ZXN0cyBm
cm9tIFVSTCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzODE1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg0OTA3NDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMgbG9hZCBv
cGVyYXRpb25zIHRvIGVuc3VyZSBBcHBJbml0aWF0ZWQgc3RhdGUgaXMgcHJvcGVybHkgaGFuZGxl
ZC4KKworICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOiBB
IG51bWJlciBvZiBzY2hlZHVsZWQgcGFnZQorICAgICAgICBsb2NhdGlvbiBjaGFuZ2VzIHdlcmUg
bm90IHByb3BhZ2F0aW5nIHRoZSB2YWx1ZSBvZiB0aGUgZHJpdmluZyBkb2N1bWVudCdzIEFwcElu
aXRpYXRlZAorICAgICAgICBzdGF0ZS4KKyAgICAgICAgKiBwYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb250ZXh0TWVudUNvbnRyb2xsZXI6OmNvbnRl
eHRNZW51SXRlbVNlbGVjdGVkKTogQSB1c2VyIGNob29zaW5nIHRvIG9wZW4KKyAgICAgICAgYSBk
b2N1bWVudCBmcm9tIHRoZSBjb250ZXh0IG1lbnUgaXMgbmV2ZXIgQXBwSW5pdGlhdGVkLgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6
Y3JlYXRlV2luZG93KTogT3BlbmluZyBhIHdpbmRvdyBzaG91bGQgcHJvcGFnYXRlIHRoZSBzdGF0
ZSBvZiB0aGUKKyAgICAgICAgb3BlbmVyLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0
aW9uKTogQSBwYWdlIGxvYWQgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyCisgICAgICAgIGRyYWdnaW5n
IGNvbnRlbnQgaW50byB0aGUgdmlldyBpcyBuZXZlciBBcHBJbml0aWF0ZWQuCisKIDIwMjItMDMt
MjEgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW21lZGlh
LWNvbnRyb2xzXSBzY3J1YmJpbmcgb24gaU9TIHdoZW4gaW5saW5lIGRvZXMgbm90IHdvcmsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKaW5kZXggODg2YWI2YmY5NmU3YmQwNDUxNDI3ZGNhYzE2ZDBhZmVmMmY5MDQ5Mi4uNTJmNDJi
ZTllM2YxZmNjM2QzMGVkYzhhY2QyMWQ2MGJlZTFiOGMwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NyBAQAorMjAyMi0wMy0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbQ29jb2FdIEVuc3VyZSBjb3JyZWN0IGlzQXBwSW5pdGlhdGVkIHN0YXRlIHdoZW4g
Y3JlYXRpbmcgVVJMUmVxdWVzdHMgZnJvbSBVUkwgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzgxNTkKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzg4
NDkwNzQyPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFVwZGF0ZSB2YXJpb3VzIGxvYWQgb3BlcmF0aW9ucyB0byBlbnN1cmUgQXBwSW5pdGlhdGVkIHN0
YXRlIGlzIHByb3Blcmx5IGhhbmRsZWQuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL05ldHdvcmsv
V2ViTG9hZGVyU3RyYXRlZ3kuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJMb2FkZXJTdHJhdGVn
eTo6cHJlY29ubmVjdFRvKTogVGhpcyBjb2RlIHBhdGggZG9lcyBub3QgcHJvcGFnYXRlIHRoZQor
ICAgICAgICB2YWx1ZSBvZiB0aGUgZG9jdW1lbnQncyAiQXBwSW5pdGlhdGVkIiBzdGF0ZS4KKwog
MjAyMi0wMy0yMSAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KIAogICAgICAg
ICBEaXNhYmxlIHRoZSA8bW9kZWw+IGVsZW1lbnQgaW4gQ2FwdGl2ZSBQb3J0YWwgbW9kZS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCA0MzI4
NTYyYWFiMjBjYzU1YjcxNjMzMDg0N2Y3ODVjYzE0Y2QxYWM5Li5kNTI5ZGU2NTIyMzE1MWYzOTM5
NmZmNTc3NzEwZDA3MmE0N2IzMzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmln
YXRpb25TY2hlZHVsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykg
MjAwNi0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAo
QykgMjAwNi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdo
dCAoQykgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykK
ICAqIENvcHlyaWdodCAoQykgMjAwOCwgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1vYmlsZS5jb20vKQogICogQ29weXJpZ2h0IChD
KSAyMDA5IEFkYW0gQmFydGguIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC0xOTMsNiArMTkzLDgg
QEAgcHVibGljOgogCiAgICAgICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVu
dElkZW50aWZpZXIoZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHVybCgpKTsKICAgICAgICAgUmVz
b3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IHVybCgpLCByZWZlcnJlcigpLCByZWZyZXNo
ID8gUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIDog
UmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2FjaGVQb2xpY3kgfTsKKyAg
ICAgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gaW5pdGlhdGluZ0RvY3VtZW50KCkubG9h
ZGVyKCkpCisgICAgICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNBcHBJbml0aWF0ZWQoZG9j
dW1lbnRMb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkpOwogICAgICAgICBp
ZiAoaW5pdGlhdGVkQnlNYWluRnJhbWUoKSA9PSBJbml0aWF0ZWRCeU1haW5GcmFtZTo6WWVzKQog
ICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldFJlcXVlc3RlcihSZXNvdXJjZVJlcXVlc3Q6
OlJlcXVlc3Rlcjo6TWFpbik7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7IGluaXRpYXRpbmdEb2N1bWVudCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShy
ZXNvdXJjZVJlcXVlc3QpLCBzZWxmVGFyZ2V0RnJhbWVOYW1lKCksIGluaXRpYXRlZEJ5TWFpbkZy
YW1lKCkgfTsKQEAgLTIyNyw2ICsyMjksOCBAQCBwdWJsaWM6CiAgICAgICAgIFVzZXJHZXN0dXJl
SW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IgeyB1c2VyR2VzdHVyZVRvRm9yd2FyZCgpIH07CiAK
ICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IHVybCgpLCByZWZlcnJl
cigpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6VXNlUHJvdG9jb2xDYWNoZVBvbGljeSB9
OworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBpbml0aWF0aW5nRG9jdW1lbnQo
KS5sb2FkZXIoKSkKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRJc0FwcEluaXRpYXRl
ZChkb2N1bWVudExvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7CiAgICAg
ICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IGluaXRpYXRpbmdEb2N1bWVu
dCgpLCAqc2VjdXJpdHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCBzZWxmVGFy
Z2V0RnJhbWVOYW1lKCksIGluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKICAgICAgICAgZnJhbWVM
b2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSgpKTsKICAgICAgICAgZnJhbWVM
b2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7
CkBAIC0yNTQsNiArMjU4LDggQEAgcHVibGljOgogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yIHsgdXNlckdlc3R1cmVUb0ZvcndhcmQoKSB9OwogCiAgICAgICAg
IFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyB1cmwoKSwgcmVmZXJyZXIoKSwgUmVz
b3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlJlbG9hZElnbm9yaW5nQ2FjaGVEYXRhIH07CisgICAg
ICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGluaXRpYXRpbmdEb2N1bWVudCgpLmxvYWRl
cigpKQorICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGRvY3Vt
ZW50TG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKICAgICAgICAgRnJh
bWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgaW5pdGlhdGluZ0RvY3VtZW50KCksICpz
ZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVzdCksIHNlbGZUYXJnZXRGcmFt
ZU5hbWUoKSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKQEAgLTM4
MSw2ICszODcsOCBAQCBwdWJsaWM6CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2VtZW50
RGF0YSB7IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIHJl
cGxhY2VtZW50UmVzcG9uc2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxp
dHk6OkhpZGRlbiB9OwogCiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3Qg
eyBtX29yaWdpbkRvY3VtZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVlc3RD
YWNoZVBvbGljeTo6UmVsb2FkSWdub3JpbmdDYWNoZURhdGEgfTsKKyAgICAgICAgaWYgKGF1dG8q
IGRvY3VtZW50TG9hZGVyID0gbV9vcmlnaW5Eb2N1bWVudC5sb2FkZXIoKSkKKyAgICAgICAgICAg
IHJlc291cmNlUmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChkb2N1bWVudExvYWRlci0+bGFzdE5h
dmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3JpZ2luRG9jdW1lbnQuc2VjdXJp
dHlPcmlnaW4oKSwgV1RGTW92ZShyZXNvdXJjZVJlcXVlc3QpLCB7IH0sIGluaXRpYXRlZEJ5TWFp
bkZyYW1lKCkgfTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2Nr
SGlzdG9yeSgpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRM
aXN0KGxvY2tCYWNrRm9yd2FyZExpc3QoKSk7CkBAIC00ODEsNiArNDg5LDkgQEAgdm9pZCBOYXZp
Z2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKERvY3VtZW50JiBpbml0aWF0
aW5nRG9jdW1lbnQsIFMKICAgICAvLyBmcmFnbWVudCBwYXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNj
aGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCiAgICAgaWYgKHVybC5oYXNGcmFnbWVudElkZW50
aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXJsKCksIHVybCkpIHsKICAgICAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVx
dWVzdCB7IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsLnN0cmluZygpKSwgcmVm
ZXJyZXIsIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpVc2VQcm90b2NvbENhY2hlUG9saWN5
IH07CisgICAgICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUuZG9jdW1lbnQo
KS0+bG9hZGVyKCkpCisgICAgICAgICAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNBcHBJbml0aWF0
ZWQoZG9jdW1lbnRMb2FkZXItPmxhc3ROYXZpZ2F0aW9uV2FzQXBwSW5pdGlhdGVkKCkpOworCiAg
ICAgICAgIGF1dG8qIGZyYW1lID0gbGV4aWNhbEZyYW1lRnJvbUNvbW1vblZNKCk7CiAgICAgICAg
IGF1dG8gaW5pdGlhdGVkQnlNYWluRnJhbWUgPSBmcmFtZSAmJiBmcmFtZS0+aXNNYWluRnJhbWUo
KSA/IEluaXRpYXRlZEJ5TWFpbkZyYW1lOjpZZXMgOiBJbml0aWF0ZWRCeU1haW5GcmFtZTo6VW5r
bm93bjsKICAgICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRN
ZW51Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJv
bGxlci5jcHAKaW5kZXggMTRiMWUzN2JkYzY1MWZlMzdlNjNkZDhhYjg4MTY0ZDhiMjJiYzc1ZC4u
NzdhZmNkMDNmMzAwMWJkMjZkMGE2MDA0ZWQ4OTk3Yjc2MmEyMmZmNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgSWdhbGlhIFMuTAogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dApAQCAtNDAzLDYgKzQwMyw3IEBAIHZvaWQgQ29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0
TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUFjdGlvbiBhY3Rpb24sIGNvCiAgICAgY2FzZSBD
b250ZXh0TWVudUl0ZW1UYWdPcGVuTGluazoKICAgICAgICAgaWYgKEZyYW1lKiB0YXJnZXRGcmFt
ZSA9IG1fY29udGV4dC5oaXRUZXN0UmVzdWx0KCkudGFyZ2V0RnJhbWUoKSkgewogICAgICAgICAg
ICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fY29udGV4dC5oaXRUZXN0UmVz
dWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCkgfTsKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChmYWxz
ZSk7CiAgICAgICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyAqZnJh
bWUtPmRvY3VtZW50KCksIGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBXVEZN
b3ZlKHJlc291cmNlUmVxdWVzdCksIHsgfSwgSW5pdGlhdGVkQnlNYWluRnJhbWU6OlVua25vd24g
fTsKICAgICAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0TmV3RnJhbWVPcGVuZXJQb2xpY3ko
TmV3RnJhbWVPcGVuZXJQb2xpY3k6OlN1cHByZXNzKTsKICAgICAgICAgICAgIGlmICh0YXJnZXRG
cmFtZS0+aXNNYWluRnJhbWUoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAppbmRleCA1NDZi
NGE0ZGRlZWJkYmMzZDU4MjNiMGIyNzk3MmQ2NjdiYzcyMTBmLi42MDc2MmU1YTM3Nzc4NzM3NTk3
OTc0ZGJjZjJlNmE3YTZkZDAzZjk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIxIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNi0yMDIyIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHlyaWdodCAoQykgMjAxMCBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTI1
NjUsNiArMjU2NSw4IEBAIEV4Y2VwdGlvbk9yPFJlZlB0cjxGcmFtZT4+IERPTVdpbmRvdzo6Y3Jl
YXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zCiAKICAgICBpZiAoY3JlYXRl
ZCkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgY29tcGxldGVk
VVJMLCByZWZlcnJlciwgUmVzb3VyY2VSZXF1ZXN0Q2FjaGVQb2xpY3k6OlVzZVByb3RvY29sQ2Fj
aGVQb2xpY3kgfTsKKyAgICAgICAgaWYgKG9wZW5lckRvY3VtZW50TG9hZGVyKQorICAgICAgICAg
ICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKG9wZW5lckRvY3VtZW50TG9hZGVy
LT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKICAgICAgICAgRnJhbWVMb2FkZXI6
OmFkZFNhbWVTaXRlSW5mb1RvUmVxdWVzdElmTmVlZGVkKHJlc291cmNlUmVxdWVzdCwgb3BlbmVy
RnJhbWUuZG9jdW1lbnQoKSk7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdCB7ICphY3RpdmVXaW5kb3cuZG9jdW1lbnQoKSwgYWN0aXZlV2luZG93LmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCksIFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgc2VsZlRhcmdldEZy
YW1lTmFtZSgpLCBpbml0aWF0ZWRCeU1haW5GcmFtZSB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koYWN0aXZlRG9jdW1lbnQtPnNob3Vs
ZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3lUb1Byb3BhZ2F0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9E
cmFnQ29udHJvbGxlci5jcHAKaW5kZXggM2Y1ZTIzZjlmNDdiZDhiZmUwOTFjODIzNDVlZTFiZWU2
OWI0NmFjMS4uZTZmYzc5YTAyMTEyNDRmY2M3ZTA5NDkzY2JlZTkwYjA3ZTEyOGQxYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDA3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA3LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yOTQsNyArMjk0LDkgQEAgYm9v
bCBEcmFnQ29udHJvbGxlcjo6cGVyZm9ybURyYWdPcGVyYXRpb24oY29uc3QgRHJhZ0RhdGEmIGRy
YWdEYXRhKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBjbGllbnQoKS53aWxsUGVyZm9y
bURyYWdEZXN0aW5hdGlvbkFjdGlvbihEcmFnRGVzdGluYXRpb25BY3Rpb246OkxvYWQsIGRyYWdE
YXRhKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX3BhZ2UubWFp
bkZyYW1lKCksIFJlc291cmNlUmVxdWVzdCB7IHVybFN0cmluZyB9IH07CisgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IHVybFN0cmluZyB9OworICAgIHJlc291cmNlUmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChmYWxzZSk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxv
YWRSZXF1ZXN0IHsgbV9wYWdlLm1haW5GcmFtZSgpLCByZXNvdXJjZVJlcXVlc3QgfTsKICAgICBm
cmFtZUxvYWRSZXF1ZXN0LnNldFNob3VsZE9wZW5FeHRlcm5hbFVSTHNQb2xpY3koc2hvdWxkT3Bl
bkV4dGVybmFsVVJMc1BvbGljeSk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRJc1JlcXVlc3RG
cm9tQ2xpZW50T3JVc2VySW5wdXQoKTsKICAgICBtX3BhZ2UubWFpbkZyYW1lKCkubG9hZGVyKCku
bG9hZChXVEZNb3ZlKGZyYW1lTG9hZFJlcXVlc3QpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYkxvYWRlclN0cmF0ZWd5LmNwcAppbmRleCA0MDgwODNj
OTczNzcwOWY4MmZmMGFiNzljODIyMzIyZDIxYzhhOTM4Li4wYTNjZmJjZmFiOGEyNTZmNThmOGUw
ZDBkYzJhMGM4MjVjOTdiNzEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJMb2FkZXJTdHJhdGVneS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL05ldHdvcmsvV2ViTG9hZGVyU3RyYXRlZ3kuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAxMi0yMDIxIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAxMi0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODI1LDcgKzgyNSwxMCBAQCB2
b2lkIFdlYkxvYWRlclN0cmF0ZWd5OjpwcmVjb25uZWN0VG8oRnJhbWVMb2FkZXImIGZyYW1lTG9h
ZGVyLCBjb25zdCBVUkwmIHVybCwgUwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgcHJl
Y29ubmVjdFRvKFJlc291cmNlUmVxdWVzdCB7IHVybCB9LCAqd2ViUGFnZSwgd2ViRnJhbWUsIHN0
b3JlZENyZWRlbnRpYWxzUG9saWN5LCBzaG91bGRQcmVjb25uZWN0QXNGaXJzdFBhcnR5LCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgUmVzb3VyY2VSZXF1ZXN0IHJlc291cmNlUmVx
dWVzdCB7IHVybCB9OworICAgIGlmIChhdXRvKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVy
LmRvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIHJlc291cmNlUmVxdWVzdC5zZXRJc0FwcEluaXRp
YXRlZChkb2N1bWVudExvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7Cisg
ICAgcHJlY29ubmVjdFRvKFdURk1vdmUocmVzb3VyY2VSZXF1ZXN0KSwgKndlYlBhZ2UsIHdlYkZy
YW1lLCBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgc2hvdWxkUHJlY29ubmVjdEFzRmlyc3RQYXJ0
eSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYkxvYWRlclN0cmF0
ZWd5OjpwcmVjb25uZWN0VG8oV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgV2Vi
UGFnZSYgd2ViUGFnZSwgV2ViRnJhbWUmIHdlYkZyYW1lLCBXZWJDb3JlOjpTdG9yZWRDcmVkZW50
aWFsc1BvbGljeSBzdG9yZWRDcmVkZW50aWFsc1BvbGljeSwgU2hvdWxkUHJlY29ubmVjdEFzRmly
c3RQYXJ0eSBzaG91bGRQcmVjb25uZWN0QXNGaXJzdFBhcnR5LCBQcmVjb25uZWN0Q29tcGxldGlv
bkhhbmRsZXImJiBjb21wbGV0aW9uSGFuZGxlcikK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455653</attachid>
            <date>2022-03-24 10:52:00 -0700</date>
            <delta_ts>2022-03-29 14:29:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238159-20220324105159.patch</filename>
            <type>text/plain</type>
            <size>4922</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjMwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmE3N2E5YmI0MjlkNmFj
YzcxOWFmOGEyYWU2MTNkOWQ3ZjE3OTIwMi4uY2NlZWE4NzI2MzFiOTVlMTdlY2Y3YjE3NDExNzA2
MjIxNmYzZDRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTI0ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gRW5zdXJl
IGNvcnJlY3QgaXNBcHBJbml0aWF0ZWQgc3RhdGUgd2hlbiBjcmVhdGluZyBVUkxSZXF1ZXN0cyBm
cm9tIFVSTCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzODE1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg0OTA3NDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMgbG9hZCBv
cGVyYXRpb25zIHRvIGVuc3VyZSBBcHBJbml0aWF0ZWQgc3RhdGUgaXMgcHJvcGVybHkgaGFuZGxl
ZC4KKworICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOiBU
aGUgU2NoZWR1bGVkUGFnZUJsb2NrCisgICAgICAgIGxvYWQgZGlkIG5vdCBwcm9wYWdhdGluZyB0
aGUgdmFsdWUgb2YgdGhlIGRyaXZpbmcgZG9jdW1lbnQncyBBcHBJbml0aWF0ZWQgc3RhdGUuCisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogUmVmbGVjdCB0aGUgQXBwSW5pdGlhdGVkIHN0YXRl
IGluIHRoZSBsb2FkLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKTogQSBwYWdl
IGxvYWQgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyCisgICAgICAgIGRyYWdnaW5nIGNvbnRlbnQgaW50
byB0aGUgdmlldyBpcyBuZXZlciBBcHBJbml0aWF0ZWQuCisKIDIwMjItMDMtMjIgIFBlciBBcm5l
IFZvbGxhbiAgPHB2b2xsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVuYWJsZSBjb250ZW50IGZp
bHRlcmluZyBpbiB0aGUgTmV0d29yayBwcm9jZXNzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
TmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggNDMyODU2MmFhYjIwY2M1NWI3MTYzMzA4NDdm
Nzg1Y2MxNGNkMWFjOS4uZjA0M2NkNTk3MDU0MTk3NzYzOGI2ZGY0MjJmYTBmZDM5N2ViN2UxYSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcApAQCAt
MSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxNyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYtMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9y
YXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgs
IDIwMDkgVG9yY2ggTW9iaWxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4gKGh0dHA6Ly93d3cu
dG9yY2htb2JpbGUuY29tLykKICAqIENvcHlyaWdodCAoQykgMjAwOSBBZGFtIEJhcnRoLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgpAQCAtMzgxLDYgKzM4MSw4IEBAIHB1YmxpYzoKICAgICAgICAgU3Vi
c3RpdHV0ZURhdGEgcmVwbGFjZW1lbnREYXRhIHsgU2hhcmVkQnVmZmVyOjpjcmVhdGUoKSwgbV9v
cmlnaW5Eb2N1bWVudC51cmwoKSwgcmVwbGFjZW1lbnRSZXNwb25zZSwgU3Vic3RpdHV0ZURhdGE6
OlNlc3Npb25IaXN0b3J5VmlzaWJpbGl0eTo6SGlkZGVuIH07CiAKICAgICAgICAgUmVzb3VyY2VS
ZXF1ZXN0IHJlc291cmNlUmVxdWVzdCB7IG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIGVtcHR5U3Ry
aW5nKCksIFJlc291cmNlUmVxdWVzdENhY2hlUG9saWN5OjpSZWxvYWRJZ25vcmluZ0NhY2hlRGF0
YSB9OworICAgICAgICBpZiAoYXV0byogZG9jdW1lbnRMb2FkZXIgPSBtX29yaWdpbkRvY3VtZW50
LmxvYWRlcigpKQorICAgICAgICAgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVk
KGRvY3VtZW50TG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKICAgICAg
ICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9vcmlnaW5Eb2N1bWVudCwg
bV9vcmlnaW5Eb2N1bWVudC5zZWN1cml0eU9yaWdpbigpLCBXVEZNb3ZlKHJlc291cmNlUmVxdWVz
dCksIHsgfSwgaW5pdGlhdGVkQnlNYWluRnJhbWUoKSB9OwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tIaXN0b3J5KGxvY2tIaXN0b3J5KCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnNldExvY2tCYWNrRm9yd2FyZExpc3QobG9ja0JhY2tGb3J3YXJkTGlzdCgpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9UaHJlYWRhYmxlTG9hZGVyLmNwcAppbmRleCAyMDg2ODdhZDE1NjUz
ODUxOTk0OTliNDkwY2MyYjFjODUxYzUyNTMzLi5iMzYwNjE4MjM4MDNjY2JkMWY4MzkwZTI2ODcx
NGYyZTAzMWJmODA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIu
Y3BwCkBAIC0xLDQgKzEsNSBAQAogLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTExMyw2ICsxMTQsOSBA
QCBSZWZQdHI8VGhyZWFkYWJsZUxvYWRlcj4gVGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleAogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQgPSAm
ZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwogCisgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9h
ZGVyID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+bG9hZGVyKCkgOiBudWxscHRyKQorICAgICAgICBy
ZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGRvY3VtZW50TG9hZGVyLT5sYXN0TmF2aWdhdGlvbldh
c0FwcEluaXRpYXRlZCgpKTsKKyAgICAKICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9h
ZGVyOjpjcmVhdGUoKmRvY3VtZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMs
IFdURk1vdmUocmVmZXJyZXIpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAppbmRleCAzZjVlMjNmOWY0N2JkOGJmZTA5MWM4MjM0NWVlMWJlZTY5YjQ2YWMxLi5lNmZj
NzlhMDIxMTI0NGZjYzdlMDk0OTNjYmVlOTBiMDdlMTI4ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RyYWdDb250cm9sbGVyLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDctMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI5NCw3ICsyOTQsOSBAQCBib29sIERyYWdDb250cm9s
bGVyOjpwZXJmb3JtRHJhZ09wZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKIAogICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0
aW9uQWN0aW9uKERyYWdEZXN0aW5hdGlvbkFjdGlvbjo6TG9hZCwgZHJhZ0RhdGEpOwotICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7IG1fcGFnZS5tYWluRnJhbWUoKSwgUmVz
b3VyY2VSZXF1ZXN0IHsgdXJsU3RyaW5nIH0gfTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3Vy
Y2VSZXF1ZXN0IHsgdXJsU3RyaW5nIH07CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5p
dGlhdGVkKGZhbHNlKTsKKyAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBt
X3BhZ2UubWFpbkZyYW1lKCksIHJlc291cmNlUmVxdWVzdCB9OwogICAgIGZyYW1lTG9hZFJlcXVl
c3Quc2V0U2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxz
UG9saWN5KTsKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnNldElzUmVxdWVzdEZyb21DbGllbnRPclVz
ZXJJbnB1dCgpOwogICAgIG1fcGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKFdURk1vdmUo
ZnJhbWVMb2FkUmVxdWVzdCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456058</attachid>
            <date>2022-03-29 14:29:13 -0700</date>
            <delta_ts>2022-03-30 10:37:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238159-20220329142912.patch</filename>
            <type>text/plain</type>
            <size>5950</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1ODIxZDAzMzNmNjk1
YTJhNGZmYTI1MmUxMmVkNWQwYjM1YmI0Ni4uMzA0NDE1YjNiMzRkOGI2ZjhhZmI0MDY5NjcxZWJh
ZDQ3MTQ4YWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTI5ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gRW5zdXJl
IGNvcnJlY3QgaXNBcHBJbml0aWF0ZWQgc3RhdGUgd2hlbiBjcmVhdGluZyBVUkxSZXF1ZXN0cyBm
cm9tIFVSTCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzODE1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg0OTA3NDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMgbG9hZCBv
cGVyYXRpb25zIHRvIGVuc3VyZSBBcHBJbml0aWF0ZWQgc3RhdGUgaXMgcHJvcGVybHkgaGFuZGxl
ZC4KKworICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOiBU
aGUgU2NoZWR1bGVkUGFnZUJsb2NrCisgICAgICAgIGxvYWQgZGlkIG5vdCBwcm9wYWdhdGluZyB0
aGUgdmFsdWUgb2YgdGhlIGRyaXZpbmcgZG9jdW1lbnQncyBBcHBJbml0aWF0ZWQgc3RhdGUuCisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogUmVmbGVjdCB0aGUgQXBwSW5pdGlhdGVkIHN0YXRl
IGluIHRoZSBsb2FkLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKTogQSBwYWdl
IGxvYWQgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyCisgICAgICAgIGRyYWdnaW5nIGNvbnRlbnQgaW50
byB0aGUgdmlldyBpcyBuZXZlciBBcHBJbml0aWF0ZWQuCisKIDIwMjItMDMtMjkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBNdXRlZCB2
aWRlbyBpcyBzb21ldGltZXMgcGF1c2VkIHdoZW4gZW50ZXJpbmcgZnVsbHNjcmVlbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDQzMjg1NjJh
YWIyMGNjNTViNzE2MzMwODQ3Zjc4NWNjMTRjZDFhYzkuLmYwNDNjZDU5NzA1NDE5Nzc2MzhiNmRm
NDIyZmEwZmQzOTdlYjdlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQWRhbSBCYXJ0aC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM4MSw2ICszODEsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2VtZW50RGF0YSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIHJlcGxhY2VtZW50UmVzcG9u
c2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owog
CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX29yaWdpbkRvY3Vt
ZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgfTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gbV9vcmlnaW5Eb2N1bWVudC5sb2FkZXIoKSkKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChkb2N1bWVudExvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQoKSk7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3JpZ2luRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpLCB7IH0sIGluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSgpKTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9y
d2FyZExpc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMjA4Njg3YWQxNTY1Mzg1MTk5NDk5YjQ5MGNjMmIxYzg1MWM1MjUzMy4uZGIzNzQzNzAy
ZDg1ZjUwZWE5Yjg3YjE1MTQzYjQ4NTFkOGRjMTQ2OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMDQsMTUgKzEwNSwxOCBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVM
b2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcm
JiByZWZlcnJlciwgU3RyaW5nJiYgdGFza01vZGUpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBk
b3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVh
ZCgpKSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdU
Rk1vdmUodGFza01vZGUpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVy
cmVyKSk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwogICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQogICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkucmVzcG9uc2libGVEb2N1bWVudCgpOwogICAg
IGVsc2UKICAgICAgICAgZG9jdW1lbnQgPSAmZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpOwog
CisgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVyID0gZG9jdW1lbnQgPyBkb2N1bWVudC0+bG9h
ZGVyKCkgOiBudWxscHRyKQorICAgICAgICByZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGRvY3Vt
ZW50TG9hZGVyLT5sYXN0TmF2aWdhdGlvbldhc0FwcEluaXRpYXRlZCgpKTsKKyAgICAKKyAgICBp
ZiAoaXM8V29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpIHx8IChpczxXb3JrbGV0R2xvYmFsU2Nv
cGU+KGNvbnRleHQpICYmIGRvd25jYXN0PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkud29y
a2VyT3JXb3JrbGV0VGhyZWFkKCkpKQorICAgICAgICByZXR1cm4gV29ya2VyVGhyZWFkYWJsZUxv
YWRlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PFdvcmtlck9yV29ya2xldEdsb2JhbFNjb3BlJj4oY29u
dGV4dCksIGNsaWVudCwgV1RGTW92ZSh0YXNrTW9kZSksIFdURk1vdmUocmVxdWVzdCksIG9wdGlv
bnMsIFdURk1vdmUocmVmZXJyZXIpKTsKKwogICAgIHJldHVybiBEb2N1bWVudFRocmVhZGFibGVM
b2FkZXI6OmNyZWF0ZSgqZG9jdW1lbnQsIGNsaWVudCwgV1RGTW92ZShyZXF1ZXN0KSwgb3B0aW9u
cywgV1RGTW92ZShyZWZlcnJlcikpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xs
ZXIuY3BwCmluZGV4IDNmNWUyM2Y5ZjQ3YmQ4YmZlMDkxYzgyMzQ1ZWUxYmVlNjliNDZhYzEuLmU2
ZmM3OWEwMjExMjQ0ZmNjN2UwOTQ5M2NiZWU5MGIwN2UxMjhkMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAo
QykgMjAwNy0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdo
dCAoQykgMjAwNy0yMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjk0LDcgKzI5NCw5IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKGNvbnN0IERyYWdEYXRhJiBkcmFnRGF0YSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgY2xpZW50KCkud2lsbFBlcmZvcm1EcmFnRGVzdGlu
YXRpb25BY3Rpb24oRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uOjpMb2FkLCBkcmFnRGF0YSk7Ci0gICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0IHsgbV9wYWdlLm1haW5GcmFtZSgpLCBS
ZXNvdXJjZVJlcXVlc3QgeyB1cmxTdHJpbmcgfSB9OworICAgIFJlc291cmNlUmVxdWVzdCByZXNv
dXJjZVJlcXVlc3QgeyB1cmxTdHJpbmcgfTsKKyAgICByZXNvdXJjZVJlcXVlc3Quc2V0SXNBcHBJ
bml0aWF0ZWQoZmFsc2UpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
IG1fcGFnZS5tYWluRnJhbWUoKSwgcmVzb3VyY2VSZXF1ZXN0IH07CiAgICAgZnJhbWVMb2FkUmVx
dWVzdC5zZXRTaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KHNob3VsZE9wZW5FeHRlcm5hbFVS
THNQb2xpY3kpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0SXNSZXF1ZXN0RnJvbUNsaWVudE9y
VXNlcklucHV0KCk7CiAgICAgbV9wYWdlLm1haW5GcmFtZSgpLmxvYWRlcigpLmxvYWQoV1RGTW92
ZShmcmFtZUxvYWRSZXF1ZXN0KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456144</attachid>
            <date>2022-03-30 10:37:11 -0700</date>
            <delta_ts>2022-03-30 20:46:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238159-20220330103711.patch</filename>
            <type>text/plain</type>
            <size>5987</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyMDUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY1ODIxZDAzMzNmNjk1
YTJhNGZmYTI1MmUxMmVkNWQwYjM1YmI0Ni4uMzA0NDE1YjNiMzRkOGI2ZjhhZmI0MDY5NjcxZWJh
ZDQ3MTQ4YWRkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTI5ICBCcmVu
dCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFtDb2NvYV0gRW5zdXJl
IGNvcnJlY3QgaXNBcHBJbml0aWF0ZWQgc3RhdGUgd2hlbiBjcmVhdGluZyBVUkxSZXF1ZXN0cyBm
cm9tIFVSTCAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzODE1OQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vODg0OTA3NDI+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHZhcmlvdXMgbG9hZCBv
cGVyYXRpb25zIHRvIGVuc3VyZSBBcHBJbml0aWF0ZWQgc3RhdGUgaXMgcHJvcGVybHkgaGFuZGxl
ZC4KKworICAgICAgICAqIGxvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UpOiBU
aGUgU2NoZWR1bGVkUGFnZUJsb2NrCisgICAgICAgIGxvYWQgZGlkIG5vdCBwcm9wYWdhdGluZyB0
aGUgdmFsdWUgb2YgdGhlIGRyaXZpbmcgZG9jdW1lbnQncyBBcHBJbml0aWF0ZWQgc3RhdGUuCisg
ICAgICAgICogbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGhyZWFkYWJsZUxvYWRlcjo6Y3JlYXRlKTogUmVmbGVjdCB0aGUgQXBwSW5pdGlhdGVkIHN0YXRl
IGluIHRoZSBsb2FkLgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OnBlcmZvcm1EcmFnT3BlcmF0aW9uKTogQSBwYWdl
IGxvYWQgdHJpZ2dlcmVkIGJ5IHRoZSB1c2VyCisgICAgICAgIGRyYWdnaW5nIGNvbnRlbnQgaW50
byB0aGUgdmlldyBpcyBuZXZlciBBcHBJbml0aWF0ZWQuCisKIDIwMjItMDMtMjkgIEVyaWMgQ2Fy
bHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW21hY09TXSBNdXRlZCB2
aWRlbyBpcyBzb21ldGltZXMgcGF1c2VkIHdoZW4gZW50ZXJpbmcgZnVsbHNjcmVlbgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCmluZGV4IDQzMjg1NjJh
YWIyMGNjNTViNzE2MzMwODQ3Zjc4NWNjMTRjZDFhYzkuLmYwNDNjZDU5NzA1NDE5Nzc2MzhiNmRm
NDIyZmEwZmQzOTdlYjdlMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZp
Z2F0aW9uU2NoZWR1bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlv
blNjaGVkdWxlci5jcHAKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2
LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA2LTIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQogICog
Q29weXJpZ2h0IChDKSAyMDA4LCAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuIChodHRwOi8vd3d3LnRvcmNobW9iaWxlLmNvbS8pCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgQWRhbSBCYXJ0aC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KQEAgLTM4MSw2ICszODEsOCBAQCBw
dWJsaWM6CiAgICAgICAgIFN1YnN0aXR1dGVEYXRhIHJlcGxhY2VtZW50RGF0YSB7IFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKCksIG1fb3JpZ2luRG9jdW1lbnQudXJsKCksIHJlcGxhY2VtZW50UmVzcG9u
c2UsIFN1YnN0aXR1dGVEYXRhOjpTZXNzaW9uSGlzdG9yeVZpc2liaWxpdHk6OkhpZGRlbiB9Owog
CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXNvdXJjZVJlcXVlc3QgeyBtX29yaWdpbkRvY3Vt
ZW50LnVybCgpLCBlbXB0eVN0cmluZygpLCBSZXNvdXJjZVJlcXVlc3RDYWNoZVBvbGljeTo6UmVs
b2FkSWdub3JpbmdDYWNoZURhdGEgfTsKKyAgICAgICAgaWYgKGF1dG8qIGRvY3VtZW50TG9hZGVy
ID0gbV9vcmlnaW5Eb2N1bWVudC5sb2FkZXIoKSkKKyAgICAgICAgICAgIHJlc291cmNlUmVxdWVz
dC5zZXRJc0FwcEluaXRpYXRlZChkb2N1bWVudExvYWRlci0+bGFzdE5hdmlnYXRpb25XYXNBcHBJ
bml0aWF0ZWQoKSk7CiAgICAgICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCB7
IG1fb3JpZ2luRG9jdW1lbnQsIG1fb3JpZ2luRG9jdW1lbnQuc2VjdXJpdHlPcmlnaW4oKSwgV1RG
TW92ZShyZXNvdXJjZVJlcXVlc3QpLCB7IH0sIGluaXRpYXRlZEJ5TWFpbkZyYW1lKCkgfTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrSGlzdG9yeShsb2NrSGlzdG9yeSgpKTsKICAg
ICAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRMb2NrQmFja0ZvcndhcmRMaXN0KGxvY2tCYWNrRm9y
d2FyZExpc3QoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJs
ZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvVGhyZWFkYWJsZUxvYWRlci5jcHAK
aW5kZXggMjA4Njg3YWQxNTY1Mzg1MTk5NDk5YjQ5MGNjMmIxYzg1MWM1MjUzMy4uNTFjMjcwNWQy
NWE2M2QwYzg3ZjMwZmQ5MmI1MjgyZWQ2Y2Q4ODBjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1RocmVhZGFibGVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9UaHJlYWRhYmxlTG9hZGVyLmNwcApAQCAtMSw0ICsxLDUgQEAKIC8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChD
KSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CkBAIC0xMDQsMTUgKzEwNSwxOCBAQCBUaHJlYWRhYmxlTG9hZGVyT3B0aW9ucyBUaHJlYWRhYmxl
TG9hZGVyT3B0aW9uczo6aXNvbGF0ZWRDb3B5KCkgY29uc3QKIAogUmVmUHRyPFRocmVhZGFibGVM
b2FkZXI+IFRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBj
b250ZXh0LCBUaHJlYWRhYmxlTG9hZGVyQ2xpZW50JiBjbGllbnQsIFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIGNvbnN0IFRocmVhZGFibGVMb2FkZXJPcHRpb25zJiBvcHRpb25zLCBTdHJpbmcm
JiByZWZlcnJlciwgU3RyaW5nJiYgdGFza01vZGUpCiB7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBk
b3duY2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVh
ZCgpKSkKLSAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0
aWNfY2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdU
Rk1vdmUodGFza01vZGUpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVy
cmVyKSk7Ci0KICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBudWxscHRyOwogICAgIGlmIChpczxX
b3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpKQogICAgICAgICBkb2N1bWVudCA9IGRvd25jYXN0
PFdvcmtsZXRHbG9iYWxTY29wZT4oY29udGV4dCkucmVzcG9uc2libGVEb2N1bWVudCgpOwotICAg
IGVsc2UKKyAgICBlbHNlIGlmIChpczxEb2N1bWVudD4oY29udGV4dCkpCiAgICAgICAgIGRvY3Vt
ZW50ID0gJmRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KTsKIAorICAgIGlmIChhdXRvKiBkb2N1
bWVudExvYWRlciA9IGRvY3VtZW50ID8gZG9jdW1lbnQtPmxvYWRlcigpIDogbnVsbHB0cikKKyAg
ICAgICAgcmVxdWVzdC5zZXRJc0FwcEluaXRpYXRlZChkb2N1bWVudExvYWRlci0+bGFzdE5hdmln
YXRpb25XYXNBcHBJbml0aWF0ZWQoKSk7CisgICAgCisgICAgaWYgKGlzPFdvcmtlckdsb2JhbFNj
b3BlPihjb250ZXh0KSB8fCAoaXM8V29ya2xldEdsb2JhbFNjb3BlPihjb250ZXh0KSAmJiBkb3du
Y2FzdDxXb3JrbGV0R2xvYmFsU2NvcGU+KGNvbnRleHQpLndvcmtlck9yV29ya2xldFRocmVhZCgp
KSkKKyAgICAgICAgcmV0dXJuIFdvcmtlclRocmVhZGFibGVMb2FkZXI6OmNyZWF0ZShzdGF0aWNf
Y2FzdDxXb3JrZXJPcldvcmtsZXRHbG9iYWxTY29wZSY+KGNvbnRleHQpLCBjbGllbnQsIFdURk1v
dmUodGFza01vZGUpLCBXVEZNb3ZlKHJlcXVlc3QpLCBvcHRpb25zLCBXVEZNb3ZlKHJlZmVycmVy
KSk7CisKICAgICByZXR1cm4gRG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyOjpjcmVhdGUoKmRvY3Vt
ZW50LCBjbGllbnQsIFdURk1vdmUocmVxdWVzdCksIG9wdGlvbnMsIFdURk1vdmUocmVmZXJyZXIp
KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAppbmRleCAzZjVlMjNm
OWY0N2JkOGJmZTA5MWM4MjM0NWVlMWJlZTY5YjQ2YWMxLi5lNmZjNzlhMDIxMTI0NGZjYzdlMDk0
OTNjYmVlOTBiMDdlMTI4ZDFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNw
cApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDctMjAyMiBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTI5NCw3ICsyOTQsOSBAQCBib29sIERyYWdDb250cm9sbGVyOjpwZXJmb3JtRHJhZ09w
ZXJhdGlvbihjb25zdCBEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAogICAgIGNsaWVudCgpLndpbGxQZXJmb3JtRHJhZ0Rlc3RpbmF0aW9uQWN0aW9uKERyYWdEZXN0
aW5hdGlvbkFjdGlvbjo6TG9hZCwgZHJhZ0RhdGEpOwotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJh
bWVMb2FkUmVxdWVzdCB7IG1fcGFnZS5tYWluRnJhbWUoKSwgUmVzb3VyY2VSZXF1ZXN0IHsgdXJs
U3RyaW5nIH0gfTsKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVzb3VyY2VSZXF1ZXN0IHsgdXJsU3Ry
aW5nIH07CisgICAgcmVzb3VyY2VSZXF1ZXN0LnNldElzQXBwSW5pdGlhdGVkKGZhbHNlKTsKKyAg
ICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QgeyBtX3BhZ2UubWFpbkZyYW1lKCks
IHJlc291cmNlUmVxdWVzdCB9OwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0U2hvdWxkT3BlbkV4
dGVybmFsVVJMc1BvbGljeShzaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KTsKICAgICBmcmFt
ZUxvYWRSZXF1ZXN0LnNldElzUmVxdWVzdEZyb21DbGllbnRPclVzZXJJbnB1dCgpOwogICAgIG1f
cGFnZS5tYWluRnJhbWUoKS5sb2FkZXIoKS5sb2FkKFdURk1vdmUoZnJhbWVMb2FkUmVxdWVzdCkp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>