<?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>138524</bug_id>
          
          <creation_ts>2014-11-07 15:21:47 -0800</creation_ts>
          <short_desc>Lazily create HTMLInputElement&apos;s inputType and shadow subtree</short_desc>
          <delta_ts>2014-11-13 09:45:22 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>138626</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>barraclough</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>kling</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1047204</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-07 15:21:47 -0800</bug_when>
    <thetext>Lazily create HTMLInputElement&apos;s inputType and shadow subtree when created by the parser to avoid having to:
- Create a text inputType and its shadow subtree
- then when the type attribute is set (to something else than &apos;text&apos;), destroy that inputType and shadow subtree
- Create an inputType of the right type and create its shadow subtree

When created by the parser, the attributes will be set right after constructing the HTMLInputElement. We can thus delay the inputType / shadow subtree until the attributes are set by the parser to make sure we construct those for the right |type| directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047218</commentid>
    <comment_count>1</comment_count>
      <attachid>241216</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-07 15:34:20 -0800</bug_when>
    <thetext>Created attachment 241216
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047309</commentid>
    <comment_count>2</comment_count>
      <attachid>241216</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2014-11-08 13:46:13 -0800</bug_when>
    <thetext>Comment on attachment 241216
Patch

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

Should we make this even more lazy, and call ensureInputType when we use m_inputType instead? Maybe some input elements could live a long time without allocating m_inputType, if we make enough functions know how to handle null.

&gt; Source/WebCore/ChangeLog:10
&gt; +        the constucted input. With the previous implementation, this was a bit

Typo: constucted

&gt; Source/WebCore/dom/Element.cpp:1237
&gt; +        if (document().sharedObjectPool())

Strange that some documents would not have this pool. Is that an important optimization?

&gt; Source/WebCore/html/HTMLInputElement.cpp:446
&gt; +    bool didStoreValue = true;
&gt; +    bool neededSuspensionCallback = false;
&gt; +    bool didRespectHeightAndWidth = true;
&gt; +    bool hasUserAgentShadowRoot = false;

Would be good to give a rationale for these. I presume they are the values that would be correct for type text. Note that it is not obvious why these are correct, which is why I’m asking for a comment.

&gt; Source/WebCore/html/HTMLInputElement.cpp:639
&gt; +    if (m_parsingInProgress) {
&gt; +        // Attributes have now been set by the parser and we should now make sure we have an
&gt; +        // input type and a user-agent shadow root.
&gt; +        ensureInputType();
&gt; +    }

I don’t understand why we have both this and the call in finishParsingAttributes below. Is this correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047362</commentid>
    <comment_count>3</comment_count>
      <attachid>241216</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-08 21:05:49 -0800</bug_when>
    <thetext>Comment on attachment 241216
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:1237
&gt;&gt; +        if (document().sharedObjectPool())
&gt; 
&gt; Strange that some documents would not have this pool. Is that an important optimization?

I am not very familiar with this optimization. I merely changed the indentation here.
From what I can see, the Document is supposed to have a sharedObjectPool() during parsing and a little bit after (it is being cleared via a timer).

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:446
&gt;&gt; +    bool hasUserAgentShadowRoot = false;
&gt; 
&gt; Would be good to give a rationale for these. I presume they are the values that would be correct for type text. Note that it is not obvious why these are correct, which is why I’m asking for a comment.

Yes, those are the values to type text. I will see if I can make this clearer. Worse case scenario, I&apos;ll add a comment to explain.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:639
&gt;&gt; +    }
&gt; 
&gt; I don’t understand why we have both this and the call in finishParsingAttributes below. Is this correct?

This is to initialize m_inputType as soon as we can (i.e. as soon as parseAttribute() gets called for the first attribute). This is needed because the code below in this method relies on m_inputType being initialized.
The call to ensureInputType() in finishParsingAttributes() is a safety net in the element has no attribute. In such case, parseAttribute() will no be called and thus m_inputType won&apos;t be initialized. This makes sure m_inputType is initialized by the end of parsing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047364</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-08 21:09:08 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Comment on attachment 241216 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=241216&amp;action=review
&gt; 
&gt; Should we make this even more lazy, and call ensureInputType when we use
&gt; m_inputType instead? Maybe some input elements could live a long time
&gt; without allocating m_inputType, if we make enough functions know how to
&gt; handle null.

I&apos;ll check if we can relatively cleanly do that. One issue is that it is not only m_inputType that it lazy initialized but also the user-agent shadow root, and the shadow subtree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047553</commentid>
    <comment_count>5</comment_count>
      <attachid>241293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 10:08:01 -0800</bug_when>
    <thetext>Created attachment 241293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047570</commentid>
    <comment_count>6</comment_count>
      <attachid>241293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 11:27:38 -0800</bug_when>
    <thetext>Comment on attachment 241293
Patch

Requesting review again as I changed the structured a little bit. Trying to reuse updateType() for m_inputType lazy initialization did not look as great as I hoped (because not enough code is shared between initial initialization and actual type update, and also because of variables initialization for the initial initialization case). As a result, ensureInputType() now takes care of initialization m_inputType and no longer calls updateType(). This simplifies the code a lot.

Some code was also moved to a new runPostTypeUpdateTasks() method to enable code sharing between ensureInputType() and updateType().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047630</commentid>
    <comment_count>7</comment_count>
      <attachid>241293</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2014-11-10 14:08:40 -0800</bug_when>
    <thetext>Comment on attachment 241293
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1247
&gt; +    finishParsingAttributes();

I&apos;m a bit worried about the cost of calling this virtual function on every element.
Did you run Dromaeo, etc... to make sure this isn&apos;t a regression on other tests?

&gt; Source/WebCore/html/HTMLInputElement.cpp:136
&gt; +    // The user-agent shadowRoot is lazily created when created by the parser.
&gt; +    if (!createdByParser)

Why don&apos;t we create a local boolean named shouldCreateShadowRootLazily = createdByParser instead of adding a comment?

&gt; Source/WebCore/html/HTMLInputElement.cpp:634
&gt; +        // Attributes have now been set by the parser and we should now make sure we have an
&gt; +        // input type and a user-agent shadow root.
&gt; +        ensureInputType();

It&apos;s not clear to me why we&apos;d have to call ensureInputType right away even during parsing...
I&apos;d replace this &quot;what&quot; comment by explaining that &quot;why&quot; if I were you.

&gt; Source/WebCore/html/HTMLInputElement.cpp:744
&gt; +void HTMLInputElement::finishParsingAttributes()

I would call this function parserDidFinishParsingAttributes instead since &quot;parseAttribute&quot; can be called via DOM API as well.

&gt; Source/WebCore/html/HTMLInputElement.cpp:748
&gt; +    // Attributes have now been set by the parser and we should now make sure we have
&gt; +    // an input type in case parseAttribute() wasn&apos;t called (i.e. there was no
&gt; +    // attribute).

I would prefer asserting that the UA shadow root is there when there are attributes instead of having a comment like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047636</commentid>
    <comment_count>8</comment_count>
      <attachid>241293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 14:30:54 -0800</bug_when>
    <thetext>Comment on attachment 241293
Patch

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

&gt;&gt; Source/WebCore/dom/Element.cpp:1247
&gt;&gt; +    finishParsingAttributes();
&gt; 
&gt; I&apos;m a bit worried about the cost of calling this virtual function on every element.
&gt; Did you run Dromaeo, etc... to make sure this isn&apos;t a regression on other tests?

I will check Dromaeo.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:136
&gt;&gt; +    if (!createdByParser)
&gt; 
&gt; Why don&apos;t we create a local boolean named shouldCreateShadowRootLazily = createdByParser instead of adding a comment?

Hmm, I have a slight preference for the comment in this case, but OK.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:634
&gt;&gt; +        ensureInputType();
&gt; 
&gt; It&apos;s not clear to me why we&apos;d have to call ensureInputType right away even during parsing...
&gt; I&apos;d replace this &quot;what&quot; comment by explaining that &quot;why&quot; if I were you.

A lot of the code below in this function relies on m_inputType being initialized, either directly (by dereferencing m_inputType), or indirectly by calling removeFromRadioButtonGroup(), updateType(), needsSuspensionCallback(), ...
Also note that, by the time parseAttribute() gets called during parsing, all attributes have already been set on the Element by the parser and there is no point in delaying m_inputType initialization any longer.

I will try and clarify the comment.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:744
&gt;&gt; +void HTMLInputElement::finishParsingAttributes()
&gt; 
&gt; I would call this function parserDidFinishParsingAttributes instead since &quot;parseAttribute&quot; can be called via DOM API as well.

I tried to be consistent with finishParsingChildren() but OK, I see your point.

&gt;&gt; Source/WebCore/html/HTMLInputElement.cpp:748
&gt;&gt; +    // attribute).
&gt; 
&gt; I would prefer asserting that the UA shadow root is there when there are attributes instead of having a comment like this.

Ok, I will replace with ASSERT(m_inputType || !hasAttributes());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047681</commentid>
    <comment_count>9</comment_count>
      <attachid>241293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 16:09:28 -0800</bug_when>
    <thetext>Comment on attachment 241293
Patch

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

&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:1247
&gt;&gt;&gt; +    finishParsingAttributes();
&gt;&gt; 
&gt;&gt; I&apos;m a bit worried about the cost of calling this virtual function on every element.
&gt;&gt; Did you run Dromaeo, etc... to make sure this isn&apos;t a regression on other tests?
&gt; 
&gt; I will check Dromaeo.

I don&apos;t see any impact on Dromaeo:
http://dromaeo.com/?id=230051,230054</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047703</commentid>
    <comment_count>10</comment_count>
      <attachid>241293</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 17:11:45 -0800</bug_when>
    <thetext>Comment on attachment 241293
Patch

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

&gt;&gt;&gt;&gt; Source/WebCore/dom/Element.cpp:1247
&gt;&gt;&gt;&gt; +    finishParsingAttributes();
&gt;&gt;&gt; 
&gt;&gt;&gt; I&apos;m a bit worried about the cost of calling this virtual function on every element.
&gt;&gt;&gt; Did you run Dromaeo, etc... to make sure this isn&apos;t a regression on other tests?
&gt;&gt; 
&gt;&gt; I will check Dromaeo.
&gt; 
&gt; I don&apos;t see any impact on Dromaeo:
&gt; http://dromaeo.com/?id=230051,230054

I don&apos;t see any regression locally on PerformanceTests/Parser tests either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047707</commentid>
    <comment_count>11</comment_count>
      <attachid>241323</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-10 17:19:54 -0800</bug_when>
    <thetext>Created attachment 241323
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047774</commentid>
    <comment_count>12</comment_count>
      <attachid>241323</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 23:20:00 -0800</bug_when>
    <thetext>Comment on attachment 241323
Patch

Clearing flags on attachment: 241323

Committed r175852: &lt;http://trac.webkit.org/changeset/175852&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047775</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-10 23:20:05 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047890</commentid>
    <comment_count>14</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-11 10:57:40 -0800</bug_when>
    <thetext>Looks like a 1.7% improvement on DoYouEvenBench on the bots:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D&amp;zoom=%5B1415546583612.4739%2C1415673794361.26%5D</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1047951</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-11 13:10:36 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 138626</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048002</commentid>
    <comment_count>16</comment_count>
      <attachid>241384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-11 15:48:26 -0800</bug_when>
    <thetext>Created attachment 241384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048004</commentid>
    <comment_count>17</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-11 15:49:26 -0800</bug_when>
    <thetext>*** Bug 138617 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048020</commentid>
    <comment_count>18</comment_count>
      <attachid>241384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-11 16:16:05 -0800</bug_when>
    <thetext>Comment on attachment 241384
Patch

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

&gt; Source/WebCore/dom/Element.cpp:1244
&gt; +    parserDidSetAttributes();

We now call this function after calling attributeChanged() to make sure that we initialize m_inputType as early as possible. There is now no risk of m_inputType not being initialized when attributeChanged() is called.
Also, we now only need to initialize m_inputType in the override of parserDidSetAttributes() (no longer need to do it in parseAttributes() as well), which is nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048096</commentid>
    <comment_count>19</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-11 21:02:42 -0800</bug_when>
    <thetext>I have just verified Membuster locally and this new patch does not seem to cause any regression. My guess is that the previous patch showed a regression on Membuster because of the crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048302</commentid>
    <comment_count>20</comment_count>
      <attachid>241384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-12 16:51:49 -0800</bug_when>
    <thetext>Comment on attachment 241384
Patch

Ryosuke, can you please take another look?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048336</commentid>
    <comment_count>21</comment_count>
      <attachid>241384</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-12 20:54:19 -0800</bug_when>
    <thetext>Comment on attachment 241384
Patch

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048363</commentid>
    <comment_count>22</comment_count>
      <attachid>241476</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-12 23:35:29 -0800</bug_when>
    <thetext>Created attachment 241476
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048367</commentid>
    <comment_count>23</comment_count>
      <attachid>241476</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-13 00:21:53 -0800</bug_when>
    <thetext>Comment on attachment 241476
Patch

Clearing flags on attachment: 241476

Committed r176069: &lt;http://trac.webkit.org/changeset/176069&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048368</commentid>
    <comment_count>24</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-11-13 00:22:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1048425</commentid>
    <comment_count>25</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-11-13 09:45:22 -0800</bug_when>
    <thetext>Seems like the bot is reporting a 1.4% improvement on speedometer:
https://perf.webkit.org/#mode=charts&amp;chartList=%5B%5B%22mac-mavericks%22%2C%22DoYouEvenBench%2FFull%3ATime%3ATotal%22%5D%5D</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241216</attachid>
            <date>2014-11-07 15:34:20 -0800</date>
            <delta_ts>2014-11-10 10:07:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138524-20141107153431.patch</filename>
            <type>text/plain</type>
            <size>10783</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1NzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBiNDJlODBiY2VlZWFj
