<?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>124841</bug_id>
          
          <creation_ts>2013-11-25 05:26:33 -0800</creation_ts>
          <short_desc>Inferred mrows</short_desc>
          <delta_ts>2013-12-20 09:56:59 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>MathML</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>120164</blocked>
    
    <blocked>125860</blocked>
    
    <blocked>99620</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Frédéric Wang Nélar">fred.wang</reporter>
          <assigned_to name="Frédéric Wang Nélar">fred.wang</assigned_to>
          <cc>andersca</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cfleizach</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbarton</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kling</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>953974</commentid>
    <comment_count>0</comment_count>
      <attachid>217794</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-11-25 05:26:33 -0800</bug_when>
    <thetext>Created attachment 217794
testcase

Some elements should have inferred mrows:

http://www.w3.org/TR/MathML/chapter3.html#presm.inferredmrow

In particular in the attached testcase, all the bars should stretch.

This will also be needed to implement spacing in mrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954012</commentid>
    <comment_count>1</comment_count>
      <attachid>217807</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-11-25 08:13:51 -0800</bug_when>
    <thetext>Created attachment 217807
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954015</commentid>
    <comment_count>2</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-11-25 08:15:48 -0800</bug_when>
    <thetext>I have attached a patch that solves the problem for all the elements with inferred mrow that we currently support, except mtd.

For mtd (table-cell) I have tried to do as for msqrt: create an anonymous mrow child (flexbox). However, the vertical bar still does not stretch. Any idea about why that does not work?

BTW, I&apos;m no longer able to use xcodebodge.py to edit the XCode file, so any help would be much appreciated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954378</commentid>
    <comment_count>3</comment_count>
      <attachid>217807</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-26 16:33:43 -0800</bug_when>
    <thetext>Comment on attachment 217807
WIP Patch

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

This looks like a good start. I think we should include andersca/kling regarding move semantics. The entire MathML hierarchy should probably be revised to take advantage of more C++11 features.

&gt; Source/WebCore/mathml/MathMLElement.cpp:45
&gt; +}

I believe that this inline will only trigger inside the MathMLElement.cpp file. Uses of &quot;isMathMLToken&quot; outside this compilation unit will not take the &apos;inline&apos; into account. You should consider moving this to the header file if you want it to be inlined in all compilation units.

&gt; Source/WebCore/mathml/MathMLElement.cpp:131
&gt; +RenderElement* MathMLElement::createRenderer(PassRef&lt;RenderStyle&gt; style)

We should probably do something like &quot;...::createRenderer(RenderStyle&amp;&amp; style)&quot;, though I&apos;m not sure how the other instances of this method are defined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954379</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-11-26 16:34:38 -0800</bug_when>
    <thetext>andersca/kling: I&apos;m seeing a number of PassRefPtr arguments, and I&apos;m wondering if we can&apos;t start using move operators in these places.  Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>954465</commentid>
    <comment_count>5</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-11-26 22:09:03 -0800</bug_when>
    <thetext>While we are here, we may also consider fixing this:

&gt; // FIXME: Change all these createAnonymous... routines to return a PassOwnPtr&lt;&gt;.
&gt; RenderMathMLRow* RenderMathMLRow::createAnonymousWithParentRenderer(const RenderObject* parent)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960445</commentid>
    <comment_count>6</comment_count>
      <attachid>219406</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-12-17 02:42:56 -0800</bug_when>
    <thetext>Created attachment 219406
Patch V1

So I&apos;ve extracted the easy code changes from the previous patch and added tests for stretchiness and baseline alignment. Actually, I think mstyle was the missing case that is the most likely to happen in practice. As a comparison, Gecko can not stretch operators in mtd at the moment and thus to workaround that bug, most MathML tools/authors wrap the children into an explicit mrow. So let&apos;s handle that more involved case in a follow-up patch. It would still be good to know if we can refactor the pointer/ref/move/anonymous stuff.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960504</commentid>
    <comment_count>7</comment_count>
      <attachid>219406</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-17 07:52:18 -0800</bug_when>
    <thetext>Comment on attachment 219406
Patch V1

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

&gt; Source/WebCore/mathml/mathtags.in:13
&gt; +merror interfaceName=MathMLInlineContainerElement

Which interface is used is visible to the DOM, so that should be standardized and tested. We should not use a different interface simply to make rendering different. I can’t tell from this patch if these changes to the element type are correct or incorrect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960514</commentid>
    <comment_count>8</comment_count>
      <attachid>219406</attachid>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-12-17 08:25:21 -0800</bug_when>
    <thetext>Comment on attachment 219406
Patch V1

(In reply to comment #7)
&gt; Which interface is used is visible to the DOM, so that should be standardized and tested. We should not use a different interface simply to make rendering different. I can’t tell from this patch if these changes to the element type are correct or incorrect.

How do you access the interface from the DOM? Last time I tried, it was not possible to distinguish the MathML types. MathML had a DOM in version 2 but it was dropped in version 3 because it has never been implemented in Gecko (this would have added a lot of code &amp; classes) and nobody really complained about that since one can use core DOM anyway.

Here all the elements are containers like mrow, except that they add some additional features (invisibility for mphantom, error style for merror and more attributes for mstyle) so I just used the same container as mrow for consistency.

However, I&apos;m not sure why there is an MathMLInlineContainerElement class at all and why MathMLElement allows presentation attributes on all elements (in general they should only be allowed on math, mstyle and token elements). As a comparison, Gecko only has one nsMathMLElement class and only verifies the tag names to know which attribute should be applied: http://dxr.mozilla.org/mozilla-central/source/content/mathml/content/src/nsMathMLElement.cpp#160</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960541</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-17 09:25:04 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; How do you access the interface from the DOM? Last time I tried, it was not possible to distinguish the MathML types.

OK. I didn’t realize MathML was different in this respect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960547</commentid>
    <comment_count>10</comment_count>
      <attachid>219406</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-17 09:53:06 -0800</bug_when>
    <thetext>Comment on attachment 219406
Patch V1

Clearing flags on attachment: 219406

Committed r160711: &lt;http://trac.webkit.org/changeset/160711&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>960548</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-12-17 09:53:10 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961875</commentid>
    <comment_count>12</comment_count>
    <who name="Frédéric Wang Nélar">fred.wang</who>
    <bug_when>2013-12-20 08:01:13 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; Source/WebCore/mathml/MathMLElement.cpp:45
&gt; &gt; +}
&gt; 
&gt; I believe that this inline will only trigger inside the MathMLElement.cpp file. Uses of &quot;isMathMLToken&quot; outside this compilation unit will not take the &apos;inline&apos; into account. You should consider moving this to the header file if you want it to be inlined in all compilation units.

Will be done in the patch of bug 100626.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961899</commentid>
    <comment_count>13</comment_count>
      <attachid>217807</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2013-12-20 09:56:59 -0800</bug_when>
    <thetext>Comment on attachment 217807
WIP Patch

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

&gt;&gt; Source/WebCore/mathml/MathMLElement.cpp:45
&gt;&gt; +}
&gt; 
&gt; I believe that this inline will only trigger inside the MathMLElement.cpp file. Uses of &quot;isMathMLToken&quot; outside this compilation unit will not take the &apos;inline&apos; into account. You should consider moving this to the header file if you want it to be inlined in all compilation units.

