<?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>110952</bug_id>
          
          <creation_ts>2013-02-27 00:04:12 -0800</creation_ts>
          <short_desc>Initial implementation of inert subtrees needed for modal &lt;dialog&gt;</short_desc>
          <delta_ts>2021-08-20 05:56:27 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=112085</see_also>
          <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>227800</dependson>
          <blocked>84635</blocked>
    
    <blocked>165279</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Falkenhagen">falken</reporter>
          <assigned_to name="Tim Nguyen (:ntim)">ntim</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eoconnor</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jchaffraix</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>mifenton</cc>
    
    <cc>morrita</cc>
    
    <cc>ntim</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>samuel_white</cc>
    
    <cc>tkent</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>842763</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-02-27 00:04:12 -0800</bug_when>
    <thetext>The HTML spec defines the concept of inert subtrees. When a Document is blocked by a modal &lt;dialog&gt;, every node not an ascendant or descendant of the dialog is considered inert:

http://www.whatwg.org/specs/web-apps/current-work/multipage/editing.html#inert-subtrees</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842788</commentid>
    <comment_count>1</comment_count>
      <attachid>190459</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-02-27 00:40:56 -0800</bug_when>
    <thetext>Created attachment 190459
WIP patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842794</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-02-27 00:46:48 -0800</bug_when>
    <thetext>I uploaded an early WIP patch. Comments are welcome.

My idea is to reuse disabled for inert, so we automatically get the behavior for event targeting and focus that we want.

My first attempt to was reuse the Fullscreen implementation, but it turns out it doesn&apos;t actually implement modality. You can use tab and space to click a button behind the fullscreened element.

It may be problematic to merge inertness and disabled though. With this patch, an inert button is automatically grayed out, but the spec says there should be no UI indication of inertness from the UA.

Also, we must support the &quot;inert&quot; attribute which is separate from &quot;disabled&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842865</commentid>
    <comment_count>3</comment_count>
      <attachid>190459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 02:22:17 -0800</bug_when>
    <thetext>Comment on attachment 190459
WIP patch

Attachment 190459 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16663197

New failing tests:
fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842895</commentid>
    <comment_count>4</comment_count>
      <attachid>190459</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-27 03:27:38 -0800</bug_when>
    <thetext>Comment on attachment 190459
WIP patch

Attachment 190459 did not pass chromium-ews (chromium-xvfb):
Output: http://webkit-commit-queue.appspot.com/results/16818139

New failing tests:
fast/dom/HTMLDialogElement/modal-dialog-blocks-mouse-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>846273</commentid>
    <comment_count>5</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-04 02:50:58 -0800</bug_when>
    <thetext>I think there is another tangible difference between disabled and inert. A disabled button swallows a mouse click, but the spec seems to dictate that a mouse events be dispatched to a non-inert node rendered underneath an inert node, possibly the &lt;body&gt;.

So I think the hit testing code would have to be modified to ignore inert nodes. Does that sound right?

From the spec:
&quot;For example, consider a page that consists of just a single inert paragraph positioned in the middle of a body. If a user moves their pointing device from the body over to the inert paragraph and clicks on the paragraph, no mouseover event would be fired, and the mousemove and click events would be fired on the body element rather than the paragraph.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850850</commentid>
    <comment_count>6</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-07 21:16:48 -0800</bug_when>
    <thetext>I think I can get the desired hit testing by modifying RenderObject::visibleToHitTesting().

As a first step, I&apos;d like to try to land this patch as is. Then the hit test behavior and lack of appearance change for inert nodes can be added in later patches.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850883</commentid>
    <comment_count>7</comment_count>
      <attachid>190459</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-07 22:36:45 -0800</bug_when>
    <thetext>Comment on attachment 190459
WIP patch

Is it enough to cover only form controls? How about &lt;a&gt;, or even JS-based interactivity?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850885</commentid>
    <comment_count>8</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-07 22:37:49 -0800</bug_when>
    <thetext>Ah, they are covered by Node::disabled().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850888</commentid>
    <comment_count>9</comment_count>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-07 22:43:27 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Ah, they are covered by Node::disabled().

Yes, it covers at least &lt;a&gt; and calling click() programatically. I can add more tests, though I&apos;m not sure how to best structure them (we probably don&apos;t want a test for every possible element...).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>850889</commentid>
    <comment_count>10</comment_count>
      <attachid>190459</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-07 22:46:12 -0800</bug_when>
    <thetext>Comment on attachment 190459
WIP patch

Could you add tests for 
- non-modal dialogs and
- non-active dialogs
to cover negative cases?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>851007</commentid>
    <comment_count>11</comment_count>
      <attachid>192181</attachid>
    <who name="Matt Falkenhagen">falken</who>
    <bug_when>2013-03-08 02:12:51 -0800</bug_when>
    <thetext>Created attachment 192181
add test cases for non-modal and non-open dialogs</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852033</commentid>
    <comment_count>12</comment_count>
      <attachid>192181</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-10 20:51:33 -0700</bug_when>
    <thetext>Comment on attachment 192181
add test cases for non-modal and non-open dialogs

I&apos;m a bit worrying about the perf implication of this change since this makes disabled() slower.
But I&apos;m not sure if there are good test to cover such scenarios. disabled() might not called that much,
after all.

Let&apos;s land this and see how graphs react.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852059</commentid>
    <comment_count>13</comment_count>
      <attachid>192181</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 23:15:18 -0700</bug_when>
    <thetext>Comment on attachment 192181
add test cases for non-modal and non-open dialogs

Clearing flags on attachment: 192181

Committed r145340: &lt;http://trac.webkit.org/changeset/145340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852060</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-10 23:15:22 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852420</commentid>
    <comment_count>15</comment_count>
      <attachid>192181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-11 10:08:27 -0700</bug_when>
    <thetext>Comment on attachment 192181
add test cases for non-modal and non-open dialogs

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

&gt; Source/WebCore/dom/Node.cpp:2467
&gt;  bool Node::disabled() const
&gt;  {
&gt; +#if ENABLE(DIALOG_ELEMENT)
&gt; +    if (isInert())
&gt; +        return true;
&gt; +#endif
&gt;      return false;
&gt;  }

The code added here to Node::disabled should instead go into HTMLFormControlElement::disabled. Node is too low a level to hook this in. In fact, we should investigate removing or renaming Node::disabled because I don’t think HTMLStyleElement::disabled and SVGStyleElement::disabled are intending to override this function!

I think it’s only in the Node class to support the way it hooks into the style system. We don’t want arbitrary nodes like text nodes or arbitrary elements to return true for disabled and match disabled pseudo-style rules. Just form controls.

&gt; Source/WebCore/dom/Node.h:418
&gt; +    bool isInert() const;

This should also go into HTMLFormConrolElement.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852424</commentid>
    <comment_count>16</comment_count>
      <attachid>192181</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-11 10:10:03 -0700</bug_when>
    <thetext>Comment on attachment 192181
add test cases for non-modal and non-open dialogs

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

&gt;&gt; Source/WebCore/dom/Node.h:418
&gt;&gt; +    bool isInert() const;
&gt; 
&gt; This should also go into HTMLFormConrolElement.

Maybe not. It might be OK for this to stay in Node, or perhaps move to Element. I am not sure where else we’d want to call isInert.

Generally, though, the answer to “Should I add something to the Node class?” is “no!”.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>852930</commentid>
    <comment_count>17</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2013-03-11 18:00:54 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 192181 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=192181&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/dom/Node.h:418
&gt; &gt;&gt; +    bool isInert() const;
&gt; &gt; 
&gt; &gt; This should also go into HTMLFormConrolElement.
&gt; 
&gt; Maybe not. It might be OK for this to stay in Node, or perhaps move to Element. I am not sure where else we’d want to call isInert.
&gt; 
&gt; Generally, though, the answer to “Should I add something to the Node class?” is “no!”.

Agreed. Moving things on Node down to Element is good way to go in general.
And doing it would be a good refactoring. Filed Bug 112085.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>854013</commentid>
    <comment_count>18</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-03-12 19:28:55 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Agreed. Moving things on Node down to Element is good way to go in general.
&gt; And doing it would be a good refactoring. Filed Bug 112085.

Yes, it’s OK to move isInert to Element.

But the disabled logic should be moved to HTMLFormControlElement::disabled. We don’t want inert non-form-control elements to match :disabled style rules. We also should have test cases covering that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763118</commentid>
    <comment_count>19</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-05-24 07:25:32 -0700</bug_when>
    <thetext>This was all rolled out in bug 120467.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1763119</commentid>
    <comment_count>20</comment_count>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-05-24 07:27:50 -0700</bug_when>
    <thetext>This should re-land combined with bug 112085</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1774048</commentid>
    <comment_count>21</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-07-01 02:48:46 -0700</bug_when>
    <thetext>&lt;rdar://problem/80013802&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785757</commentid>
    <comment_count>22</comment_count>
      <attachid>435961</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-20 02:38:52 -0700</bug_when>
    <thetext>Created attachment 435961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785776</commentid>
    <comment_count>23</comment_count>
      <attachid>435967</attachid>
    <who name="Tim Nguyen (:ntim)">ntim</who>
    <bug_when>2021-08-20 03:48:22 -0700</bug_when>
    <thetext>Created attachment 435967
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1785801</commentid>
    <comment_count>24</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-08-20 05:56:23 -0700</bug_when>
    <thetext>Committed r281309 (240729@main): &lt;https://commits.webkit.org/240729@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 435967.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190459</attachid>
            <date>2013-02-27 00:40:56 -0800</date>
            <delta_ts>2013-03-08 02:12:48 -0800</delta_ts>
            <desc>WIP patch</desc>
            <filename>bug-110952-20130227173710.patch</filename>
            <type>text/plain</type>
            <size>8641</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ0MDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmU1NzcyOGVjY2JlMmI4