YjdlYjhhNDljZjAyYmMyYzM3Zjk2MTdmMC4uMzc2NWI3ZTM3NjhhOGRlMTY1N2ZkMjc2ZDdmYTI0
ZDNkMjFkM2U1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE0LTExLTA3ICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBIVE1M
SW5wdXRFbGVtZW50J3MgaW5wdXRUeXBlIGFuZCBzaGFkb3cgc3VidHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhbiBIVE1MSW5wdXRFbGVt
ZW50IHdhcyBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIsIHdlIHdvdWxkIGZpcnN0IGNhbGwKKyAgICAg
ICAgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKCksIHRoZW4gY2FsbCBFbGVtZW50OjpwYXJzZXJT
ZXRBdHRyaWJ1dGVzKCkgb24KKyAgICAgICAgdGhlIGNvbnN0dWN0ZWQgaW5wdXQuIFdpdGggdGhl
IHByZXZpb3VzIGltcGxlbWVudGF0aW9uLCB0aGlzIHdhcyBhIGJpdAorICAgICAgICBpbmVmZmlj
aWVudCBiZWNhdXNlIEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSgpIHdvdWxkIGNvbnN0cnVjdCBh
CisgICAgICAgIFRleHRJbnB1dFR5cGUgaW5wdXRUeXBlIChhcyB0aGlzIGlzIHRoZSBkZWZhdWx0
KSBhcyB3ZWxsIGFzIGl0cworICAgICAgICBjb3JyZXNwb25kaW5nIHNoYWRvdyBzdWJ0cmVlLiBU
aGVuLCBwYXJzZXJTZXRBdHRyaWJ1dGVzKCkgd291bGQgb2Z0ZW4KKyAgICAgICAgc2V0IHRoZSB8
dHlwZXwgYXR0cmlidXRlIGFuZCB3b3VsZCBuZWVkIHRvIGRlc3Ryb3kgdGhpcyBpbnB1dCB0eXBl
IGFzCisgICAgICAgIHdlbGwgYXMgaXRzIHN1YnRyZWUgaWYgdGhlIG5ldyB8dHlwZXwgaXMgbm90
ICd0ZXh0JywgdG8gY3JlYXRlIGEgbmV3CisgICAgICAgIGlucHV0VHlwZSAvIHNoYWRvdyBzdWJ0
cmVlIG9mIHRoZSByaWdodCB0eXBlLiBUaGUgcHJvZmlsZXIgc2hvd2VkIHRoYXQKKyAgICAgICAg
dGhpcyB3YXMgZmFpcmx5IGV4cGVuc2l2ZS4KKworICAgICAgICBUbyBpbXByb3ZlIHRoaXMsIHRo
aXMgcGF0Y2ggZGVsYXlzIHRoZSBpbnB1dFR5cGUgLyBzaGFkb3cgc3VidHJlZQorICAgICAgICBj
cmVhdGlvbiB3aGVuIHRoZSBIVE1MSW5wdXRFbGVtZW50IGlzIGNvbnN0cnVjdGVkIGJ5IHRoZSBw
YXJzZXIsIHVudGlsCisgICAgICAgIHRoZSBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSBzZXQgYnkg
dGhlIHBhcnNlci4gVGhpcyB3YXksIHdlIGRpcmVjdGx5CisgICAgICAgIGNyZWF0ZSBhbiBpbnB1
dFR5cGUgLyBzaGFkb3cgc3VidHJlZSBvZiB0aGUgcmlnaHQgdHlwZS4KKworICAgICAgICBJIHNl
ZSBhIDEuNCUgc3BlZWQgdXAgb24gc3BlZWRvbWV0ZXIgKDczLjk1IC0+IDc1LjApLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlLgorCisgICAgICAgICogZG9tL0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRl
cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpmaW5pc2hQYXJzaW5nQXR0cmlidXRlcyk6
CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxJbnB1dEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxl
bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbnB1dFR5cGUpOgorICAgICAgICAoV2Vi
Q29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMpOgorICAgICAgICAq
IGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorCiAyMDE0LTExLTA3ICBBbmRyZWFzIEtsaW5nICA8
YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBdm9pZCByZXBhaW50aW5nIHNjcm9s
bGJhciB0cmFjayB3aGVuIHRoZSBzY3JvbGxiYXIgdHJhY2sgaXMgdHJhbnNwYXJlbnQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5jcHAKaW5kZXggNTM4MWJjODEyYzZmZWU2OTkyY2M1M2FiYjFmYTRjMDBjMTZi
ZGM1OC4uNGQ0ZmUzMWRmMmI3NDhlYjQwYjU3NmNjNWE5ZjhmZmNhOWNkZTQyYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmNwcApAQCAtMTIzMywxNyArMTIzMywyMiBAQCB2b2lkIEVsZW1lbnQ6OnBhcnNl
clNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3RvcikK
ICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnREYXRhKTsK
IAotICAgIGlmIChhdHRyaWJ1dGVWZWN0b3IuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47Cisg
ICAgaWYgKCFhdHRyaWJ1dGVWZWN0b3IuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkb2N1bWVu
dCgpLnNoYXJlZE9iamVjdFBvb2woKSkKKyAgICAgICAgICAgIG1fZWxlbWVudERhdGEgPSBkb2N1
bWVudCgpLnNoYXJlZE9iamVjdFBvb2woKS0+Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRo
QXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBt
X2VsZW1lbnREYXRhID0gU2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVz
KGF0dHJpYnV0ZVZlY3Rvcik7CiAKLSAgICBpZiAoZG9jdW1lbnQoKS5zaGFyZWRPYmplY3RQb29s
KCkpCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBkb2N1bWVudCgpLnNoYXJlZE9iamVjdFBvb2wo
KS0+Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0
b3IpOwotICAgIGVsc2UKLSAgICAgICAgbV9lbGVtZW50RGF0YSA9IFNoYXJlYWJsZUVsZW1lbnRE
YXRhOjpjcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3IpOworICAgICAgICAvLyBV
c2UgYXR0cmlidXRlVmVjdG9yIGluc3RlYWQgb2YgbV9lbGVtZW50RGF0YSBiZWNhdXNlIGF0dHJp
YnV0ZUNoYW5nZWQgbWlnaHQgbW9kaWZ5IG1fZWxlbWVudERhdGEuCisgICAgICAgIGZvciAoY29u
c3QgYXV0byYgYXR0cmlidXRlIDogYXR0cmlidXRlVmVjdG9yKQorICAgICAgICAgICAgYXR0cmli
dXRlQ2hhbmdlZChhdHRyaWJ1dGUubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlLnZhbHVlKCks
IE1vZGlmaWVkRGlyZWN0bHkpOworICAgIH0KIAotICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0b3Ig
aW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdodCBt
b2RpZnkgbV9lbGVtZW50RGF0YS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0cmli
dXRlVmVjdG9yLnNpemUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0
ZVZlY3RvcltpXS5uYW1lKCksIG51bGxBdG9tLCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUoKSwg
TW9kaWZpZWREaXJlY3RseSk7CisgICAgZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMoKTsKK30KKwor
dm9pZCBFbGVtZW50OjpmaW5pc2hQYXJzaW5nQXR0cmlidXRlcygpCit7CiB9CiAKIGJvb2wgRWxl
bWVudDo6aGFzQXR0cmlidXRlcygpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAppbmRleCBjODJjZTk3
NDBiN2ViM2YxMjZiNWZjYTEwMGFlYzkxZWMxZWY0YmViLi5mMTJlYmU0ODhiYjgyZDg5NWQ2M2E3
YjE1MjIxNmYzMzBmNGUzYzJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAgLTU1NSw2ICs1NTUsNyBA
QCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZWRGcm9tKENvbnRhaW5lck5vZGUm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUFsbEV2ZW50TGlzdGVu
ZXJzKCkgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdBdHRy
aWJ1dGVzKCk7CiAKICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5SWZOZWVkZWQoKTsg
ICAgCiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hvcnQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggZTFmZTkxYzllYThhYTU4ZTYxNGNmNjdh
YWRiYWFhYTYxYTMzNTMxMS4uNWE0YWE0ZmNmMzRhMDFhYzJhMWQyNTZmNjk1M2QxNDc2NTQwNjYy
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCkBAIC0xMjEsNyAr
MTIxLDkgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZp
ZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRT
KQogICAgICwgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcihmYWxzZSkKICNlbmRpZgotICAgICwgbV9p
bnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0aGlzKSkKKyAgICAvLyBtX2lucHV0VHlw
ZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNvbnN0cnVjdGVkIGJ5IHRoZSBwYXJzZXIgdG8gYXZv
aWQgY29uc3RydWN0aW5nIHVubmVjZXNzYXJpbHkgYSB0ZXh0IGlucHV0VHlwZSBhbmQKKyAgICAv
LyBpdHMgc2hhZG93IHN1YnRyZWUsIGp1c3QgdG8gZGVzdHJveSB0aGVtIHdoZW4gdGhlIHx0eXBl
fCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBhcnNlciB0byBzb21ldGhpbmcgZWxzZSB0aGFu
ICd0ZXh0Jy4KKyAgICAsIG1faW5wdXRUeXBlKGNyZWF0ZWRCeVBhcnNlciA/IG51bGxwdHIgOiBJ
bnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpKQogewogICAgIEFTU0VSVChoYXNUYWdOYW1lKGlu
cHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKICAgICBzZXRIYXNDdXN0b21TdHls
ZVJlc29sdmVDYWxsYmFja3MoKTsKQEAgLTEzMCw3ICsxMzIsOSBAQCBIVE1MSW5wdXRFbGVtZW50
OjpIVE1MSW5wdXRFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50
JiBkb2N1bQogUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1MSW5wdXRFbGVtZW50Ojpj
cmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtZW50LCBI
VE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKQogewogICAgIFJlZlB0
cjxIVE1MSW5wdXRFbGVtZW50PiBpbnB1dEVsZW1lbnQgPSBhZG9wdFJlZihuZXcgSFRNTElucHV0
RWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCwgZm9ybSwgY3JlYXRlZEJ5UGFyc2VyKSk7Ci0gICAg
aW5wdXRFbGVtZW50LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgLy8gVGhlIHVz
ZXItYWdlbnQgc2hhZG93Um9vdCBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNyZWF0ZWQgYnkgdGhl
IHBhcnNlci4KKyAgICBpZiAoIWNyZWF0ZWRCeVBhcnNlcikKKyAgICAgICAgaW5wdXRFbGVtZW50
LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgcmV0dXJuIGlucHV0RWxlbWVudC5y
ZWxlYXNlKCk7CiB9CiAKQEAgLTQzNSwyNyArNDM5LDQyIEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6dXBkYXRlVHlwZSgpCiAgICAgYXV0byBuZXdUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGUoKnRo
aXMsIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpKTsKICAgICBib29sIGhhZFR5cGUgPSBtX2hh
c1R5cGU7CiAgICAgbV9oYXNUeXBlID0gdHJ1ZTsKLSAgICBpZiAobV9pbnB1dFR5cGUtPmZvcm1D
b250cm9sVHlwZSgpID09IG5ld1R5cGUtPmZvcm1Db250cm9sVHlwZSgpKQotICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoaGFkVHlwZSAmJiAhbmV3VHlwZS0+Y2FuQ2hhbmdlRnJvbUFub3RoZXJU
eXBlKCkpIHsKLSAgICAgICAgLy8gU2V0IHRoZSBhdHRyaWJ1dGUgYmFjayB0byB0aGUgb2xkIHZh
bHVlLgotICAgICAgICAvLyBVc2VmdWwgaW4gY2FzZSB3ZSB3ZXJlIGNhbGxlZCBmcm9tIGluc2lk
ZSBwYXJzZUF0dHJpYnV0ZS4KLSAgICAgICAgc2V0QXR0cmlidXRlKHR5cGVBdHRyLCB0eXBlKCkp
OwotICAgICAgICByZXR1cm47Ci0gICAgfQorICAgIGJvb2wgZGlkU3RvcmVWYWx1ZSA9IHRydWU7
CisgICAgYm9vbCBuZWVkZWRTdXNwZW5zaW9uQ2FsbGJhY2sgPSBmYWxzZTsKKyAgICBib29sIGRp
ZFJlc3BlY3RIZWlnaHRBbmRXaWR0aCA9IHRydWU7CisgICAgYm9vbCBoYXNVc2VyQWdlbnRTaGFk
b3dSb290ID0gZmFsc2U7CiAKLSAgICByZW1vdmVGcm9tUmFkaW9CdXR0b25Hcm91cCgpOworICAg
IGlmIChtX2lucHV0VHlwZSkgeworICAgICAgICBpZiAobV9pbnB1dFR5cGUtPmZvcm1Db250cm9s
VHlwZSgpID09IG5ld1R5cGUtPmZvcm1Db250cm9sVHlwZSgpKQorICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgYm9vbCBkaWRTdG9yZVZhbHVlID0gbV9pbnB1dFR5cGUtPnN0b3Jlc1ZhbHVlU2Vw
YXJhdGVGcm9tQXR0cmlidXRlKCk7Ci0gICAgYm9vbCBuZWVkZWRTdXNwZW5zaW9uQ2FsbGJhY2sg
PSBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOwotICAgIGJvb2wgZGlkUmVzcGVjdEhlaWdodEFu
ZFdpZHRoID0gbV9pbnB1dFR5cGUtPnNob3VsZFJlc3BlY3RIZWlnaHRBbmRXaWR0aEF0dHJpYnV0
ZXMoKTsKKyAgICAgICAgaWYgKGhhZFR5cGUgJiYgIW5ld1R5cGUtPmNhbkNoYW5nZUZyb21Bbm90
aGVyVHlwZSgpKSB7CisgICAgICAgICAgICAvLyBTZXQgdGhlIGF0dHJpYnV0ZSBiYWNrIHRvIHRo
ZSBvbGQgdmFsdWUuCisgICAgICAgICAgICAvLyBVc2VmdWwgaW4gY2FzZSB3ZSB3ZXJlIGNhbGxl
ZCBmcm9tIGluc2lkZSBwYXJzZUF0dHJpYnV0ZS4KKyAgICAgICAgICAgIHNldEF0dHJpYnV0ZSh0
eXBlQXR0ciwgdHlwZSgpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCi0gICAg
bV9pbnB1dFR5cGUtPmRlc3Ryb3lTaGFkb3dTdWJ0cmVlKCk7CisgICAgICAgIHJlbW92ZUZyb21S
YWRpb0J1dHRvbkdyb3VwKCk7CisKKyAgICAgICAgZGlkU3RvcmVWYWx1ZSA9IG1faW5wdXRUeXBl
LT5zdG9yZXNWYWx1ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOworICAgICAgICBuZWVkZWRTdXNw
ZW5zaW9uQ2FsbGJhY2sgPSBuZWVkc1N1c3BlbnNpb25DYWxsYmFjaygpOworICAgICAgICBkaWRS
ZXNwZWN0SGVpZ2h0QW5kV2lkdGggPSBtX2lucHV0VHlwZS0+c2hvdWxkUmVzcGVjdEhlaWdodEFu
ZFdpZHRoQXR0cmlidXRlcygpOworICAgICAgICBoYXNVc2VyQWdlbnRTaGFkb3dSb290ID0gdHJ1
ZTsKKworICAgICAgICBtX2lucHV0VHlwZS0+ZGVzdHJveVNoYWRvd1N1YnRyZWUoKTsKKyAgICB9
CiAKICAgICBtX2lucHV0VHlwZSA9IFdURjo6bW92ZShuZXdUeXBlKTsKLSAgICBtX2lucHV0VHlw
ZS0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOwotICAgIHVwZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0
YWJpbGl0eSgpOworICAgIGlmIChoYXNVc2VyQWdlbnRTaGFkb3dSb290KSB7CisgICAgICAgIG1f
aW5wdXRUeXBlLT5jcmVhdGVTaGFkb3dTdWJ0cmVlKCk7CisgICAgICAgIHVwZGF0ZUlubmVyVGV4
dEVsZW1lbnRFZGl0YWJpbGl0eSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoaXMgd2ls
bCB0YWtlIGNhcmUgb2YgY3JlYXRpbmcgdGhlIHNoYWRvdyBzdWJ0cmVlIGFuZAorICAgICAgICAv
LyB1cGRhdGUgdGhlIGlubmVyIHRleHQgZWxlbWVudCBlZGl0YWJpbGl0eS4KKyAgICAgICAgZW5z
dXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIH0KIAogI2lmIEVOQUJMRShUT1VDSF9FVkVO
VFMpCiAgICAgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3Vj
aEV2ZW50SGFuZGxlcigpOwpAQCAtNTk2LDggKzYxNSwyOSBAQCB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJgogICAgICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudDo6Y29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKG5hbWUsIHZhbHVlLCBzdHlsZSk7CiB9CiAKK2lubGluZSB2
b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmVuc3VyZUlucHV0VHlwZSgpCit7CisgICAgQVNTRVJUKG1f
cGFyc2luZ0luUHJvZ3Jlc3MpOworICAgIGlmIChtX2lucHV0VHlwZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgaWYgKCFoYXNBdHRyaWJ1dGUodHlwZUF0dHIpKSB7CisgICAgICAgIG1faW5wdXRU
eXBlID0gSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0aGlzKTsKKyAgICAgICAgZW5zdXJlVXNlckFn
ZW50U2hhZG93Um9vdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdXBkYXRlVHlw
ZSgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUpCiB7CisgICAgaWYg
KG1fcGFyc2luZ0luUHJvZ3Jlc3MpIHsKKyAgICAgICAgLy8gQXR0cmlidXRlcyBoYXZlIG5vdyBi
ZWVuIHNldCBieSB0aGUgcGFyc2VyIGFuZCB3ZSBzaG91bGQgbm93IG1ha2Ugc3VyZSB3ZSBoYXZl
IGFuCisgICAgICAgIC8vIGlucHV0IHR5cGUgYW5kIGEgdXNlci1hZ2VudCBzaGFkb3cgcm9vdC4K
KyAgICAgICAgZW5zdXJlSW5wdXRUeXBlKCk7CisgICAgfQorCiAgICAgaWYgKG5hbWUgPT0gbmFt
ZUF0dHIpIHsKICAgICAgICAgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsKICAgICAgICAg
bV9uYW1lID0gdmFsdWU7CkBAIC03MDUsNiArNzQ1LDE0IEBAIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyCiAgICAgbV9pbnB1dFR5cGUtPmF0dHJpYnV0ZUNoYW5nZWQoKTsKIH0KIAordm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQXR0cmlidXRlcygpCit7CisgICAgLy8gQXR0cmli
dXRlcyBoYXZlIG5vdyBiZWVuIHNldCBieSB0aGUgcGFyc2VyIGFuZCB3ZSBzaG91bGQgbm93IG1h
a2Ugc3VyZSB3ZSBoYXZlCisgICAgLy8gYW4gaW5wdXQgdHlwZSBpbiBjYXNlIHBhcnNlQXR0cmli
dXRlKCkgd2Fzbid0IGNhbGxlZCAoaS5lLiB0aGVyZSB3YXMgbm8KKyAgICAvLyBhdHRyaWJ1dGUp
LgorICAgIGVuc3VyZUlucHV0VHlwZSgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZp
bmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgbV9wYXJzaW5nSW5Qcm9ncmVzcyA9IGZhbHNl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCA5MjBkMjQxZjNmZDc5
ZmUyMDJjNDUzYzIyZjdkYmQ4MTBmODVjYmE4Li42MmYyZDZlNWYxZjBjYzY4NWZkZDY4ZTNmZDhk
OGVhMDNiMzE3NjViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAt
MzI0LDYgKzMyNCw3IEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBlbnVtIEF1dG9Db21w
bGV0ZVNldHRpbmcgeyBVbmluaXRpYWxpemVkLCBPbiwgT2ZmIH07CisgICAgdm9pZCBlbnN1cmVJ
bnB1dFR5cGUoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKIApAQCAtMzU5LDYgKzM2MCw3IEBAIHByaXZhdGU6CiAg
ICAgdmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJl
c2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJp
bmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hQYXJzaW5nQXR0cmlidXRlcygpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lk
IGNvcHlOb25BdHRyaWJ1dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIG92
ZXJyaWRlOwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241293</attachid>
            <date>2014-11-10 10:08:01 -0800</date>
            <delta_ts>2014-11-10 17:19:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138524-20141110100803.patch</filename>
            <type>text/plain</type>
            <size>10461</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1Nzk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzY2ZTM1NzA5N2VjYTlm