For future reference, the issue in a case like this goes beyond just getting sufficient inlining. It is not legal to call isMathMLToken anywhere outside MathMLElement.cpp if it’s marked inline. With some tool chains it won’t link. Marking it inline and putting it inside the MathMLElement.cpp file is a fine technique when all the callers are inside the MathMLElement.cpp file, though.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>217794</attachid>
            <date>2013-11-25 05:26:33 -0800</date>
            <delta_ts>2013-11-25 05:26:33 -0800</delta_ts>
            <desc>testcase</desc>
            <filename>a.html</filename>
            <type>text/html</type>
            <size>981</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPmluZmVycmVkIG1yb3dz
PC90aXRsZT4KICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ii8+CiAgPC9oZWFkPgogIDxib2R5PgoK
ICAgIDwhLS0gVGhlIGJhciBzaG91bGQgbm90IHN0cmV0Y2guIC0tPgogICAgPHA+PG1hdGg+PG1v
IHN0cmV0Y2h5PSJmYWxzZSI+fDwvbW8+PC9tYXRoPjwvcD4KCiAgICA8IS0tIFRoZSBiYXIgc2hv
dWxkIHN0cmV0Y2ggZm9yIGFsbCB0aGVzZSBlbGVtZW50cy4KICAgICAgICAgU2VlIGh0dHA6Ly93
d3cudzMub3JnL1RSL01hdGhNTC9jaGFwdGVyMy5odG1sI3ByZXNtLmluZmVycmVkbXJvdyAtLT4K
ICAgIDxwPgogICAgICA8bWF0aD48bXJvdz48bW8+fDwvbW8+PG1zcGFjZSBoZWlnaHQ9IjJlbSIg
ZGVwdGg9IjJlbSIvPjwvbXJvdz48L21hdGg+CiAgICAgIDxtYXRoPjxtc3FydD48bW8+fDwvbW8+
PG1zcGFjZSBoZWlnaHQ9IjJlbSIgZGVwdGg9IjJlbSIvPjwvbXNxcnQ+PC9tYXRoPgogICAgICA8
bWF0aD48bXN0eWxlPjxtbz58PC9tbz48bXNwYWNlIGhlaWdodD0iMmVtIiBkZXB0aD0iMmVtIi8+
PC9tc3R5bGU+PC9tYXRoPgogICAgICA8bWF0aD48bWVycm9yPjxtbz58PC9tbz48bXNwYWNlIGhl
aWdodD0iMmVtIiBkZXB0aD0iMmVtIi8+PC9tZXJyb3I+PC9tYXRoPgogICAgICA8bWF0aD48bXBo
YW50b20+PG1vIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyI+fDwvbW8+PG1zcGFjZSBoZWln
aHQ9IjJlbSIgZGVwdGg9IjJlbSIvPjwvbXBoYW50b20+PC9tYXRoPgogICAgICA8bWF0aD48bXRh
YmxlPjxtdHI+PG10ZD48bW8+fDwvbW8+PG1zcGFjZSBoZWlnaHQ9IjJlbSIgZGVwdGg9IjJlbSIv
PjwvbXRkPjwvbXRyPjwvbXRhYmxlPjwvbWF0aD4KICAgICAgPG1hdGg+PG1vPnw8L21vPjxtc3Bh
Y2UgaGVpZ2h0PSIyZW0iIGRlcHRoPSIyZW0iLz48L21hdGg+CiAgICA8L3A+CiAgICAKICA8L2Jv
ZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>217807</attachid>
            <date>2013-11-25 08:13:51 -0800</date>
            <delta_ts>2013-12-20 09:56:59 -0800</delta_ts>
            <desc>WIP Patch</desc>
            <filename>inferred.diff</filename>
            <type>text/plain</type>
            <size>15413</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vaW5mZXJyZWQtbXJv