MjIyZjBiZDhkMTk5N2ZiM2Y4ZjgzMDhiOC4uNTAzZTdmODhiODdmYzNkNDhmZmNkMmZjZTJmNjdm
Y2I4NzllZDM1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDEzLTAyLTI3ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
aW5lcnQgc3VidHJlZXMgbmVlZGVkIGZvciBtb2RhbCA8ZGlhbG9nPgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2VzIE5vZGU6OmRpc2Fi
bGVkKCkgdG8gcmV0dXJuIHRydWUgd2hlbiBhIG1vZGFsIGRpYWxvZyBpcworICAgICAgICBvcGVu
IGFuZCB0aGUgbm9kZSBpcyBub3QgaW4gdGhlIGRpYWxvZy4KKworICAgICAgICBSZXVzaW5nIGRp
c2FibGVkIGZvciBpbmVydG5lc3MgaXMgdXNlZnVsIGJlY2F1c2UgdGhlbiBldmVudAorICAgICAg
ICB0YXJnZXRpbmcgYW5kIGZvY3VzIGNvbnRyb2wgYXV0b21hdGljYWxseSBoYXZlIHRoZSBkZXNp
cmVkIGJlaGF2aW9yOgorICAgICAgICBpbmVydCBub2RlcyBhcmUgc2tpcHBlZCBvdmVyLgorCisg
ICAgICAgIFRlc3Q6IGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1ibG9j
a3MtbW91c2UtZXZlbnRzLmh0bWwKKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmFjdGl2ZU1vZGFsRGlhbG9nKTogUmV0dXJucyB0aGUgdG9w
bW9zdCBlbGVtZW50IGluIHRoZSB0b3AgbGF5ZXIuCisgICAgICAgIFNpbmNlIG5vdyB0aGUgb25s
eSBlbGVtZW50cyBpbiB0aGUgdG9wIGxheWVyIGFyZSBtb2RhbCBkaWFsb2dzLCBpdCBpcyB0aGUg
YWN0aXZlIG1vZGFsIGRpYWxvZy4KKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6OmlzSW5lcnQpOiBBcyBwZXIgdGhlIHNw
ZWMsIGEgbm9kZSB0aGF0IGlzIG5vdCBhbiBhbmNlc3RvciBvciBkZXNjZW5kYW50IG9mIHRoZSBt
b2RhbCBkaWFsb2cgaXMgaW5lcnQuCisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpkaXNhYmxlZCk6
IFJldHVybiBmYWxzZSB3aGVuIGluZXJ0LgorICAgICAgICAqIGRvbS9Ob2RlLmg6CisgICAgICAg
ICogaHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhU
TUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRpc2FibGVkKTogRmFsbCBiYWNrIHRvIHRoZSBzdXBlcmNs
YXNzIHNvIGluZXJ0IGlzIHRha2VuIGludG8gYWNjb3VudC4KKwogMjAxMy0wMi0yNiAgQW5kcmV3
IExvICA8YW5sb0ByaW0uY29tPgogCiAgICAgICAgIFtCbGFja0JlcnJ5XSBBbmltYXRlZCBpbWFn
ZXMgbm90IGFuaW1hdGluZyBvbiBhY2NlbGVyYXRlZCBjb21wb3NpdGluZyBsYXllcnMKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmgKaW5kZXggZDhiOTg2MzI5NjliMTliZTA4YTFiNDdkNmFmOTQzYmQ0MDdiNDhk
OC4uZmJmZWVhMmMxYzc5YmJjZTQ2NTBhZGNlYzM1NGJjMzhkOGIzOGNlNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmgKQEAgLTEyMDEsNiArMTIwMSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZFRvVG9w
TGF5ZXIoRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlRnJvbVRvcExheWVyKEVsZW1lbnQqKTsK
ICAgICBjb25zdCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+ID4mIHRvcExheWVyRWxlbWVudHMoKSBj
b25zdCB7IHJldHVybiBtX3RvcExheWVyRWxlbWVudHM7IH0KKyAgICBFbGVtZW50KiBhY3RpdmVN
b2RhbERpYWxvZygpIGNvbnN0IHsgcmV0dXJuICFtX3RvcExheWVyRWxlbWVudHMuaXNFbXB0eSgp
ID8gbV90b3BMYXllckVsZW1lbnRzLmxhc3QoKS5nZXQoKSA6IDA7IH0KICNlbmRpZgogCiAjaWYg
RU5BQkxFKFRFTVBMQVRFX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAKaW5kZXggZTdjNDY1MDFkMjE5
YTFkNDhkYjhiYjljYzBkMzBkY2EzZDk5ZWMzNC4uNjcxODZhZGYwNjUzNjlmMWYzNTEwNDcxZTUw
NzgxNjlhMzEzOWQzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcApAQCAtOTEyLDYgKzkxMiwxNCBAQCBOb2Rl
KiBOb2RlOjpmb2N1c0RlbGVnYXRlKCkKICAgICByZXR1cm4gdGhpczsKIH0KIAorI2lmIEVOQUJM
RShESUFMT0dfRUxFTUVOVCkKK2Jvb2wgTm9kZTo6aXNJbmVydCgpIGNvbnN0Cit7CisgICAgRWxl
bWVudCogZGlhbG9nID0gZG9jdW1lbnQoKS0+YWN0aXZlTW9kYWxEaWFsb2coKTsKKyAgICByZXR1
cm4gZGlhbG9nICYmICFjb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTShkaWFsb2cpICYmICFkaWFs
b2ctPmNvbnRhaW5zSW5jbHVkaW5nU2hhZG93RE9NKHRoaXMpOworfQorI2VuZGlmCisKIHVuc2ln
bmVkIE5vZGU6Om5vZGVJbmRleCgpIGNvbnN0CiB7CiAgICAgTm9kZSAqX3RlbXBOb2RlID0gcHJl
dmlvdXNTaWJsaW5nKCk7CkBAIC0yNDM5LDYgKzI0NDcsMTAgQEAgdm9pZCBOb2RlOjpkaXNwYXRj
aElucHV0RXZlbnQoKQogCiBib29sIE5vZGU6OmRpc2FibGVkKCkgY29uc3QKIHsKKyNpZiBFTkFC
TEUoRElBTE9HX0VMRU1FTlQpCisgICAgaWYgKGlzSW5lcnQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisjZW5kaWYKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGE4MzZi
ZjA2YzcwNmUwNGMzNjIzMTcxY2FhNDFiNmNjN2QwMWRmZGQuLmE1NjEwODI3NWU1OGVmMDUzMzU5
MzEyZTY2Y2YzMWI1MzdhMTBjMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNDA3LDYgKzQwNywxMCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCBib29sIGlzTW91c2VGb2N1c2FibGUoKSBjb25zdDsKICAgICB2
aXJ0dWFsIE5vZGUqIGZvY3VzRGVsZWdhdGUoKTsKIAorI2lmIEVOQUJMRShESUFMT0dfRUxFTUVO
VCkKKyAgICBib29sIGlzSW5lcnQoKSBjb25zdDsKKyNlbmRpZgorCiAgICAgZW51bSBVc2VyU2Vs
ZWN0QWxsVHJlYXRtZW50IHsKICAgICAgICAgVXNlclNlbGVjdEFsbERvZXNOb3RBZmZlY3RFZGl0
YWJpbGl0eSwKICAgICAgICAgVXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwCmluZGV4IGRlYTg0
YzBlNmRiMTE5YmRhZTc5MjM1OGIwYzJjMmY3YTdhY2M3NGIuLmEyN2UxMzAyYzhkMTRkYTI4MDk2
N2RlNTVhOGJkMTFmZDcwZTFlYWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TEZvcm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRm9y
bUNvbnRyb2xFbGVtZW50LmNwcApAQCAtMjgxLDcgKzI4MSw5IEBAIGJvb2wgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6ZGlzYWJsZWQoKSBjb25zdAogCiAgICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxl
ZFN0YXRlID09IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZVVua25vd24pCiAgICAgICAgIHVwZGF0ZUFu
Y2VzdG9yRGlzYWJsZWRTdGF0ZSgpOwotICAgIHJldHVybiBtX2FuY2VzdG9yRGlzYWJsZWRTdGF0
ZSA9PSBBbmNlc3RvckRpc2FibGVkU3RhdGVEaXNhYmxlZDsKKyAgICBpZiAobV9hbmNlc3RvckRp
c2FibGVkU3RhdGUgPT0gQW5jZXN0b3JEaXNhYmxlZFN0YXRlRGlzYWJsZWQpCisgICAgICAgIHJl
dHVybiB0cnVlOworICAgIHJldHVybiBIVE1MRWxlbWVudDo6ZGlzYWJsZWQoKTsKIH0KIAogYm9v
bCBIVE1MRm9ybUNvbnRyb2xFbGVtZW50Ojppc1JlcXVpcmVkKCkgY29uc3QKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBhODVi
NmZjNGQzMjNlMjM1NTQ1MGM4NjFhNTMxMDkwZDk3NWIzMDEzLi4yZTA3MDIzOTE0MmZiMjkxMzEz
ZGU0OWFkMGE3OThjMTQzZjlmYWVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTMtMDItMjcg
IE1hdHQgRmFsa2VuaGFnZW4gIDxmYWxrZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIEltcGxl
bWVudCBpbmVydCBzdWJ0cmVlcyBuZWVkZWQgZm9yIG1vZGFsIDxkaWFsb2c+CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NTIKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFs
b2dFbGVtZW50L21vZGFsLWRpYWxvZy1ibG9ja3MtbW91c2UtZXZlbnRzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9n
LWJsb2Nrcy1tb3VzZS1ldmVudHMuaHRtbDogQWRkZWQuCisKIDIwMTMtMDItMjYgIFphbiBEb2Jl
cnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVu
aW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQv
bW9kYWwtZGlhbG9nLWJsb2Nrcy1tb3VzZS1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWJsb2Nrcy1tb3VzZS1l
dmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg0ZmYxYzEwNTA0OGJjMjk4MTk1ZGQ5YmVk
MTRhZjljMTY5NjJkNmYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctYmxvY2tzLW1vdXNlLWV2ZW50cy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMSBAQAorRW5zdXJlIHRoYXQgbW91c2UgZXZlbnRzIGFyZSBub3Qg
ZGlzcGF0Y2hlZCB0byBhbiBpbmVydCBub2RlLiBUbyB0ZXN0IG1hbnVhbGx5LCBtb3ZlIHRoZSBt
b3VzZSB0byB0aGUgZ3JlZW4gYm94LCBjbGljaywgYW5kIHRoZW4gbW92ZSB0aGUgbW91c2Ugb3V0
c2lkZS4gVGhlbiByZXBlYXQgZm9yIHRoZSByZWQgYm94LiBUaGUgdGVzdCBzdWNjZWVkcyBpZiBn
cmVlbiBib3ggcmVtYWlucyBncmVlbiBhbmQgdGhlIHJlZCBib3ggdHVybnMgZ3JlZW4uCisKK09u
IHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxv
d2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGluZXJ0RGl2LmZpcmVkT24gaXMgZmFs
c2UKK1BBU1MgT2JqZWN0LmtleXMoZGlhbG9nRGl2LmZpcmVkT25FdmVudHMpLmxlbmd0aCBpcyBl
dmVudHMubGVuZ3RoCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09N
UExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1l
bnQvbW9kYWwtZGlhbG9nLWJsb2Nrcy1tb3VzZS1ldmVudHMuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1ibG9ja3MtbW91c2UtZXZlbnRz
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNzJkYjA5MzI2OWFmZmU0ZWUzOGYyNDc2YTg0NTk2ZDFjODMwOTBi
OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVt
ZW50L21vZGFsLWRpYWxvZy1ibG9ja3MtbW91c2UtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw4MSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorI2luZXJ0LWRpdiB7
CisgICAgaGVpZ2h0OiAxMDBweDsKKyAgICB3aWR0aDogMTAwcHg7CisgICAgYmFja2dyb3VuZDog
Z3JlZW47Cit9CisKKyNkaWFsb2ctZGl2IHsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHdpZHRo
OiAxMDBweDsKKyAgICBiYWNrZ3JvdW5kOiByZWQ7Cit9Cis8L3N0eWxlPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8
Ym9keT4KKzxkaXYgaWQ9ImluZXJ0LWRpdiI+PC9kaXY+Cis8ZGlhbG9nIGlkPSJkaWFsb2ciPgor
ICAgIDxkaXYgaWQ9ImRpYWxvZy1kaXYiPjwvZGl2PgorPC9kaWFsb2c+Cis8c2NyaXB0PgorZGVz
Y3JpcHRpb24oJ0Vuc3VyZSB0aGF0IG1vdXNlIGV2ZW50cyBhcmUgbm90IGRpc3BhdGNoZWQgdG8g
YW4gaW5lcnQgbm9kZS4gVG8gdGVzdCBtYW51YWxseSwgbW92ZSB0aGUgbW91c2UgdG8gdGhlIGdy
ZWVuIGJveCwgY2xpY2ssIGFuZCB0aGVuIG1vdmUgdGhlIG1vdXNlIG91dHNpZGUuIFRoZW4gcmVw
ZWF0IGZvciB0aGUgcmVkIGJveC4gVGhlIHRlc3Qgc3VjY2VlZHMgaWYgZ3JlZW4gYm94IHJlbWFp
bnMgZ3JlZW4gYW5kIHRoZSByZWQgYm94IHR1cm5zIGdyZWVuLicpOworCitmdW5jdGlvbiBjbGlj
a09uKGVsZW1lbnQpCit7CisgICAgaWYgKCF3aW5kb3cuZXZlbnRTZW5kZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIHZhciBhYnNvbHV0ZVRvcCA9IDA7CisgICAgdmFyIGFic29sdXRlTGVmdCA9
IDA7CisgICAgZm9yICh2YXIgcGFyZW50Tm9kZSA9IGVsZW1lbnQ7IHBhcmVudE5vZGU7IHBhcmVu
dE5vZGUgPSBwYXJlbnROb2RlLm9mZnNldFBhcmVudCkgeworICAgICAgYWJzb2x1dGVMZWZ0ICs9
IHBhcmVudE5vZGUub2Zmc2V0TGVmdDsKKyAgICAgIGFic29sdXRlVG9wICs9IHBhcmVudE5vZGUu
b2Zmc2V0VG9wOworICAgIH0KKworICAgIHZhciB4ID0gYWJzb2x1dGVMZWZ0ICsgZWxlbWVudC5v
ZmZzZXRXaWR0aCAvIDI7CisgICAgdmFyIHkgPSBhYnNvbHV0ZVRvcCArIGVsZW1lbnQub2Zmc2V0
SGVpZ2h0IC8gMjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVu
dFNlbmRlci5tb3VzZURvd24oKTsKKyAgICBldmVudFNlbmRlci5tb3VzZVVwKCk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZGlhbG9nLnNob3dNb2RhbCgpOworCitp
bmVydERpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbmVydC1kaXYnKTsKK2RpYWxvZ0Rp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkaWFsb2ctZGl2Jyk7CitpbmVydERpdi5maXJl
ZE9uID0gZmFsc2U7CitldmVudEZpcmVkT25JbmVydE5vZGUgPSBmdW5jdGlvbihldmVudCkgewor
ICAgIGluZXJ0RGl2LmZpcmVkT24gPSB0cnVlOworICAgIGluZXJ0RGl2LnN0eWxlLmJhY2tncm91
bmRDb2xvciA9ICdyZWQnOworfQorCitldmVudHMgPSAgWydtb3VzZWRvd24nLCAnbW91c2V1cCcs
ICdjbGljaycsICdtb3VzZW1vdmUnLCAnbW91c2VvdmVyJywgJ21vdXNlb3V0J107CitkaWFsb2dE
aXYuZmlyZWRPbkV2ZW50cyA9IHt9OworZXZlbnRGaXJlZE9uRGlhbG9nID0gZnVuY3Rpb24oZXZl
bnQpIHsKKyAgICBkaWFsb2dEaXYuZmlyZWRPbkV2ZW50c1tldmVudC50eXBlXSA9IHRydWU7Cisg
ICAgaWYgKE9iamVjdC5rZXlzKGRpYWxvZ0Rpdi5maXJlZE9uRXZlbnRzKS5sZW5ndGggPT0gZXZl
bnRzLmxlbmd0aCkKKyAgICAgICAgZGlhbG9nRGl2LnN0eWxlLmJhY2tncm91bmRDb2xvciA9ICdn
cmVlbic7Cit9CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRzLmxlbmd0aDsgKytpKSB7Cisg
ICAgaW5lcnREaXYuYWRkRXZlbnRMaXN0ZW5lcihldmVudHNbaV0sIGV2ZW50RmlyZWRPbkluZXJ0
Tm9kZSk7CisgICAgZGlhbG9nRGl2LmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRzW2ldLCBldmVudEZp
cmVkT25EaWFsb2cpOworfQorCitjbGlja09uKGluZXJ0RGl2KTsKK2NsaWNrT24oZGlhbG9nRGl2
KTsKKworc2hvdWxkQmVGYWxzZSgnaW5lcnREaXYuZmlyZWRPbicpOworc2hvdWxkQmUoJ09iamVj
dC5rZXlzKGRpYWxvZ0Rpdi5maXJlZE9uRXZlbnRzKS5sZW5ndGgnLCAnZXZlbnRzLmxlbmd0aCcp
OworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192181</attachid>
            <date>2013-03-08 02:12:51 -0800</date>
            <delta_ts>2021-08-20 01:50:21 -0700</delta_ts>
            <desc>add test cases for non-modal and non-open dialogs</desc>
            <filename>bug-110952-20130308190854.patch</filename>
            <type>text/plain</type>
            <size>14836</size>
            <attacher name="Matt Falkenhagen">falken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1MTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDNkZDc0MTk2YjU4MzAy