NzYxZGI3MGJkYTQ2MWY3ZTZmMTc5YjYwMS4uMTU0NWY4YTQ0NmNmYTg0ZjQzNDc3YzY4YjdhNjRl
OTU4MTVhYzk3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE0LTExLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBIVE1M
SW5wdXRFbGVtZW50J3MgaW5wdXRUeXBlIGFuZCBzaGFkb3cgc3VidHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhbiBIVE1MSW5wdXRFbGVt
ZW50IHdhcyBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIsIHdlIHdvdWxkIGZpcnN0IGNhbGwKKyAgICAg
ICAgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKCksIHRoZW4gY2FsbCBFbGVtZW50OjpwYXJzZXJT
ZXRBdHRyaWJ1dGVzKCkgb24KKyAgICAgICAgdGhlIGNvbnN0cnVjdGVkIGlucHV0LiBXaXRoIHRo
ZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3YXMgYSBiaXQKKyAgICAgICAgaW5lZmZp
Y2llbnQgYmVjYXVzZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoKSB3b3VsZCBjb25zdHJ1Y3Qg
YQorICAgICAgICBUZXh0SW5wdXRUeXBlIGlucHV0VHlwZSAoYXMgdGhpcyBpcyB0aGUgZGVmYXVs
dCkgYXMgd2VsbCBhcyBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBzaGFkb3cgc3VidHJlZS4g
VGhlbiwgcGFyc2VyU2V0QXR0cmlidXRlcygpIHdvdWxkIG9mdGVuCisgICAgICAgIHNldCB0aGUg
fHR5cGV8IGF0dHJpYnV0ZSBhbmQgd291bGQgbmVlZCB0byBkZXN0cm95IHRoaXMgaW5wdXQgdHlw
ZSBhcworICAgICAgICB3ZWxsIGFzIGl0cyBzdWJ0cmVlIGlmIHRoZSBuZXcgfHR5cGV8IGlzIG5v
dCAndGV4dCcsIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBpbnB1dFR5cGUgLyBzaGFkb3cgc3Vi
dHJlZSBvZiB0aGUgcmlnaHQgdHlwZS4gVGhlIHByb2ZpbGVyIHNob3dlZCB0aGF0CisgICAgICAg
IHRoaXMgd2FzIGZhaXJseSBleHBlbnNpdmUuCisKKyAgICAgICAgVG8gaW1wcm92ZSB0aGlzLCB0
aGlzIHBhdGNoIGRlbGF5cyB0aGUgaW5wdXRUeXBlIC8gc2hhZG93IHN1YnRyZWUKKyAgICAgICAg
Y3JlYXRpb24gd2hlbiB0aGUgSFRNTElucHV0RWxlbWVudCBpcyBjb25zdHJ1Y3RlZCBieSB0aGUg
cGFyc2VyLCB1bnRpbAorICAgICAgICB0aGUgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc2V0IGJ5
IHRoZSBwYXJzZXIuIFRoaXMgd2F5LCB3ZSBkaXJlY3RseQorICAgICAgICBjcmVhdGUgYW4gaW5w
dXRUeXBlIC8gc2hhZG93IHN1YnRyZWUgb2YgdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgSSBz
ZWUgYSAxLjQlIHNwZWVkIHVwIG9uIHNwZWVkb21ldGVyICg3My45NSAtPiA3NS4wKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMp
OgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cnVuUG9zdFR5cGVVcGRhdGVUYXNrcyk6CisgICAg
ICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbnB1dFR5cGUpOgorICAgICAg
ICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6ZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMpOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorCiAyMDE0LTExLTA5ICBDaHJpcyBEdW1l
eiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIGEgbW9yZSBjb3JyZWN0IHdheSB0
byBjb21wYXJlIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgYW5kIHVzZSBpdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuY3BwCmluZGV4IDUzODFiYzgxMmM2ZmVlNjk5MmNjNTNhYmIxZmE0YzAwYzE2YmRjNTguLjRk
NGZlMzFkZjJiNzQ4ZWI0MGI1NzZjYzVhOWY4ZmZjYTljZGU0MmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5jcHAKQEAgLTEyMzMsMTcgKzEyMzMsMjIgQEAgdm9pZCBFbGVtZW50OjpwYXJzZXJTZXRBdHRy
aWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVWZWN0b3IpCiAgICAgQVNT
RVJUKCFwYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbV9lbGVtZW50RGF0YSk7CiAKLSAgICBp
ZiAoYXR0cmlidXRlVmVjdG9yLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOworICAgIGlmICgh
YXR0cmlidXRlVmVjdG9yLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoZG9jdW1lbnQoKS5zaGFy
ZWRPYmplY3RQb29sKCkpCisgICAgICAgICAgICBtX2VsZW1lbnREYXRhID0gZG9jdW1lbnQoKS5z
aGFyZWRPYmplY3RQb29sKCktPmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0
ZXMoYXR0cmlidXRlVmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV9lbGVtZW50
RGF0YSA9IFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1
dGVWZWN0b3IpOwogCi0gICAgaWYgKGRvY3VtZW50KCkuc2hhcmVkT2JqZWN0UG9vbCgpKQotICAg
ICAgICBtX2VsZW1lbnREYXRhID0gZG9jdW1lbnQoKS5zaGFyZWRPYmplY3RQb29sKCktPmNhY2hl
ZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlVmVjdG9yKTsKLSAg
ICBlbHNlCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3Jl
YXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlVmVjdG9yKTsKKyAgICAgICAgLy8gVXNlIGF0dHJp
YnV0ZVZlY3RvciBpbnN0ZWFkIG9mIG1fZWxlbWVudERhdGEgYmVjYXVzZSBhdHRyaWJ1dGVDaGFu
Z2VkIG1pZ2h0IG1vZGlmeSBtX2VsZW1lbnREYXRhLgorICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZVZlY3RvcikKKyAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5n
ZWQoYXR0cmlidXRlLm5hbWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0ZS52YWx1ZSgpLCBNb2RpZmll
ZERpcmVjdGx5KTsKKyAgICB9CiAKLSAgICAvLyBVc2UgYXR0cmlidXRlVmVjdG9yIGluc3RlYWQg
b2YgbV9lbGVtZW50RGF0YSBiZWNhdXNlIGF0dHJpYnV0ZUNoYW5nZWQgbWlnaHQgbW9kaWZ5IG1f
ZWxlbWVudERhdGEuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGF0dHJpYnV0ZVZlY3Rv
ci5zaXplKCk7ICsraSkKLSAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVWZWN0b3Jb
aV0ubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlVmVjdG9yW2ldLnZhbHVlKCksIE1vZGlmaWVk
RGlyZWN0bHkpOworICAgIGZpbmlzaFBhcnNpbmdBdHRyaWJ1dGVzKCk7Cit9CisKK3ZvaWQgRWxl
bWVudDo6ZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMoKQorewogfQogCiBib29sIEVsZW1lbnQ6Omhh
c0F0dHJpYnV0ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKaW5kZXggYzgyY2U5NzQwYjdlYjNm
MTI2YjVmY2ExMDBhZWM5MWVjMWVmNGJlYi4uZjEyZWJlNDg4YmI4MmQ4OTVkNjNhN2IxNTIyMTZm
MzMwZjRlM2MyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01NTUsNiArNTU1LDcgQEAgcHJvdGVj
dGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92
ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQXR0cmlidXRlcygp
OwogCiAgICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAgIAogICAg
IHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDE2MTc3YmFmN2I0ZWVhMDg5MzFiOWVhMTAxYTg3ZjFk
Yzk2YTU5YjMuLjQzOWE1OGQxZmM1MjdjMGNiYjUxMmNmNWI5ODBmOGVhMDJkNTNmNjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTIxLDcgKzEyMSw5IEBA
IEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
dGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAs
IG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faW5wdXRUeXBl
KElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcykpCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6
aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0
cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5kCisgICAgLy8gaXRzIHNo
YWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmli
dXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcu
CisgICAgLCBtX2lucHV0VHlwZShjcmVhdGVkQnlQYXJzZXIgPyBudWxscHRyIDogSW5wdXRUeXBl
OjpjcmVhdGVUZXh0KCp0aGlzKSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1dFRhZykg
fHwgaGFzVGFnTmFtZShpc2luZGV4VGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZl
Q2FsbGJhY2tzKCk7CkBAIC0xMzAsNyArMTMyLDkgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElu
cHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0K
IFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1F
bGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKICAgICBSZWZQdHI8SFRNTElu
cHV0RWxlbWVudD4gaW5wdXRFbGVtZW50ID0gYWRvcHRSZWYobmV3IEhUTUxJbnB1dEVsZW1lbnQo
dGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRCeVBhcnNlcikpOwotICAgIGlucHV0RWxl
bWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgpOworICAgIC8vIFRoZSB1c2VyLWFnZW50
IHNoYWRvd1Jvb3QgaXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIu
CisgICAgaWYgKCFjcmVhdGVkQnlQYXJzZXIpCisgICAgICAgIGlucHV0RWxlbWVudC0+ZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIHJldHVybiBpbnB1dEVsZW1lbnQucmVsZWFzZSgp
OwogfQogCkBAIC00MzIsNiArNDM2LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRh
dGVUeXBlKCkKIHsKKyAgICBBU1NFUlQobV9pbnB1dFR5cGUpOwogICAgIGF1dG8gbmV3VHlwZSA9
IElucHV0VHlwZTo6Y3JlYXRlKCp0aGlzLCBmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSk7CiAg
ICAgYm9vbCBoYWRUeXBlID0gbV9oYXNUeXBlOwogICAgIG1faGFzVHlwZSA9IHRydWU7CkBAIC00
NTcsMTcgKzQ2Miw2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAg
bV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB1cGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoKTsKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9v
bCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFuZGxl
cigpOwotICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRIYW5k
bGVyKSB7Ci0gICAgICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlcikKLSAgICAgICAgICAgIGRv
Y3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRvY3VtZW50KCkuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7Ci0g
ICAgICAgIG1faGFzVG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKLSAg
ICB9Ci0jZW5kaWYKLQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJv
b2wgd2lsbFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21B
dHRyaWJ1dGUoKTsKQEAgLTUwMyw2ICs0OTcsMjMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1
cGRhdGVUeXBlKCkKICAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYWxpZ25BdHRyLCBudWxs
QXRvbSwgYWxpZ24tPnZhbHVlKCkpOwogICAgIH0KIAorICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFz
a3MoKTsKK30KKworaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cnVuUG9zdFR5cGVVcGRh
dGVUYXNrcygpCit7CisgICAgQVNTRVJUKG1faW5wdXRUeXBlKTsKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIgPSBtX2lucHV0VHlwZS0+aGFz
VG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIgIT0gbV9o
YXNUb3VjaEV2ZW50SGFuZGxlcikgeworICAgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIp
CisgICAgICAgICAgICBkb2N1bWVudCgpLmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKHRoaXMpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZVRvdWNoRXZlbnRI
YW5kbGVyKHRoaXMpOworICAgICAgICBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyID0gaGFzVG91Y2hF
dmVudEhhbmRsZXI7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJlbmRlclRyZWUpOwogCkBAIC01OTYs
OCArNjA3LDMzIEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFt
ZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAoraW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZW5z
dXJlSW5wdXRUeXBlKCkKK3sKKyAgICBBU1NFUlQobV9wYXJzaW5nSW5Qcm9ncmVzcyk7CisgICAg
aWYgKG1faW5wdXRUeXBlKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoIWhhc0F0dHJpYnV0
ZSh0eXBlQXR0cikpIHsKKyAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRl
eHQoKnRoaXMpOworICAgICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2hhc1R5cGUgPSB0cnVlOworICAgIG1faW5wdXRUeXBl
ID0gSW5wdXRUeXBlOjpjcmVhdGUoKnRoaXMsIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpKTsK
KyAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgcmVnaXN0ZXJGb3JTdXNwZW5z
aW9uQ2FsbGJhY2tJZk5lZWRlZCgpOworICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKK30K
Kwogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9taWNTdHJpbmcmIHZhbHVlKQogeworICAgIGlmIChtX3BhcnNp
bmdJblByb2dyZXNzKSB7CisgICAgICAgIC8vIEF0dHJpYnV0ZXMgaGF2ZSBub3cgYmVlbiBzZXQg
YnkgdGhlIHBhcnNlciBhbmQgd2Ugc2hvdWxkIG5vdyBtYWtlIHN1cmUgd2UgaGF2ZSBhbgorICAg
ICAgICAvLyBpbnB1dCB0eXBlIGFuZCBhIHVzZXItYWdlbnQgc2hhZG93IHJvb3QuCisgICAgICAg
IGVuc3VyZUlucHV0VHlwZSgpOworICAgIH0KKwogICAgIGlmIChuYW1lID09IG5hbWVBdHRyKSB7
CiAgICAgICAgIHJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3VwKCk7CiAgICAgICAgIG1fbmFtZSA9
IHZhbHVlOwpAQCAtNzA1LDYgKzc0MSwxNCBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgogICAg
IG1faW5wdXRUeXBlLT5hdHRyaWJ1dGVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgSFRNTElucHV0RWxl
bWVudDo6ZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMoKQoreworICAgIC8vIEF0dHJpYnV0ZXMgaGF2
ZSBub3cgYmVlbiBzZXQgYnkgdGhlIHBhcnNlciBhbmQgd2Ugc2hvdWxkIG5vdyBtYWtlIHN1cmUg
d2UgaGF2ZQorICAgIC8vIGFuIGlucHV0IHR5cGUgaW4gY2FzZSBwYXJzZUF0dHJpYnV0ZSgpIHdh
c24ndCBjYWxsZWQgKGkuZS4gdGhlcmUgd2FzIG5vCisgICAgLy8gYXR0cmlidXRlKS4KKyAgICBl
bnN1cmVJbnB1dFR5cGUoKTsKK30KKwogdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpmaW5pc2hQYXJz
aW5nQ2hpbGRyZW4oKQogewogICAgIG1fcGFyc2luZ0luUHJvZ3Jlc3MgPSBmYWxzZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXggMjc3Zjc3MmRjMGZkNjQyNjRhMTAw
MmZiZDc3ZDU0MWVhZTQ4Y2RhOS4uNThkNDgxZTRkZTIwZmM1YjQ0ZjBmODg5Yzc2NDMxM2MzN2Fm
MzRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKQEAgLTM1OSw2ICsz
NTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBpc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxlUHJvcGVydGllcyYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFyc2luZ0F0dHJpYnV0ZXMoKSBvdmVycmlkZSBmaW5hbDsK
IAogICAgIHZpcnR1YWwgdm9pZCBjb3B5Tm9uQXR0cmlidXRlUHJvcGVydGllc0Zyb21FbGVtZW50
KGNvbnN0IEVsZW1lbnQmKSBvdmVycmlkZTsKIApAQCAtMzk4LDcgKzM5OSw5IEBAIHByaXZhdGU6
CiAgICAgdmlydHVhbCBib29sIHJlY2FsY1dpbGxWYWxpZGF0ZSgpIGNvbnN0IG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1aXJlZEF0dHJpYnV0ZUNoYW5nZWQoKSBvdmVycmlkZTsKIAor
ICAgIHZvaWQgZW5zdXJlSW5wdXRUeXBlKCk7CiAgICAgdm9pZCB1cGRhdGVUeXBlKCk7CisgICAg
dm9pZCBydW5Qb3N0VHlwZVVwZGF0ZVRhc2tzKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHN1
YnRyZWVIYXNDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241323</attachid>
            <date>2014-11-10 17:19:54 -0800</date>
            <delta_ts>2014-11-11 15:48:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138524-20141110171957.patch</filename>
            <type>text/plain</type>
            <size>10598</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1ODMxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjQ0NDY3MWNhZmUzMzk4