dy1zdHJldGNoeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L2luZmVycmVkLW1yb3ctc3RyZXRjaHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLjk5NjBmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9t
YXRobWwvcHJlc2VudGF0aW9uL2luZmVycmVkLW1yb3ctc3RyZXRjaHktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsMTcgQEAKK1RoaXMgdGVzdCBwYXNzZXMgaWYgYWxsIHRoZSB2ZXJ0aWNhbCBiYXJz
IHN0cmV0Y2guCisKKyAKKyAKKyAKKyAKKyAKKyAKKworTXJvdzogUEFTUworU3FydDogUEFTUwor
U3R5bGU6IFBBU1MKK0Vycm9yOiBQQVNTCitQaGFudG9tOiBQQVNTCitNdGQ6IFBBU1MKK01hdGg6
IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZl
cnJlZC1tcm93LXN0cmV0Y2h5Lmh0bWwgYi9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9u
L2luZmVycmVkLW1yb3ctc3RyZXRjaHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5jZWZhNjI4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvbWF0aG1sL3By
ZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LXN0cmV0Y2h5Lmh0bWwKQEAgLTAsMCArMSw0MCBAQAor
PGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5pbmZlcnJlZCBtcm93czwvdGl0bGU+CisgICAg
PG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KKyAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAgeworICAgICAgdmFyIHRhZ3MgPSBbIk1y
b3ciLCAiU3FydCIsICJTdHlsZSIsICJFcnJvciIsICJQaGFudG9tIiwgIk10ZCIsICJNYXRoIl07
CisgICAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgICBmb3IgKHZhciBpIGluIHRhZ3MpIHsKKyAg
ICAgICAgdmFyIHRhZyA9IHRhZ3NbaV07CisgICAgICAgIHZhciBtbyA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJtbyIrdGFnKTsKKyAgICAgICAgcmVzdWx0ICs9IHRhZyArICI6ICIgKyAobW8u
Z2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuaGVpZ2h0ID49IDU1ID8KKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIlBBU1MiIDogIkZBSUwiKSArICJcbiI7CisgICAgICB9CisgICAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJUZXh0ID0gcmVzdWx0OworCisg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgICAgfQorICAgIDwvc2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IG9ubG9hZD0i
dGVzdCgpIj4KKworICAgIDxwPlRoaXMgdGVzdCBwYXNzZXMgaWYgYWxsIHRoZSB2ZXJ0aWNhbCBi
YXJzIHN0cmV0Y2guPC9wPgorCisgICAgPHA+CisgICAgICA8bWF0aD48bXJvdz48bW8gaWQ9Im1v
TXJvdyI+fDwvbW8+PG1zcGFjZSB3aWR0aD0iMXB4IiBoZWlnaHQ9IjMwcHgiIGRlcHRoPSIzMHB4
IiBtYXRoYmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48L21yb3c+PC9tYXRoPgorICAgICAgPG1h
dGg+PG1zcXJ0PjxtbyBpZD0ibW9TcXJ0Ij58PC9tbz48bXNwYWNlIHdpZHRoPSIxcHgiIGhlaWdo
dD0iMzBweCIgZGVwdGg9IjMwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiPjwvbXNwYWNlPjwvbXNx
cnQ+PC9tYXRoPgorICAgICAgPG1hdGg+PG1zdHlsZT48bW8gaWQ9Im1vU3R5bGUiPnw8L21vPjxt
c3BhY2Ugd2lkdGg9IjFweCIgaGVpZ2h0PSIzMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91
bmQ9InJlZCI+PC9tc3BhY2U+PC9tc3R5bGU+PC9tYXRoPgorICAgICAgPG1hdGg+PG1lcnJvcj48
bW8gaWQ9Im1vRXJyb3IiPnw8L21vPjxtc3BhY2Ugd2lkdGg9IjFweCIgaGVpZ2h0PSIzMHB4IiBk
ZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9InJlZCI+PC9tc3BhY2U+PC9tZXJyb3I+PC9tYXRo
PgorICAgICAgPG1hdGg+PG1waGFudG9tPjxtbyBzdHlsZT0idmlzaWJpbHR5OiB2aXNpYmxlOyIg
aWQ9Im1vUGhhbnRvbSI+fDwvbW8+PG1zcGFjZSB3aWR0aD0iMXB4IiBoZWlnaHQ9IjMwcHgiIGRl
cHRoPSIzMHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48L21waGFudG9tPjwvbWF0
aD4KKyAgICAgIDxtYXRoPjxtdGFibGU+PG10cj48bXRkPjxtbyBpZD0ibW9NdGQiPnw8L21vPjxt
c3BhY2Ugd2lkdGg9IjFweCIgaGVpZ2h0PSIzMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91
bmQ9InJlZCI+PC9tc3BhY2U+PC9tdGQ+PC9tdHI+PC9tdGFibGU+PC9tYXRoPgorICAgICAgPG1h
dGg+PG1vIGlkPSJtb01hdGgiPnw8L21vPjxtc3BhY2Ugd2lkdGg9IjFweCIgaGVpZ2h0PSIzMHB4
IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9InJlZCI+PC9tc3BhY2U+PC9tYXRoPgorICAg
IDwvcD4KKworICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CisKKyAgPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCA5NGViYmIzLi40ZWFlYzc4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxp
c3RzLnR4dApAQCAtMjIxNyw2ICsyMjE3LDcgQEAgc2V0KFdlYkNvcmVfU09VUkNFUwogICAgIHJl
bmRlcmluZy9saW5lL0xpbmVXaWR0aC5jcHAKIAogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVy
TWF0aE1MQmxvY2suY3BwCisgICAgcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxDZWxsLmNw
cAogICAgIHJlbmRlcmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRmVuY2VkLmNwcAogICAgIHJlbmRl
cmluZy9tYXRobWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwCiAgICAgcmVuZGVyaW5nL21hdGht
bC9SZW5kZXJNYXRoTUxNYXRoLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFr
ZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXgg
YTEwOTY5MC4uZmQwYTI4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC00NTE5
LDYgKzQ1MTksOCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9saW5lL0xpbmVXaWR0aC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQmxvY2suY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0
aG1sL1JlbmRlck1hdGhNTEJsb2NrLmggXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQ2VsbC5jcHAgXAorCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MQ2VsbC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1s
L1JlbmRlck1hdGhNTEZlbmNlZC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRmVuY2VkLmggXAogCVNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9tYXRo
bWwvUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
LnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCmluZGV4IDkzMDBiNGIuLmNjODM1ZjQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTExNzIs
NiArMTExNzIsNyBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4u
XHJlbmRlcmluZ1xtYXRobWxcUmVuZGVyTWF0aE1MQmxvY2suY3BwIiAvPgorICAgIDxDbENvbXBp
bGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxDZWxsLmNwcCIgLz4K
ICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xtYXRobWxcUmVuZGVyTWF0aE1M
RmVuY2VkLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xtYXRo
bWxcUmVuZGVyTWF0aE1MRnJhY3Rpb24uY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0i
Li5ccmVuZGVyaW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxNYXRoLmNwcCIgLz4KQEAgLTE5OTcxLDYg
KzE5OTcyLDcgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xUZXh0UGFp
bnRlci5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXFRyYWlsaW5n
RmxvYXRzUm9vdElubGluZUJveC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVu
ZGVyaW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxCbG9jay5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxSZW5kZXJNYXRoTUxDZWxsLmgiIC8+CiAgICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcbWF0aG1sXFJlbmRlck1hdGhNTEZlbmNlZC5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxSZW5kZXJN
YXRoTUxGcmFjdGlvbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5n
XG1hdGhtbFxSZW5kZXJNYXRoTUxNYXRoLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXggNGQ3NTE0NC4u
NzIxODczYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNv
cmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9X
ZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMjc0OCw2ICsyNzQ4LDkgQEAKICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xtYXRobWxcUmVuZGVyTWF0aE1MQmxvY2suY3BwIj4K
ICAgICAgIDxGaWx0ZXI+cmVuZGVyaW5nXG1hdGhtbDwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5ccmVuZGVyaW5nXG1hdGhtbFxSZW5kZXJNYXRo
TUxDZWxsLmNwcCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xtYXRobWw8L0ZpbHRlcj4KKyAg
ICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xtYXRo
bWxcUmVuZGVyTWF0aE1MRmVuY2VkLmNwcCI+CiAgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xtYXRo
bWw8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTk2NzgsNiArOTY4MSw5IEBACiAgICAg
PENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcbWF0aG1sXFJlbmRlck1hdGhNTEJsb2Nr
LmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcbWF0aG1sPC9GaWx0ZXI+CiAgICAgPC9DbElu
Y2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxyZW5kZXJpbmdcbWF0aG1sXFJlbmRl
ck1hdGhNTENlbGwuaCI+CisgICAgICA8RmlsdGVyPnJlbmRlcmluZ1xtYXRobWw8L0ZpbHRlcj4K
KyAgICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXHJlbmRlcmluZ1xt
YXRobWxcUmVuZGVyTWF0aE1MRmVuY2VkLmgiPgogICAgICAgPEZpbHRlcj5yZW5kZXJpbmdcbWF0
aG1sPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWF0aG1sLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYXRobWwuY3NzCmluZGV4IGQ4
YmUxNWQuLjhhMDA1MjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYXRobWwuY3Nz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tYXRobWwuY3NzCkBAIC0zMiwxMSArMzIsMTEgQEAg
bWF0aFtkaXNwbGF5PSJibG9jayJdIHsKICAgICAtd2Via2l0LW1hcmdpbi1hZnRlcjogMWVtOwog
fQogCi1tbywgbXJvdywgbWZlbmNlZCwgbWZyYWMsIG1zdWIsIG1zdXAsIG1zdWJzdXAsIG1tdWx0
aXNjcmlwdHMsIG1wcmVzY3JpcHRzLCBub25lLCBtdW5kZXIsIG1vdmVyLCBtdW5kZXJvdmVyLCBt
c3FydCwgbXJvb3QgeworbW8sIG1yb3csIG1mZW5jZWQsIG1mcmFjLCBtc3ViLCBtc3VwLCBtc3Vi
c3VwLCBtbXVsdGlzY3JpcHRzLCBtcHJlc2NyaXB0cywgbm9uZSwgbXVuZGVyLCBtb3ZlciwgbXVu
ZGVyb3ZlciwgbXNxcnQsIG1yb290LCBtZXJyb3IsIG1waGFudG9tLCBtc3R5bGUgewogICAgIGRp
c3BsYXk6IC13ZWJraXQtaW5saW5lLWZsZXggIWltcG9ydGFudDsKIH0KIAotbWF0aCwgbXJvdywg
bWZlbmNlZCwgbXNxcnQsIG1yb290IHsKK21hdGgsIG1yb3csIG1mZW5jZWQsIG1zcXJ0LCBtcm9v
dCwgbWVycm9yLCBtcGhhbnRvbSwgbXN0eWxlIHsKICAgICAtd2Via2l0LWFsaWduLWl0ZW1zOiBi
YXNlbGluZTsKIH0KIG1zcXJ0ID4gKiB7IC8qIFRoaXMgcnVsZSBpcyBuZWVkZWQgYmVjYXVzZSBv
ZiA8bXNxcnQ+J3MgYW5vbnltb3VzIDxtcm93Pi4gKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL21hdGhtbC9NYXRoTUxFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRo
TUxFbGVtZW50LmNwcAppbmRleCA5N2ZkYjJkLi40MjM0Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbWF0
aG1sL01hdGhNTEVsZW1lbnQuY3BwCkBAIC0zMywxMSArMzMsMTcgQEAKIAogI2luY2x1ZGUgIk1h
dGhNTE5hbWVzLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGFibGVDZWxsLmgiCisjaW5jbHVkZSAiUmVu
ZGVyTWF0aE1MQ2VsbC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiB1c2luZyBuYW1l
c3BhY2UgTWF0aE1MTmFtZXM7CiAgICAgCitpbmxpbmUgYm9vbCBNYXRoTUxFbGVtZW50Ojppc01h
dGhNTFRva2VuKCkgY29uc3QKK3sKKyAgICByZXR1cm4gaGFzVGFnTmFtZShtaVRhZykgfHwgaGFz
VGFnTmFtZShtblRhZykgfHwgaGFzVGFnTmFtZShtb1RhZykgfHwgaGFzVGFnTmFtZShtc1RhZykg
fHwgaGFzVGFnTmFtZShtdGV4dFRhZyk7Cit9CisKIE1hdGhNTEVsZW1lbnQ6Ok1hdGhNTEVsZW1l
bnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50KQogICAg
IDogU3R5bGVkRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgQ3JlYXRlTWF0aE1MRWxlbWVudCkK
IHsKQEAgLTEyMiw5ICsxMjgsMTIgQEAgYm9vbCBNYXRoTUxFbGVtZW50OjpjaGlsZFNob3VsZENy
ZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUmIGNoaWxkKSBjb25zdAogICAgIHJldHVybiBjaGlsZC5p
c1RleHROb2RlKCkgfHwgY2hpbGQuaXNNYXRoTUxFbGVtZW50KCk7CiB9CiAKLWJvb2wgTWF0aE1M
RWxlbWVudDo6aXNNYXRoTUxUb2tlbigpIGNvbnN0CitSZW5kZXJFbGVtZW50KiBNYXRoTUxFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihQYXNzUmVmPFJlbmRlclN0eWxlPiBzdHlsZSkKIHsKLSAgICBy
ZXR1cm4gaGFzVGFnTmFtZShtaVRhZykgfHwgaGFzVGFnTmFtZShtblRhZykgfHwgaGFzVGFnTmFt
ZShtb1RhZykgfHwgaGFzVGFnTmFtZShtc1RhZykgfHwgaGFzVGFnTmFtZShtdGV4dFRhZyk7Cisg
ICAgaWYgKGhhc1RhZ05hbWUobXRkVGFnKSkKKyAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJNYXRo
TUxDZWxsKCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKKworICAgIHJldHVybiBTdHlsZWRFbGVt
ZW50OjpjcmVhdGVSZW5kZXJlcihzdGQ6Om1vdmUoc3R5bGUpKTsKIH0KIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9NYXRoTUxFbGVtZW50LmgKaW5kZXggOTI5OTA0Yy4uYTY4NTRkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL01hdGhNTEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9tYXRobWwvTWF0aE1MRWxlbWVudC5oCkBAIC00NSw2ICs0NSw3IEBAIHByb3RlY3RlZDoK
ICAgICBNYXRoTUxFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
Jik7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIE9WRVJSSURFOworICAgIHZpcnR1YWwgUmVuZGVyRWxl
bWVudCogY3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4pIE9WRVJSSURFOwogCiBw
cml2YXRlOiAgICAKICAgICB2aXJ0dWFsIGJvb2wgaXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IE9WRVJSSURFOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IDY4OWIx
MWIuLjE2ZWE2ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJbmxp
bmVDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTU2LDcgKzU2LDcgQEAgUGFzc1JlZlB0cjxN
YXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50PiBNYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
OjpjcmVhdGUoY28KIAogUmVuZGVyRWxlbWVudCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1JlZjxSZW5kZXJTdHlsZT4gc3R5bGUpCiB7Ci0gICAgaWYg
KGhhc0xvY2FsTmFtZShtcm93VGFnKSkKKyAgICBpZiAoaGFzTG9jYWxOYW1lKG1lcnJvclRhZykg
fHwgaGFzTG9jYWxOYW1lKG1waGFudG9tVGFnKSB8fCBoYXNMb2NhbE5hbWUobXJvd1RhZykgfHwg
aGFzTG9jYWxOYW1lKG1zdHlsZVRhZykpCiAgICAgICAgIHJldHVybiBuZXcgUmVuZGVyTWF0aE1M
Um93KCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKICAgICBpZiAoaGFzTG9jYWxOYW1lKG1zdWJU
YWcpKQogICAgICAgICByZXR1cm4gbmV3IFJlbmRlck1hdGhNTFNjcmlwdHMoKnRoaXMsIHN0ZDo6
bW92ZShzdHlsZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdz
LmluIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCmluZGV4IDg5ZjQwZTMuLjJl
YmE1NDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvbWF0aHRhZ3MuaW4KQEAgLTcsOCArNywxMCBAQCBtYXRo
CiBtZnJhYyBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQKIG1mZW5j
ZWQgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtc3Vic3VwIGlu
dGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbWVycm9yIGludGVyZmFj
ZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXBoYW50b20gaW50ZXJmYWNlTmFt
ZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm93IGludGVyZmFjZU5hbWU9TWF0aE1M
SW5saW5lQ29udGFpbmVyRWxlbWVudAotbXN0eWxlIGludGVyZmFjZU5hbWU9TWF0aE1MRWxlbWVu
dAorbXN0eWxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAogbW92
ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdW5kZXIgaW50
ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtdW5kZXJvdmVyIGludGVy
ZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclRhYmxlQ2VsbC5oCmluZGV4IDg1Njg0Y2YuLjUzNzVjZGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZUNlbGwuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVDZWxsLmgKQEAgLTM2LDcgKzM2LDcgQEAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIG1heENvbHVtbkluZGV4ID0gMHgxRkZGRkZGRTsgLy8gNTM2
LDg3MCw5MTAKIAogZW51bSBJbmNsdWRlQm9yZGVyQ29sb3JPck5vdCB7IERvTm90SW5jbHVkZUJv
cmRlckNvbG9yLCBJbmNsdWRlQm9yZGVyQ29sb3IgfTsKIAotY2xhc3MgUmVuZGVyVGFibGVDZWxs
IEZJTkFMIDogcHVibGljIFJlbmRlckJsb2NrRmxvdyB7CitjbGFzcyBSZW5kZXJUYWJsZUNlbGwg
OiBwdWJsaWMgUmVuZGVyQmxvY2tGbG93IHsKIHB1YmxpYzoKICAgICBSZW5kZXJUYWJsZUNlbGwo
RWxlbWVudCYsIFBhc3NSZWY8UmVuZGVyU3R5bGU+KTsKICAgICBSZW5kZXJUYWJsZUNlbGwoRG9j
dW1lbnQmLCBQYXNzUmVmPFJlbmRlclN0eWxlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTENlbGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxDZWxsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi5lYWUyMmIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxDZWxsLmNwcApAQCAtMCwwICsxLDUyIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEZyw6lkw6lyaWMgV2FuZyAoZnJlZC53YW5nQGZy
ZWUuZnIpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlck1h
dGhNTENlbGwuaCIKKworI2luY2x1ZGUgIlJlbmRlck1hdGhNTFJvdy5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisgICAgCitSZW5kZXJNYXRoTUxDZWxsOjpSZW5kZXJNYXRoTUxDZWxsKEVsZW1l
bnQmIGVsZW1lbnQsIFBhc3NSZWY8UmVuZGVyU3R5bGU+IHN0eWxlKQorICAgIDogUmVuZGVyVGFi
bGVDZWxsKGVsZW1lbnQsIHN0ZDo6bW92ZShzdHlsZSkpCit7Cit9CisKK3ZvaWQgUmVuZGVyTWF0
aE1MQ2VsbDo6YWRkQ2hpbGQoUmVuZGVyT2JqZWN0KiBuZXdDaGlsZCwgUmVuZGVyT2JqZWN0KiBi
ZWZvcmVDaGlsZCkKK3sKKyAgICAvLyBJbnNlcnQgYW4gaW1wbGljaXQgPG1yb3c+LgorICAgIGlm
ICghZmlyc3RDaGlsZCgpKQorICAgICAgICBSZW5kZXJUYWJsZUNlbGw6OmFkZENoaWxkKFJlbmRl
ck1hdGhNTFJvdzo6Y3JlYXRlQW5vbnltb3VzV2l0aFBhcmVudFJlbmRlcmVyKHRoaXMpKTsKKyAg
ICAKKyAgICB0b1JlbmRlckVsZW1lbnQoZmlyc3RDaGlsZCgpKS0+YWRkQ2hpbGQobmV3Q2hpbGQs
IGJlZm9yZUNoaWxkICYmIGJlZm9yZUNoaWxkLT5wYXJlbnQoKSA9PSBmaXJzdENoaWxkKCkgPyBi
ZWZvcmVDaGlsZCA6IDApOworfQorCit9CisKKyNlbmRpZiAvLyBFTkFCTEUoTUFUSE1MKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxDZWxs
LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTENlbGwuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTg3NjhjCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxDZWxsLmgK
QEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMyBGcsOpZMOpcmljIFdh
bmcgKGZyZWQud2FuZ0BmcmVlLmZyKS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgUmVuZGVyTWF0aE1MQ2VsbF9oCisjZGVmaW5lIFJlbmRlck1hdGhN
TENlbGxfaAorCisjaWYgRU5BQkxFKE1BVEhNTCkKKworI2luY2x1ZGUgIlJlbmRlclRhYmxlQ2Vs
bC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCitjbGFzcyBSZW5kZXJNYXRoTUxDZWxs
IEZJTkFMIDogcHVibGljIFJlbmRlclRhYmxlQ2VsbCB7CitwdWJsaWM6CisgICAgUmVuZGVyTWF0
aE1MQ2VsbChFbGVtZW50JiwgUGFzc1JlZjxSZW5kZXJTdHlsZT4pOworICAgIHZpcnR1YWwgdm9p
ZCBhZGRDaGlsZChSZW5kZXJPYmplY3QqIG5ld0NoaWxkLCBSZW5kZXJPYmplY3QqIGJlZm9yZUNo
aWxkID0gMCkgT1ZFUlJJREU7CisgICAgCitwcml2YXRlOgorICAgIHZpcnR1YWwgY29uc3QgY2hh
ciogcmVuZGVyTmFtZSgpIGNvbnN0IE9WRVJSSURFIHsgcmV0dXJuICJSZW5kZXJNYXRoTUxDZWxs
IjsgfQorCit9OworICAgIAorfQorCisjZW5kaWYgLy8gRU5BQkxFKE1BVEhNTCkKKworI2VuZGlm
IC8vIFJlbmRlck1hdGhNTENlbGxfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219406</attachid>
            <date>2013-12-17 02:42:56 -0800</date>
            <delta_ts>2013-12-17 09:53:06 -0800</delta_ts>
            <desc>Patch V1</desc>
            <filename>inferred.diff</filename>
            <type>text/plain</type>
            <size>10511</size>
            <attacher name="Frédéric Wang Nélar">fred.wang</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA4YTE1MzdkLi40ZjU4MTVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMTIt
MTcgIEZyw6lkw6lyaWMgV2FuZyAgPGZyZWQud2FuZ0BmcmVlLmZyPgorCisgICAgICAgIEVuc3Vy
ZSBpbmZlcnJlZCBtcm93cyBmb3IgbXNxcnQsIG1zdHlsZSwgbWVycm9yLCBtcGhhbnRvbSBhbmQg
bWF0aC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEy
NDg0MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
bWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LWJhc2VsaW5lLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICogbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LWJhc2Vs
aW5lLmh0bWw6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVzZW50YXRpb24vaW5mZXJyZWQt
bXJvdy1zdHJldGNoeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIG1hdGhtbC9wcmVz
ZW50YXRpb24vaW5mZXJyZWQtbXJvdy1zdHJldGNoeS5odG1sOiBBZGRlZC4KKwogMjAxMy0xMi0x
NiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1hcmlvLnByYWRhQHNhbXN1bmcuY29tPgogCiAgICAg
ICAgIFtBVEtdIEV4cG9zZSBhY2Nlc3NpYmlsaXR5IG9iamVjdHMgd2l0aCBBVEtfUk9MRV9BUlRJ
Q0xFCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2luZmVycmVk
LW1yb3ctYmFzZWxpbmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRh
dGlvbi9pbmZlcnJlZC1tcm93LWJhc2VsaW5lLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4xZWJlZTJlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LWJhc2VsaW5lLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDE1IEBACitUaGlzIHRlc3QgcGFzc2VzIGlmIHJlY3RhbmdsZXMgYXJlIGNv
cnJlY3RseSBhbGlnbmVkIHdpdGggcmVzcGVjdCB0byB0aGUgYmFzZWxpbmUuCisKKyAKKyAKKyAK
KyAKKyAKKworTXJvdzogUEFTUworU3FydDogUEFTUworU3R5bGU6IFBBU1MKK0Vycm9yOiBQQVNT
CitQaGFudG9tOiBQQVNTCitNYXRoOiBQQVNTCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL21h
dGhtbC9wcmVzZW50YXRpb24vaW5mZXJyZWQtbXJvdy1iYXNlbGluZS5odG1sIGIvTGF5b3V0VGVz
dHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LWJhc2VsaW5lLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU1NzdlNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vaW5mZXJyZWQtbXJvdy1iYXNlbGluZS5o
dG1sCkBAIC0wLDAgKzEsNDQgQEAKKzxodG1sPgorICA8aGVhZD4KKyAgICA8dGl0bGU+aW5mZXJy
ZWQgbXJvd3M8L3RpdGxlPgorICAgIDxtZXRhIGNoYXJzZXQ9InV0Zi04Ij4KKyAgICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICBmdW5jdGlvbiB0ZXN0KCkKKyAgICAgIHsK
KyAgICAgICAgdmFyIHRhZ3MgPSBbIk1yb3ciLCAiU3FydCIsICJTdHlsZSIsICJFcnJvciIsICJQ
aGFudG9tIiwgIk1hdGgiXTsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICIiOworICAgICAgICBmb3Ig
KHZhciBpIGluIHRhZ3MpIHsKKyAgICAgICAgICB2YXIgdGFnID0gdGFnc1tpXTsKKyAgICAgICAg
ICB2YXIgeCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhYm92ZSIgKyB0YWcpLmdldEJvdW5k
aW5nQ2xpZW50UmVjdCgpOworICAgICAgICAgIHZhciB5ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImJlbG93IiArIHRhZykuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7CisgICAgICAgICAgcmVz
dWx0ICs9IHRhZyArICI6ICIgKyAoeC5ib3R0b20gPT0geS50b3AgPyAiUEFTUyIgOiAiRkFJTCIp
ICsgIlxuIjsKKyAgICAgICAgfQorICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgicmVz
dWx0IikuaW5uZXJUZXh0ID0gcmVzdWx0OworICAKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKQorICAgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgICAgfQorICAgIDwv
c2NyaXB0PgorICA8L2hlYWQ+CisgIDxib2R5IG9ubG9hZD0idGVzdCgpIj4KKworICAgIDxwPlRo
aXMgdGVzdCBwYXNzZXMgaWYgcmVjdGFuZ2xlcyBhcmUgY29ycmVjdGx5IGFsaWduZWQgd2l0aCBy
ZXNwZWN0IHRvIHRoZSBiYXNlbGluZS48L3A+CisKKyAgICA8cD4KKyAgICAgIDxtYXRoPjxtcm93
Pjxtc3BhY2UgaWQ9ImFib3ZlTXJvdyIgd2lkdGg9IjEwcHgiIGhlaWdodD0iMzBweCIgbWF0aGJh
Y2tncm91bmQ9InJlZCI+PC9tc3BhY2U+PG1zcGFjZSBpZD0iYmVsb3dNcm93IiB3aWR0aD0iMTBw
eCIgZGVwdGg9IjMwcHgiIG1hdGhiYWNrZ3JvdW5kPSJibHVlIj48L21zcGFjZT48L21yb3c+PC9t
YXRoPgorCisgICAgICA8bWF0aD48bXNxcnQ+PG1zcGFjZSBpZD0iYWJvdmVTcXJ0IiB3aWR0aD0i
MTBweCIgaGVpZ2h0PSIzMHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48bXNwYWNl
IGlkPSJiZWxvd1NxcnQiIHdpZHRoPSIxMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9
ImJsdWUiPjwvbXNwYWNlPjwvbXNxcnQ+PC9tYXRoPgorCisgICAgICA8bWF0aD48bXN0eWxlPjxt
c3BhY2UgaWQ9ImFib3ZlU3R5bGUiIHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjMwcHgiIG1hdGhiYWNr
Z3JvdW5kPSJyZWQiPjwvbXNwYWNlPjxtc3BhY2UgaWQ9ImJlbG93U3R5bGUiIHdpZHRoPSIxMHB4
IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiPjwvbXNwYWNlPjwvbXN0eWxlPjwv
bWF0aD4KKworICAgICAgPG1hdGg+PG1lcnJvcj48bXNwYWNlIGlkPSJhYm92ZUVycm9yIiB3aWR0
aD0iMTBweCIgaGVpZ2h0PSIzMHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48bXNw
YWNlIGlkPSJiZWxvd0Vycm9yIiB3aWR0aD0iMTBweCIgZGVwdGg9IjMwcHgiIG1hdGhiYWNrZ3Jv
dW5kPSJibHVlIj48L21zcGFjZT48L21lcnJvcj48L21hdGg+CisKKyAgICAgIDxtYXRoPjxtcGhh
bnRvbT48bXNwYWNlIHN0eWxlPSJ2aXNpYmlsaXR5OiB2aXNpYmxlOyIgaWQ9ImFib3ZlUGhhbnRv
bSIgd2lkdGg9IjEwcHgiIGhlaWdodD0iMzBweCIgbWF0aGJhY2tncm91bmQ9InJlZCI+PC9tc3Bh
Y2U+PG1zcGFjZSBzdHlsZT0idmlzaWJpbGl0eTogdmlzaWJsZTsiIGlkPSJiZWxvd1BoYW50b20i
IHdpZHRoPSIxMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9ImJsdWUiPjwvbXNwYWNl
PjwvbXBoYW50b20+PC9tYXRoPgorCisgICAgICA8bWF0aD48bXNwYWNlIGlkPSJhYm92ZU1hdGgi
IHdpZHRoPSIxMHB4IiBoZWlnaHQ9IjMwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiPjwvbXNwYWNl
Pjxtc3BhY2UgaWQ9ImJlbG93TWF0aCIgd2lkdGg9IjEwcHgiIGRlcHRoPSIzMHB4IiBtYXRoYmFj
a2dyb3VuZD0iYmx1ZSI+PC9tc3BhY2U+PC9tYXRoPgorICAgIDwvcD4KKworICAgIDxkaXYgaWQ9
InJlc3VsdCI+PC9kaXY+CisKKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LXN0cmV0Y2h5LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24vaW5mZXJyZWQtbXJvdy1zdHJl
dGNoeS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdm
NjU0NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL21hdGhtbC9wcmVzZW50YXRpb24v
aW5mZXJyZWQtbXJvdy1zdHJldGNoeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhp
cyB0ZXN0IHBhc3NlcyBpZiBhbGwgdGhlIHZlcnRpY2FsIGJhcnMgc3RyZXRjaC4KKworIAorIAor
IAorIAorIAorCitNcm93OiBQQVNTCitTcXJ0OiBQQVNTCitTdHlsZTogUEFTUworRXJyb3I6IFBB
U1MKK1BoYW50b206IFBBU1MKK01hdGg6IFBBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
bWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LXN0cmV0Y2h5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9tYXRobWwvcHJlc2VudGF0aW9uL2luZmVycmVkLW1yb3ctc3RyZXRjaHkuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDU5NWYxCi0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvbWF0aG1sL3ByZXNlbnRhdGlvbi9pbmZlcnJlZC1tcm93LXN0cmV0Y2h5
Lmh0bWwKQEAgLTAsMCArMSwzOCBAQAorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5pbmZl
cnJlZCBtcm93czwvdGl0bGU+CisgICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgorICAgIDxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIGZ1bmN0aW9uIHRlc3QoKQorICAgICAg
eworICAgICAgICB2YXIgdGFncyA9IFsiTXJvdyIsICJTcXJ0IiwgIlN0eWxlIiwgIkVycm9yIiwg
IlBoYW50b20iLCAiTWF0aCJdOworICAgICAgICB2YXIgcmVzdWx0ID0gIiI7CisgICAgICAgIGZv
ciAodmFyIGkgaW4gdGFncykgeworICAgICAgICAgIHZhciB0YWcgPSB0YWdzW2ldOworICAgICAg
ICAgIHZhciBtbyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJtbyIgKyB0YWcpOworICAgICAg
ICAgIHJlc3VsdCArPSB0YWcgKyAiOiAiICsgKG1vLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhl
aWdodCA+PSA2MCA/ICJQQVNTIiA6ICJGQUlMIikgKyAiXG4iOworICAgICAgICB9CisgICAgICAg
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lclRleHQgPSByZXN1bHQ7Cisg
IAorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgdGVzdFJ1bm5lci5k
dW1wQXNUZXh0KCk7CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJvZHkg
b25sb2FkPSJ0ZXN0KCkiPgorCisgICAgPHA+VGhpcyB0ZXN0IHBhc3NlcyBpZiBhbGwgdGhlIHZl
cnRpY2FsIGJhcnMgc3RyZXRjaC48L3A+CisKKyAgICA8cD4KKyAgICAgIDxtYXRoPjxtcm93Pjxt
byBpZD0ibW9Ncm93Ij58PC9tbz48bXNwYWNlIHdpZHRoPSIxcHgiIGhlaWdodD0iMzBweCIgZGVw
dGg9IjMwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiPjwvbXNwYWNlPjwvbXJvdz48L21hdGg+Cisg
ICAgICA8bWF0aD48bXNxcnQ+PG1vIGlkPSJtb1NxcnQiPnw8L21vPjxtc3BhY2Ugd2lkdGg9IjFw
eCIgaGVpZ2h0PSIzMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9InJlZCI+PC9tc3Bh
Y2U+PC9tc3FydD48L21hdGg+CisgICAgICA8bWF0aD48bXN0eWxlPjxtbyBpZD0ibW9TdHlsZSI+
fDwvbW8+PG1zcGFjZSB3aWR0aD0iMXB4IiBoZWlnaHQ9IjMwcHgiIGRlcHRoPSIzMHB4IiBtYXRo
YmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48L21zdHlsZT48L21hdGg+CisgICAgICA8bWF0aD48
bWVycm9yPjxtbyBpZD0ibW9FcnJvciI+fDwvbW8+PG1zcGFjZSB3aWR0aD0iMXB4IiBoZWlnaHQ9
IjMwcHgiIGRlcHRoPSIzMHB4IiBtYXRoYmFja2dyb3VuZD0icmVkIj48L21zcGFjZT48L21lcnJv
cj48L21hdGg+CisgICAgICA8bWF0aD48bXBoYW50b20+PG1vIHN0eWxlPSJ2aXNpYmlsdHk6IHZp
c2libGU7IiBpZD0ibW9QaGFudG9tIj58PC9tbz48bXNwYWNlIHdpZHRoPSIxcHgiIGhlaWdodD0i
MzBweCIgZGVwdGg9IjMwcHgiIG1hdGhiYWNrZ3JvdW5kPSJyZWQiPjwvbXNwYWNlPjwvbXBoYW50
b20+PC9tYXRoPgorICAgICAgPG1hdGg+PG1vIGlkPSJtb01hdGgiPnw8L21vPjxtc3BhY2Ugd2lk
dGg9IjFweCIgaGVpZ2h0PSIzMHB4IiBkZXB0aD0iMzBweCIgbWF0aGJhY2tncm91bmQ9InJlZCI+
PC9tc3BhY2U+PC9tYXRoPgorICAgIDwvcD4KKworICAgIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+
CisKKyAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDk5MjE5NzYuLjY0NzBmMWYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAxMy0xMi0xNyAgRnLDqWTDqXJpYyBXYW5nICA8
ZnJlZC53YW5nQGZyZWUuZnI+CisKKyAgICAgICAgRW5zdXJlIGluZmVycmVkIG1yb3dzIGZvciBt
c3FydCwgbXN0eWxlLCBtZXJyb3IsIG1waGFudG9tIGFuZCBtYXRoLgorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI0ODQxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IG1hdGhtbC9wcmVzZW50YXRp
b24vaW5mZXJyZWQtbXJvdy1iYXNlbGluZS5odG1sCisgICAgICAgICAgICAgICBtYXRobWwvcHJl
c2VudGF0aW9uL2luZmVycmVkLW1yb3ctc3RyZXRjaHkuaHRtbAorCisgICAgICAgICogY3NzL21h
dGhtbC5jc3M6IG1ha2UgbWVycm9yLCBtcGhhbnRvbSBhbmQgbXN0eWxlIGJlaGF2ZSBsaWtlIGFu
IG1yb3cuCisgICAgICAgIChtbywgbXJvdywgbWZlbmNlZCwgbWZyYWMsIG1zdWIsIG1zdXAsIG1z
dWJzdXAsIG1tdWx0aXNjcmlwdHMsIG1wcmVzY3JpcHRzLCBub25lLCBtdW5kZXIsIG1vdmVyLCBt
dW5kZXJvdmVyLCBtc3FydCwgbXJvb3QsIG1lcnJvciwgbXBoYW50b20sIG1zdHlsZSk6CisgICAg
ICAgIChtYXRoLCBtcm93LCBtZmVuY2VkLCBtc3FydCwgbXJvb3QsIG1lcnJvciwgbXBoYW50b20s
IG1zdHlsZSk6CisgICAgICAgICogbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQu
Y3BwOiBkaXR0bworICAgICAgICAoV2ViQ29yZTo6TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dDo6Y3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAqIG1hdGhtbC9tYXRodGFncy5pbjogZGl0dG8K
KyAgICAgICAgKiByZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlck1hdGhNTE9wZXJhdG9yOjpwYWludCk6IGZpeCBmYWlsdXJl
IGluIG1hdGhtbC9wcmVzZW50YXRpb24vcGhhbnRvbS5odG1sIG5vdyB0aGF0IHBoYW50b20gY2Fu
IHN0cmV0Y2ggb3BlcmF0b3JzLgorCiAyMDEzLTEyLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8
bWFyaW8ucHJhZGFAc2Ftc3VuZy5jb20+CiAKICAgICAgICAgW0FUS10gRXhwb3NlIGFjY2Vzc2li
aWxpdHkgb2JqZWN0cyB3aXRoIEFUS19ST0xFX0FSVElDTEUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2Nzcy9tYXRobWwuY3NzIGIvU291cmNlL1dlYkNvcmUvY3NzL21hdGhtbC5jc3MKaW5k
ZXggOTZmMTg2Zi4uNjQ2OWRiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvY3NzL21hdGht
bC5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21hdGhtbC5jc3MKQEAgLTMyLDExICszMiwx
MSBAQCBtYXRoW2Rpc3BsYXk9ImJsb2NrIl0gewogICAgIC13ZWJraXQtbWFyZ2luLWFmdGVyOiAx
ZW07CiB9CiAKLW1vLCBtcm93LCBtZmVuY2VkLCBtZnJhYywgbXN1YiwgbXN1cCwgbXN1YnN1cCwg
bW11bHRpc2NyaXB0cywgbXByZXNjcmlwdHMsIG5vbmUsIG11bmRlciwgbW92ZXIsIG11bmRlcm92
ZXIsIG1zcXJ0LCBtcm9vdCB7CittbywgbXJvdywgbWZlbmNlZCwgbWZyYWMsIG1zdWIsIG1zdXAs
IG1zdWJzdXAsIG1tdWx0aXNjcmlwdHMsIG1wcmVzY3JpcHRzLCBub25lLCBtdW5kZXIsIG1vdmVy
LCBtdW5kZXJvdmVyLCBtc3FydCwgbXJvb3QsIG1lcnJvciwgbXBoYW50b20sIG1zdHlsZSB7CiAg
ICAgZGlzcGxheTogLXdlYmtpdC1pbmxpbmUtZmxleCAhaW1wb3J0YW50OwogfQogCi1tYXRoLCBt
cm93LCBtZmVuY2VkLCBtc3FydCwgbXJvb3QgeworbWF0aCwgbXJvdywgbWZlbmNlZCwgbXNxcnQs
IG1yb290LCBtZXJyb3IsIG1waGFudG9tLCBtc3R5bGUgewogICAgIC13ZWJraXQtYWxpZ24taXRl
bXM6IGJhc2VsaW5lOwogfQogbXNxcnQgPiAqIHsgLyogVGhpcyBydWxlIGlzIG5lZWRlZCBiZWNh
dXNlIG9mIDxtc3FydD4ncyBhbm9ueW1vdXMgPG1yb3c+LiAqLwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvbWF0aG1sL01hdGhNTElubGluZUNvbnRhaW5lckVsZW1lbnQuY3BwCmluZGV4IDRj
MTU0ODUuLjM0ZTcyOWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9NYXRoTUxJ
bmxpbmVDb250YWluZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9tYXRobWwvTWF0
aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudC5jcHAKQEAgLTU4LDcgKzU4LDcgQEAgUmVuZGVyRWxl
bWVudCogTWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudDo6Y3JlYXRlUmVuZGVyZXIoUGFzc1Jl
ZjxSZW5kZXJTdHlsZT4KIHsKICAgICBpZiAoaGFzTG9jYWxOYW1lKGFubm90YXRpb25feG1sVGFn
KSkKICAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJNYXRoTUxSb3coKnRoaXMsIHN0ZDo6bW92ZShz
dHlsZSkpOwotICAgIGlmIChoYXNMb2NhbE5hbWUobXJvd1RhZykpCisgICAgaWYgKGhhc0xvY2Fs
TmFtZShtZXJyb3JUYWcpIHx8IGhhc0xvY2FsTmFtZShtcGhhbnRvbVRhZykgfHwgaGFzTG9jYWxO
YW1lKG1yb3dUYWcpIHx8IGhhc0xvY2FsTmFtZShtc3R5bGVUYWcpKQogICAgICAgICByZXR1cm4g
bmV3IFJlbmRlck1hdGhNTFJvdygqdGhpcywgc3RkOjptb3ZlKHN0eWxlKSk7CiAgICAgaWYgKGhh
c0xvY2FsTmFtZShtc3ViVGFnKSkKICAgICAgICAgcmV0dXJuIG5ldyBSZW5kZXJNYXRoTUxTY3Jp
cHRzKCp0aGlzLCBzdGQ6Om1vdmUoc3R5bGUpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L21hdGhtbC9tYXRodGFncy5pbiBiL1NvdXJjZS9XZWJDb3JlL21hdGhtbC9tYXRodGFncy5pbgpp
bmRleCBiNDAwODU2Li42NjcxNTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9tYXRobWwv
bWF0aHRhZ3MuaW4KKysrIGIvU291cmNlL1dlYkNvcmUvbWF0aG1sL21hdGh0YWdzLmluCkBAIC0x
MCw4ICsxMCwxMCBAQCBtYXRoCiBtZnJhYyBpbnRlcmZhY2VOYW1lPU1hdGhNTElubGluZUNvbnRh
aW5lckVsZW1lbnQKIG1mZW5jZWQgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50CiBtc3Vic3VwIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVu
dAorbWVycm9yIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAorbXBo
YW50b20gaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50CiBtcm93IGlu
dGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudAotbXN0eWxlIGludGVyZmFj
ZU5hbWU9TWF0aE1MRWxlbWVudAorbXN0eWxlIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29u
dGFpbmVyRWxlbWVudAogbW92ZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJF
bGVtZW50CiBtdW5kZXIgaW50ZXJmYWNlTmFtZT1NYXRoTUxJbmxpbmVDb250YWluZXJFbGVtZW50
CiBtdW5kZXJvdmVyIGludGVyZmFjZU5hbWU9TWF0aE1MSW5saW5lQ29udGFpbmVyRWxlbWVudApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbC9SZW5kZXJNYXRoTUxP
cGVyYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhN
TE9wZXJhdG9yLmNwcAppbmRleCAzMDA1NGM0Li5hYWRmMTg0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvbWF0aG1sL1JlbmRlck1hdGhNTE9wZXJhdG9yLmNwcApA
QCAtMzYwLDcgKzM2MCw3IEBAIHZvaWQgUmVuZGVyTWF0aE1MT3BlcmF0b3I6OnBhaW50KFBhaW50
SW5mbyYgaW5mbywgY29uc3QgTGF5b3V0UG9pbnQmIHBhaW50T2Zmc2V0CiB7CiAgICAgUmVuZGVy
TWF0aE1MQmxvY2s6OnBhaW50KGluZm8sIHBhaW50T2Zmc2V0KTsKIAotICAgIGlmIChpbmZvLmNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZvLnBoYXNlICE9IFBhaW50UGhhc2VGb3Jl
Z3JvdW5kKQorICAgIGlmIChpbmZvLmNvbnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSB8fCBpbmZv
LnBoYXNlICE9IFBhaW50UGhhc2VGb3JlZ3JvdW5kIHx8IHN0eWxlKCkudmlzaWJpbGl0eSgpICE9
IFZJU0lCTEUpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9pc1N0cmV0Y2hlZCAmJiAh
bV9zdHJldGNoeUNoYXJhY3Rlcikgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>