OWZiMzNjNWRlZjVhOGMwZjI5NTI2MjE3Zi4uZjU0MjJhNmNhNTYwMDM0ZmZhM2IzNDJiMDUzZGI4
YzhlYzI1YmE2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEzLTAzLTA4ICBNYXR0
IEZhbGtlbmhhZ2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQg
aW5lcnQgc3VidHJlZXMgbmVlZGVkIGZvciBtb2RhbCA8ZGlhbG9nPgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTUyCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBjaGFuZ2VzIE5vZGU6OmRpc2Fi
bGVkKCkgdG8gcmV0dXJuIHRydWUgd2hlbiBhIG1vZGFsIGRpYWxvZyBpcworICAgICAgICBvcGVu
IGFuZCB0aGUgbm9kZSBpcyBub3QgaW4gdGhlIGRpYWxvZy4KKworICAgICAgICBSZXVzaW5nIGRp
c2FibGVkIGZvciBpbmVydG5lc3MgaXMgdXNlZnVsIGJlY2F1c2UgdGhlbiBldmVudAorICAgICAg
ICB0YXJnZXRpbmcgYW5kIGZvY3VzIGNvbnRyb2wgYXV0b21hdGljYWxseSBoYXZlIHRoZSBkZXNp
cmVkIGJlaGF2aW9yOgorICAgICAgICBpbmVydCBub2RlcyBhcmUgc2tpcHBlZCBvdmVyLgorCisg
ICAgICAgIFRlc3RzOiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9jbG9zZWQtZGlhbG9nLWRv
ZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50cy5odG1sCisgICAgICAgICAgICAgICBmYXN0L2RvbS9I
VE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctYmxvY2tzLW1vdXNlLWV2ZW50cy5odG1sCisg
ICAgICAgICAgICAgICBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9ub24tbW9kYWwtZGlhbG9n
LWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50cy5odG1sCisKKyAgICAgICAgKiBkb20vRG9jdW1l
bnQuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50OjphY3RpdmVNb2RhbERpYWxvZyk6IFJl
dHVybnMgdGhlIHRvcG1vc3QgZWxlbWVudCBpbiB0aGUgdG9wIGxheWVyLgorICAgICAgICBTaW5j
ZSBub3cgdGhlIG9ubHkgZWxlbWVudHMgaW4gdGhlIHRvcCBsYXllciBhcmUgbW9kYWwgZGlhbG9n
cywgaXQgaXMgdGhlIGFjdGl2ZSBtb2RhbCBkaWFsb2cuCisgICAgICAgICogZG9tL05vZGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luZXJ0KTog
QXMgcGVyIHRoZSBzcGVjLCBhIG5vZGUgdGhhdCBpcyBub3QgYW4gYW5jZXN0b3Igb3IgZGVzY2Vu
ZGFudCBvZiB0aGUgbW9kYWwgZGlhbG9nIGlzIGluZXJ0LgorICAgICAgICAoV2ViQ29yZTo6Tm9k
ZTo6ZGlzYWJsZWQpOiBSZXR1cm4gZmFsc2Ugd2hlbiBpbmVydC4KKyAgICAgICAgKiBkb20vTm9k
ZS5oOgorICAgICAgICAqIGh0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRm9ybUNvbnRyb2xFbGVtZW50OjpkaXNhYmxlZCk6IEZhbGwgYmFjayB0
byB0aGUgc3VwZXJjbGFzcyBzbyBpbmVydCBpcyB0YWtlbiBpbnRvIGFjY291bnQuCisKIDIwMTMt
MDMtMDcgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDUwOTcuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmlu
ZGV4IDFhZDYxNTEzNTNiNmFlNDI4ODdjYWU4YTUzMjU3ODM5OWU2NGU2ZjMuLjk2MjNmZmEwYzZl
OTNjYmQ2ZjUwOTc4MGUwZTM4MDEzOTYyMTc3ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0x
MTc5LDYgKzExNzksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRUb1RvcExheWVyKEVsZW1lbnQq
KTsKICAgICB2b2lkIHJlbW92ZUZyb21Ub3BMYXllcihFbGVtZW50Kik7CiAgICAgY29uc3QgVmVj
dG9yPFJlZlB0cjxFbGVtZW50PiA+JiB0b3BMYXllckVsZW1lbnRzKCkgY29uc3QgeyByZXR1cm4g
bV90b3BMYXllckVsZW1lbnRzOyB9CisgICAgRWxlbWVudCogYWN0aXZlTW9kYWxEaWFsb2coKSBj
b25zdCB7IHJldHVybiAhbV90b3BMYXllckVsZW1lbnRzLmlzRW1wdHkoKSA/IG1fdG9wTGF5ZXJF
bGVtZW50cy5sYXN0KCkuZ2V0KCkgOiAwOyB9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShURU1QTEFU
RV9FTEVNRU5UKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwCmluZGV4IDA3YzVjZWNiMTQ0ZjgzNmQxZmY2OGEzNmVm
MTI4NWI0MmI5MGUxZTEuLjhjMmVmMjcwN2M3OGRmODIxMzBkYjdkMTk1NTFiNzg4ZmRkOGJhMDgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5jcHAKQEAgLTkwNyw2ICs5MDcsMTQgQEAgTm9kZSogTm9kZTo6Zm9jdXNE
ZWxlZ2F0ZSgpCiAgICAgcmV0dXJuIHRoaXM7CiB9CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1F
TlQpCitib29sIE5vZGU6OmlzSW5lcnQoKSBjb25zdAoreworICAgIEVsZW1lbnQqIGRpYWxvZyA9
IGRvY3VtZW50KCktPmFjdGl2ZU1vZGFsRGlhbG9nKCk7CisgICAgcmV0dXJuIGRpYWxvZyAmJiAh
Y29udGFpbnNJbmNsdWRpbmdTaGFkb3dET00oZGlhbG9nKSAmJiAhZGlhbG9nLT5jb250YWluc0lu
Y2x1ZGluZ1NoYWRvd0RPTSh0aGlzKTsKK30KKyNlbmRpZgorCiB1bnNpZ25lZCBOb2RlOjpub2Rl
SW5kZXgoKSBjb25zdAogewogICAgIE5vZGUgKl90ZW1wTm9kZSA9IHByZXZpb3VzU2libGluZygp
OwpAQCAtMjQ1MSw2ICsyNDU5LDEwIEBAIHZvaWQgTm9kZTo6ZGlzcGF0Y2hJbnB1dEV2ZW50KCkK
IAogYm9vbCBOb2RlOjpkaXNhYmxlZCgpIGNvbnN0CiB7CisjaWYgRU5BQkxFKERJQUxPR19FTEVN
RU5UKQorICAgIGlmIChpc0luZXJ0KCkpCisgICAgICAgIHJldHVybiB0cnVlOworI2VuZGlmCiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9k
ZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCBmNWJmYzhjYmJhOGZkMmNiYTVl
NjZjZDY1YTRiYzg3YjU0MGMyMTIzLi5iNDA3ODYzNTE2ZTE2YmE5MzExYjY5MmM3ODM5NGRiYTMy
YjAyMjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmgKQEAgLTQxNCw2ICs0MTQsMTAgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBOb2RlKiBm
b2N1c0RlbGVnYXRlKCk7CiAKKyNpZiBFTkFCTEUoRElBTE9HX0VMRU1FTlQpCisgICAgYm9vbCBp
c0luZXJ0KCkgY29uc3Q7CisjZW5kaWYKKwogICAgIGVudW0gVXNlclNlbGVjdEFsbFRyZWF0bWVu
dCB7CiAgICAgICAgIFVzZXJTZWxlY3RBbGxEb2VzTm90QWZmZWN0RWRpdGFiaWxpdHksCiAgICAg
ICAgIFVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MRm9ybUNvbnRyb2xFbGVtZW50LmNwcAppbmRleCA3MGFmMGJjNWQxZGZmYTNkNGE2
ODdlZmE0MTdjMTU1MzA2ZDgxOTA1Li41MTU2YjFkNjQ5MDQ1YWE3N2FjNmY1N2M4MTBkMWNmMTc3
YzQ4NDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGb3JtQ29udHJvbEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEZvcm1Db250cm9sRWxlbWVu
dC5jcHAKQEAgLTI4MSw3ICsyODEsOSBAQCBib29sIEhUTUxGb3JtQ29udHJvbEVsZW1lbnQ6OmRp
c2FibGVkKCkgY29uc3QKIAogICAgIGlmIChtX2FuY2VzdG9yRGlzYWJsZWRTdGF0ZSA9PSBBbmNl
c3RvckRpc2FibGVkU3RhdGVVbmtub3duKQogICAgICAgICB1cGRhdGVBbmNlc3RvckRpc2FibGVk
U3RhdGUoKTsKLSAgICByZXR1cm4gbV9hbmNlc3RvckRpc2FibGVkU3RhdGUgPT0gQW5jZXN0b3JE
aXNhYmxlZFN0YXRlRGlzYWJsZWQ7CisgICAgaWYgKG1fYW5jZXN0b3JEaXNhYmxlZFN0YXRlID09
IEFuY2VzdG9yRGlzYWJsZWRTdGF0ZURpc2FibGVkKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICByZXR1cm4gSFRNTEVsZW1lbnQ6OmRpc2FibGVkKCk7CiB9CiAKIGJvb2wgSFRNTEZvcm1Db250
cm9sRWxlbWVudDo6aXNSZXF1aXJlZCgpIGNvbnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYWZjNDA4Zjg4NzJiNDRmNDU4
MzBhMmRlYjI2YWNmNzY0OGQzYzdmNy4uNGRhMGRkM2FlZTdkNjY1MGUzOWU3YTVjY2Y1YWQyOGNj
ZWRlMGQxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEzLTAzLTA4ICBNYXR0IEZhbGtlbmhh
Z2VuICA8ZmFsa2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBJbXBsZW1lbnQgaW5lcnQgc3Vi
dHJlZXMgbmVlZGVkIGZvciBtb2RhbCA8ZGlhbG9nPgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9jbG9z
ZWQtZGlhbG9nLWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50cy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L2Nsb3NlZC1kaWFsb2ctZG9l
cy1ub3QtYmxvY2stbW91c2UtZXZlbnRzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxEaWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1ibG9ja3MtbW91c2UtZXZlbnRzLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9k
YWwtZGlhbG9nLWJsb2Nrcy1tb3VzZS1ldmVudHMuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbm9uLW1vZGFsLWRpYWxvZy1kb2VzLW5vdC1ibG9jay1t
b3VzZS1ldmVudHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC9ub24tbW9kYWwtZGlhbG9nLWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50
cy5odG1sOiBBZGRlZC4KKwogMjAxMy0wMy0wNyAgUmFmYWVsIFdlaW5zdGVpbiAgPHJhZmFlbHdA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZ2FyZGVuaW5nLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvY2xvc2VkLWRpYWxvZy1k
b2VzLW5vdC1ibG9jay1tb3VzZS1ldmVudHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvY2xvc2VkLWRpYWxvZy1kb2VzLW5vdC1ibG9jay1tb3Vz
ZS1ldmVudHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0OWE5MDUzYWVjODJlMWNlODc5Yjgw
NzM4OGI1ZTMxZWQwYjdhNGEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC9jbG9zZWQtZGlhbG9nLWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2
ZW50cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMCBAQAorVGVzdCBmb3IgYnVnIDExMDk1Mi4g
RW5zdXJlIHRoYXQgY2xvc2VkIGRpYWxvZ3MgZG8gbm90IGJsb2NrIG1vdXNlIGV2ZW50cy4gVG8g
dGVzdCBtYW51YWxseSwgY2xpY2sgdGhlIHJlZCBib3guIFRoZSB0ZXN0IHN1Y2NlZWRzIGlmIHRo
ZSByZWQgYm94IHR1cm5zIGdyZWVuLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJp
ZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKwor
UEFTUyBkaXYuZmlyZWRPbiBpcyB0cnVlCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVl
CisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TERpYWxvZ0VsZW1lbnQvY2xvc2VkLWRpYWxvZy1kb2VzLW5vdC1ibG9jay1tb3VzZS1ldmVudHMu
aHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L2Nsb3NlZC1kaWFs
b2ctZG9lcy1ub3QtYmxvY2stbW91c2UtZXZlbnRzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmFjNTQ3M2M1
ZGNkNGIwMjEyMjNlOGMzODg5MzBkNzk0NGMzZjY3NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L2Nsb3NlZC1kaWFsb2ctZG9lcy1ub3Qt
YmxvY2stbW91c2UtZXZlbnRzLmh0bWwKQEAgLTAsMCArMSw2MyBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorI2RpdiB7CisgICAgaGVpZ2h0OiAxMDBweDsKKyAg
ICB3aWR0aDogMTAwcHg7CisgICAgYmFja2dyb3VuZDogcmVkOworfQorPC9zdHlsZT4KKzxzY3Jp
cHQgc3JjPSIuLi8uLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdD4KK2lmICh3aW5kb3cuaW50ZXJuYWxzKQorICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRE
aWFsb2dFbGVtZW50RW5hYmxlZCh0cnVlKTsKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8
ZGl2IGlkPSJkaXYiPjwvZGl2PgorPGRpYWxvZyBpZD0iZGlhbG9nIj48L2RpYWxvZz4KKzxkaWFs
b2c+PC9kaWFsb2c+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9yIGJ1ZyAxMTA5NTIu
IEVuc3VyZSB0aGF0IGNsb3NlZCBkaWFsb2dzIGRvIG5vdCBibG9jayBtb3VzZSBldmVudHMuIFRv
IHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSByZWQgYm94LiBUaGUgdGVzdCBzdWNjZWVkcyBpZiB0
aGUgcmVkIGJveCB0dXJucyBncmVlbi4nKTsKKworZnVuY3Rpb24gY2xpY2tPbihlbGVtZW50KQor
eworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICByZXR1cm47CisKKyAgICB2
YXIgYWJzb2x1dGVUb3AgPSAwOworICAgIHZhciBhYnNvbHV0ZUxlZnQgPSAwOworICAgIGZvciAo
dmFyIHBhcmVudE5vZGUgPSBlbGVtZW50OyBwYXJlbnROb2RlOyBwYXJlbnROb2RlID0gcGFyZW50
Tm9kZS5vZmZzZXRQYXJlbnQpIHsKKyAgICAgIGFic29sdXRlTGVmdCArPSBwYXJlbnROb2RlLm9m
ZnNldExlZnQ7CisgICAgICBhYnNvbHV0ZVRvcCArPSBwYXJlbnROb2RlLm9mZnNldFRvcDsKKyAg
ICB9CisKKyAgICB2YXIgeCA9IGFic29sdXRlTGVmdCArIGVsZW1lbnQub2Zmc2V0V2lkdGggLyAy
OworICAgIHZhciB5ID0gYWJzb2x1dGVUb3AgKyBlbGVtZW50Lm9mZnNldEhlaWdodCAvIDI7Cisg
ICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VE
b3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpCisgICAgZXZlbnRTZW5kZXIubW91c2VN
b3ZlVG8oMCwgMCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0UnVubmVy
LmR1bXBBc1RleHQoKTsKKworZGlhbG9nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxv
ZycpOworZGlhbG9nLnNob3dNb2RhbCgpOworZGlhbG9nLmNsb3NlKCk7CisKK2RpdiA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCdkaXYnKTsKK2Rpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycs
IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGl2LmZpcmVkT24gPSB0cnVlOworICAgIGRpdi5zdHls
ZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JlZW4nOworfSk7CisKK2NsaWNrT24oZGl2KTsKKworc2hv
dWxkQmVUcnVlKCdkaXYuZmlyZWRPbicpOworPC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4v
anMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2Rh
bC1kaWFsb2ctYmxvY2tzLW1vdXNlLWV2ZW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctYmxvY2tzLW1vdXNlLWV2ZW50
cy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGU5N2JjNTk3ZjJkYTFhMjM5NDYxZWZjMDViYjgx
NGIxNmM5NDE0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxE
aWFsb2dFbGVtZW50L21vZGFsLWRpYWxvZy1ibG9ja3MtbW91c2UtZXZlbnRzLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDExIEBACitUZXN0IGZvciBidWcgMTEwOTUyLiBFbnN1cmUgdGhhdCBtb3Vz
ZSBldmVudHMgYXJlIG5vdCBkaXNwYXRjaGVkIHRvIGFuIGluZXJ0IG5vZGUuIFRvIHRlc3QgbWFu
dWFsbHksIG1vdmUgdGhlIG1vdXNlIHRvIHRoZSBncmVlbiBib3gsIGNsaWNrLCBhbmQgdGhlbiBt
b3ZlIHRoZSBtb3VzZSBvdXRzaWRlLiBUaGVuIHJlcGVhdCBmb3IgdGhlIHJlZCBib3guIFRoZSB0
ZXN0IHN1Y2NlZWRzIGlmIGdyZWVuIGJveCByZW1haW5zIGdyZWVuIGFuZCB0aGUgcmVkIGJveCB0
dXJucyBncmVlbi4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNT
IiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5lcnRE
aXYuZmlyZWRPbiBpcyBmYWxzZQorUEFTUyBPYmplY3Qua2V5cyhkaWFsb2dEaXYuZmlyZWRPbkV2
ZW50cykubGVuZ3RoIGlzIGV2ZW50cy5sZW5ndGgKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlz
IHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9IVE1MRGlhbG9nRWxlbWVudC9tb2RhbC1kaWFsb2ctYmxvY2tzLW1vdXNlLWV2ZW50cy5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWJs
b2Nrcy1tb3VzZS1ldmVudHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNTJiYjZiYWVjMTdjMDA0OWMzY2Iy
MGVjMThmNDdhZDNiMGZmMjEzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9k
b20vSFRNTERpYWxvZ0VsZW1lbnQvbW9kYWwtZGlhbG9nLWJsb2Nrcy1tb3VzZS1ldmVudHMuaHRt
bApAQCAtMCwwICsxLDg1IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+Cis8c3R5
bGU+CisjaW5lcnQtZGl2IHsKKyAgICBoZWlnaHQ6IDEwMHB4OworICAgIHdpZHRoOiAxMDBweDsK
KyAgICBiYWNrZ3JvdW5kOiBncmVlbjsKK30KKworI2RpYWxvZy1kaXYgeworICAgIGhlaWdodDog
MTAwcHg7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKzwvc3R5
bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFscykKKyAgICBpbnRlcm5hbHMuc2V0
dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7Cis8L3NjcmlwdD4KKzwvaGVhZD4K
Kzxib2R5PgorPGRpdiBpZD0iaW5lcnQtZGl2Ij48L2Rpdj4KKzxkaWFsb2cgaWQ9ImRpYWxvZyI+
CisgICAgPGRpdiBpZD0iZGlhbG9nLWRpdiI+PC9kaXY+Cis8L2RpYWxvZz4KKzxzY3JpcHQ+Citk
ZXNjcmlwdGlvbignVGVzdCBmb3IgYnVnIDExMDk1Mi4gRW5zdXJlIHRoYXQgbW91c2UgZXZlbnRz
IGFyZSBub3QgZGlzcGF0Y2hlZCB0byBhbiBpbmVydCBub2RlLiBUbyB0ZXN0IG1hbnVhbGx5LCBt
b3ZlIHRoZSBtb3VzZSB0byB0aGUgZ3JlZW4gYm94LCBjbGljaywgYW5kIHRoZW4gbW92ZSB0aGUg
bW91c2Ugb3V0c2lkZS4gVGhlbiByZXBlYXQgZm9yIHRoZSByZWQgYm94LiBUaGUgdGVzdCBzdWNj
ZWVkcyBpZiBncmVlbiBib3ggcmVtYWlucyBncmVlbiBhbmQgdGhlIHJlZCBib3ggdHVybnMgZ3Jl
ZW4uJyk7CisKK2Z1bmN0aW9uIGNsaWNrT24oZWxlbWVudCkKK3sKKyAgICBpZiAoIXdpbmRvdy5l
dmVudFNlbmRlcikKKyAgICAgICAgcmV0dXJuOworCisgICAgdmFyIGFic29sdXRlVG9wID0gMDsK
KyAgICB2YXIgYWJzb2x1dGVMZWZ0ID0gMDsKKyAgICBmb3IgKHZhciBwYXJlbnROb2RlID0gZWxl
bWVudDsgcGFyZW50Tm9kZTsgcGFyZW50Tm9kZSA9IHBhcmVudE5vZGUub2Zmc2V0UGFyZW50KSB7
CisgICAgICBhYnNvbHV0ZUxlZnQgKz0gcGFyZW50Tm9kZS5vZmZzZXRMZWZ0OworICAgICAgYWJz
b2x1dGVUb3AgKz0gcGFyZW50Tm9kZS5vZmZzZXRUb3A7CisgICAgfQorCisgICAgdmFyIHggPSBh
YnNvbHV0ZUxlZnQgKyBlbGVtZW50Lm9mZnNldFdpZHRoIC8gMjsKKyAgICB2YXIgeSA9IGFic29s
dXRlVG9wICsgZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlRG93bigpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlVXAoKTsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbygwLCAwKTsKK30KKwor
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCitk
aWFsb2cuc2hvd01vZGFsKCk7CisKK2luZXJ0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2luZXJ0LWRpdicpOworZGlhbG9nRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RpYWxv
Zy1kaXYnKTsKK2luZXJ0RGl2LmZpcmVkT24gPSBmYWxzZTsKK2V2ZW50RmlyZWRPbkluZXJ0Tm9k
ZSA9IGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgaW5lcnREaXYuZmlyZWRPbiA9IHRydWU7CisgICAg
aW5lcnREaXYuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gJ3JlZCc7Cit9CisKK2V2ZW50cyA9ICBb
J21vdXNlZG93bicsICdtb3VzZXVwJywgJ2NsaWNrJywgJ21vdXNlbW92ZScsICdtb3VzZW92ZXIn
LCAnbW91c2VvdXQnXTsKK2RpYWxvZ0Rpdi5maXJlZE9uRXZlbnRzID0ge307CitldmVudEZpcmVk
T25EaWFsb2cgPSBmdW5jdGlvbihldmVudCkgeworICAgIGRpYWxvZ0Rpdi5maXJlZE9uRXZlbnRz
W2V2ZW50LnR5cGVdID0gdHJ1ZTsKKyAgICBpZiAoT2JqZWN0LmtleXMoZGlhbG9nRGl2LmZpcmVk
T25FdmVudHMpLmxlbmd0aCA9PSBldmVudHMubGVuZ3RoKQorICAgICAgICBkaWFsb2dEaXYuc3R5
bGUuYmFja2dyb3VuZENvbG9yID0gJ2dyZWVuJzsKK30KKworZm9yICh2YXIgaSA9IDA7IGkgPCBl
dmVudHMubGVuZ3RoOyArK2kpIHsKKyAgICBpbmVydERpdi5hZGRFdmVudExpc3RlbmVyKGV2ZW50
c1tpXSwgZXZlbnRGaXJlZE9uSW5lcnROb2RlKTsKKyAgICBkaWFsb2dEaXYuYWRkRXZlbnRMaXN0
ZW5lcihldmVudHNbaV0sIGV2ZW50RmlyZWRPbkRpYWxvZyk7Cit9CisKK2NsaWNrT24oaW5lcnRE
aXYpOworY2xpY2tPbihkaWFsb2dEaXYpOworCitzaG91bGRCZUZhbHNlKCdpbmVydERpdi5maXJl
ZE9uJyk7CitzaG91bGRCZSgnT2JqZWN0LmtleXMoZGlhbG9nRGl2LmZpcmVkT25FdmVudHMpLmxl
bmd0aCcsICdldmVudHMubGVuZ3RoJyk7Cis8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L25vbi1t
b2RhbC1kaWFsb2ctZG9lcy1ub3QtYmxvY2stbW91c2UtZXZlbnRzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L25vbi1tb2RhbC1kaWFsb2ctZG9l
cy1ub3QtYmxvY2stbW91c2UtZXZlbnRzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43NmVhNmIw
NDA5MDRmYzI2MWZhM2U5NzVmMGVhZDBlOGE2NDNlYmI0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTERpYWxvZ0VsZW1lbnQvbm9uLW1vZGFsLWRpYWxvZy1kb2Vz
LW5vdC1ibG9jay1tb3VzZS1ldmVudHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTAgQEAKK1Rl
c3QgZm9yIGJ1ZyAxMTA5NTIuIEVuc3VyZSB0aGF0IG5vbi1tb2RhbCBkaWFsb2dzIGRvIG5vdCBi
bG9jayBtb3VzZSBldmVudHMuIFRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSByZWQgYm94LiBU
aGUgdGVzdCBzdWNjZWVkcyBpZiB0aGUgcmVkIGJveCB0dXJucyBncmVlbi4KKworT24gc3VjY2Vz
cywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkg
IlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZGl2LmZpcmVkT24gaXMgdHJ1ZQorUEFTUyBzdWNj
ZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQorCitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxEaWFsb2dFbGVtZW50L25vbi1tb2RhbC1kaWFsb2ctZG9l
cy1ub3QtYmxvY2stbW91c2UtZXZlbnRzLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1M
RGlhbG9nRWxlbWVudC9ub24tbW9kYWwtZGlhbG9nLWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50
cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEyNmJkNWFkMDMzZWI3NTc4MmM1OTA2NzU5Yzg2NGUyMzVkZjMy
M2UKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MRGlhbG9nRWxl
bWVudC9ub24tbW9kYWwtZGlhbG9nLWRvZXMtbm90LWJsb2NrLW1vdXNlLWV2ZW50cy5odG1sCkBA
IC0wLDAgKzEsNjIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4K
KyNkaXYgeworICAgIGhlaWdodDogMTAwcHg7CisgICAgd2lkdGg6IDEwMHB4OworICAgIGJhY2tn
cm91bmQ6IHJlZDsKK30KKzwvc3R5bGU+Cis8c2NyaXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitpZiAod2luZG93LmludGVybmFs
cykKKyAgICBpbnRlcm5hbHMuc2V0dGluZ3Muc2V0RGlhbG9nRWxlbWVudEVuYWJsZWQodHJ1ZSk7
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBpZD0iZGl2Ij48L2Rpdj4KKzxkaWFs
b2cgaWQ9ImRpYWxvZyI+PC9kaWFsb2c+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgZm9y
IGJ1ZyAxMTA5NTIuIEVuc3VyZSB0aGF0IG5vbi1tb2RhbCBkaWFsb2dzIGRvIG5vdCBibG9jayBt
b3VzZSBldmVudHMuIFRvIHRlc3QgbWFudWFsbHksIGNsaWNrIHRoZSByZWQgYm94LiBUaGUgdGVz
dCBzdWNjZWVkcyBpZiB0aGUgcmVkIGJveCB0dXJucyBncmVlbi4nKTsKKworZnVuY3Rpb24gY2xp
Y2tPbihlbGVtZW50KQoreworICAgIGlmICghd2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB2YXIgYWJzb2x1dGVUb3AgPSAwOworICAgIHZhciBhYnNvbHV0ZUxlZnQg
PSAwOworICAgIGZvciAodmFyIHBhcmVudE5vZGUgPSBlbGVtZW50OyBwYXJlbnROb2RlOyBwYXJl
bnROb2RlID0gcGFyZW50Tm9kZS5vZmZzZXRQYXJlbnQpIHsKKyAgICAgIGFic29sdXRlTGVmdCAr
PSBwYXJlbnROb2RlLm9mZnNldExlZnQ7CisgICAgICBhYnNvbHV0ZVRvcCArPSBwYXJlbnROb2Rl
Lm9mZnNldFRvcDsKKyAgICB9CisKKyAgICB2YXIgeCA9IGFic29sdXRlTGVmdCArIGVsZW1lbnQu
b2Zmc2V0V2lkdGggLyAyOworICAgIHZhciB5ID0gYWJzb2x1dGVUb3AgKyBlbGVtZW50Lm9mZnNl
dEhlaWdodCAvIDI7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VEb3duKCk7CisgICAgZXZlbnRTZW5kZXIubW91c2VVcCgpCisgICAgZXZl
bnRTZW5kZXIubW91c2VNb3ZlVG8oMCwgMCk7Cit9CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikK
KyAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworZGlhbG9nID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2RpYWxvZycpOworZGlhbG9nLnNob3coKTsKKworZGl2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ2RpdicpOworZGl2LmZpcmVkT24gPSBmYWxzZTsKK2Rpdi5hZGRFdmVudExp
c3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgZGl2LmZpcmVkT24gPSB0cnVl
OworICAgIGRpdi5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSAnZ3JlZW4nOworfSk7CisKK2NsaWNr
T24oZGl2KTsKKworc2hvdWxkQmVUcnVlKCdkaXYuZmlyZWRPbicpOworPC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435961</attachid>
            <date>2021-08-20 02:38:52 -0700</date>
            <delta_ts>2021-08-20 03:48:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110952-20210820113850.patch</filename>
            <type>text/plain</type>
            <size>8171</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U0NDQyOGNlNTdkMjQ2