YWNlYmJlMmYwMjFhMDA5MDNlODMyNjUwZS4uZDIwMDk4NzRkNmZjYzgzMjgwYTY1NWY4ZDg1ZmZk
N2EzMmUwZjg1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ2IEBACiAyMDE0LTExLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBIVE1M
SW5wdXRFbGVtZW50J3MgaW5wdXRUeXBlIGFuZCBzaGFkb3cgc3VidHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhbiBIVE1MSW5wdXRFbGVt
ZW50IHdhcyBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIsIHdlIHdvdWxkIGZpcnN0IGNhbGwKKyAgICAg
ICAgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKCksIHRoZW4gY2FsbCBFbGVtZW50OjpwYXJzZXJT
ZXRBdHRyaWJ1dGVzKCkgb24KKyAgICAgICAgdGhlIGNvbnN0cnVjdGVkIGlucHV0LiBXaXRoIHRo
ZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3YXMgYSBiaXQKKyAgICAgICAgaW5lZmZp
Y2llbnQgYmVjYXVzZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoKSB3b3VsZCBjb25zdHJ1Y3Qg
YQorICAgICAgICBUZXh0SW5wdXRUeXBlIGlucHV0VHlwZSAoYXMgdGhpcyBpcyB0aGUgZGVmYXVs
dCkgYXMgd2VsbCBhcyBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBzaGFkb3cgc3VidHJlZS4g
VGhlbiwgcGFyc2VyU2V0QXR0cmlidXRlcygpIHdvdWxkIG9mdGVuCisgICAgICAgIHNldCB0aGUg
fHR5cGV8IGF0dHJpYnV0ZSBhbmQgd291bGQgbmVlZCB0byBkZXN0cm95IHRoaXMgaW5wdXQgdHlw
ZSBhcworICAgICAgICB3ZWxsIGFzIGl0cyBzdWJ0cmVlIGlmIHRoZSBuZXcgfHR5cGV8IGlzIG5v
dCAndGV4dCcsIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBpbnB1dFR5cGUgLyBzaGFkb3cgc3Vi
dHJlZSBvZiB0aGUgcmlnaHQgdHlwZS4gVGhlIHByb2ZpbGVyIHNob3dlZCB0aGF0CisgICAgICAg
IHRoaXMgd2FzIGZhaXJseSBleHBlbnNpdmUuCisKKyAgICAgICAgVG8gaW1wcm92ZSB0aGlzLCB0
aGlzIHBhdGNoIGRlbGF5cyB0aGUgaW5wdXRUeXBlIC8gc2hhZG93IHN1YnRyZWUKKyAgICAgICAg
Y3JlYXRpb24gd2hlbiB0aGUgSFRNTElucHV0RWxlbWVudCBpcyBjb25zdHJ1Y3RlZCBieSB0aGUg
cGFyc2VyLCB1bnRpbAorICAgICAgICB0aGUgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc2V0IGJ5
IHRoZSBwYXJzZXIuIFRoaXMgd2F5LCB3ZSBkaXJlY3RseQorICAgICAgICBjcmVhdGUgYW4gaW5w
dXRUeXBlIC8gc2hhZG93IHN1YnRyZWUgb2YgdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgSSBz
ZWUgYSAxLjQlIHNwZWVkIHVwIG9uIHNwZWVkb21ldGVyICg3My45NSAtPiA3NS4wKS4KKworICAg
ICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0
ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6cGFyc2VyRGlkRmluaXNoUGFyc2luZ0F0
dHJpYnV0ZXMpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6CisgICAgICAgICogaHRtbC9IVE1M
SW5wdXRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OkhU
TUxJbnB1dEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6Y3Jl
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cnVuUG9zdFR5cGVVcGRhdGVUYXNr
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjplbnN1cmVJbnB1dFR5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUpOgor
ICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFyc2VyRGlkRmluaXNoUGFyc2lu
Z0F0dHJpYnV0ZXMpOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorCisyMDE0
LTExLTEwICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU3VwcG9y
dCB0aHJvdHRsaW5nIG9mIERPTVRpbWVycyB1c2luZyBuZXN0ZWQgc2V0VGltZW91dCgpIGNhbGxz
CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzgyNjIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnQuY3BwCmluZGV4IDUzODFiYzgxMmM2ZmVlNjk5MmNjNTNhYmIxZmE0
YzAwYzE2YmRjNTguLjExZjkwODNlYWIyNGMwYzA0YmE3Mzc0ZmJlMWI4YmJjODkzMmVmODEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5jcHAKQEAgLTEyMzMsMTcgKzEyMzMsMjIgQEAgdm9pZCBFbGVtZW50
OjpwYXJzZXJTZXRBdHRyaWJ1dGVzKGNvbnN0IFZlY3RvcjxBdHRyaWJ1dGU+JiBhdHRyaWJ1dGVW
ZWN0b3IpCiAgICAgQVNTRVJUKCFwYXJlbnROb2RlKCkpOwogICAgIEFTU0VSVCghbV9lbGVtZW50
RGF0YSk7CiAKLSAgICBpZiAoYXR0cmlidXRlVmVjdG9yLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0
dXJuOworICAgIGlmICghYXR0cmlidXRlVmVjdG9yLmlzRW1wdHkoKSkgeworICAgICAgICBpZiAo
ZG9jdW1lbnQoKS5zaGFyZWRPYmplY3RQb29sKCkpCisgICAgICAgICAgICBtX2VsZW1lbnREYXRh
ID0gZG9jdW1lbnQoKS5zaGFyZWRPYmplY3RQb29sKCktPmNhY2hlZFNoYXJlYWJsZUVsZW1lbnRE
YXRhV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlVmVjdG9yKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9lbGVtZW50RGF0YSA9IFNoYXJlYWJsZUVsZW1lbnREYXRhOjpjcmVhdGVXaXRoQXR0
cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3IpOwogCi0gICAgaWYgKGRvY3VtZW50KCkuc2hhcmVkT2Jq
ZWN0UG9vbCgpKQotICAgICAgICBtX2VsZW1lbnREYXRhID0gZG9jdW1lbnQoKS5zaGFyZWRPYmpl
Y3RQb29sKCktPmNhY2hlZFNoYXJlYWJsZUVsZW1lbnREYXRhV2l0aEF0dHJpYnV0ZXMoYXR0cmli
dXRlVmVjdG9yKTsKLSAgICBlbHNlCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBTaGFyZWFibGVF
bGVtZW50RGF0YTo6Y3JlYXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlVmVjdG9yKTsKKyAgICAg
ICAgLy8gVXNlIGF0dHJpYnV0ZVZlY3RvciBpbnN0ZWFkIG9mIG1fZWxlbWVudERhdGEgYmVjYXVz
ZSBhdHRyaWJ1dGVDaGFuZ2VkIG1pZ2h0IG1vZGlmeSBtX2VsZW1lbnREYXRhLgorICAgICAgICBm
b3IgKGNvbnN0IGF1dG8mIGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZVZlY3RvcikKKyAgICAgICAgICAg
IGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLm5hbWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0ZS52
YWx1ZSgpLCBNb2RpZmllZERpcmVjdGx5KTsKKyAgICB9CiAKLSAgICAvLyBVc2UgYXR0cmlidXRl
VmVjdG9yIGluc3RlYWQgb2YgbV9lbGVtZW50RGF0YSBiZWNhdXNlIGF0dHJpYnV0ZUNoYW5nZWQg
bWlnaHQgbW9kaWZ5IG1fZWxlbWVudERhdGEuCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8
IGF0dHJpYnV0ZVZlY3Rvci5zaXplKCk7ICsraSkKLSAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChh
dHRyaWJ1dGVWZWN0b3JbaV0ubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlVmVjdG9yW2ldLnZh
bHVlKCksIE1vZGlmaWVkRGlyZWN0bHkpOworICAgIHBhcnNlckRpZEZpbmlzaFBhcnNpbmdBdHRy
aWJ1dGVzKCk7Cit9CisKK3ZvaWQgRWxlbWVudDo6cGFyc2VyRGlkRmluaXNoUGFyc2luZ0F0dHJp
YnV0ZXMoKQorewogfQogCiBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmgKaW5kZXggYzgyY2U5NzQwYjdlYjNmMTI2YjVmY2ExMDBhZWM5MWVjMWVmNGJl
Yi4uOTg5NTkyNDdiZjU1MmZiYTIzNzI0NzUyMTQyNTI3ZGU3NzI5ZTI4ZSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5oCkBAIC01NTUsNiArNTU1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBy
ZW1vdmVkRnJvbShDb250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVBbGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1
YWwgdm9pZCBwYXJzZXJEaWRGaW5pc2hQYXJzaW5nQXR0cmlidXRlcygpOwogCiAgICAgdm9pZCBj
bGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAgIAogICAgIHZvaWQgc2V0VGFiSW5k
ZXhFeHBsaWNpdGx5KHNob3J0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
Y3BwCmluZGV4IDE2MTc3YmFmN2I0ZWVhMDg5MzFiOWVhMTAxYTg3ZjFkYzk2YTU5YjMuLjg2OWUz
NzA3NjdmY2RhMDI5M2VlMjUyMTRkYmVlZTMxZGQ5OGUzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTIxLDcgKzEyMSw5IEBAIEhUTUxJbnB1dEVsZW1l
bnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKICAgICAsIG1faGFzVG91Y2hFdmVu
dEhhbmRsZXIoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faW5wdXRUeXBlKElucHV0VHlwZTo6Y3Jl
YXRlVGV4dCgqdGhpcykpCisgICAgLy8gbV9pbnB1dFR5cGUgaXMgbGF6aWx5IGNyZWF0ZWQgd2hl
biBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lkIGNvbnN0cnVjdGluZyB1bm5lY2Vz
c2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5kCisgICAgLy8gaXRzIHNoYWRvdyBzdWJ0cmVlLCBq
dXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwgYXR0cmlidXRlIGdldHMgc2V0IGJ5
IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAndGV4dCcuCisgICAgLCBtX2lucHV0
VHlwZShjcmVhdGVkQnlQYXJzZXIgPyBudWxscHRyIDogSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0
aGlzKSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1dFRhZykgfHwgaGFzVGFnTmFtZShp
c2luZGV4VGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCk7CkBA
IC0xMjksOCArMTMxLDEwIEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAKIFBhc3NSZWZQdHI8
SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwgSFRNTEZvcm1FbGVtZW50KiBmb3Jt
LCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKKyAgICBib29sIHNob3VsZENyZWF0ZVNoYWRvd1Jv
b3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7CiAgICAgUmVmUHRyPEhUTUxJbnB1dEVsZW1lbnQ+
IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKG5ldyBIVE1MSW5wdXRFbGVtZW50KHRhZ05hbWUsIGRv
Y3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAgICBpbnB1dEVsZW1lbnQtPmVuc3Vy
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXNob3VsZENyZWF0ZVNoYWRvd1Jvb3RM
YXppbHkpCisgICAgICAgIGlucHV0RWxlbWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OwogICAgIHJldHVybiBpbnB1dEVsZW1lbnQucmVsZWFzZSgpOwogfQogCkBAIC00MzIsNiArNDM2
LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBlKGNvbnN0IEF0b21pY1N0cmluZyYg
dHlwZSkKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKIHsKKyAgICBBU1NF
UlQobV9pbnB1dFR5cGUpOwogICAgIGF1dG8gbmV3VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlKCp0
aGlzLCBmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSk7CiAgICAgYm9vbCBoYWRUeXBlID0gbV9o
YXNUeXBlOwogICAgIG1faGFzVHlwZSA9IHRydWU7CkBAIC00NTcsMTcgKzQ2Miw2IEBAIHZvaWQg
SFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAgbV9pbnB1dFR5cGUtPmNyZWF0ZVNo
YWRvd1N1YnRyZWUoKTsKICAgICB1cGRhdGVJbm5lclRleHRFbGVtZW50RWRpdGFiaWxpdHkoKTsK
IAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxl
ciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFuZGxlcigpOwotICAgIGlmIChoYXNUb3Vj
aEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKSB7Ci0gICAgICAgIGlmICho
YXNUb3VjaEV2ZW50SGFuZGxlcikKLSAgICAgICAgICAgIGRvY3VtZW50KCkuZGlkQWRkVG91Y2hF
dmVudEhhbmRsZXIodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGRvY3VtZW50KCku
ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7Ci0gICAgICAgIG1faGFzVG91Y2hFdmVu
dEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKLSAgICB9Ci0jZW5kaWYKLQogICAgIHNl
dE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJvb2wgd2lsbFN0b3JlVmFsdWUgPSBt
X2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21BdHRyaWJ1dGUoKTsKQEAgLTUwMyw2
ICs0OTcsMjMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRhdGVUeXBlKCkKICAgICAgICAg
ICAgIGF0dHJpYnV0ZUNoYW5nZWQoYWxpZ25BdHRyLCBudWxsQXRvbSwgYWxpZ24tPnZhbHVlKCkp
OwogICAgIH0KIAorICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKK30KKworaW5saW5lIHZv
aWQgSFRNTElucHV0RWxlbWVudDo6cnVuUG9zdFR5cGVVcGRhdGVUYXNrcygpCit7CisgICAgQVNT
RVJUKG1faW5wdXRUeXBlKTsKKyNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQorICAgIGJvb2wgaGFz
VG91Y2hFdmVudEhhbmRsZXIgPSBtX2lucHV0VHlwZS0+aGFzVG91Y2hFdmVudEhhbmRsZXIoKTsK
KyAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIgIT0gbV9oYXNUb3VjaEV2ZW50SGFuZGxlcikg
eworICAgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIpCisgICAgICAgICAgICBkb2N1bWVu
dCgpLmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKHRoaXMpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZVRvdWNoRXZlbnRIYW5kbGVyKHRoaXMpOworICAgICAg
ICBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyID0gaGFzVG91Y2hFdmVudEhhbmRsZXI7CisgICAgfQor
I2VuZGlmCisKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAgICAgc2V0TmVlZHNTdHlsZVJlY2Fs
YyhSZWNvbnN0cnVjdFJlbmRlclRyZWUpOwogCkBAIC01OTYsOCArNjA3LDM1IEBAIHZvaWQgSFRN
TElucHV0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50Ojpjb2xs
ZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFtZSwgdmFsdWUsIHN0eWxlKTsKIH0K
IAoraW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6ZW5zdXJlSW5wdXRUeXBlKCkKK3sKKyAg
ICBBU1NFUlQobV9wYXJzaW5nSW5Qcm9ncmVzcyk7CisgICAgaWYgKG1faW5wdXRUeXBlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoIWhhc0F0dHJpYnV0ZSh0eXBlQXR0cikpIHsKKyAgICAg
ICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOworICAgICAgICBl
bnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICBtX2hhc1R5cGUgPSB0cnVlOworICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGUo
KnRoaXMsIGZhc3RHZXRBdHRyaWJ1dGUodHlwZUF0dHIpKTsKKyAgICBlbnN1cmVVc2VyQWdlbnRT
aGFkb3dSb290KCk7CisgICAgcmVnaXN0ZXJGb3JTdXNwZW5zaW9uQ2FsbGJhY2tJZk5lZWRlZCgp
OworICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKK30KKwogdm9pZCBIVE1MSW5wdXRFbGVt
ZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9t
aWNTdHJpbmcmIHZhbHVlKQogeworICAgIGlmIChtX3BhcnNpbmdJblByb2dyZXNzKSB7CisgICAg
ICAgIC8vIEEgbG90IG9mIHRoZSBjb2RlIGJlbG93IHJlcXVpcmVzIG1faW5wdXRUeXBlIHRvIGJl
IGluaXRpYWxpemVkIHNvIG1ha2Ugc3VyZSB3ZSBkby4KKyAgICAgICAgLy8gQnkgdGhlIHRpbWUg
cGFyc2VBdHRyaWJ1dGUoKSBpcyBjYWxsZWQgZHVyaW5nIHBhcnNpbmcgYW55d2F5LCBhbGwgYXR0
cmlidXRlcyBoYXZlCisgICAgICAgIC8vIGJlZW4gc2V0IG9uIHRoZSBlbGVtZW50IGFscmVhZHkg
c28gdGhlcmUgaXMgbm8gcG9pbnQgaW4gZGVsYXlpbmcgbV9pbnB1dFR5cGUKKyAgICAgICAgLy8g
aW5pdGlhbGl6YXRpb24gZnVydGhlci4KKyAgICAgICAgZW5zdXJlSW5wdXRUeXBlKCk7CisgICAg
fQorCiAgICAgaWYgKG5hbWUgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgcmVtb3ZlRnJvbVJhZGlv
QnV0dG9uR3JvdXAoKTsKICAgICAgICAgbV9uYW1lID0gdmFsdWU7CkBAIC03MDUsNiArNzQzLDEy
IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbWljU3RyCiAgICAgbV9pbnB1dFR5cGUtPmF0dHJpYnV0ZUNo
YW5nZWQoKTsKIH0KIAordm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZXJEaWRGaW5pc2hQYXJz
aW5nQXR0cmlidXRlcygpCit7CisgICAgQVNTRVJUKG1faW5wdXRUeXBlIHx8ICFoYXNBdHRyaWJ1
dGVzKCkpOworICAgIGVuc3VyZUlucHV0VHlwZSgpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1l
bnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAgICAgbV9wYXJzaW5nSW5Qcm9ncmVzcyA9
IGZhbHNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAppbmRleCAyNzdmNzcy
ZGMwZmQ2NDI2NGExMDAyZmJkNzdkNTQxZWFlNDhjZGE5Li5kMjdlZGNiZmQwZjBlZTk0MDM3NDhl
YmI3NmMyYjdlMTNkMzMyOTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJ
bnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQu
aApAQCAtMzU5LDYgKzM1OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIGlzUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9yUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0
aWVzJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
IG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBwYXJzZXJEaWRGaW5pc2hQYXJzaW5nQXR0cmli
dXRlcygpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1
dGVQcm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIG92ZXJyaWRlOwogCkBAIC0z
OTgsNyArMzk5LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlk
YXRlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVpcmVkQXR0cmlidXRl
Q2hhbmdlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBlbnN1cmVJbnB1dFR5cGUoKTsKICAgICB2
b2lkIHVwZGF0ZVR5cGUoKTsKKyAgICB2b2lkIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKICAg
ICAKICAgICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSBvdmVycmlkZTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241384</attachid>
            <date>2014-11-11 15:48:26 -0800</date>
            <delta_ts>2014-11-12 23:35:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138524-20141111154830.patch</filename>
            <type>text/plain</type>
            <size>13490</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc1OTc2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDFiNTA2MDQ5NmY3MWEz
Mzc3MjM3NWE0NzdjZmU3M2M0NTJjM2I0NC4uYTljNDU3NTE0MDhkMjdhNmM5ZGJiY2Q4OTRiNzdj
ZTliYTY3MjNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE0LTExLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBIVE1M
SW5wdXRFbGVtZW50J3MgaW5wdXRUeXBlIGFuZCBzaGFkb3cgc3VidHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV2hlbiBhbiBIVE1MSW5wdXRFbGVt
ZW50IHdhcyBjcmVhdGVkIGJ5IHRoZSBwYXJzZXIsIHdlIHdvdWxkIGZpcnN0IGNhbGwKKyAgICAg
ICAgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKCksIHRoZW4gY2FsbCBFbGVtZW50OjpwYXJzZXJT
ZXRBdHRyaWJ1dGVzKCkgb24KKyAgICAgICAgdGhlIGNvbnN0cnVjdGVkIGlucHV0LiBXaXRoIHRo
ZSBwcmV2aW91cyBpbXBsZW1lbnRhdGlvbiwgdGhpcyB3YXMgYSBiaXQKKyAgICAgICAgaW5lZmZp
Y2llbnQgYmVjYXVzZSBIVE1MSW5wdXRFbGVtZW50OjpjcmVhdGUoKSB3b3VsZCBjb25zdHJ1Y3Qg
YQorICAgICAgICBUZXh0SW5wdXRUeXBlIGlucHV0VHlwZSAoYXMgdGhpcyBpcyB0aGUgZGVmYXVs
dCkgYXMgd2VsbCBhcyBpdHMKKyAgICAgICAgY29ycmVzcG9uZGluZyBzaGFkb3cgc3VidHJlZS4g
VGhlbiwgcGFyc2VyU2V0QXR0cmlidXRlcygpIHdvdWxkIG9mdGVuCisgICAgICAgIHNldCB0aGUg
fHR5cGV8IGF0dHJpYnV0ZSBhbmQgd291bGQgbmVlZCB0byBkZXN0cm95IHRoaXMgaW5wdXQgdHlw
ZSBhcworICAgICAgICB3ZWxsIGFzIGl0cyBzdWJ0cmVlIGlmIHRoZSBuZXcgfHR5cGV8IGlzIG5v
dCAndGV4dCcsIHRvIGNyZWF0ZSBhIG5ldworICAgICAgICBpbnB1dFR5cGUgLyBzaGFkb3cgc3Vi
dHJlZSBvZiB0aGUgcmlnaHQgdHlwZS4gVGhlIHByb2ZpbGVyIHNob3dlZCB0aGF0CisgICAgICAg
IHRoaXMgd2FzIGZhaXJseSBleHBlbnNpdmUuCisKKyAgICAgICAgVG8gaW1wcm92ZSB0aGlzLCB0
aGlzIHBhdGNoIGRlbGF5cyB0aGUgaW5wdXRUeXBlIC8gc2hhZG93IHN1YnRyZWUKKyAgICAgICAg
Y3JlYXRpb24gd2hlbiB0aGUgSFRNTElucHV0RWxlbWVudCBpcyBjb25zdHJ1Y3RlZCBieSB0aGUg
cGFyc2VyLCB1bnRpbAorICAgICAgICB0aGUgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc2V0IGJ5
IHRoZSBwYXJzZXIuIFRoaXMgd2F5LCB3ZSBkaXJlY3RseQorICAgICAgICBjcmVhdGUgYW4gaW5w
dXRUeXBlIC8gc2hhZG93IHN1YnRyZWUgb2YgdGhlIHJpZ2h0IHR5cGUuCisKKyAgICAgICAgSSBz
ZWUgYSAxLjQlIHNwZWVkIHVwIG9uIHNwZWVkb21ldGVyICg3My45NSAtPiA3NS4wKS4KKworICAg
ICAgICBUZXN0OiBmYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2JvcmRlci1hdHRyaWJ1dGUtY3Jh
c2guaHRtbAorCisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50
OjpwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1M
SW5wdXRFbGVtZW50OjpIVE1MSW5wdXRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJ
bnB1dEVsZW1lbnQ6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
Ojp1cGRhdGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6OnJ1blBv
c3RUeXBlVXBkYXRlVGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
aW5pdGlhbGl6ZUlucHV0VHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50Ojpw
YXJzZXJEaWRTZXRBdHRyaWJ1dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1l
bnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbik6CisgICAgICAgICogaHRtbC9IVE1MSW5wdXRFbGVt
ZW50Lmg6CisKIDIwMTQtMTEtMTEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW2lPU10gY2xlYW51cCB3aXJlbGVzcyByb3V0ZSBtb25pdG9yaW5nCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNTM4MWJjODEyYzZmZWU2OTkyY2M1M2FiYjFmYTRjMDBj
MTZiZGM1OC4uYTJkNzk5MzczZThjZTc3OWU3NWRkYzA5MGUyMjZlOTY2ODg0YmIxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMTIzMywxNyArMTIzMywyMyBAQCB2b2lkIEVsZW1lbnQ6OnBh
cnNlclNldEF0dHJpYnV0ZXMoY29uc3QgVmVjdG9yPEF0dHJpYnV0ZT4mIGF0dHJpYnV0ZVZlY3Rv
cikKICAgICBBU1NFUlQoIXBhcmVudE5vZGUoKSk7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnREYXRh
KTsKIAotICAgIGlmIChhdHRyaWJ1dGVWZWN0b3IuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47
CisgICAgaWYgKCFhdHRyaWJ1dGVWZWN0b3IuaXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChkb2N1
bWVudCgpLnNoYXJlZE9iamVjdFBvb2woKSkKKyAgICAgICAgICAgIG1fZWxlbWVudERhdGEgPSBk
b2N1bWVudCgpLnNoYXJlZE9iamVjdFBvb2woKS0+Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFX
aXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3IpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBtX2VsZW1lbnREYXRhID0gU2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1
dGVzKGF0dHJpYnV0ZVZlY3Rvcik7CiAKLSAgICBpZiAoZG9jdW1lbnQoKS5zaGFyZWRPYmplY3RQ
b29sKCkpCi0gICAgICAgIG1fZWxlbWVudERhdGEgPSBkb2N1bWVudCgpLnNoYXJlZE9iamVjdFBv
b2woKS0+Y2FjaGVkU2hhcmVhYmxlRWxlbWVudERhdGFXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVW
ZWN0b3IpOwotICAgIGVsc2UKLSAgICAgICAgbV9lbGVtZW50RGF0YSA9IFNoYXJlYWJsZUVsZW1l
bnREYXRhOjpjcmVhdGVXaXRoQXR0cmlidXRlcyhhdHRyaWJ1dGVWZWN0b3IpOworICAgIH0KKwor
ICAgIHBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKTsKIAogICAgIC8vIFVzZSBhdHRyaWJ1dGVWZWN0
b3IgaW5zdGVhZCBvZiBtX2VsZW1lbnREYXRhIGJlY2F1c2UgYXR0cmlidXRlQ2hhbmdlZCBtaWdo
dCBtb2RpZnkgbV9lbGVtZW50RGF0YS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYXR0
cmlidXRlVmVjdG9yLnNpemUoKTsgKytpKQotICAgICAgICBhdHRyaWJ1dGVDaGFuZ2VkKGF0dHJp
YnV0ZVZlY3RvcltpXS5uYW1lKCksIG51bGxBdG9tLCBhdHRyaWJ1dGVWZWN0b3JbaV0udmFsdWUo
KSwgTW9kaWZpZWREaXJlY3RseSk7CisgICAgZm9yIChjb25zdCBhdXRvJiBhdHRyaWJ1dGUgOiBh
dHRyaWJ1dGVWZWN0b3IpCisgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlLm5hbWUo
KSwgbnVsbEF0b20sIGF0dHJpYnV0ZS52YWx1ZSgpLCBNb2RpZmllZERpcmVjdGx5KTsKK30KKwor
dm9pZCBFbGVtZW50OjpwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkKK3sKIH0KIAogYm9vbCBFbGVt
ZW50OjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGM4MmNlOTc0
MGI3ZWIzZjEyNmI1ZmNhMTAwYWVjOTFlYzFlZjRiZWIuLjdhYTFiZWI3YjVlM2E5MDA2MGY3MWM3
ZDYxMjg0NGQxNzcyZmVjMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNTU1LDYgKzU1NSw3IEBA
IHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlZEZyb20oQ29udGFpbmVyTm9kZSYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlQWxsRXZlbnRMaXN0ZW5l
cnMoKSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmli
dXRlcygpOwogCiAgICAgdm9pZCBjbGVhclRhYkluZGV4RXhwbGljaXRseUlmTmVlZGVkKCk7ICAg
IAogICAgIHZvaWQgc2V0VGFiSW5kZXhFeHBsaWNpdGx5KHNob3J0KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwCmluZGV4IDE2MTc3YmFmN2I0ZWVhMDg5MzFiOWVhMTAx
YTg3ZjFkYzk2YTU5YjMuLmQwNTI4NjEzZDk0NDlhYWJjMzZlMDIxMGIwZjE0NjhmYzcwYmRjM2Eg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcApAQCAtMTIxLDcgKzEy
MSw5IEBAIEhUTUxJbnB1dEVsZW1lbnQ6OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQmIGRvY3VtCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykK
ICAgICAsIG1faGFzVG91Y2hFdmVudEhhbmRsZXIoZmFsc2UpCiAjZW5kaWYKLSAgICAsIG1faW5w
dXRUeXBlKElucHV0VHlwZTo6Y3JlYXRlVGV4dCgqdGhpcykpCisgICAgLy8gbV9pbnB1dFR5cGUg
aXMgbGF6aWx5IGNyZWF0ZWQgd2hlbiBjb25zdHJ1Y3RlZCBieSB0aGUgcGFyc2VyIHRvIGF2b2lk
IGNvbnN0cnVjdGluZyB1bm5lY2Vzc2FyaWx5IGEgdGV4dCBpbnB1dFR5cGUgYW5kCisgICAgLy8g
aXRzIHNoYWRvdyBzdWJ0cmVlLCBqdXN0IHRvIGRlc3Ryb3kgdGhlbSB3aGVuIHRoZSB8dHlwZXwg
YXR0cmlidXRlIGdldHMgc2V0IGJ5IHRoZSBwYXJzZXIgdG8gc29tZXRoaW5nIGVsc2UgdGhhbiAn
dGV4dCcuCisgICAgLCBtX2lucHV0VHlwZShjcmVhdGVkQnlQYXJzZXIgPyBudWxscHRyIDogSW5w
dXRUeXBlOjpjcmVhdGVUZXh0KCp0aGlzKSkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShpbnB1
dFRhZykgfHwgaGFzVGFnTmFtZShpc2luZGV4VGFnKSk7CiAgICAgc2V0SGFzQ3VzdG9tU3R5bGVS
ZXNvbHZlQ2FsbGJhY2tzKCk7CkBAIC0xMjksOCArMTMxLDEwIEBAIEhUTUxJbnB1dEVsZW1lbnQ6
OkhUTUxJbnB1dEVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQm
IGRvY3VtCiAKIFBhc3NSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gSFRNTElucHV0RWxlbWVudDo6
Y3JlYXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50JiBkb2N1bWVudCwg
SFRNTEZvcm1FbGVtZW50KiBmb3JtLCBib29sIGNyZWF0ZWRCeVBhcnNlcikKIHsKKyAgICBib29s
IHNob3VsZENyZWF0ZVNoYWRvd1Jvb3RMYXppbHkgPSBjcmVhdGVkQnlQYXJzZXI7CiAgICAgUmVm
UHRyPEhUTUxJbnB1dEVsZW1lbnQ+IGlucHV0RWxlbWVudCA9IGFkb3B0UmVmKG5ldyBIVE1MSW5w
dXRFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50LCBmb3JtLCBjcmVhdGVkQnlQYXJzZXIpKTsKLSAg
ICBpbnB1dEVsZW1lbnQtPmVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICBpZiAoIXNo
b3VsZENyZWF0ZVNoYWRvd1Jvb3RMYXppbHkpCisgICAgICAgIGlucHV0RWxlbWVudC0+ZW5zdXJl
VXNlckFnZW50U2hhZG93Um9vdCgpOwogICAgIHJldHVybiBpbnB1dEVsZW1lbnQucmVsZWFzZSgp
OwogfQogCkBAIC00MzIsNiArNDM2LDcgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50OjpzZXRUeXBl
KGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIAogdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRh
dGVUeXBlKCkKIHsKKyAgICBBU1NFUlQobV9pbnB1dFR5cGUpOwogICAgIGF1dG8gbmV3VHlwZSA9
IElucHV0VHlwZTo6Y3JlYXRlKCp0aGlzLCBmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKSk7CiAg
ICAgYm9vbCBoYWRUeXBlID0gbV9oYXNUeXBlOwogICAgIG1faGFzVHlwZSA9IHRydWU7CkBAIC00
NTcsMTcgKzQ2Miw2IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6dXBkYXRlVHlwZSgpCiAgICAg
bV9pbnB1dFR5cGUtPmNyZWF0ZVNoYWRvd1N1YnRyZWUoKTsKICAgICB1cGRhdGVJbm5lclRleHRF
bGVtZW50RWRpdGFiaWxpdHkoKTsKIAotI2lmIEVOQUJMRShUT1VDSF9FVkVOVFMpCi0gICAgYm9v
bCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1faW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFuZGxl
cigpOwotICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRIYW5k
bGVyKSB7Ci0gICAgICAgIGlmIChoYXNUb3VjaEV2ZW50SGFuZGxlcikKLSAgICAgICAgICAgIGRv
Y3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIGRvY3VtZW50KCkuZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7Ci0g
ICAgICAgIG1faGFzVG91Y2hFdmVudEhhbmRsZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKLSAg
ICB9Ci0jZW5kaWYKLQogICAgIHNldE5lZWRzV2lsbFZhbGlkYXRlQ2hlY2soKTsKIAogICAgIGJv
b2wgd2lsbFN0b3JlVmFsdWUgPSBtX2lucHV0VHlwZS0+c3RvcmVzVmFsdWVTZXBhcmF0ZUZyb21B
dHRyaWJ1dGUoKTsKQEAgLTUwMyw2ICs0OTcsMjMgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1
cGRhdGVUeXBlKCkKICAgICAgICAgICAgIGF0dHJpYnV0ZUNoYW5nZWQoYWxpZ25BdHRyLCBudWxs
QXRvbSwgYWxpZ24tPnZhbHVlKCkpOwogICAgIH0KIAorICAgIHJ1blBvc3RUeXBlVXBkYXRlVGFz
a3MoKTsKK30KKworaW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6cnVuUG9zdFR5cGVVcGRh
dGVUYXNrcygpCit7CisgICAgQVNTRVJUKG1faW5wdXRUeXBlKTsKKyNpZiBFTkFCTEUoVE9VQ0hf
RVZFTlRTKQorICAgIGJvb2wgaGFzVG91Y2hFdmVudEhhbmRsZXIgPSBtX2lucHV0VHlwZS0+aGFz
VG91Y2hFdmVudEhhbmRsZXIoKTsKKyAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIgIT0gbV9o
YXNUb3VjaEV2ZW50SGFuZGxlcikgeworICAgICAgICBpZiAoaGFzVG91Y2hFdmVudEhhbmRsZXIp
CisgICAgICAgICAgICBkb2N1bWVudCgpLmRpZEFkZFRvdWNoRXZlbnRIYW5kbGVyKHRoaXMpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBkb2N1bWVudCgpLmRpZFJlbW92ZVRvdWNoRXZlbnRI
YW5kbGVyKHRoaXMpOworICAgICAgICBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyID0gaGFzVG91Y2hF
dmVudEhhbmRsZXI7CisgICAgfQorI2VuZGlmCisKICAgICBpZiAocmVuZGVyZXIoKSkKICAgICAg
ICAgc2V0TmVlZHNTdHlsZVJlY2FsYyhSZWNvbnN0cnVjdFJlbmRlclRyZWUpOwogCkBAIC01OTYs
OCArNjA3LDI5IEBAIHZvaWQgSFRNTElucHV0RWxlbWVudDo6Y29sbGVjdFN0eWxlRm9yUHJlc2Vu
dGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmCiAgICAgICAgIEhUTUxUZXh0Rm9y
bUNvbnRyb2xFbGVtZW50Ojpjb2xsZWN0U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUobmFt
ZSwgdmFsdWUsIHN0eWxlKTsKIH0KIAoraW5saW5lIHZvaWQgSFRNTElucHV0RWxlbWVudDo6aW5p
dGlhbGl6ZUlucHV0VHlwZSgpCit7CisgICAgQVNTRVJUKG1fcGFyc2luZ0luUHJvZ3Jlc3MpOwor
ICAgIEFTU0VSVCghbV9pbnB1dFR5cGUpOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0eXBl
ID0gZmFzdEdldEF0dHJpYnV0ZSh0eXBlQXR0cik7CisgICAgaWYgKHR5cGUuaXNOdWxsKCkpIHsK
KyAgICAgICAgbV9pbnB1dFR5cGUgPSBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpOworICAg
ICAgICBlbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBtX2hhc1R5cGUgPSB0cnVlOworICAgIG1faW5wdXRUeXBlID0gSW5wdXRUeXBlOjpj
cmVhdGUoKnRoaXMsIHR5cGUpOworICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAg
ICByZWdpc3RlckZvclN1c3BlbnNpb25DYWxsYmFja0lmTmVlZGVkKCk7CisgICAgcnVuUG9zdFR5
cGVVcGRhdGVUYXNrcygpOworfQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cmluZyYgdmFsdWUp
CiB7CisgICAgQVNTRVJUKG1faW5wdXRUeXBlKTsKKwogICAgIGlmIChuYW1lID09IG5hbWVBdHRy
KSB7CiAgICAgICAgIHJlbW92ZUZyb21SYWRpb0J1dHRvbkdyb3VwKCk7CiAgICAgICAgIG1fbmFt
ZSA9IHZhbHVlOwpAQCAtNzA1LDkgKzczNywxNiBAQCB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21pY1N0cgog
ICAgIG1faW5wdXRUeXBlLT5hdHRyaWJ1dGVDaGFuZ2VkKCk7CiB9CiAKK3ZvaWQgSFRNTElucHV0
RWxlbWVudDo6cGFyc2VyRGlkU2V0QXR0cmlidXRlcygpCit7CisgICAgQVNTRVJUKG1fcGFyc2lu
Z0luUHJvZ3Jlc3MpOworICAgIGluaXRpYWxpemVJbnB1dFR5cGUoKTsKK30KKwogdm9pZCBIVE1M
SW5wdXRFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKQogewogICAgIG1fcGFyc2luZ0lu
UHJvZ3Jlc3MgPSBmYWxzZTsKKyAgICBBU1NFUlQobV9pbnB1dFR5cGUpOwogICAgIEhUTUxUZXh0
Rm9ybUNvbnRyb2xFbGVtZW50OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4oKTsKICAgICBpZiAoIW1f
c3RhdGVSZXN0b3JlZCkgewogICAgICAgICBib29sIGNoZWNrZWQgPSBmYXN0SGFzQXR0cmlidXRl
KGNoZWNrZWRBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0
RWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKaW5kZXgg
Mjc3Zjc3MmRjMGZkNjQyNjRhMTAwMmZiZDc3ZDU0MWVhZTQ4Y2RhOS4uZjJmNDBmMDg1YWQxMWRh
NzJiNDFjMmYxMGU3NjczZTJjZjM4NTIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MSW5wdXRFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmgKQEAgLTM1OSw2ICszNTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9vbCBp
c1ByZXNlbnRhdGlvbkF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Qgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlvbkF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJiwgTXV0YWJsZVN0eWxl
UHJvcGVydGllcyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hQYXJzaW5nQ2hp
bGRyZW4oKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VyRGlkU2V0QXR0cmlidXRl
cygpIG92ZXJyaWRlIGZpbmFsOwogCiAgICAgdmlydHVhbCB2b2lkIGNvcHlOb25BdHRyaWJ1dGVQ
cm9wZXJ0aWVzRnJvbUVsZW1lbnQoY29uc3QgRWxlbWVudCYpIG92ZXJyaWRlOwogCkBAIC0zOTgs
NyArMzk5LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIGJvb2wgcmVjYWxjV2lsbFZhbGlkYXRl
KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVpcmVkQXR0cmlidXRlQ2hh
bmdlZCgpIG92ZXJyaWRlOwogCisgICAgdm9pZCBpbml0aWFsaXplSW5wdXRUeXBlKCk7CiAgICAg
dm9pZCB1cGRhdGVUeXBlKCk7CisgICAgdm9pZCBydW5Qb3N0VHlwZVVwZGF0ZVRhc2tzKCk7CiAg
ICAgCiAgICAgdmlydHVhbCB2b2lkIHN1YnRyZWVIYXNDaGFuZ2VkKCkgb3ZlcnJpZGU7CiAKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpp
bmRleCAxMTRiNmNiMDkwODQ0N2E2NzI1NTY1OWY0YzE2YjQ5ZDI3MzUzMTBjLi4wNjdkNWQ1N2Y0
NTE3N2NiNjkxOGRmZjE0YWU3MjU4YTg2ZDAyZTFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIw
MTQtMTEtMTEgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBMYXpp
bHkgY3JlYXRlIEhUTUxJbnB1dEVsZW1lbnQncyBpbnB1dFR5cGUgYW5kIHNoYWRvdyBzdWJ0cmVl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzg1MjQK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSB0
ZXN0IGNhc2UgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNyYXNoIHdoZW4gcGFyc2luZyBhbiA8aW5w
dXQ+CisgICAgICAgIEVsZW1lbnQgdGhhdCBoYXMgYSB8Ym9yZGVyfCBhdHRyaWJ1dGUgYXMgZmly
c3QgYXR0cmlidXRlLiBUaGlzIGlzIHdoYXQKKyAgICAgICAgd2FzIGhhcHBlbmluZyB3aXRoIHRo
ZSBmaXJzdCB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2ggdGhhdCBsYW5kZWQgaW4KKyAgICAgICAgcjE3
NTg1Mi4gV2hlbiBhdHRyaWJ1dGVDaGFuZ2VkKCkgd2FzIGNhbGxlZCBmb3IgdGhlIHxib3JkZXJ8
IGF0dHJpYnV0ZQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJp
YnV0ZSgpIHdvdWxkIGdldCBjYWxsZWQgYmVmb3JlCisgICAgICAgIG1faW5wdXRUeXBlIGlzIGlu
aXRpYWxpemVkLCBhbmQgIm5hbWUgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkiCisg
ICAgICAgIHdvdWxkIGNyYXNoIGJlY2F1c2UgaXNJbWFnZUJ1dHRvbigpIGRlcmVmZXJlbmNlcyBt
X2lucHV0VHlwZS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVy
LWF0dHJpYnV0ZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9t
L0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVyLWF0dHJpYnV0ZS1jcmFzaC5odG1sOiBBZGRlZC4KKwog
MjAxNC0xMS0xMSAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
W0ZyYW1lIEZsYXR0ZW5pbmddIEFTU0VSVCh0cmFuc2FjdGlvbi0+dmlldyA9PSAmdmlldygpKSBm
YWlscyBpbiBSZW5kZXJCbG9jazo6cmVtb3ZlRnJvbVVwZGF0ZVNjcm9sbEluZm9BZnRlckxheW91
dFRyYW5zYWN0aW9uKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1
dEVsZW1lbnQvYm9yZGVyLWF0dHJpYnV0ZS1jcmFzaC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2JvcmRlci1hdHRyaWJ1dGUtY3Jhc2gtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJiNTQxM2NhMWIwYzkxZmUxNWMzZDFmNDI5ZDM5ODljNTRhYWY0
ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVt
ZW50L2JvcmRlci1hdHRyaWJ1dGUtY3Jhc2gtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTMgQEAK
K1Rlc3RzIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBwYXJzaW5nIGFuIGlucHV0IGVsZW1lbnQg
d2l0aCBhIGJvcmRlciBhdHRyaWJ1dGUgYW5kIGltYWdlIHR5cGUuCisKK09uIHN1Y2Nlc3MsIHlv
dSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNU
IENPTVBMRVRFIi4KKworCitQQVNTIGlucHV0LmdldEF0dHJpYnV0ZSgnYm9yZGVyJykgaXMgIjAi
CitQQVNTIGlucHV0LmdldEF0dHJpYnV0ZSgndHlwZScpIGlzICJpbWFnZSIKK1BBU1MgaW5wdXQu
Z2V0QXR0cmlidXRlKCdzcmMnKSBpcyAic3VibWl0LmdpZiIKK1BBU1MgaW5wdXQuZ2V0QXR0cmli
dXRlKCdhbHQnKSBpcyAiU3VibWl0IgorUEFTUyBzdWNjZXNzZnVsbHlQYXJzZWQgaXMgdHJ1ZQor
CitURVNUIENPTVBMRVRFCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJ
bnB1dEVsZW1lbnQvYm9yZGVyLWF0dHJpYnV0ZS1jcmFzaC5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vSFRNTElucHV0RWxlbWVudC9ib3JkZXItYXR0cmlidXRlLWNyYXNoLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uMGM0OTgzOTcyZjM4ZGM1MGE1MjA1ZGIzMmRhYjIzODc3MGE1ZDg5MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVyLWF0
dHJpYnV0ZS1jcmFzaC5odG1sCkBAIC0wLDAgKzEsMTkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGJv
ZHk+Cis8c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKzxkaXYgaWQ9InRlc3REaXYiPjwvZGl2PgorPHNjcmlwdD4KK2Rlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IHdlIGRvbid0IGNyYXNoIHdoZW4gcGFyc2luZyBhbiBpbnB1dCBlbGVtZW50IHdp
dGggYSBib3JkZXIgYXR0cmlidXRlIGFuZCBpbWFnZSB0eXBlLiIpOworCit2YXIgdGVzdERpdiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0RGl2Iik7Cit0ZXN0RGl2LmlubmVySFRNTCA9
ICI8aW5wdXQgYm9yZGVyPScwJyB0eXBlPSdpbWFnZScgc3JjPSdzdWJtaXQuZ2lmJyBhbHQ9J1N1
Ym1pdCc+IjsKKwordmFyIGlucHV0ID0gdGVzdERpdi5maXJzdENoaWxkOworc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRyaWJ1dGUoJ2JvcmRlcicpIiwgIjAiKTsKK3Nob3VsZEJl
RXF1YWxUb1N0cmluZygiaW5wdXQuZ2V0QXR0cmlidXRlKCd0eXBlJykiLCAiaW1hZ2UiKTsKK3No
b3VsZEJlRXF1YWxUb1N0cmluZygiaW5wdXQuZ2V0QXR0cmlidXRlKCdzcmMnKSIsICJzdWJtaXQu
Z2lmIik7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LmdldEF0dHJpYnV0ZSgnYWx0Jyki
LCAiU3VibWl0Iik7CisKKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>241476</attachid>
            <date>2014-11-12 23:35:29 -0800</date>
            <delta_ts>2014-11-13 00:21:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-138524-20141112233535.patch</filename>
            <type>text/plain</type>
            <size>13456</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTc2MDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBiN2I3MTAxYmJmNGZl