MjVhYmE3OTJmZmNhY2VlYTNkNWM1YWE0Yy4uZTUzMGRmNzQ0MDRiYTczNzE2ZTUzYjgwODg3Y2U5
ZjBjOTdmYTBkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDIxLTA4LTIwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiBpbmVydCBzdWJ0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5IGNvdmVyczoKKyAgICAgICAgLSBCbG9ja2luZyBmb2N1cywg
ZWRpdGluZywgc2VsZWN0aW5nCisgICAgICAgIC0gYXJpYS1oaWRkZW4gbGlrZSBiZWhhdmlvdXIK
KworICAgICAgICBIaXQgdGVzdGluZy9ldmVudCByZXRhcmdldGluZyB3aWxsIGJlIGNvdmVyZWQg
YnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTMzMCBwZW5kaW5n
IGEgc3BlYyBpc3N1ZQorCisgICAgICAgIFJlbGV2YW50IFdQVCBlbmFibGVkLiBNb3JlIHRlc3Rp
bmcgY292ZXJhZ2Ugd2lsbCBiZSBwcm92aWRlZCB3aXRoIHRoZSBpbmVydCBhdHRyaWJ1dGUuCisK
KyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBWEhpZGRlbiBjb25zdCk6CisgICAg
ICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aXNGb2N1
c2FibGUgY29uc3QpOgorICAgICAgICAqIGRvbS9Ob2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok5vZGU6OmNvbXB1dGVFZGl0YWJpbGl0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2Rl
OjpjYW5TdGFydFNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0lu
ZXJ0IGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDIxLTA4LTIwICBNeWxlcyBD
LiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgR2x5cGhCdWZmZXIg
Y2FuIGJlY29tZSBpbmNvbnNpc3RlbnQgd2l0aCBpdHMgYmFja2luZyBzdHJpbmcKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmlu
ZGV4IDhiNDEzNDcwMTRhOTlmOGM2OWM2NWQyNjU2NzBjYjc2ZTNlNDEwOGQuLjUwZDIwNWY0NWEz
NTFlMmQ4ZGNhNDhmMTBmZWE3MzAwY2NhMWRlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIyNyw2ICszMjI3
LDkgQEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlE
ZWZhdWx0KCkgY29uc3QKIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhL3Rlcm1zI2Rl
Zl9oaWRkZW4KIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBWEhpZGRlbigpIGNvbnN0CiB7
CisgICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmlzSW5lcnQoKSkKKyAgICAgICAgcmV0dXJuIHRy
dWU7CisKICAgICBpZiAoaXNGb2N1c2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCBmNDE1NGExZGRiNmYyMGQ0ZWIxMTQxOWNiZDRhYmMy
NTZmOTkyN2FhLi5kYzc1NTAzN2Q3ZGNiMjhhY2I1N2M5ZGRlZmJlOGRiZTExMGRkYzM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuY3BwCkBAIC02NDQsNyArNjQ0LDcgQEAgVmVjdG9yPFN0cmluZz4gRWxl
bWVudDo6Z2V0QXR0cmlidXRlTmFtZXMoKSBjb25zdAogCiBib29sIEVsZW1lbnQ6OmlzRm9jdXNh
YmxlKCkgY29uc3QKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIXN1cHBvcnRzRm9jdXMo
KSkKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIXN1cHBvcnRzRm9jdXMoKSB8fCBpc0luZXJ0
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L05vZGUuY3BwCmluZGV4IDY5MjRjZjM2YTEyMjlhMzQzNWQ3OGUwYjdkNGM1ZDNmNjNhNmZlMTQu
LmU3OTE2OWQ3ZjYyMTFmNjdlMjhiMjVkMGMxYWRjOGI4NTBjMDE1N2YgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5j
cHAKQEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJI
VE1MQXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJIVE1MRGlhbG9nRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVk
ZSAiSFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpAQCAt
NzgwLDcgKzc4MSw3IEBAIHN0YXRpYyBOb2RlOjpFZGl0YWJpbGl0eSBjb21wdXRlRWRpdGFiaWxp
dHlGcm9tQ29tcHV0ZWRTdHlsZShjb25zdCBOb2RlJiBzdGFydE5vCiAKIE5vZGU6OkVkaXRhYmls
aXR5IE5vZGU6OmNvbXB1dGVFZGl0YWJpbGl0eShVc2VyU2VsZWN0QWxsVHJlYXRtZW50IHRyZWF0
bWVudCwgU2hvdWxkVXBkYXRlU3R5bGUgc2hvdWxkVXBkYXRlU3R5bGUpIGNvbnN0CiB7Ci0gICAg
aWYgKCFkb2N1bWVudCgpLmhhc0xpdmluZ1JlbmRlclRyZWUoKSB8fCBpc1BzZXVkb0VsZW1lbnQo
KSkKKyAgICBpZiAoIWRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpIHx8IGlzUHNldWRv
RWxlbWVudCgpIHx8IGlzSW5lcnQoKSkKICAgICAgICAgcmV0dXJuIEVkaXRhYmlsaXR5OjpSZWFk
T25seTsKIAogICAgIGlmIChpc0luU2hhZG93VHJlZSgpKQpAQCAtMTEyNiw2ICsxMTI3LDkgQEAg
Ym9vbCBOb2RlOjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAgICAgaWYgKGhhc0VkaXRhYmxl
U3R5bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAoaXNJbmVydCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAocmVuZGVyZXIoKSkgewogICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgpOwogICAgICAgICAvLyBX
ZSBhbGxvdyBzZWxlY3Rpb25zIHRvIGJlZ2luIHdpdGhpbiBhbiBlbGVtZW50IHRoYXQgaGFzIC13
ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmUgc2V0LApAQCAtMjYxNyw2ICsyNjIxLDIzIEBAIHZvaWQq
IE5vZGU6Om9wYXF1ZVJvb3RTbG93KCkgY29uc3QKICAgICByZXR1cm4gY29uc3RfY2FzdDx2b2lk
Kj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG5vZGUpKTsKIH0KIAorYm9vbCBOb2RlOjppc0lu
ZXJ0KCkgY29uc3QKK3sKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCisgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgaWYgKHRoaXMgIT0gJmRvY3VtZW50KCkgJiYgdGhpcyAhPSBkb2N1bWVudCgp
LmRvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAgIE5vZGUqIGFjdGl2ZU1vZGFsRGlhbG9nID0g
ZG9jdW1lbnQoKS5hY3RpdmVNb2RhbERpYWxvZygpOworICAgICAgICBpZiAoYWN0aXZlTW9kYWxE
aWFsb2cgJiYgIWFjdGl2ZU1vZGFsRGlhbG9nLT5jb250YWluc0luY2x1ZGluZ1NoYWRvd0RPTSh0
aGlzKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGlmICghZG9jdW1l
bnQoKS5mcmFtZSgpIHx8ICFkb2N1bWVudCgpLmZyYW1lKCktPm93bmVyRWxlbWVudCgpKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5mcmFtZSgpLT5vd25l
ckVsZW1lbnQoKS0+aXNJbmVydCgpOworfQorCiB0ZW1wbGF0ZTw+IENvbnRhaW5lck5vZGUqIHBh
cmVudDxUcmVlPihjb25zdCBOb2RlJiBub2RlKQogewogICAgIHJldHVybiBub2RlLnBhcmVudE5v
ZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vTm9kZS5oCmluZGV4IGU1NTYwYzQyODU0OWZmZGU3MWNlYzE4ZmQwZWU5N2YxMTRm
OGJlZjMuLmRhZjZiZDkyZTBhMzQwMGEyZTA0ZWE5Y2E3ZGJmNjA5YjBmZGY3NTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuaApAQCAtNTI0LDYgKzUyNCwxMyBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGludDMyX3QgZmxh
Z0lzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHJldHVybiBzdGF0aWNfY2FzdDxpbnQzMl90
PihOb2RlRmxhZzo6SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCk7IH0KICNlbmRpZiAvLyBFTkFC
TEUoSklUKQogCisgICAgLy8gV2hldGhlciB0aGUgbm9kZSBpcyBpbmVydDoKKyAgICAvLyBodHRw
czovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnRlcmFjdGlvbi5odG1sI2luZXJ0
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvaW5lcnQvYmxvYi9tYXN0ZXIvUkVBRE1F
Lm1kCisgICAgLy8gVGhpcyBjYW4ndCBiZSBpbiBFbGVtZW50IGJlY2F1c2UgdGV4dCBub2RlcyBt
dXN0IGJlIHJlY29nbml6ZWQgYXMKKyAgICAvLyBpbmVydCB0byBwcmV2ZW50IHRleHQgc2VsZWN0
aW9uLgorICAgIGJvb2wgaXNJbmVydCgpIGNvbnN0OworCiBwcm90ZWN0ZWQ6CiAgICAgZW51bSBj
bGFzcyBOb2RlRmxhZyA6IHVpbnQzMl90IHsKICAgICAgICAgSXNDaGFyYWN0ZXJEYXRhID0gMSA8
PCAwLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNzg2Y2NlYmJlZmY2OTQ0MWY0
YzFiZWIzOTgzNDY2NzVjODI5Mjk5OS4uYzM0MTQ2Nzk4ZGE1MDBmODlhMDYzYTczOTgyY2QzMjk5
Y2FmNGUwZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAK
KzIwMjEtMDgtMjAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KKworICAgICAgICBJbml0
aWFsIGltcGxlbWVudGF0aW9uIG9mIGluZXJ0IHN1YnRyZWVzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NTIKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgY292ZXJzOgorICAgICAgICAt
IEJsb2NraW5nIGZvY3VzLCBlZGl0aW5nLCBzZWxlY3RpbmcKKyAgICAgICAgLSBhcmlhLWhpZGRl
biBsaWtlIGJlaGF2aW91cgorCisgICAgICAgIEhpdCB0ZXN0aW5nL2V2ZW50IHJldGFyZ2V0aW5n
IHdpbGwgYmUgY292ZXJlZCBieSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI5MzMwIHBlbmRpbmcgYSBzcGVjIGlzc3VlCisKKyAgICAgICAgUmVsZXZhbnQgV1BUIGVu
YWJsZWQuIE1vcmUgdGVzdGluZyBjb3ZlcmFnZSB3aWxsIGJlIHByb3ZpZGVkIHdpdGggdGhlIGlu
ZXJ0IGF0dHJpYnV0ZS4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFu
dGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvaW5lcnQtbm9kZS1p
cy11bmZvY3VzYWJsZS1leHBlY3RlZC50eHQ6CisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3Rz
L2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9y
ZW1vdmUtZGlhbG9nLXNob3VsZC11bmJsb2NrLWRvY3VtZW50LWV4cGVjdGVkLnR4dDoKKwogMjAy
MS0wOC0yMCAgVGltIE5ndXllbiAgPG50aW1AYXBwbGUuY29tPgogCiAgICAgICAgIEVuc3VyZSBh
bmNlc3RvcnMgd2l0aCBvcGFjaXR5IGRvbid0IGFmZmVjdCB0b3AgbGF5ZXIgZWxlbWVudHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2luZXJ0
LW5vZGUtaXMtdW5mb2N1c2FibGUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50
cy90aGUtZGlhbG9nLWVsZW1lbnQvaW5lcnQtbm9kZS1pcy11bmZvY3VzYWJsZS1leHBlY3RlZC50
eHQKaW5kZXggMGJhNzgzODA4NzA4NTU2NDY3OWYwMDExYTQ0NDIzYWRiZjRjMzBmMC4uZmUyYzQy
MjIwYmJjNDNmMjUxMzc1MzNiNDNiODJjYzEyZDQ4MzA5NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFj
dGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVsZW1lbnQvaW5lcnQtbm9kZS1pcy11bmZvY3VzYWJs
ZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVs
ZW1lbnQvaW5lcnQtbm9kZS1pcy11bmZvY3VzYWJsZS1leHBlY3RlZC50eHQKQEAgLTQsNSArNCw1
IEBAIEknbSBlZGl0YWJsZQogSSdtIHRhYmluZGV4ZWQuCiAgTGluawogCi1GQUlMIFRlc3QgdGhh
dCBpbmVydCBub2RlcyBhcmUgbm90IGZvY3VzYWJsZS4gYXNzZXJ0X2VxdWFsczogYm9keSBleHBl
Y3RlZCBmYWxzZSBidXQgZ290IHRydWUKK1BBU1MgVGVzdCB0aGF0IGluZXJ0IG5vZGVzIGFyZSBu
b3QgZm9jdXNhYmxlLgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1k
aWFsb2ctZWxlbWVudC9yZW1vdmUtZGlhbG9nLXNob3VsZC11bmJsb2NrLWRvY3VtZW50LWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L3JlbW92
ZS1kaWFsb2ctc2hvdWxkLXVuYmxvY2stZG9jdW1lbnQtZXhwZWN0ZWQudHh0CmluZGV4IGIxYzFk
OGQ0N2E5N2YzNzNlNDZmZGI1YjRkNWViMDk5MmIyYzVhNjYuLjRlNDJjMDNhNTQxZTc4OTc2NmUx
ZTc4Mjc1N2JlZDMyNzI0NTk1YjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMv
dGhlLWRpYWxvZy1lbGVtZW50L3JlbW92ZS1kaWFsb2ctc2hvdWxkLXVuYmxvY2stZG9jdW1lbnQt
ZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVt
ZW50L3JlbW92ZS1kaWFsb2ctc2hvdWxkLXVuYmxvY2stZG9jdW1lbnQtZXhwZWN0ZWQudHh0CkBA
IC0xLDQgKzEsNCBAQAotVGhpcyBpcyBhIGRpYWxvZwogCi1GQUlMIFRlc3QgdGhhdCByZW1vdmlu
ZyBkaWFsb2cgdW5ibG9ja3MgdGhlIGRvY3VtZW50LiBhc3NlcnRfZXF1YWxzOiBleHBlY3RlZCBm
YWxzZSBidXQgZ290IHRydWUKKworUEFTUyBUZXN0IHRoYXQgcmVtb3ZpbmcgZGlhbG9nIHVuYmxv
Y2tzIHRoZSBkb2N1bWVudC4KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>435967</attachid>
            <date>2021-08-20 03:48:22 -0700</date>
            <delta_ts>2021-08-20 05:56:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-110952-20210820124821.patch</filename>
            <type>text/plain</type>
            <size>7665</size>
            <attacher name="Tim Nguyen (:ntim)">ntim</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgxMzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggM2U0NDQyOGNlNTdkMjQ2