NTg2MjgzOTAxMTQ5Y2M1NzE2ZWU0N2VlYy4uOWM5Y2Q0ZmZjYTQ5OGE1Yzg5M2UyMTAyZjFlODM3
ZmFjMDZhYzRkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDE0LTExLTExICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgTGF6aWx5IGNyZWF0ZSBIVE1M
SW5wdXRFbGVtZW50J3MgaW5wdXRUeXBlIGFuZCBzaGFkb3cgc3VidHJlZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM4NTI0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFdoZW4gYW4gSFRNTElucHV0RWxlbWVu
dCB3YXMgY3JlYXRlZCBieSB0aGUgcGFyc2VyLCB3ZSB3b3VsZCBmaXJzdCBjYWxsCisgICAgICAg
IEhUTUxJbnB1dEVsZW1lbnQ6OmNyZWF0ZSgpLCB0aGVuIGNhbGwgRWxlbWVudDo6cGFyc2VyU2V0
QXR0cmlidXRlcygpIG9uCisgICAgICAgIHRoZSBjb25zdHJ1Y3RlZCBpbnB1dC4gV2l0aCB0aGUg
cHJldmlvdXMgaW1wbGVtZW50YXRpb24sIHRoaXMgd2FzIGEgYml0CisgICAgICAgIGluZWZmaWNp
ZW50IGJlY2F1c2UgSFRNTElucHV0RWxlbWVudDo6Y3JlYXRlKCkgd291bGQgY29uc3RydWN0IGEK
KyAgICAgICAgVGV4dElucHV0VHlwZSBpbnB1dFR5cGUgKGFzIHRoaXMgaXMgdGhlIGRlZmF1bHQp
IGFzIHdlbGwgYXMgaXRzCisgICAgICAgIGNvcnJlc3BvbmRpbmcgc2hhZG93IHN1YnRyZWUuIFRo
ZW4sIHBhcnNlclNldEF0dHJpYnV0ZXMoKSB3b3VsZCBvZnRlbgorICAgICAgICBzZXQgdGhlIHx0
eXBlfCBhdHRyaWJ1dGUgYW5kIHdvdWxkIG5lZWQgdG8gZGVzdHJveSB0aGlzIGlucHV0IHR5cGUg
YXMKKyAgICAgICAgd2VsbCBhcyBpdHMgc3VidHJlZSBpZiB0aGUgbmV3IHx0eXBlfCBpcyBub3Qg
J3RleHQnLCB0byBjcmVhdGUgYSBuZXcKKyAgICAgICAgaW5wdXRUeXBlIC8gc2hhZG93IHN1YnRy
ZWUgb2YgdGhlIHJpZ2h0IHR5cGUuIFRoZSBwcm9maWxlciBzaG93ZWQgdGhhdAorICAgICAgICB0
aGlzIHdhcyBmYWlybHkgZXhwZW5zaXZlLgorCisgICAgICAgIFRvIGltcHJvdmUgdGhpcywgdGhp
cyBwYXRjaCBkZWxheXMgdGhlIGlucHV0VHlwZSAvIHNoYWRvdyBzdWJ0cmVlCisgICAgICAgIGNy
ZWF0aW9uIHdoZW4gdGhlIEhUTUxJbnB1dEVsZW1lbnQgaXMgY29uc3RydWN0ZWQgYnkgdGhlIHBh
cnNlciwgdW50aWwKKyAgICAgICAgdGhlIGF0dHJpYnV0ZXMgYXJlIGFjdHVhbGx5IHNldCBieSB0
aGUgcGFyc2VyLiBUaGlzIHdheSwgd2UgZGlyZWN0bHkKKyAgICAgICAgY3JlYXRlIGFuIGlucHV0
VHlwZSAvIHNoYWRvdyBzdWJ0cmVlIG9mIHRoZSByaWdodCB0eXBlLgorCisgICAgICAgIEkgc2Vl
IGEgMS40JSBzcGVlZCB1cCBvbiBzcGVlZG9tZXRlciAoNzMuOTUgLT4gNzUuMCkuCisKKyAgICAg
ICAgVGVzdDogZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9ib3JkZXItYXR0cmlidXRlLWNyYXNo
Lmh0bWwKKworICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OnBhcnNlclNldEF0dHJpYnV0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
cGFyc2VyRGlkU2V0QXR0cmlidXRlcyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxJbnB1dEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElu
cHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5w
dXRFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
dXBkYXRlVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50OjpydW5Qb3N0
VHlwZVVwZGF0ZVRhc2tzKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQ6Omlu
aXRpYWxpemVJbnB1dFR5cGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTElucHV0RWxlbWVudDo6cGFy
c2VyRGlkU2V0QXR0cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MSW5wdXRFbGVtZW50
OjpmaW5pc2hQYXJzaW5nQ2hpbGRyZW4pOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVu
dC5oOgorCiAyMDE0LTExLTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgSGF2ZSBET01UaW1lciBkZWFsIHdpdGggbW9yZSBTY3JpcHRFeGVjdXRpb25Db250ZXh0
IHJlZmVyZW5jZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA1MzgxYmM4MTJjNmZlZTY5OTJj
YzUzYWJiMWZhNGMwMGMxNmJkYzU4Li5hMmQ3OTkzNzNlOGNlNzc5ZTc1ZGRjMDkwZTIyNmU5NjY4
ODRiYjE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0xMjMzLDE3ICsxMjMzLDIzIEBAIHZv
aWQgRWxlbWVudDo6cGFyc2VyU2V0QXR0cmlidXRlcyhjb25zdCBWZWN0b3I8QXR0cmlidXRlPiYg
YXR0cmlidXRlVmVjdG9yKQogICAgIEFTU0VSVCghcGFyZW50Tm9kZSgpKTsKICAgICBBU1NFUlQo
IW1fZWxlbWVudERhdGEpOwogCi0gICAgaWYgKGF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpCi0g
ICAgICAgIHJldHVybjsKKyAgICBpZiAoIWF0dHJpYnV0ZVZlY3Rvci5pc0VtcHR5KCkpIHsKKyAg
ICAgICAgaWYgKGRvY3VtZW50KCkuc2hhcmVkT2JqZWN0UG9vbCgpKQorICAgICAgICAgICAgbV9l
bGVtZW50RGF0YSA9IGRvY3VtZW50KCkuc2hhcmVkT2JqZWN0UG9vbCgpLT5jYWNoZWRTaGFyZWFi
bGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rvcik7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIG1fZWxlbWVudERhdGEgPSBTaGFyZWFibGVFbGVtZW50RGF0YTo6Y3Jl
YXRlV2l0aEF0dHJpYnV0ZXMoYXR0cmlidXRlVmVjdG9yKTsKIAotICAgIGlmIChkb2N1bWVudCgp
LnNoYXJlZE9iamVjdFBvb2woKSkKLSAgICAgICAgbV9lbGVtZW50RGF0YSA9IGRvY3VtZW50KCku
c2hhcmVkT2JqZWN0UG9vbCgpLT5jYWNoZWRTaGFyZWFibGVFbGVtZW50RGF0YVdpdGhBdHRyaWJ1
dGVzKGF0dHJpYnV0ZVZlY3Rvcik7Ci0gICAgZWxzZQotICAgICAgICBtX2VsZW1lbnREYXRhID0g
U2hhcmVhYmxlRWxlbWVudERhdGE6OmNyZWF0ZVdpdGhBdHRyaWJ1dGVzKGF0dHJpYnV0ZVZlY3Rv
cik7CisgICAgfQorCisgICAgcGFyc2VyRGlkU2V0QXR0cmlidXRlcygpOwogCiAgICAgLy8gVXNl
IGF0dHJpYnV0ZVZlY3RvciBpbnN0ZWFkIG9mIG1fZWxlbWVudERhdGEgYmVjYXVzZSBhdHRyaWJ1
dGVDaGFuZ2VkIG1pZ2h0IG1vZGlmeSBtX2VsZW1lbnREYXRhLgotICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBhdHRyaWJ1dGVWZWN0b3Iuc2l6ZSgpOyArK2kpCi0gICAgICAgIGF0dHJpYnV0
ZUNoYW5nZWQoYXR0cmlidXRlVmVjdG9yW2ldLm5hbWUoKSwgbnVsbEF0b20sIGF0dHJpYnV0ZVZl
Y3RvcltpXS52YWx1ZSgpLCBNb2RpZmllZERpcmVjdGx5KTsKKyAgICBmb3IgKGNvbnN0IGF1dG8m
IGF0dHJpYnV0ZSA6IGF0dHJpYnV0ZVZlY3RvcikKKyAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChh
dHRyaWJ1dGUubmFtZSgpLCBudWxsQXRvbSwgYXR0cmlidXRlLnZhbHVlKCksIE1vZGlmaWVkRGly
ZWN0bHkpOworfQorCit2b2lkIEVsZW1lbnQ6OnBhcnNlckRpZFNldEF0dHJpYnV0ZXMoKQorewog
fQogCiBib29sIEVsZW1lbnQ6Omhhc0F0dHJpYnV0ZXMoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
aW5kZXggYzgyY2U5NzQwYjdlYjNmMTI2YjVmY2ExMDBhZWM5MWVjMWVmNGJlYi4uN2FhMWJlYjdi
NWUzYTkwMDYwZjcxYzdkNjEyODQ0ZDE3NzJmZWMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCkBAIC01
NTUsNiArNTU1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVkRnJvbShD
b250YWluZXJOb2RlJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVB
bGxFdmVudExpc3RlbmVycygpIG92ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBwYXJz
ZXJEaWRTZXRBdHRyaWJ1dGVzKCk7CiAKICAgICB2b2lkIGNsZWFyVGFiSW5kZXhFeHBsaWNpdGx5
SWZOZWVkZWQoKTsgICAgCiAgICAgdm9pZCBzZXRUYWJJbmRleEV4cGxpY2l0bHkoc2hvcnQpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5jcHAKaW5kZXggMTYxNzdiYWY3YjRl
ZWEwODkzMWI5ZWExMDFhODdmMWRjOTZhNTliMy4uZDA1Mjg2MTNkOTQ0OWFhYmMzNmUwMjEwYjBm
MTQ2OGZjNzBiZGMzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuY3Bw
CkBAIC0xMjEsNyArMTIxLDkgQEAgSFRNTElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChj
b25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1bWVudCYgZG9jdW0KICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogICAgICwgbV9oYXNUb3VjaEV2ZW50SGFuZGxlcihmYWxzZSkKICNlbmRp
ZgotICAgICwgbV9pbnB1dFR5cGUoSW5wdXRUeXBlOjpjcmVhdGVUZXh0KCp0aGlzKSkKKyAgICAv
LyBtX2lucHV0VHlwZSBpcyBsYXppbHkgY3JlYXRlZCB3aGVuIGNvbnN0cnVjdGVkIGJ5IHRoZSBw
YXJzZXIgdG8gYXZvaWQgY29uc3RydWN0aW5nIHVubmVjZXNzYXJpbHkgYSB0ZXh0IGlucHV0VHlw
ZSBhbmQKKyAgICAvLyBpdHMgc2hhZG93IHN1YnRyZWUsIGp1c3QgdG8gZGVzdHJveSB0aGVtIHdo
ZW4gdGhlIHx0eXBlfCBhdHRyaWJ1dGUgZ2V0cyBzZXQgYnkgdGhlIHBhcnNlciB0byBzb21ldGhp
bmcgZWxzZSB0aGFuICd0ZXh0Jy4KKyAgICAsIG1faW5wdXRUeXBlKGNyZWF0ZWRCeVBhcnNlciA/
IG51bGxwdHIgOiBJbnB1dFR5cGU6OmNyZWF0ZVRleHQoKnRoaXMpKQogewogICAgIEFTU0VSVCho
YXNUYWdOYW1lKGlucHV0VGFnKSB8fCBoYXNUYWdOYW1lKGlzaW5kZXhUYWcpKTsKICAgICBzZXRI
YXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKTsKQEAgLTEyOSw4ICsxMzEsMTAgQEAgSFRN
TElucHV0RWxlbWVudDo6SFRNTElucHV0RWxlbWVudChjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdO
YW1lLCBEb2N1bWVudCYgZG9jdW0KIAogUGFzc1JlZlB0cjxIVE1MSW5wdXRFbGVtZW50PiBIVE1M
SW5wdXRFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1l
bnQmIGRvY3VtZW50LCBIVE1MRm9ybUVsZW1lbnQqIGZvcm0sIGJvb2wgY3JlYXRlZEJ5UGFyc2Vy
KQogeworICAgIGJvb2wgc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSA9IGNyZWF0ZWRCeVBh
cnNlcjsKICAgICBSZWZQdHI8SFRNTElucHV0RWxlbWVudD4gaW5wdXRFbGVtZW50ID0gYWRvcHRS
ZWYobmV3IEhUTUxJbnB1dEVsZW1lbnQodGFnTmFtZSwgZG9jdW1lbnQsIGZvcm0sIGNyZWF0ZWRC
eVBhcnNlcikpOwotICAgIGlucHV0RWxlbWVudC0+ZW5zdXJlVXNlckFnZW50U2hhZG93Um9vdCgp
OworICAgIGlmICghc2hvdWxkQ3JlYXRlU2hhZG93Um9vdExhemlseSkKKyAgICAgICAgaW5wdXRF
bGVtZW50LT5lbnN1cmVVc2VyQWdlbnRTaGFkb3dSb290KCk7CiAgICAgcmV0dXJuIGlucHV0RWxl
bWVudC5yZWxlYXNlKCk7CiB9CiAKQEAgLTQzMiw2ICs0MzYsNyBAQCB2b2lkIEhUTUxJbnB1dEVs
ZW1lbnQ6OnNldFR5cGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogCiB2b2lkIEhUTUxJbnB1
dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogeworICAgIEFTU0VSVChtX2lucHV0VHlwZSk7CiAgICAg
YXV0byBuZXdUeXBlID0gSW5wdXRUeXBlOjpjcmVhdGUoKnRoaXMsIGZhc3RHZXRBdHRyaWJ1dGUo
dHlwZUF0dHIpKTsKICAgICBib29sIGhhZFR5cGUgPSBtX2hhc1R5cGU7CiAgICAgbV9oYXNUeXBl
ID0gdHJ1ZTsKQEAgLTQ1NywxNyArNDYyLDYgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojp1cGRh
dGVUeXBlKCkKICAgICBtX2lucHV0VHlwZS0+Y3JlYXRlU2hhZG93U3VidHJlZSgpOwogICAgIHVw
ZGF0ZUlubmVyVGV4dEVsZW1lbnRFZGl0YWJpbGl0eSgpOwogCi0jaWYgRU5BQkxFKFRPVUNIX0VW
RU5UUykKLSAgICBib29sIGhhc1RvdWNoRXZlbnRIYW5kbGVyID0gbV9pbnB1dFR5cGUtPmhhc1Rv
dWNoRXZlbnRIYW5kbGVyKCk7Ci0gICAgaWYgKGhhc1RvdWNoRXZlbnRIYW5kbGVyICE9IG1faGFz
VG91Y2hFdmVudEhhbmRsZXIpIHsKLSAgICAgICAgaWYgKGhhc1RvdWNoRXZlbnRIYW5kbGVyKQot
ICAgICAgICAgICAgZG9jdW1lbnQoKS5kaWRBZGRUb3VjaEV2ZW50SGFuZGxlcih0aGlzKTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgZG9jdW1lbnQoKS5kaWRSZW1vdmVUb3VjaEV2ZW50SGFu
ZGxlcih0aGlzKTsKLSAgICAgICAgbV9oYXNUb3VjaEV2ZW50SGFuZGxlciA9IGhhc1RvdWNoRXZl
bnRIYW5kbGVyOwotICAgIH0KLSNlbmRpZgotCiAgICAgc2V0TmVlZHNXaWxsVmFsaWRhdGVDaGVj
aygpOwogCiAgICAgYm9vbCB3aWxsU3RvcmVWYWx1ZSA9IG1faW5wdXRUeXBlLT5zdG9yZXNWYWx1
ZVNlcGFyYXRlRnJvbUF0dHJpYnV0ZSgpOwpAQCAtNTAzLDYgKzQ5NywyMyBAQCB2b2lkIEhUTUxJ
bnB1dEVsZW1lbnQ6OnVwZGF0ZVR5cGUoKQogICAgICAgICAgICAgYXR0cmlidXRlQ2hhbmdlZChh
bGlnbkF0dHIsIG51bGxBdG9tLCBhbGlnbi0+dmFsdWUoKSk7CiAgICAgfQogCisgICAgcnVuUG9z
dFR5cGVVcGRhdGVUYXNrcygpOworfQorCitpbmxpbmUgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpy
dW5Qb3N0VHlwZVVwZGF0ZVRhc2tzKCkKK3sKKyAgICBBU1NFUlQobV9pbnB1dFR5cGUpOworI2lm
IEVOQUJMRShUT1VDSF9FVkVOVFMpCisgICAgYm9vbCBoYXNUb3VjaEV2ZW50SGFuZGxlciA9IG1f
aW5wdXRUeXBlLT5oYXNUb3VjaEV2ZW50SGFuZGxlcigpOworICAgIGlmIChoYXNUb3VjaEV2ZW50
SGFuZGxlciAhPSBtX2hhc1RvdWNoRXZlbnRIYW5kbGVyKSB7CisgICAgICAgIGlmIChoYXNUb3Vj
aEV2ZW50SGFuZGxlcikKKyAgICAgICAgICAgIGRvY3VtZW50KCkuZGlkQWRkVG91Y2hFdmVudEhh
bmRsZXIodGhpcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRvY3VtZW50KCkuZGlkUmVt
b3ZlVG91Y2hFdmVudEhhbmRsZXIodGhpcyk7CisgICAgICAgIG1faGFzVG91Y2hFdmVudEhhbmRs
ZXIgPSBoYXNUb3VjaEV2ZW50SGFuZGxlcjsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChyZW5k
ZXJlcigpKQogICAgICAgICBzZXROZWVkc1N0eWxlUmVjYWxjKFJlY29uc3RydWN0UmVuZGVyVHJl
ZSk7CiAKQEAgLTU5Niw4ICs2MDcsMjkgQEAgdm9pZCBIVE1MSW5wdXRFbGVtZW50Ojpjb2xsZWN0
U3R5bGVGb3JQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYKICAgICAg
ICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmNvbGxlY3RTdHlsZUZvclByZXNlbnRhdGlv
bkF0dHJpYnV0ZShuYW1lLCB2YWx1ZSwgc3R5bGUpOwogfQogCitpbmxpbmUgdm9pZCBIVE1MSW5w
dXRFbGVtZW50Ojppbml0aWFsaXplSW5wdXRUeXBlKCkKK3sKKyAgICBBU1NFUlQobV9wYXJzaW5n
SW5Qcm9ncmVzcyk7CisgICAgQVNTRVJUKCFtX2lucHV0VHlwZSk7CisKKyAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUgPSBmYXN0R2V0QXR0cmlidXRlKHR5cGVBdHRyKTsKKyAgICBpZiAodHlw
ZS5pc051bGwoKSkgeworICAgICAgICBtX2lucHV0VHlwZSA9IElucHV0VHlwZTo6Y3JlYXRlVGV4
dCgqdGhpcyk7CisgICAgICAgIGVuc3VyZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIG1faGFzVHlwZSA9IHRydWU7CisgICAgbV9pbnB1dFR5cGUg
PSBJbnB1dFR5cGU6OmNyZWF0ZSgqdGhpcywgdHlwZSk7CisgICAgZW5zdXJlVXNlckFnZW50U2hh
ZG93Um9vdCgpOworICAgIHJlZ2lzdGVyRm9yU3VzcGVuc2lvbkNhbGxiYWNrSWZOZWVkZWQoKTsK
KyAgICBydW5Qb3N0VHlwZVVwZGF0ZVRhc2tzKCk7Cit9CisKIHZvaWQgSFRNTElucHV0RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbWlj
U3RyaW5nJiB2YWx1ZSkKIHsKKyAgICBBU1NFUlQobV9pbnB1dFR5cGUpOworCiAgICAgaWYgKG5h
bWUgPT0gbmFtZUF0dHIpIHsKICAgICAgICAgcmVtb3ZlRnJvbVJhZGlvQnV0dG9uR3JvdXAoKTsK
ICAgICAgICAgbV9uYW1lID0gdmFsdWU7CkBAIC03MDUsOSArNzM3LDE2IEBAIHZvaWQgSFRNTElu
cHV0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbWljU3RyCiAgICAgbV9pbnB1dFR5cGUtPmF0dHJpYnV0ZUNoYW5nZWQoKTsKIH0KIAor
dm9pZCBIVE1MSW5wdXRFbGVtZW50OjpwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkKK3sKKyAgICBB
U1NFUlQobV9wYXJzaW5nSW5Qcm9ncmVzcyk7CisgICAgaW5pdGlhbGl6ZUlucHV0VHlwZSgpOwor
fQorCiB2b2lkIEhUTUxJbnB1dEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigpCiB7CiAg
ICAgbV9wYXJzaW5nSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIEFTU0VSVChtX2lucHV0VHlwZSk7
CiAgICAgSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQ6OmZpbmlzaFBhcnNpbmdDaGlsZHJlbigp
OwogICAgIGlmICghbV9zdGF0ZVJlc3RvcmVkKSB7CiAgICAgICAgIGJvb2wgY2hlY2tlZCA9IGZh
c3RIYXNBdHRyaWJ1dGUoY2hlY2tlZEF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MSW5wdXRFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVs
ZW1lbnQuaAppbmRleCBmMDQ1NzM2YWQwYmFkZTRlMGQ5MDkzNDExMjRhNmE5MDZlNGI5MGJkLi4w
MjgyNDc5ZmQwNmUwZDI1NmJhZGQ2ZjBhOGFhZTlmNTg5ODJiN2ZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxJbnB1dEVsZW1lbnQuaApAQCAtMzU5LDYgKzM1OSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBjb25zdCBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgY29sbGVjdFN0eWxlRm9y
UHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNT
dHJpbmcmLCBNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzJikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmly
dHVhbCB2b2lkIGZpbmlzaFBhcnNpbmdDaGlsZHJlbigpIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCBwYXJzZXJEaWRTZXRBdHRyaWJ1dGVzKCkgb3ZlcnJpZGUgZmluYWw7CiAKICAg
ICB2aXJ0dWFsIHZvaWQgY29weU5vbkF0dHJpYnV0ZVByb3BlcnRpZXNGcm9tRWxlbWVudChjb25z
dCBFbGVtZW50Jikgb3ZlcnJpZGUgZmluYWw7CiAKQEAgLTM5OCw3ICszOTksOSBAQCBwcml2YXRl
OgogICAgIHZpcnR1YWwgYm9vbCByZWNhbGNXaWxsVmFsaWRhdGUoKSBjb25zdCBvdmVycmlkZSBm
aW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWlyZWRBdHRyaWJ1dGVDaGFuZ2VkKCkgb3ZlcnJp
ZGUgZmluYWw7CiAKKyAgICB2b2lkIGluaXRpYWxpemVJbnB1dFR5cGUoKTsKICAgICB2b2lkIHVw
ZGF0ZVR5cGUoKTsKKyAgICB2b2lkIHJ1blBvc3RUeXBlVXBkYXRlVGFza3MoKTsKICAgICAKICAg
ICB2aXJ0dWFsIHZvaWQgc3VidHJlZUhhc0NoYW5nZWQoKSBvdmVycmlkZSBmaW5hbDsKIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDMzNjkyNzNjZjgyZDVhYjE1ODUzN2JhOGQxNzUyOTM3NDM2ODMwMzYuLjI2NmJlYTIxMjdh
YmI4ZThhZWUwYmU0Y2Q2M2Q0MjA0ZDgzN2I5ZTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAx
NC0xMS0xMSAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgorCisgICAgICAgIExhemls
eSBjcmVhdGUgSFRNTElucHV0RWxlbWVudCdzIGlucHV0VHlwZSBhbmQgc2hhZG93IHN1YnRyZWUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzODUyNAor
CisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAgICAgICBBZGQgYSB0ZXN0
IGNhc2UgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGNyYXNoIHdoZW4gcGFyc2luZyBhbiA8aW5wdXQ+
CisgICAgICAgIEVsZW1lbnQgdGhhdCBoYXMgYSB8Ym9yZGVyfCBhdHRyaWJ1dGUgYXMgZmlyc3Qg
YXR0cmlidXRlLiBUaGlzIGlzIHdoYXQKKyAgICAgICAgd2FzIGhhcHBlbmluZyB3aXRoIHRoZSBm
aXJzdCB2ZXJzaW9uIG9mIHRoaXMgcGF0Y2ggdGhhdCBsYW5kZWQgaW4KKyAgICAgICAgcjE3NTg1
Mi4gV2hlbiBhdHRyaWJ1dGVDaGFuZ2VkKCkgd2FzIGNhbGxlZCBmb3IgdGhlIHxib3JkZXJ8IGF0
dHJpYnV0ZQorICAgICAgICBIVE1MSW5wdXRFbGVtZW50Ojppc1ByZXNlbnRhdGlvbkF0dHJpYnV0
ZSgpIHdvdWxkIGdldCBjYWxsZWQgYmVmb3JlCisgICAgICAgIG1faW5wdXRUeXBlIGlzIGluaXRp
YWxpemVkLCBhbmQgIm5hbWUgPT0gYm9yZGVyQXR0ciAmJiBpc0ltYWdlQnV0dG9uKCkiCisgICAg
ICAgIHdvdWxkIGNyYXNoIGJlY2F1c2UgaXNJbWFnZUJ1dHRvbigpIGRlcmVmZXJlbmNlcyBtX2lu
cHV0VHlwZS4KKworICAgICAgICAqIGZhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVyLWF0
dHJpYnV0ZS1jcmFzaC1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL0hU
TUxJbnB1dEVsZW1lbnQvYm9yZGVyLWF0dHJpYnV0ZS1jcmFzaC5odG1sOiBBZGRlZC4KKwogMjAx
NC0xMS0xMiAgRGVhbiBKYWNrc29uICA8ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgU3VwcG9y
dCB1bnByZWZpeGVkIGFuaW1hdGlvbiBwcm9wZXJ0eSBuYW1lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9ib3JkZXItYXR0cmlidXRlLWNyYXNoLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVy
LWF0dHJpYnV0ZS1jcmFzaC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI1NDEzY2ExYjBjOTFm
ZTE1YzNkMWY0MjlkMzk4OWM1NGFhZjRkNwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvZG9tL0hUTUxJbnB1dEVsZW1lbnQvYm9yZGVyLWF0dHJpYnV0ZS1jcmFzaC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGVzdHMgdGhhdCB3ZSBkb24ndCBjcmFzaCB3aGVuIHBh
cnNpbmcgYW4gaW5wdXQgZWxlbWVudCB3aXRoIGEgYm9yZGVyIGF0dHJpYnV0ZSBhbmQgaW1hZ2Ug
dHlwZS4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNz
YWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgaW5wdXQuZ2V0QXR0
cmlidXRlKCdib3JkZXInKSBpcyAiMCIKK1BBU1MgaW5wdXQuZ2V0QXR0cmlidXRlKCd0eXBlJykg
aXMgImltYWdlIgorUEFTUyBpbnB1dC5nZXRBdHRyaWJ1dGUoJ3NyYycpIGlzICJzdWJtaXQuZ2lm
IgorUEFTUyBpbnB1dC5nZXRBdHRyaWJ1dGUoJ2FsdCcpIGlzICJTdWJtaXQiCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vSFRNTElucHV0RWxlbWVudC9ib3JkZXItYXR0cmlidXRlLWNyYXNo
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9IVE1MSW5wdXRFbGVtZW50L2JvcmRlci1hdHRy
aWJ1dGUtY3Jhc2guaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYzQ5ODM5NzJmMzhkYzUwYTUyMDVkYjMyZGFi
MjM4NzcwYTVkODkyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vSFRN
TElucHV0RWxlbWVudC9ib3JkZXItYXR0cmlidXRlLWNyYXNoLmh0bWwKQEAgLTAsMCArMSwxOSBA
QAorPCFET0NUWVBFIGh0bWw+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPGRpdiBpZD0idGVzdERpdiI+PC9kaXY+Cis8
c2NyaXB0PgorZGVzY3JpcHRpb24oIlRlc3RzIHRoYXQgd2UgZG9uJ3QgY3Jhc2ggd2hlbiBwYXJz
aW5nIGFuIGlucHV0IGVsZW1lbnQgd2l0aCBhIGJvcmRlciBhdHRyaWJ1dGUgYW5kIGltYWdlIHR5
cGUuIik7CisKK3ZhciB0ZXN0RGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3REaXYi
KTsKK3Rlc3REaXYuaW5uZXJIVE1MID0gIjxpbnB1dCBib3JkZXI9JzAnIHR5cGU9J2ltYWdlJyBz
cmM9J3N1Ym1pdC5naWYnIGFsdD0nU3VibWl0Jz4iOworCit2YXIgaW5wdXQgPSB0ZXN0RGl2LmZp
cnN0Q2hpbGQ7CitzaG91bGRCZUVxdWFsVG9TdHJpbmcoImlucHV0LmdldEF0dHJpYnV0ZSgnYm9y
ZGVyJykiLCAiMCIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRyaWJ1dGUo
J3R5cGUnKSIsICJpbWFnZSIpOworc2hvdWxkQmVFcXVhbFRvU3RyaW5nKCJpbnB1dC5nZXRBdHRy
aWJ1dGUoJ3NyYycpIiwgInN1Ym1pdC5naWYiKTsKK3Nob3VsZEJlRXF1YWxUb1N0cmluZygiaW5w
dXQuZ2V0QXR0cmlidXRlKCdhbHQnKSIsICJTdWJtaXQiKTsKKworPC9zY3JpcHQ+Cis8c2NyaXB0
IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2Jv
ZHk+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>