MjVhYmE3OTJmZmNhY2VlYTNkNWM1YWE0Yy4uYTgxNDA0ZDFlNjg5MDMyYzM3ZTllZjllOTFjZDA3
MDk1N2RlZjljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIxLTA4LTIwICBUaW0g
Tmd1eWVuICA8bnRpbUBhcHBsZS5jb20+CisKKyAgICAgICAgSW5pdGlhbCBpbXBsZW1lbnRhdGlv
biBvZiBpbmVydCBzdWJ0cmVlcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTEwOTUyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgQ3VycmVudGx5IGNvdmVyczoKKyAgICAgICAgLSBCbG9ja2luZyBmb2N1cyAm
IHNlbGVjdGluZworICAgICAgICAtIGFyaWEtaGlkZGVuIGxpa2UgYmVoYXZpb3VyCisKKyAgICAg
ICAgSGl0IHRlc3RpbmcvZXZlbnQgcmV0YXJnZXRpbmcgd2lsbCBiZSBjb3ZlcmVkIGJ5IGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjkzMzAgcGVuZGluZyBhIHNwZWMg
aXNzdWUKKworICAgICAgICBSZWxldmFudCBXUFQgZW5hYmxlZC4gTW9yZSB0ZXN0aW5nIGNvdmVy
YWdlIHdpbGwgYmUgcHJvdmlkZWQgd2l0aCB0aGUgaW5lcnQgYXR0cmlidXRlLgorCisgICAgICAg
ICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzQVhIaWRkZW4gY29uc3QpOgorICAgICAgICAqIGRv
bS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmlzRm9jdXNhYmxlIGNv
bnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjpj
YW5TdGFydFNlbGVjdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpOb2RlOjppc0luZXJ0
IGNvbnN0KToKKyAgICAgICAgKiBkb20vTm9kZS5oOgorCiAyMDIxLTA4LTIwICBNeWxlcyBDLiBN
YXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAKICAgICAgICAgR2x5cGhCdWZmZXIgY2Fu
IGJlY29tZSBpbmNvbnNpc3RlbnQgd2l0aCBpdHMgYmFja2luZyBzdHJpbmcKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCmluZGV4
IDhiNDEzNDcwMTRhOTlmOGM2OWM2NWQyNjU2NzBjYjc2ZTNlNDEwOGQuLjUwZDIwNWY0NWEzNTFl
MmQ4ZGNhNDhmMTBmZWE3MzAwY2NhMWRlZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAtMzIyNyw2ICszMjI3LDkg
QEAgYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjphY2Nlc3NpYmlsaXR5SXNJZ25vcmVkQnlEZWZh
dWx0KCkgY29uc3QKIC8vIGh0dHA6Ly93d3cudzMub3JnL1RSL3dhaS1hcmlhL3Rlcm1zI2RlZl9o
aWRkZW4KIGJvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBWEhpZGRlbigpIGNvbnN0CiB7Cisg
ICAgaWYgKG5vZGUoKSAmJiBub2RlKCktPmlzSW5lcnQoKSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKICAgICBpZiAoaXNGb2N1c2VkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcAppbmRleCBmNDE1NGExZGRiNmYyMGQ0ZWIxMTQxOWNiZDRhYmMyNTZm
OTkyN2FhLi5kYzc1NTAzN2Q3ZGNiMjhhY2I1N2M5ZGRlZmJlOGRiZTExMGRkYzM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnQuY3BwCkBAIC02NDQsNyArNjQ0LDcgQEAgVmVjdG9yPFN0cmluZz4gRWxlbWVu
dDo6Z2V0QXR0cmlidXRlTmFtZXMoKSBjb25zdAogCiBib29sIEVsZW1lbnQ6OmlzRm9jdXNhYmxl
KCkgY29uc3QKIHsKLSAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIXN1cHBvcnRzRm9jdXMoKSkK
KyAgICBpZiAoIWlzQ29ubmVjdGVkKCkgfHwgIXN1cHBvcnRzRm9jdXMoKSB8fCBpc0luZXJ0KCkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmICghcmVuZGVyZXIoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL05v
ZGUuY3BwCmluZGV4IDY5MjRjZjM2YTEyMjlhMzQzNWQ3OGUwYjdkNGM1ZDNmNjNhNmZlMTQuLjdl
ZTExMjY0Yzc3MjZmNDQ0ODI0Y2Y0YWQ3NDljODEzODYzY2Q5NGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Ob2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5jcHAK
QEAgLTQ0LDYgKzQ0LDcgQEAKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJIVE1M
QXJlYUVsZW1lbnQuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKKyNpbmNsdWRlICJI
VE1MRGlhbG9nRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50LmgiCiAjaW5jbHVkZSAi
SFRNTEltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUTUxTbG90RWxlbWVudC5oIgpAQCAtMTEy
Niw2ICsxMTI3LDkgQEAgYm9vbCBOb2RlOjpjYW5TdGFydFNlbGVjdGlvbigpIGNvbnN0CiAgICAg
aWYgKGhhc0VkaXRhYmxlU3R5bGUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKKyAgICBpZiAo
aXNJbmVydCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICBpZiAocmVuZGVyZXIoKSkg
ewogICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlcigpLT5zdHlsZSgp
OwogICAgICAgICAvLyBXZSBhbGxvdyBzZWxlY3Rpb25zIHRvIGJlZ2luIHdpdGhpbiBhbiBlbGVt
ZW50IHRoYXQgaGFzIC13ZWJraXQtdXNlci1zZWxlY3Q6IG5vbmUgc2V0LApAQCAtMjYxNyw2ICsy
NjIxLDIzIEBAIHZvaWQqIE5vZGU6Om9wYXF1ZVJvb3RTbG93KCkgY29uc3QKICAgICByZXR1cm4g
Y29uc3RfY2FzdDx2b2lkKj4oc3RhdGljX2Nhc3Q8Y29uc3Qgdm9pZCo+KG5vZGUpKTsKIH0KIAor
Ym9vbCBOb2RlOjppc0luZXJ0KCkgY29uc3QKK3sKKyAgICBpZiAoIWlzQ29ubmVjdGVkKCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgaWYgKHRoaXMgIT0gJmRvY3VtZW50KCkgJiYgdGhp
cyAhPSBkb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSB7CisgICAgICAgIE5vZGUqIGFjdGl2
ZU1vZGFsRGlhbG9nID0gZG9jdW1lbnQoKS5hY3RpdmVNb2RhbERpYWxvZygpOworICAgICAgICBp
ZiAoYWN0aXZlTW9kYWxEaWFsb2cgJiYgIWFjdGl2ZU1vZGFsRGlhbG9nLT5jb250YWluc0luY2x1
ZGluZ1NoYWRvd0RPTSh0aGlzKSkKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwor
ICAgIGlmICghZG9jdW1lbnQoKS5mcmFtZSgpIHx8ICFkb2N1bWVudCgpLmZyYW1lKCktPm93bmVy
RWxlbWVudCgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gZG9jdW1lbnQo
KS5mcmFtZSgpLT5vd25lckVsZW1lbnQoKS0+aXNJbmVydCgpOworfQorCiB0ZW1wbGF0ZTw+IENv
bnRhaW5lck5vZGUqIHBhcmVudDxUcmVlPihjb25zdCBOb2RlJiBub2RlKQogewogICAgIHJldHVy
biBub2RlLnBhcmVudE5vZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2Rl
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IGU1NTYwYzQyODU0OWZmZGU3MWNl
YzE4ZmQwZWU5N2YxMTRmOGJlZjMuLmRhZjZiZDkyZTBhMzQwMGEyZTA0ZWE5Y2E3ZGJmNjA5YjBm
ZGY3NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaApAQCAtNTI0LDYgKzUyNCwxMyBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIGludDMyX3QgZmxhZ0lzUGFyc2luZ0NoaWxkcmVuRmluaXNoZWQoKSB7IHJldHVybiBzdGF0
aWNfY2FzdDxpbnQzMl90PihOb2RlRmxhZzo6SXNQYXJzaW5nQ2hpbGRyZW5GaW5pc2hlZCk7IH0K
ICNlbmRpZiAvLyBFTkFCTEUoSklUKQogCisgICAgLy8gV2hldGhlciB0aGUgbm9kZSBpcyBpbmVy
dDoKKyAgICAvLyBodHRwczovL2h0bWwuc3BlYy53aGF0d2cub3JnL211bHRpcGFnZS9pbnRlcmFj
dGlvbi5odG1sI2luZXJ0CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvaW5lcnQvYmxv
Yi9tYXN0ZXIvUkVBRE1FLm1kCisgICAgLy8gVGhpcyBjYW4ndCBiZSBpbiBFbGVtZW50IGJlY2F1
c2UgdGV4dCBub2RlcyBtdXN0IGJlIHJlY29nbml6ZWQgYXMKKyAgICAvLyBpbmVydCB0byBwcmV2
ZW50IHRleHQgc2VsZWN0aW9uLgorICAgIGJvb2wgaXNJbmVydCgpIGNvbnN0OworCiBwcm90ZWN0
ZWQ6CiAgICAgZW51bSBjbGFzcyBOb2RlRmxhZyA6IHVpbnQzMl90IHsKICAgICAgICAgSXNDaGFy
YWN0ZXJEYXRhID0gMSA8PCAwLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggNzg2
Y2NlYmJlZmY2OTQ0MWY0YzFiZWIzOTgzNDY2NzVjODI5Mjk5OS4uNjBlZmFjMDcxOTRkMGExMjc3
ZWFlNzljYjA0NGM0MjNjOTViZjQwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMjEtMDgtMjAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4K
KworICAgICAgICBJbml0aWFsIGltcGxlbWVudGF0aW9uIG9mIGluZXJ0IHN1YnRyZWVzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTA5NTIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDdXJyZW50bHkgY292
ZXJzOgorICAgICAgICAtIEJsb2NraW5nIGZvY3VzICYgc2VsZWN0aW5nCisgICAgICAgIC0gYXJp
YS1oaWRkZW4gbGlrZSBiZWhhdmlvdXIKKworICAgICAgICBIaXQgdGVzdGluZy9ldmVudCByZXRh
cmdldGluZyB3aWxsIGJlIGNvdmVyZWQgYnkgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIyOTMzMCBwZW5kaW5nIGEgc3BlYyBpc3N1ZQorCisgICAgICAgIFJlbGV2YW50
IFdQVCBlbmFibGVkLiBNb3JlIHRlc3RpbmcgY292ZXJhZ2Ugd2lsbCBiZSBwcm92aWRlZCB3aXRo
IHRoZSBpbmVydCBhdHRyaWJ1dGUuCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvaHRt
bC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2luZXJ0
LW5vZGUtaXMtdW5mb2N1c2FibGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHdlYi1wbGF0Zm9y
bS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50cy90aGUtZGlhbG9nLWVs
ZW1lbnQvcmVtb3ZlLWRpYWxvZy1zaG91bGQtdW5ibG9jay1kb2N1bWVudC1leHBlY3RlZC50eHQ6
CisKIDIwMjEtMDgtMjAgIFRpbSBOZ3V5ZW4gIDxudGltQGFwcGxlLmNvbT4KIAogICAgICAgICBF
bnN1cmUgYW5jZXN0b3JzIHdpdGggb3BhY2l0eSBkb24ndCBhZmZlY3QgdG9wIGxheWVyIGVsZW1l
bnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVu
dC9pbmVydC1ub2RlLWlzLXVuZm9jdXNhYmxlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUt
ZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2luZXJ0LW5vZGUtaXMtdW5mb2N1c2FibGUtZXhw
ZWN0ZWQudHh0CmluZGV4IDBiYTc4MzgwODcwODU1NjQ2NzlmMDAxMWE0NDQyM2FkYmY0YzMwZjAu
LmZlMmM0MjIyMGJiYzQzZjI1MTM3NTMzYjQzYjgyY2MxMmQ0ODMwOTYgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3Mv
aW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRpYWxvZy1lbGVtZW50L2luZXJ0LW5vZGUtaXMtdW5m
b2N1c2FibGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvaHRtbC9zZW1hbnRpY3MvaW50ZXJhY3RpdmUtZWxlbWVudHMvdGhlLWRp
YWxvZy1lbGVtZW50L2luZXJ0LW5vZGUtaXMtdW5mb2N1c2FibGUtZXhwZWN0ZWQudHh0CkBAIC00
LDUgKzQsNSBAQCBJJ20gZWRpdGFibGUKIEknbSB0YWJpbmRleGVkLgogIExpbmsKIAotRkFJTCBU
ZXN0IHRoYXQgaW5lcnQgbm9kZXMgYXJlIG5vdCBmb2N1c2FibGUuIGFzc2VydF9lcXVhbHM6IGJv
ZHkgZXhwZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCitQQVNTIFRlc3QgdGhhdCBpbmVydCBub2Rl
cyBhcmUgbm90IGZvY3VzYWJsZS4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9odG1sL3NlbWFudGljcy9pbnRlcmFjdGl2ZS1lbGVtZW50
cy90aGUtZGlhbG9nLWVsZW1lbnQvcmVtb3ZlLWRpYWxvZy1zaG91bGQtdW5ibG9jay1kb2N1bWVu
dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVu
dC9yZW1vdmUtZGlhbG9nLXNob3VsZC11bmJsb2NrLWRvY3VtZW50LWV4cGVjdGVkLnR4dAppbmRl
eCBiMWMxZDhkNDdhOTdmMzczZTQ2ZmRiNWI0ZDVlYjA5OTJiMmM1YTY2Li40ZTQyYzAzYTU0MWU3
ODk3NjZlMWU3ODI3NTdiZWQzMjcyNDU5NWI1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVs
ZW1lbnRzL3RoZS1kaWFsb2ctZWxlbWVudC9yZW1vdmUtZGlhbG9nLXNob3VsZC11bmJsb2NrLWRv
Y3VtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL2h0bWwvc2VtYW50aWNzL2ludGVyYWN0aXZlLWVsZW1lbnRzL3RoZS1kaWFs
b2ctZWxlbWVudC9yZW1vdmUtZGlhbG9nLXNob3VsZC11bmJsb2NrLWRvY3VtZW50LWV4cGVjdGVk
LnR4dApAQCAtMSw0ICsxLDQgQEAKLVRoaXMgaXMgYSBkaWFsb2cKIAotRkFJTCBUZXN0IHRoYXQg
cmVtb3ZpbmcgZGlhbG9nIHVuYmxvY2tzIHRoZSBkb2N1bWVudC4gYXNzZXJ0X2VxdWFsczogZXhw
ZWN0ZWQgZmFsc2UgYnV0IGdvdCB0cnVlCisKK1BBU1MgVGVzdCB0aGF0IHJlbW92aW5nIGRpYWxv
ZyB1bmJsb2NrcyB0aGUgZG9jdW1lbnQuCiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>