<?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>79954</bug_id>
          
          <creation_ts>2012-02-29 15:57:58 -0800</creation_ts>
          <short_desc>IndexedDB: Check WebCommonWorkerClient::allowIndexedDB before proceeding from a shared worker</short_desc>
          <delta_ts>2012-03-06 12:17:06 -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>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Grogan">dgrogan</reporter>
          <assigned_to name="David Grogan">dgrogan</assigned_to>
          <cc>abarth</cc>
    
    <cc>fishd</cc>
    
    <cc>jsbell</cc>
    
    <cc>michaeln</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>568039</commentid>
    <comment_count>0</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 15:57:58 -0800</bug_when>
    <thetext>IndexedDB: Check WebCommonWorkerClient::allowIndexedDB before proceeding from a shared worker</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568043</commentid>
    <comment_count>1</comment_count>
      <attachid>129540</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 16:00:24 -0800</bug_when>
    <thetext>Created attachment 129540
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568085</commentid>
    <comment_count>2</comment_count>
      <attachid>129551</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 16:30:30 -0800</bug_when>
    <thetext>Created attachment 129551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568096</commentid>
    <comment_count>3</comment_count>
      <attachid>129552</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 16:39:13 -0800</bug_when>
    <thetext>Created attachment 129552
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568101</commentid>
    <comment_count>4</comment_count>
      <attachid>129555</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 16:52:48 -0800</bug_when>
    <thetext>Created attachment 129555
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568110</commentid>
    <comment_count>5</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 16:59:25 -0800</bug_when>
    <thetext>This is the webkit side, there still needs to be an override of WebSharedWorkerClient::allowDatabase in WebSharedWorkerClientProxy::allowDatabase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568112</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-29 17:01:21 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568138</commentid>
    <comment_count>7</comment_count>
      <attachid>129555</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-02-29 17:31:16 -0800</bug_when>
    <thetext>Comment on attachment 129555
Patch

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

lgtm (once I recovered from those pre-existing names.... WebCommonWorkerClient? ugh...)

&gt; Source/WebKit/chromium/public/WebSharedWorkerClient.h:91
&gt; +    virtual bool allowIndexedDB(const WebString&amp; name)

This can be made pure virtual once the Chromium override is in place, correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568151</commentid>
    <comment_count>8</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 17:43:28 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; &gt; Source/WebKit/chromium/public/WebSharedWorkerClient.h:91
&gt; &gt; +    virtual bool allowIndexedDB(const WebString&amp; name)
&gt; 
&gt; This can be made pure virtual once the Chromium override is in place, correct?

Correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568161</commentid>
    <comment_count>9</comment_count>
      <attachid>129567</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 17:58:22 -0800</bug_when>
    <thetext>Created attachment 129567
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568168</commentid>
    <comment_count>10</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 18:04:06 -0800</bug_when>
    <thetext>Michael, could you take a look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568170</commentid>
    <comment_count>11</comment_count>
      <attachid>129572</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 18:14:05 -0800</bug_when>
    <thetext>Created attachment 129572
Patch

Move layout test stuff to separate patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568171</commentid>
    <comment_count>12</comment_count>
      <attachid>129573</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-02-29 18:16:29 -0800</bug_when>
    <thetext>Created attachment 129573
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>568843</commentid>
    <comment_count>13</comment_count>
      <attachid>129573</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-03-01 13:15:14 -0800</bug_when>
    <thetext>Comment on attachment 129573
Patch

looks reasonable to me

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

&gt; Source/WebKit/chromium/public/WebCommonWorkerClient.h:58
&gt; +    virtual bool allowIndexedDB(const WebString&amp; name) = 0;

Please add the comment that clarifies which thread the new method is called on (similar to the others above).

&gt; Source/WebKit/chromium/public/WebSharedWorkerClient.h:91
&gt; +    virtual bool allowIndexedDB(const WebString&amp; name)

I think if the chrome-side is committed first, you don&apos;t need to provide any overriden stubs here. Looks like pure virtual allow methods declared in the base class should be enough. I think they&apos;re only replicated on this interface (sometimes with a stub) to appease the two-sided-patch-landing gods.

&gt; Source/WebKit/chromium/src/IDBFactoryBackendProxy.cpp:-124
&gt; -        // webFrame is not deleted as long as the process is alive, relying on

yikes... good to get rid of this webFrame code, this comment is flat out incorrect given in-process dedicated workers</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569070</commentid>
    <comment_count>14</comment_count>
      <attachid>129573</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-01 16:54:20 -0800</bug_when>
    <thetext>Comment on attachment 129573
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebCommonWorkerClient.h:58
&gt;&gt; +    virtual bool allowIndexedDB(const WebString&amp; name) = 0;
&gt; 
&gt; Please add the comment that clarifies which thread the new method is called on (similar to the others above).

Done.

&gt;&gt; Source/WebKit/chromium/public/WebSharedWorkerClient.h:91
&gt;&gt; +    virtual bool allowIndexedDB(const WebString&amp; name)
&gt; 
&gt; I think if the chrome-side is committed first, you don&apos;t need to provide any overriden stubs here. Looks like pure virtual allow methods declared in the base class should be enough. I think they&apos;re only replicated on this interface (sometimes with a stub) to appease the two-sided-patch-landing gods.

Good point.  I hadn&apos;t considered landing chrome-side first.

&gt;&gt; Source/WebKit/chromium/src/IDBFactoryBackendProxy.cpp:-124
&gt;&gt; -        // webFrame is not deleted as long as the process is alive, relying on
&gt; 
&gt; yikes... good to get rid of this webFrame code, this comment is flat out incorrect given in-process dedicated workers

Agreed.  I wrote that comment but now I&apos;m confused as to how I ever thought that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569074</commentid>
    <comment_count>15</comment_count>
      <attachid>129776</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-01 16:56:38 -0800</bug_when>
    <thetext>Created attachment 129776
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569097</commentid>
    <comment_count>16</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-01 17:29:11 -0800</bug_when>
    <thetext>Tony, could you review this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569134</commentid>
    <comment_count>17</comment_count>
      <attachid>129776</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-01 18:15:30 -0800</bug_when>
    <thetext>Comment on attachment 129776
Patch

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

Seems fine, but please let fishd review the API change.

&gt; Source/WebKit/chromium/ChangeLog:8
&gt; +
&gt; +        * public/WebCommonWorkerClient.h:

Where are the tests?  If this is covered on the chromium side, please mention which test covers it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569981</commentid>
    <comment_count>18</comment_count>
      <attachid>129964</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-02 15:17:29 -0800</bug_when>
    <thetext>Created attachment 129964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>569984</commentid>
    <comment_count>19</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-02 15:21:20 -0800</bug_when>
    <thetext>(In reply to comment #17)
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129776&amp;action=review
&gt; 
&gt; Seems fine, but please let fishd review the API change.
&gt; 
&gt; &gt; Source/WebKit/chromium/ChangeLog:8
&gt; &gt; +
&gt; &gt; +        * public/WebCommonWorkerClient.h:
&gt; 
&gt; Where are the tests?  If this is covered on the chromium side, please mention which test covers it.

Sorry, I should have anticipated this.  Comment added in the ChangeLog file:

Tests: The &apos;allow&apos; case will be tested once the patch at http://webkit.org/b/80189 and https://chromiumcodereview.appspot.com/9585031/ both land. Bug for testing the &apos;deny&apos; case is http://crbug.com/113738.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570030</commentid>
    <comment_count>20</comment_count>
      <attachid>129964</attachid>
    <who name="Michael Nordman">michaeln</who>
    <bug_when>2012-03-02 16:26:41 -0800</bug_when>
    <thetext>Comment on attachment 129964
Patch

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

&gt; Source/WebKit/chromium/public/WebCommonWorkerClient.h:59
&gt; +    virtual bool allowIndexedDB(const WebString&amp; name) = 0;

About the webkit api.

I think we&apos;re moving away from pure virtuals in these interfaces in favor of empty stubs (so the two-sided patch landing dance has fewer steps), take a look at WebFrameClient.h for an example. With that in mind, i think it&apos;d be good to provide inline stubs of the existing 3 methods and the new method being added.

Also, there&apos;s no reason to re-declare these same four methods in the derived WebSharedWorkerClient class. It&apos;d be better to remove those re-declarations to eliminate the possibility of them getting out of sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570046</commentid>
    <comment_count>21</comment_count>
      <attachid>129981</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-02 17:00:44 -0800</bug_when>
    <thetext>Created attachment 129981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>570047</commentid>
    <comment_count>22</comment_count>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-02 17:02:38 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; (From update of attachment 129964 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=129964&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebCommonWorkerClient.h:59
&gt; &gt; +    virtual bool allowIndexedDB(const WebString&amp; name) = 0;
&gt; 
&gt; About the webkit api.
&gt; 
&gt; I think we&apos;re moving away from pure virtuals in these interfaces in favor of empty stubs (so the two-sided patch landing dance has fewer steps), take a look at WebFrameClient.h for an example. With that in mind, i think it&apos;d be good to provide inline stubs of the existing 3 methods and the new method being added.
&gt; 
&gt; Also, there&apos;s no reason to re-declare these same four methods in the derived WebSharedWorkerClient class. It&apos;d be better to remove those re-declarations to eliminate the possibility of them getting out of sync.

Done and done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571624</commentid>
    <comment_count>23</comment_count>
      <attachid>129981</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2012-03-06 01:22:20 -0800</bug_when>
    <thetext>Comment on attachment 129981
Patch

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

&gt; Source/WebKit/chromium/public/WebCommonWorkerClient.h:-50
&gt; -    virtual bool allowDatabase(WebFrame*, const WebString&amp; name, const WebString&amp; displayName, unsigned long estimatedSize) = 0;

webkit API changes LGTM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571942</commentid>
    <comment_count>24</comment_count>
      <attachid>129981</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-03-06 10:08:26 -0800</bug_when>
    <thetext>Comment on attachment 129981
Patch

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

&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:107
&gt; +    virtual bool allowIndexedDB(const WebString&amp; name);

Should we add OVERRIDE to these methods (separate patch)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>571984</commentid>
    <comment_count>25</comment_count>
      <attachid>129981</attachid>
    <who name="David Grogan">dgrogan</who>
    <bug_when>2012-03-06 10:57:25 -0800</bug_when>
    <thetext>Comment on attachment 129981
Patch

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

&gt;&gt; Source/WebKit/chromium/src/WebWorkerClientImpl.h:107
&gt;&gt; +    virtual bool allowIndexedDB(const WebString&amp; name);
&gt; 
&gt; Should we add OVERRIDE to these methods (separate patch)?

Looks like it.  Forthcoming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572054</commentid>
    <comment_count>26</comment_count>
      <attachid>129981</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 12:17:00 -0800</bug_when>
    <thetext>Comment on attachment 129981
Patch

Clearing flags on attachment: 129981

Committed r109948: &lt;http://trac.webkit.org/changeset/109948&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>572055</commentid>
    <comment_count>27</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-03-06 12:17:06 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129540</attachid>
            <date>2012-02-29 16:00:24 -0800</date>
            <delta_ts>2012-02-29 16:30:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229160023.patch</filename>
            <type>text/plain</type>
            <size>12615</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCmluZGV4IDJmZmI1NGQ1N2EzZjM3
YjBjYzJlZjdjOGZmNjhmYmFiOGU4YjQzMGMuLmY4NzNiM2FjZjQ4MjQwZGY0YmExZDMwYTk4ZDQ4
ZGVlM2EzZjcxYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkNvbW1vbldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYkNvbW1vbldvcmtlckNsaWVudC5oCkBAIC01NCw2ICs1NCw4IEBAIHB1YmxpYzoKIAogICAg
IC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmls
ZSBzeXN0ZW0uCiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06
OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopID0gMDsKKworICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJp
bmcmIG5hbWUpID0gMDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaAppbmRleCBhMDg1YTNlYTJkYjc5ODRmMjNi
Zjk3MDYyOWMxYTJmY2JkOTMzN2Q3Li45ODUwZWRhMmI1NmYyY2VhZjhlM2QyNTk1NmFiYWJkNmY4
OGJjMTRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFy
ZWRXb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
aGFyZWRXb3JrZXJDbGllbnQuaApAQCAtODgsNiArODgsMTEgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbmRleGVkREIoY29u
c3QgV2ViU3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQor
CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcg
YSBmaWxlIHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5
c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzKikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGExY2NlNDViMGI0ODQ5MDQ3MjVlNGVjYWE3
YmZjMTcxMGM4ZTI5YzAuLmU2ZTUwNmQ0NTJmZjFjN2YwYTAxZGI2YmEyZGIwOThmY2YzMDU0NDcg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5k
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNr
ZW5kUHJveHkuY3BwCkBAIC05MCwxNiArOTAsMTYgQEAgc3RhdGljIGNvbnN0IGNoYXIgYWxsb3dJ
bmRleGVkREJNb2RlW10gPSAiYWxsb3dJbmRleGVkREJNb2RlIjsKIAogY2xhc3MgQWxsb3dJbmRl
eGVkREJNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFsbG93
SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdlYldvcmtlckNsaWVu
dEltcGwqIHdlYldvcmtlckNsaWVudEltcGwsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3Ry
aW5nJiBuYW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVh
ZEJyaWRnZT4gY3JlYXRlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0cmlu
ZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKG5ldyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2Uod2ViV29ya2VyQ2xpZW50SW1w
bCwgbW9kZSwgbmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFsbG93SW5kZXhl
ZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKSk7CiAgICAgfQog
CiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW52b2tlZCBvbiB0aGUgd29ya2VyIGNvbnRleHQu
CiAgICAgdm9pZCBjYW5jZWwoKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bXV0ZXgpOwotICAgICAgICBtX3dlYldvcmtlckNsaWVudEltcGwgPSAwOworICAgICAgICBtX3dl
YldvcmtlckJhc2UgPSAwOwogICAgIH0KIAogICAgIGJvb2wgcmVzdWx0KCkKQEAgLTExMSwzMSAr
MTExLDI2IEBAIHB1YmxpYzoKICAgICB2b2lkIHNpZ25hbENvbXBsZXRlZChib29sIHJlc3VsdCwg
Y29uc3QgU3RyaW5nJiBtb2RlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2NrZXIgbG9ja2VyKG1f
bXV0ZXgpOwotICAgICAgICBpZiAobV93ZWJXb3JrZXJDbGllbnRJbXBsKQotICAgICAgICAgICAg
bV93ZWJXb3JrZXJDbGllbnRJbXBsLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3Jl
YXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwgbW9kZSk7CisgICAg
ICAgIGlmIChtX3dlYldvcmtlckJhc2UpCisgICAgICAgICAgICBtX3dlYldvcmtlckJhc2UtPnBv
c3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENvbXBs
ZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgQWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNs
aWVudEltcGwsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZShXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNl
LCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAgICAgOiBtX3Jl
c3VsdChmYWxzZSkKLSAgICAgICAgLCBtX3dlYldvcmtlckNsaWVudEltcGwod2ViV29ya2VyQ2xp
ZW50SW1wbCkKKyAgICAgICAgLCBtX3dlYldvcmtlckJhc2Uod2ViV29ya2VyQmFzZSkKICAgICB7
Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUlt
cGwqPih3ZWJXb3JrZXJDbGllbnRJbXBsLT52aWV3KCktPm1haW5GcmFtZSgpKTsKLSAgICAgICAg
Ly8gd2ViRnJhbWUgaXMgbm90IGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcHJvY2VzcyBpcyBhbGl2
ZSwgcmVseWluZyBvbgotICAgICAgICAvLyBpdCB0byBleGlzdCBvbiB0aGUgbWFpbiB0aHJlYWQg
c2hvdWxkIGJlIG9rLgorICAgICAgICBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCA9IHdlYldvcmtlckJhc2UtPmNvbW1vbkNsaWVudCgpOworICAgICAgICAvLyBTZWUgbm90ZSBh
Ym91dCB0aHJlYWQtc2FmZXR5IGJlbG93LgogICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRj
aFRhc2tUb01haW5UaHJlYWQoCi0gICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmFsbG93
SW5kZXhlZERCVGFzaywgdGhpcywgV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh3ZWJG
cmFtZSksIG5hbWUsIG1vZGUpKTsKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxs
b3dJbmRleGVkREJUYXNrLCB0aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdl
YkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50KSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBuYW1lLCBtb2RlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZv
aWQgYWxsb3dJbmRleGVkREJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRy
PEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlLCBQYXNzUmVmUHRyPFdlYkZy
YW1lSW1wbD4gcHJwV2ViRnJhbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBt
b2RlKQorICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERCVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRn
ZSwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIGNvbnN0IFN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPFdlYkZyYW1lSW1w
bD4gd2ViRnJhbWUgPSBwcnBXZWJGcmFtZTsKLSAgICAgICAgV2ViVmlld0ltcGwqIHdlYlZpZXcg
PSB3ZWJGcmFtZS0+dmlld0ltcGwoKTsKLSAgICAgICAgaWYgKCF3ZWJWaWV3KSB7Ci0gICAgICAg
ICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChmYWxzZSwgbW9kZSk7Ci0gICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgYm9vbCBhbGxvd2VkID0gIXdlYlZpZXctPnBlcm1p
c3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93SW5kZXhl
ZERCKHdlYkZyYW1lLmdldCgpLCBuYW1lLCBXZWJTZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAg
Ym9vbCBhbGxvd2VkID0gY29tbW9uQ2xpZW50LT5hbGxvd0luZGV4ZWREQihuYW1lKTsKICAgICAg
ICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoYWxsb3dlZCwgbW9kZSk7CiAgICAgfQogCkBAIC0x
NDYsMjkgKzE0MSwzMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX3Jlc3VsdDsKICAgICBNdXRl
eCBtX211dGV4OwotICAgIC8vIFdlYldvcmtlckNsaWVudEltcGwgaXMgbmV2ZXIgZGVsZXRlZCBh
cyBsb25nIGFzIHRoZSByZW5kZXJlciBwcm9jZXNzCi0gICAgLy8gaXMgYWxpdmUuIFdlIHVzZSBp
dCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbm90aWZ5IHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQKLSAg
ICAvLyB0aGUgcGVybWlzc2lvbiByZXN1bHQgaGFzIGJlZW4gc2V0LiBUaGUgdW5kZXJseWluZyBt
ZXNzYWdlIHByb3h5IG9iamVjdAotICAgIC8vIGlzIHZhbGlkIGFzIGxvbmcgYXMgdGhlIHdvcmtl
ciBydW4gbG9vcCBoYXNuJ3QgcmV0dXJuZWQKLSAgICAvLyBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
LCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHVzZSB0aGUKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJ
bXBsLgotICAgIFdlYldvcmtlckNsaWVudEltcGwqIG1fd2ViV29ya2VyQ2xpZW50SW1wbDsKKyAg
ICAvLyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UgdXNlcyB0d28gbm9uLXRocmVhZHNh
ZmUgY2xhc3NlcyBhY3Jvc3MKKyAgICAvLyB0aHJlYWRzOiBXZWJXb3JrZXJCYXNlIGFuZCBXZWJD
b21tb25Xb3JrZXJDbGllbnQuCisgICAgLy8gSW4gdGhlIGRlZGljYXRlZCB3b3JrZXIgY2FzZSwg
dGhlc2UgYXJlIGJvdGggdGhlIHNhbWUgb2JqZWN0IG9mIHR5cGUKKyAgICAvLyBXZWJXb3JrZXJD
bGllbnRJbXBsLCB3aGljaCBpc24ndCBkZWxldGVkIGZvciB0aGUgbGlmZSBvZiB0aGUgcmVuZGVy
ZXIKKyAgICAvLyBwcm9jZXNzIHNvIHdlIGRvbid0IGhhdmUgdG8gd29ycnkgYWJvdXQgdXNlLWFm
dGVyLWZyZWVzLgorICAgIC8vIEluIHRoZSBzaGFyZWQgd29ya2VyIGNhc2UsIHRoZXNlIGFyZSBv
ZiB0eXBlIFdlYlNoYXJlZFdvcmtlckltcGwgYW5kCisgICAgLy8gY2hyb21pdW0ncyBXZWJTaGFy
ZWRXb3JrZXJDbGllbnRQcm94eSwgcmVzcGVjdGl2ZWx5LiAgVGhlc2UgYXJlIGJvdGgKKyAgICAv
LyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNwb25zZSB0byBhIHJlcXVlc3Qgb24g
dGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkgYWZ0ZXIgdGhlIHdvcmtlciBydW4g
bG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiAgU28gZXZlbiBpbgorICAgIC8vIHRoZSBtb3N0
IGludGVybGVhdmVkIGNhc2UsIHdlIGhhdmU6CisgICAgLy8gVyBBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2Ugc2NoZWR1bGVzIGFsbG93SW5kZXhlZERCVGFzaworICAgIC8vIE0gd29ya2Vy
UnVuTG9vcCBtYXJrZWQgYXMga2lsbGVkCisgICAgLy8gVyBydW5Mb29wIHN0b3BzIGFuZCBzY2hl
ZHVsZXMgb2JqZWN0IGRlbGV0aW9uIG9uIG1haW4gdGhyZWFkCisgICAgLy8gTSBhbGxvd0luZGV4
ZWREQlRhc2sgY2FsbHMgY29tbW9uQ2xpZW50LT5hbGxvd0luZGV4ZWREQigpCisgICAgLy8gTSBX
ZWJXb3JrZXJCYXNlIGFuZCBXZWJDb21tb25Xb3JrZXJDbGllbnQgYXJlIGRlbGV0ZWQKKyAgICBX
ZWJXb3JrZXJCYXNlKiBtX3dlYldvcmtlckJhc2U7CiB9OwogCiBib29sIElEQkZhY3RvcnlCYWNr
ZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVhZChXb3JrZXJDb250ZXh0KiB3b3JrZXJD
b250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJikKIHsK
LSAgICAvLyBGSVhNRTogQnlwYXNzIGNoZWNraW5nIGZvciBwZXJtaXNzaW9uIHNvIGFzIG5vdCB0
byBibG9jayBzaGFyZWQgd29ya2VyCi0gICAgLy8gdGVzdGluZyB1bnRpbCBhIHBlcm1pc3Npb25z
IGNoZWNrIGlzIGltcGxlbWVudGVkLiBUaGlzIGhhcyB0byBiZSBmaXhlZAotICAgIC8vIGJlZm9y
ZSBtMTkgZ29lcyB0byBiZXRhLiBodHRwOi8vY3JidWcuY29tLzExMjg1NQotICAgIGlmICh3b3Jr
ZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7
CiAKLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB3ZWJXb3JrZXJDbGllbnRJbXBsID0gc3RhdGlj
X2Nhc3Q8V2ViV29ya2VyQ2xpZW50SW1wbCo+KCZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29y
a2VyTG9hZGVyUHJveHkoKSk7CisgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSA9IHN0
YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPigmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtl
ckxvYWRlclByb3h5KCkpOwogICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJDb250
ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogCiAgICAgU3RyaW5nIG1vZGUgPSBhbGxvd0luZGV4
ZWREQk1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5jcmVhdGVV
bmlxdWVJZCgpKSk7Ci0gICAgUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4g
YnJpZGdlID0gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpjcmVhdGUod2ViV29ya2Vy
Q2xpZW50SW1wbCwgbW9kZSwgbmFtZSk7CisgICAgUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRo
cmVhZEJyaWRnZT4gYnJpZGdlID0gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpjcmVh
dGUod2ViV29ya2VyQmFzZSwgbW9kZSwgbmFtZSk7CiAKICAgICAvLyBFaXRoZXIgdGhlIGJyaWRn
ZSByZXR1cm5zLCBvciB0aGUgcXVldWUgZ2V0cyB0ZXJtaW5hdGVkLgogICAgIGlmIChydW5Mb29w
LnJ1bkluTW9kZSh3b3JrZXJDb250ZXh0LCBtb2RlKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuY3BwCmluZGV4IDFkYjJkMWRkOTczYjY4OThkMDJmMjgzZTk4NjE3NWFiM2YzODZhOTEuLmE2
OWYwMWE1ZmE1ZjRiZDcxYzg2NTFlZmU2NDk1MzhlYTY0MjAyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCkBAIC0yMTQsNiAr
MjE0LDE2IEBAIGJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dEYXRhYmFzZShXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1p
c3Npb25DbGllbnQoKS0+YWxsb3dEYXRhYmFzZShtX3dlYkZyYW1lLCBuYW1lLCBkaXNwbGF5TmFt
ZSwgZXN0aW1hdGVkU2l6ZSk7CiB9CisKK2Jvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJ
bmRleGVkREIoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAgIGlmIChtX3Byb3h5LT5hc2tl
ZFRvVGVybWluYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBXZWJLaXQ6OldlYlZp
ZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKKyAgICBpZiAoIXdlYlZp
ZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Np
b25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93SW5kZXhlZERC
KG1fd2ViRnJhbWUsIG5hbWUsIFdlYlNlY3VyaXR5T3JpZ2luKCkpOworfQogIAogV2ViVmlldyog
V2ViV29ya2VyQ2xpZW50SW1wbDo6dmlldygpIGNvbnN0IAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCmluZGV4IDNkNWRhYjBkZTJmNWMz
MWFjNmNkN2YwMmI3MjhlODllZGQyM2Q2ZTcuLjY3MzIwOGZiNjAzNTU5N2E4NTcxNzQ0MWY1OGI0
MDIxNmQwM2M3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3Jr
ZXJDbGllbnRJbXBsLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBi
b29sIGFsbG93RmlsZVN5c3RlbSgpOwogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShX
ZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgYWxsb3dJbmRleGVkREIoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKIAogICAg
IC8vIFdlYkNvbW1lbnRXb3JrZXJCYXNlIG1ldGhvZHM6CiAgICAgdmlydHVhbCBXZWJDb21tb25X
b3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIHRoaXM7IH0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKaW5kZXggNWJjYjM0ZjVlZmY2N2M0
MzA5MmNmMTMzMjhhMDQ2NTExNjRiODRkYi4uN2EzZjRkZmQ2ZGNkYzUwNzNhODU0ZjgzYmE3MTA4
NDg3M2FhN2QxMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
cmUuanMKQEAgLTQ2NywxMSArNDY3LDE0IEBAIGZ1bmN0aW9uIGZpbmlzaEpTVGVzdCgpCiAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKIH0KIAotZnVuY3Rpb24gc3Rh
cnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKK2Z1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRV
UkwsIHNoYXJlZCkKIHsKLSAgICBzZWxmLmpzVGVzdElzQXN5bmMgPSB0cnVlOwogICAgIGRlYnVn
KCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsKLSAgICB2YXIgd29ya2VyID0g
bmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsKKyAgICB2YXIgd29ya2VyID0gc2hhcmVkID8gbmV3
IFNoYXJlZFdvcmtlcih0ZXN0U2NyaXB0VVJMKSA6IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7
CisgICAgaWYgKHNoYXJlZCkgeworICAgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0gZnVuY3Rp
b24oZXZ0KSB7IHdvcmtlci5vbm1lc3NhZ2UoZXZ0KTsgfTsKKyAgICAgIHdvcmtlci5wb3N0TWVz
c2FnZSA9IGZ1bmN0aW9uKG1zZywgcG9ydCkgeyB3b3JrZXIucG9ydC5wb3N0TWVzc2FnZShtc2cs
IHBvcnQpOyB9OworICAgIH0KICAgICB3b3JrZXIub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQp
CiAgICAgewogICAgICAgICB2YXIgd29ya2VyUHJlZml4ID0gIltXb3JrZXJdICI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYmFzaWNzLmpzIGIv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Jhc2ljcy5qcwppbmRleCA4
ODg3ODMyY2JmY2YxOWMyYTdmNDU1MTEyYTdkMWIyZmMzM2NiMjg2Li5iNmIyYTkxOWI4NWQ1MmYw
MjgyZDM3MTM4YjJmYTE1ZTMwZmZmMTM3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvYmFzaWNzLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2Uv
aW5kZXhlZGRiL3Jlc291cmNlcy9iYXNpY3MuanMKQEAgLTEsNCArMSw0IEBACi1pZiAodGhpcy5p
bXBvcnRTY3JpcHRzKSB7CitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CiAgICAgaW1wb3J0U2Ny
aXB0cygnLi4vLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMnKTsKICAgICBp
bXBvcnRTY3JpcHRzKCdzaGFyZWQuanMnKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGY0N2NlMTkwOTFhZDg2YmQ3NGZk
ZmYxODg4ZWMxMzI1ZDU1OTM1MjEuLjUwZTVmNTQ4NzIxYjI4MTU5MzE5OTc4YTRiNjhhZGNlNDM0
M2FkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNl
cy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2Vz
L3NoYXJlZC5qcwpAQCAtMSw5ICsxLDM1IEBACiB2YXIganNUZXN0SXNBc3luYyA9IHRydWU7Citp
ZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgICAgaWYgKCFzZWxmLnBvc3RNZXNzYWdlKSB7Cisg
ICAgICAvLyBTaGFyZWQgd29ya2VyLgorICAgICAgc2VsZi5vbmNvbm5lY3QgPSBmdW5jdGlvbihl
dmVudCkgeworICAgICAgICBldmVudC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBmdW5jdGlvbihlKSB7
CisgICAgICAgICAgc2VsZi5vbm1lc3NhZ2UoZSk7CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5w
b3N0TWVzc2FnZSA9IGZ1bmN0aW9uKG1zZykgeworICAgICAgICAgIGV2ZW50LnBvcnRzWzBdLnBv
c3RNZXNzYWdlKG1zZyk7CisgICAgICAgIH07CisgICAgICAgIC8vIE5vdyB0aGF0IHNvbWVvbmUg
aGFzIGNvbm5lY3QgdG8gdXMsIG9mZmxvYWQgb3VyIHN0b3JlZCBtZXNzYWdlcy4KKyAgICAgICAg
aWYgKCFzZWxmLnBlbmRpbmdNZXNzYWdlcykKKyAgICAgICAgICByZXR1cm47CisgICAgICAgIHdo
aWxlIChzZWxmLnBlbmRpbmdNZXNzYWdlcy5sZW5ndGgpIHsKKyAgICAgICAgICBldmVudC5wb3J0
c1swXS5wb3N0TWVzc2FnZShzZWxmLnBlbmRpbmdNZXNzYWdlcy5zaGlmdCgpKTsKKyAgICAgICAg
fQorICAgICAgfQorICAgICAgLy8gU3RvcmUgbWVzc2FnZXMgZm9yIHNlbmRpbmcgdW50aWwgd2Ug
aGF2ZSBzb21ld2hlcmUgdG8gc2VuZCB0aGVtLgorICAgICAgc2VsZi5wb3N0TWVzc2FnZSA9IGZ1
bmN0aW9uKG1zZykgeworICAgICAgICBpZiAodHlwZW9mIHNlbGYucGVuZGluZ01lc3NhZ2VzID09
ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgc2VsZi5wZW5kaW5nTWVzc2FnZXMgPSBbXTsKKyAg
ICAgICAgfQorICAgICAgICBzZWxmLnBlbmRpbmdNZXNzYWdlcy5wdXNoKG1zZyk7CisgICAgICB9
CisgICAgfQorfQogCiBmdW5jdGlvbiBkb25lKCkKIHsKICAgICBpc1N1Y2Nlc3NmdWxseVBhcnNl
ZCgpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYgKHNlbGYu
bGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlm
eURvbmUoKQogfQogCkBAIC0xMyw3ICszOSw3IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRTdWNjZXNz
Q2FsbGJhY2soKQogICAgIGRvbmUoKTsKIH0KIAotZnVuY3Rpb24gdW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2soKQorZnVuY3Rpb24gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2soZXZlbnQpCiB7CiAgICAg
dGVzdEZhaWxlZCgiRXJyb3IgZnVuY3Rpb24gY2FsbGVkIHVuZXhwZWN0ZWRseTogKCIgKyBldmVu
dC50YXJnZXQuZXJyb3JDb2RlICsgIikgIiArIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3Nh
Z2UpOwogICAgIGRvbmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129551</attachid>
            <date>2012-02-29 16:30:30 -0800</date>
            <delta_ts>2012-02-29 16:39:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229163029.patch</filename>
            <type>text/plain</type>
            <size>16267</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGE2ZTk0ZGY4OTQyZTM5ZGY3ODVhZDczNzk5OGNjMzQxZjVkMzk2N2UuLmViMDJmM2I4YjY1ZDEx
YTg2ZGRjNzE3N2M0ZjZiNmVlMWNhNmQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIENocm9tZUNsaWVudDo6c2hvd0NvbnRleHRN
ZW51KCkgdG8gQ29udGV4dE1lbnVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdi
MGNjMmVmN2M4ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhk
ZWUzYTNmNzFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tbW9uV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxl
IHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSkgPSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2Jm
OTcwNjI5YzFhMmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4
YmMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJl
ZFdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNo
YXJlZFdvcmtlckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25z
dCBXZWJTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
ICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBh
IGZpbGUgc3lzdGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lz
dGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdi
ZmMxNzEwYzhlMjljMC4uMmZkZTAxZGJjOGJjY2UxMjhjOTgwYmU3MTJkYzYyMmMyZTVhN2FiNSAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tl
bmRQcm94eS5jcHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0lu
ZGV4ZWREQk1vZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4
ZWREQk1haW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50
SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFk
QnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5n
JiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBs
LCBtb2RlLCBuYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4K
ICAgICB2b2lkIGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2Vi
V29ya2VyQmFzZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsx
MTEsMjYgQEAgcHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBj
b25zdCBTdHJpbmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBt
X3dlYldvcmtlckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAg
ICAgaWYgKG1fd2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxl
dGUsIHRoaXMsIHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xp
ZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxs
b3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2Us
IGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVz
dWx0KGZhbHNlKQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGll
bnRJbXBsKQorICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsK
LSAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1w
bCo+KHdlYldvcmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAv
LyB3ZWJGcmFtZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZl
LCByZWx5aW5nIG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBz
aG91bGQgYmUgb2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50
ID0gd2ViV29ya2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFi
b3V0IHRocmVhZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNo
VGFza1RvTWFpblRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJ
bmRleGVkREJUYXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZy
YW1lKSwgbmFtZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxv
d0luZGV4ZWREQlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29t
bW9uQ2xpZW50KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93
SW5kZXhlZERCVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+
IHBycFdlYkZyYW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAg
ICBzdGF0aWMgdm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNv
bW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgbW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZy
YW1lID0gcHJwV2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJh
bWUtPnZpZXdJbXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNv
bW1vbkNsaWVudCkKICAgICAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGZhbHNlLCBt
b2RlKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBib29sIGFsbG93
ZWQgPSAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25D
bGllbnQoKS0+YWxsb3dJbmRleGVkREIod2ViRnJhbWUuZ2V0KCksIG5hbWUsIFdlYlNlY3VyaXR5
T3JpZ2luKCkpOworICAgICAgICBib29sIGFsbG93ZWQgPSBjb21tb25DbGllbnQtPmFsbG93SW5k
ZXhlZERCKG5hbWUpOwogICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChhbGxvd2VkLCBt
b2RlKTsKICAgICB9CiAKQEAgLTE0NiwyOSArMTQxLDMzIEBAIHByaXZhdGU6CiAKICAgICBib29s
IG1fcmVzdWx0OwogICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgLy8gV2ViV29ya2VyQ2xpZW50SW1w
bCBpcyBuZXZlciBkZWxldGVkIGFzIGxvbmcgYXMgdGhlIHJlbmRlcmVyIHByb2Nlc3MKLSAgICAv
LyBpcyBhbGl2ZS4gV2UgdXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZCB0byBub3RpZnkgdGhlIHdv
cmtlciB0aHJlYWQgdGhhdAotICAgIC8vIHRoZSBwZXJtaXNzaW9uIHJlc3VsdCBoYXMgYmVlbiBz
ZXQuIFRoZSB1bmRlcmx5aW5nIG1lc3NhZ2UgcHJveHkgb2JqZWN0Ci0gICAgLy8gaXMgdmFsaWQg
YXMgbG9uZyBhcyB0aGUgd29ya2VyIHJ1biBsb29wIGhhc24ndCByZXR1cm5lZAotICAgIC8vIE1l
c3NhZ2VRdWV1ZVRlcm1pbmF0ZWQsIGluIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgdXNlIHRoZQotICAg
IC8vIFdlYldvcmtlckNsaWVudEltcGwuCi0gICAgV2ViV29ya2VyQ2xpZW50SW1wbCogbV93ZWJX
b3JrZXJDbGllbnRJbXBsOworICAgIC8vIEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSB1
c2VzIHR3byBub24tdGhyZWFkc2FmZSBjbGFzc2VzIGFjcm9zcworICAgIC8vIHRocmVhZHM6IFdl
YldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudC4KKyAgICAvLyBJbiB0aGUgZGVk
aWNhdGVkIHdvcmtlciBjYXNlLCB0aGVzZSBhcmUgYm90aCB0aGUgc2FtZSBvYmplY3Qgb2YgdHlw
ZQorICAgIC8vIFdlYldvcmtlckNsaWVudEltcGwsIHdoaWNoIGlzbid0IGRlbGV0ZWQgZm9yIHRo
ZSBsaWZlIG9mIHRoZSByZW5kZXJlcgorICAgIC8vIHByb2Nlc3Mgc28gd2UgZG9uJ3QgaGF2ZSB0
byB3b3JyeSBhYm91dCB1c2UtYWZ0ZXItZnJlZXMuCisgICAgLy8gSW4gdGhlIHNoYXJlZCB3b3Jr
ZXIgY2FzZSwgdGhlc2UgYXJlIG9mIHR5cGUgV2ViU2hhcmVkV29ya2VySW1wbCBhbmQKKyAgICAv
LyBjaHJvbWl1bSdzIFdlYlNoYXJlZFdvcmtlckNsaWVudFByb3h5LCByZXNwZWN0aXZlbHkuIFRo
ZXNlIGFyZSBib3RoCisgICAgLy8gZGVsZXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gcmVzcG9u
c2UgdG8gYSByZXF1ZXN0IG9uIHRoZSB3b3JrZXIgdGhyZWFkLAorICAgIC8vIGJ1dCBvbmx5IGFm
dGVyIHRoZSB3b3JrZXIgcnVuIGxvb3Agc3RvcHMgcHJvY2Vzc2luZyB0YXNrcy4gU28gZXZlbiBp
bgorICAgIC8vIHRoZSBtb3N0IGludGVybGVhdmVkIGNhc2UsIHdlIGhhdmU6CisgICAgLy8gVyBB
bGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2Ugc2NoZWR1bGVzIGFsbG93SW5kZXhlZERCVGFz
aworICAgIC8vIE0gd29ya2VyUnVuTG9vcCBtYXJrZWQgYXMga2lsbGVkCisgICAgLy8gVyBydW5M
b29wIHN0b3BzIGFuZCBzY2hlZHVsZXMgb2JqZWN0IGRlbGV0aW9uIG9uIG1haW4gdGhyZWFkCisg
ICAgLy8gTSBhbGxvd0luZGV4ZWREQlRhc2sgY2FsbHMgY29tbW9uQ2xpZW50LT5hbGxvd0luZGV4
ZWREQigpCisgICAgLy8gTSBXZWJXb3JrZXJCYXNlIGFuZCBXZWJDb21tb25Xb3JrZXJDbGllbnQg
YXJlIGRlbGV0ZWQKKyAgICBXZWJXb3JrZXJCYXNlKiBtX3dlYldvcmtlckJhc2U7CiB9OwogCiBi
b29sIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVhZChXb3Jr
ZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlNl
Y3VyaXR5T3JpZ2luJikKIHsKLSAgICAvLyBGSVhNRTogQnlwYXNzIGNoZWNraW5nIGZvciBwZXJt
aXNzaW9uIHNvIGFzIG5vdCB0byBibG9jayBzaGFyZWQgd29ya2VyCi0gICAgLy8gdGVzdGluZyB1
bnRpbCBhIHBlcm1pc3Npb25zIGNoZWNrIGlzIGltcGxlbWVudGVkLiBUaGlzIGhhcyB0byBiZSBm
aXhlZAotICAgIC8vIGJlZm9yZSBtMTkgZ29lcyB0byBiZXRhLiBodHRwOi8vY3JidWcuY29tLzEx
Mjg1NQotICAgIGlmICh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtlckNvbnRleHQoKSkKLSAg
ICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiB3ZWJXb3JrZXJD
bGllbnRJbXBsID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQ2xpZW50SW1wbCo+KCZ3b3JrZXJDb250
ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CisgICAgV2ViV29ya2VyQmFzZSog
d2ViV29ya2VyQmFzZSA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPigmd29ya2VyQ29udGV4
dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkpOwogICAgIFdvcmtlclJ1bkxvb3AmIHJ1
bkxvb3AgPSB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgpOwogCiAgICAgU3RyaW5n
IG1vZGUgPSBhbGxvd0luZGV4ZWREQk1vZGU7CiAgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1i
ZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7Ci0gICAgUmVmUHRyPEFsbG93SW5kZXhlZERC
TWFpblRocmVhZEJyaWRnZT4gYnJpZGdlID0gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdl
OjpjcmVhdGUod2ViV29ya2VyQ2xpZW50SW1wbCwgbW9kZSwgbmFtZSk7CisgICAgUmVmUHRyPEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlID0gQWxsb3dJbmRleGVkREJNYWlu
VGhyZWFkQnJpZGdlOjpjcmVhdGUod2ViV29ya2VyQmFzZSwgbW9kZSwgbmFtZSk7CiAKICAgICAv
LyBFaXRoZXIgdGhlIGJyaWRnZSByZXR1cm5zLCBvciB0aGUgcXVldWUgZ2V0cyB0ZXJtaW5hdGVk
LgogICAgIGlmIChydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJDb250ZXh0LCBtb2RlKSA9PSBNZXNz
YWdlUXVldWVUZXJtaW5hdGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IDFkYjJkMWRkOTczYjY4OThkMDJmMjgzZTk4
NjE3NWFiM2YzODZhOTEuLmE2OWYwMWE1ZmE1ZjRiZDcxYzg2NTFlZmU2NDk1MzhlYTY0MjAyYTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuY3BwCkBAIC0yMTQsNiArMjE0LDE2IEBAIGJvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6YWxs
b3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
IHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dEYXRhYmFzZShtX3dlYkZyYW1l
LCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiB9CisKK2Jvb2wgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6YWxsb3dJbmRleGVkREIoY29uc3QgV2ViU3RyaW5nJiBuYW1lKQoreworICAg
IGlmIChtX3Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwo
KTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICByZXR1cm4g
IXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50
KCktPmFsbG93SW5kZXhlZERCKG1fd2ViRnJhbWUsIG5hbWUsIFdlYlNlY3VyaXR5T3JpZ2luKCkp
OworfQogIAogV2ViVmlldyogV2ViV29ya2VyQ2xpZW50SW1wbDo6dmlldygpIGNvbnN0IAogewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCmlu
ZGV4IDNkNWRhYjBkZTJmNWMzMWFjNmNkN2YwMmI3MjhlODllZGQyM2Q2ZTcuLjY3MzIwOGZiNjAz
NTU5N2E4NTcxNzQ0MWY1OGI0MDIxNmQwM2M3ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCBib29sIGFsbG93RmlsZVN5c3RlbSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9v
bCBjcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbmRleGVkREIoY29uc3QgV2ViU3Ry
aW5nJiBuYW1lKTsKIAogICAgIC8vIFdlYkNvbW1lbnRXb3JrZXJCYXNlIG1ldGhvZHM6CiAgICAg
dmlydHVhbCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIHRo
aXM7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA0Mjk1NmE1ZjhhNjFkMzRiMjBhNjNhNDhmMWQwNDkzOTQzMTc1ZGVjLi45
NWYyNGFmY2E3ODE5ZDMzZWY3MzI3Y2NmZTBmMWI3NGY2YzZkZGM4IDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MjIgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21pdW0ub3JnPgor
CisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50OjphbGxvd0lu
ZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzOgorICAgICAgICAoc3RhcnRXb3JrZXIud29ya2VyLnBvcnQub25tZXNz
YWdlKToKKyAgICAgICAgKHN0YXJ0V29ya2VyLndvcmtlci5wb3N0TWVzc2FnZSk6CisgICAgICAg
ICogc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2Jhc2ljcy5qczoKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzOgorICAgICAgICAoLnNlbGYub25jb25u
ZWN0LmV2ZW50LnBvcnRzLjAub25tZXNzYWdlKToKKyAgICAgICAgKC5zZWxmLm9uY29ubmVjdC5z
ZWxmLnBvc3RNZXNzYWdlKToKKyAgICAgICAgKC5zZWxmLm9uY29ubmVjdCk6CisgICAgICAgICgu
c2VsZi5wb3N0TWVzc2FnZSk6CisgICAgICAgIChkb25lKToKKyAgICAgICAgKHVuZXhwZWN0ZWRF
cnJvckNhbGxiYWNrKToKKwogMjAxMi0wMi0yNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3
ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF1bV0syXSBTa2lwIG9uZSBtb3JlIGNyYXNoaW5nIHRl
c3QuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCmluZGV4
IDViY2IzNGY1ZWZmNjdjNDMwOTJjZjEzMzI4YTA0NjUxMTY0Yjg0ZGIuLjk5NjMzYTllZTA0ZDU3
ODFkNThiNTdjNTlhMmQzNWVlMmUzMmUxM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVz
b3VyY2VzL2pzLXRlc3QtcHJlLmpzCkBAIC00NjcsMTEgKzQ2NywxNSBAQCBmdW5jdGlvbiBmaW5p
c2hKU1Rlc3QoKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9
CiAKLWZ1bmN0aW9uIHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCitmdW5jdGlvbiBzdGFydFdv
cmtlcih0ZXN0U2NyaXB0VVJMLCBzaGFyZWQpCiB7CiAgICAgc2VsZi5qc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKICAgICBkZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7Ci0g
ICAgdmFyIHdvcmtlciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7CisgICAgdmFyIHdvcmtl
ciA9IHNoYXJlZCA/IG5ldyBTaGFyZWRXb3JrZXIodGVzdFNjcmlwdFVSTCkgOiBuZXcgV29ya2Vy
KHRlc3RTY3JpcHRVUkwpOworICAgIGlmIChzaGFyZWQpIHsKKyAgICAgICAgd29ya2VyLnBvcnQu
b25tZXNzYWdlID0gZnVuY3Rpb24oZXZ0KSB7IHdvcmtlci5vbm1lc3NhZ2UoZXZ0KTsgfTsKKyAg
ICAgICAgd29ya2VyLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5w
b3J0LnBvc3RNZXNzYWdlKG1zZywgcG9ydCk7IH07CisgICAgfQogICAgIHdvcmtlci5vbm1lc3Nh
Z2UgPSBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3b3JrZXJQcmVmaXggPSAi
W1dvcmtlcl0gIjsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAppbmRleCA5MDljNzNlNzdiYWFhODg1OTEyOTJhYjUyYmUzNzIxZDVk
ZTk3YWFjLi43ZWFhNzNjZmRjNjIwZjQ1YjM1MGY2MGJhYzM4ZmJhOGFlNWU0NjA4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0
CkBAIC0xOTMsNiArMTkzLDcgQEAgV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQv
dGVzdHMvaHliaS93b3JrZXJzL3NoYXJlZC13b3JrZXItc2ltcGxlLmh0bWwKIFdPTlRGSVggU0tJ
UCA6IGh0dHAvdGVzdHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0
bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0
eS9jb250ZW50U2VjdXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2Vk
Lmh0bWwgPSBURVhUCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRT
ZWN1cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuaHRtbCA9IFRF
WFQKK1dPTlRGSVggU0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vy
cy5odG1sID0gUEFTUyBUSU1FT1VUIEZBSUwKIAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBw
b3J0IG1lc3NhZ2UgcG9ydHMKIEJVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy90ZXJtaW5h
dGlvbi13aXRoLXBvcnQtbWVzc2FnZXMuaHRtbCA9IENSQVNICmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbCBiL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjA3M2Y4Mjc2ZDRiY2FiNzhhMWEyNzEwNTMxNWY2OWIyZWJlYmI5NWUKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdv
cmtlcnMuaHRtbApAQCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9
Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5Pgor
PHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+c3RhcnRXb3JrZXIoJ3Jlc291cmNlcy9iYXNpY3MuanMnLCB0cnVlIC8qc2hhcmVkKi8pOzwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9z
dC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3Rv
cmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBmNDdjZTE5MDkxYWQ4NmJk
NzRmZGZmMTg4OGVjMTMyNWQ1NTkzNTIxLi41MGU1ZjU0ODcyMWIyODE1OTMxOTk3OGE0YjY4YWRj
ZTQzNDNhZDFiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNv
dXJjZXMvc2hhcmVkLmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291
cmNlcy9zaGFyZWQuanMKQEAgLTEsOSArMSwzNSBAQAogdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVl
OworaWYgKHNlbGYuaW1wb3J0U2NyaXB0cykgeworICAgIGlmICghc2VsZi5wb3N0TWVzc2FnZSkg
eworICAgICAgLy8gU2hhcmVkIHdvcmtlci4KKyAgICAgIHNlbGYub25jb25uZWN0ID0gZnVuY3Rp
b24oZXZlbnQpIHsKKyAgICAgICAgZXZlbnQucG9ydHNbMF0ub25tZXNzYWdlID0gZnVuY3Rpb24o
ZSkgeworICAgICAgICAgIHNlbGYub25tZXNzYWdlKGUpOworICAgICAgICB9CisgICAgICAgIHNl
bGYucG9zdE1lc3NhZ2UgPSBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICBldmVudC5wb3J0c1sw
XS5wb3N0TWVzc2FnZShtc2cpOworICAgICAgICB9OworICAgICAgICAvLyBOb3cgdGhhdCBzb21l
b25lIGhhcyBjb25uZWN0IHRvIHVzLCBvZmZsb2FkIG91ciBzdG9yZWQgbWVzc2FnZXMuCisgICAg
ICAgIGlmICghc2VsZi5wZW5kaW5nTWVzc2FnZXMpCisgICAgICAgICAgcmV0dXJuOworICAgICAg
ICB3aGlsZSAoc2VsZi5wZW5kaW5nTWVzc2FnZXMubGVuZ3RoKSB7CisgICAgICAgICAgZXZlbnQu
cG9ydHNbMF0ucG9zdE1lc3NhZ2Uoc2VsZi5wZW5kaW5nTWVzc2FnZXMuc2hpZnQoKSk7CisgICAg
ICAgIH0KKyAgICAgIH0KKyAgICAgIC8vIFN0b3JlIG1lc3NhZ2VzIGZvciBzZW5kaW5nIHVudGls
IHdlIGhhdmUgc29tZXdoZXJlIHRvIHNlbmQgdGhlbS4KKyAgICAgIHNlbGYucG9zdE1lc3NhZ2Ug
PSBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBzZWxmLnBlbmRpbmdNZXNzYWdl
cyA9PSAidW5kZWZpbmVkIikgeworICAgICAgICAgIHNlbGYucGVuZGluZ01lc3NhZ2VzID0gW107
CisgICAgICAgIH0KKyAgICAgICAgc2VsZi5wZW5kaW5nTWVzc2FnZXMucHVzaChtc2cpOworICAg
ICAgfQorICAgIH0KK30KIAogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgaXNTdWNjZXNzZnVsbHlQ
YXJzZWQoKTsKLSAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmIChz
ZWxmLmxheW91dFRlc3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCkKIH0KIApAQCAtMTMsNyArMzksNyBAQCBmdW5jdGlvbiB1bmV4cGVjdGVkU3Vj
Y2Vzc0NhbGxiYWNrKCkKICAgICBkb25lKCk7CiB9CiAKLWZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJv
ckNhbGxiYWNrKCkKK2Z1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrKGV2ZW50KQogewog
ICAgIHRlc3RGYWlsZWQoIkVycm9yIGZ1bmN0aW9uIGNhbGxlZCB1bmV4cGVjdGVkbHk6ICgiICsg
ZXZlbnQudGFyZ2V0LmVycm9yQ29kZSArICIpICIgKyBldmVudC50YXJnZXQud2Via2l0RXJyb3JN
ZXNzYWdlKTsKICAgICBkb25lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129552</attachid>
            <date>2012-02-29 16:39:13 -0800</date>
            <delta_ts>2012-02-29 16:52:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229163912.patch</filename>
            <type>text/plain</type>
            <size>16269</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4OTg4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGE2ZTk0ZGY4OTQyZTM5ZGY3ODVhZDczNzk5OGNjMzQxZjVkMzk2N2UuLmViMDJmM2I4YjY1ZDEx
YTg2ZGRjNzE3N2M0ZjZiNmVlMWNhNmQ2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yNiAgSGFqaW1lIE1vcnJpdGEgIDxtb3JyaXRh
QGNocm9taXVtLm9yZz4KIAogICAgICAgICBNb3ZlIENocm9tZUNsaWVudDo6c2hvd0NvbnRleHRN
ZW51KCkgdG8gQ29udGV4dE1lbnVDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdi
MGNjMmVmN2M4ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhk
ZWUzYTNmNzFjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tbW9uV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAg
Ly8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxl
IHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tz
KikgPSAwOworCisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSkgPSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2Jm
OTcwNjI5YzFhMmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4
YmMxNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJl
ZFdvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNo
YXJlZFdvcmtlckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25z
dCBXZWJTdHJpbmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisK
ICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBh
IGZpbGUgc3lzdGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lz
dGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqKQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdi
ZmMxNzEwYzhlMjljMC4uMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2NyAx
MDA3NTUKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tl
bmRQcm94eS5jcHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0lu
ZGV4ZWREQk1vZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4
ZWREQk1haW5UaHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50
SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJp
bmcmIG5hbWUpCisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFk
QnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5n
JiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRS
ZWYobmV3IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBs
LCBtb2RlLCBuYW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAK
ICAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4K
ICAgICB2b2lkIGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2Vi
V29ya2VyQmFzZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsx
MTEsMjggQEAgcHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBj
b25zdCBTdHJpbmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7Ci0gICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBt
X3dlYldvcmtlckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVh
dGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAg
ICAgaWYgKG1fd2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9z
dFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxl
dGUsIHRoaXMsIHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xp
ZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxs
b3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2Us
IGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVz
dWx0KGZhbHNlKQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGll
bnRJbXBsKQorICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsK
LSAgICAgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1w
bCo+KHdlYldvcmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAv
LyB3ZWJGcmFtZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZl
LCByZWx5aW5nIG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBz
aG91bGQgYmUgb2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50
ID0gd2ViV29ya2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFi
b3V0IHRocmVhZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNo
VGFza1RvTWFpblRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJ
bmRleGVkREJUYXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZy
YW1lKSwgbmFtZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxv
d0luZGV4ZWREQlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29t
bW9uQ2xpZW50KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93
SW5kZXhlZERCVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+
IHBycFdlYkZyYW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAg
ICBzdGF0aWMgdm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
IFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNv
bW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0
IFN0cmluZyYgbW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZy
YW1lID0gcHJwV2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJh
bWUtPnZpZXdJbXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNv
bW1vbkNsaWVudCkgewogICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoZmFsc2Us
IG1vZGUpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgYWxs
b3dlZCA9ICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lv
bkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZS5nZXQoKSwgbmFtZSwgV2ViU2VjdXJp
dHlPcmlnaW4oKSk7CisgICAgICAgIGJvb2wgYWxsb3dlZCA9IGNvbW1vbkNsaWVudC0+YWxsb3dJ
bmRleGVkREIobmFtZSk7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGFsbG93ZWQs
IG1vZGUpOwogICAgIH0KIApAQCAtMTQ2LDI5ICsxNDMsMzMgQEAgcHJpdmF0ZToKIAogICAgIGJv
b2wgbV9yZXN1bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJ
bXBsIGlzIG5ldmVyIGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgcHJvY2VzcwotICAg
IC8vIGlzIGFsaXZlLiBXZSB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHRvIG5vdGlmeSB0aGUg
d29ya2VyIHRocmVhZCB0aGF0Ci0gICAgLy8gdGhlIHBlcm1pc3Npb24gcmVzdWx0IGhhcyBiZWVu
IHNldC4gVGhlIHVuZGVybHlpbmcgbWVzc2FnZSBwcm94eSBvYmplY3QKLSAgICAvLyBpcyB2YWxp
ZCBhcyBsb25nIGFzIHRoZSB3b3JrZXIgcnVuIGxvb3AgaGFzbid0IHJldHVybmVkCi0gICAgLy8g
TWVzc2FnZVF1ZXVlVGVybWluYXRlZCwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB1c2UgdGhlCi0g
ICAgLy8gV2ViV29ya2VyQ2xpZW50SW1wbC4KLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBtX3dl
YldvcmtlckNsaWVudEltcGw7CisgICAgLy8gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdl
IHVzZXMgdHdvIG5vbi10aHJlYWRzYWZlIGNsYXNzZXMgYWNyb3NzCisgICAgLy8gdGhyZWFkczog
V2ViV29ya2VyQmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIC8vIEluIHRoZSBk
ZWRpY2F0ZWQgd29ya2VyIGNhc2UsIHRoZXNlIGFyZSBib3RoIHRoZSBzYW1lIG9iamVjdCBvZiB0
eXBlCisgICAgLy8gV2ViV29ya2VyQ2xpZW50SW1wbCwgd2hpY2ggaXNuJ3QgZGVsZXRlZCBmb3Ig
dGhlIGxpZmUgb2YgdGhlIHJlbmRlcmVyCisgICAgLy8gcHJvY2VzcyBzbyB3ZSBkb24ndCBoYXZl
IHRvIHdvcnJ5IGFib3V0IHVzZS1hZnRlci1mcmVlcy4KKyAgICAvLyBJbiB0aGUgc2hhcmVkIHdv
cmtlciBjYXNlLCB0aGVzZSBhcmUgb2YgdHlwZSBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZAorICAg
IC8vIGNocm9taXVtJ3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50UHJveHksIHJlc3BlY3RpdmVseS4g
VGhlc2UgYXJlIGJvdGgKKyAgICAvLyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNw
b25zZSB0byBhIHJlcXVlc3Qgb24gdGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkg
YWZ0ZXIgdGhlIHdvcmtlciBydW4gbG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiBTbyBldmVu
IGluCisgICAgLy8gdGhlIG1vc3QgaW50ZXJsZWF2ZWQgY2FzZSwgd2UgaGF2ZToKKyAgICAvLyBX
IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSBzY2hlZHVsZXMgYWxsb3dJbmRleGVkREJU
YXNrCisgICAgLy8gTSB3b3JrZXJSdW5Mb29wIG1hcmtlZCBhcyBraWxsZWQKKyAgICAvLyBXIHJ1
bkxvb3Agc3RvcHMgYW5kIHNjaGVkdWxlcyBvYmplY3QgZGVsZXRpb24gb24gbWFpbiB0aHJlYWQK
KyAgICAvLyBNIGFsbG93SW5kZXhlZERCVGFzayBjYWxscyBjb21tb25DbGllbnQtPmFsbG93SW5k
ZXhlZERCKCkKKyAgICAvLyBNIFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVu
dCBhcmUgZGVsZXRlZAorICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKIH07CiAK
IGJvb2wgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdv
cmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2Vi
U2VjdXJpdHlPcmlnaW4mKQogewotICAgIC8vIEZJWE1FOiBCeXBhc3MgY2hlY2tpbmcgZm9yIHBl
cm1pc3Npb24gc28gYXMgbm90IHRvIGJsb2NrIHNoYXJlZCB3b3JrZXIKLSAgICAvLyB0ZXN0aW5n
IHVudGlsIGEgcGVybWlzc2lvbnMgY2hlY2sgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaGFzIHRvIGJl
IGZpeGVkCi0gICAgLy8gYmVmb3JlIG0xOSBnb2VzIHRvIGJldGEuIGh0dHA6Ly9jcmJ1Zy5jb20v
MTEyODU1Ci0gICAgaWYgKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKQot
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtl
ckNsaWVudEltcGwgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJDbGllbnRJbXBsKj4oJndvcmtlckNv
bnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKKyAgICBXZWJXb3JrZXJCYXNl
KiB3ZWJXb3JrZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250
ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CiAgICAgV29ya2VyUnVuTG9vcCYg
cnVuTG9vcCA9IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICBTdHJp
bmcgbW9kZSA9IGFsbG93SW5kZXhlZERCTW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51
bWJlcihydW5Mb29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICBSZWZQdHI8QWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlk
Z2U6OmNyZWF0ZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBuYW1lKTsKKyAgICBSZWZQdHI8
QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OmNyZWF0ZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKTsKIAogICAg
IC8vIEVpdGhlciB0aGUgYnJpZGdlIHJldHVybnMsIG9yIHRoZSBxdWV1ZSBnZXRzIHRlcm1pbmF0
ZWQuCiAgICAgaWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1l
c3NhZ2VRdWV1ZVRlcm1pbmF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggMWRiMmQxZGQ5NzNiNjg5OGQwMmYyODNl
OTg2MTc1YWIzZjM4NmE5MS4uYTY5ZjAxYTVmYTVmNGJkNzFjODY1MWVmZTY0OTUzOGVhNjQyMDJh
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50
SW1wbC5jcHAKQEAgLTIxNCw2ICsyMTQsMTYgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjph
bGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdAogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50
KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJh
bWUsIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KKworYm9vbCBXZWJXb3Jr
ZXJDbGllbnRJbXBsOjphbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCit7Cisg
ICAgaWYgKG1fcHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIFdlYktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1w
bCgpOworICAgIGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVy
biAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGll
bnQoKS0+YWxsb3dJbmRleGVkREIobV93ZWJGcmFtZSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4o
KSk7Cit9CiAgCiBXZWJWaWV3KiBXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KCkgY29uc3QgCiB7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgK
aW5kZXggM2Q1ZGFiMGRlMmY1YzMxYWM2Y2Q3ZjAyYjcyOGU4OWVkZDIzZDZlNy4uNjczMjA4ZmI2
MDM1NTk3YTg1NzE3NDQxZjU4YjQwMjE2ZDAzYzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxlU3lzdGVtKCk7CiAgICAgdmlydHVhbCB2
b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBi
b29sIGNyZWF0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3Rl
bUNhbGxiYWNrcyopOworICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJT
dHJpbmcmIG5hbWUpOwogCiAgICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKICAg
ICB2aXJ0dWFsIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgeyByZXR1cm4g
dGhpczsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCmluZGV4IDQyOTU2YTVmOGE2MWQzNGIyMGE2M2E0OGYxZDA0OTM5NDMxNzVkZWMu
Ljk1ZjI0YWZjYTc4MTlkMzNlZjczMjdjY2ZlMGYxYjc0ZjZjNmRkYzggMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyMiBAQAorMjAxMi0wMi0yOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgSW5kZXhlZERCOiBDaGVjayBXZWJDb21tb25Xb3JrZXJDbGllbnQ6OmFsbG93
SW5kZXhlZERCIGJlZm9yZSBwcm9jZWVkaW5nIGZyb20gYSBzaGFyZWQgd29ya2VyCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTk1NAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJj
ZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChzdGFydFdvcmtlci53b3JrZXIucG9ydC5vbm1l
c3NhZ2UpOgorICAgICAgICAoc3RhcnRXb3JrZXIud29ya2VyLnBvc3RNZXNzYWdlKToKKyAgICAg
ICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYmFzaWNzLmpzOgorICAgICAgICAqIHN0
b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICguc2VsZi5vbmNv
bm5lY3QuZXZlbnQucG9ydHMuMC5vbm1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0
LnNlbGYucG9zdE1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0KToKKyAgICAgICAg
KC5zZWxmLnBvc3RNZXNzYWdlKToKKyAgICAgICAgKGRvbmUpOgorICAgICAgICAodW5leHBlY3Rl
ZEVycm9yQ2FsbGJhY2spOgorCiAyMDEyLTAyLTI3ICBDc2FiYSBPc3p0cm9nb27DoWMgIDxvc3N5
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgW1F0XVtXSzJdIFNraXAgb25lIG1vcmUgY3Jhc2hpbmcg
dGVzdC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3Qt
cHJlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKaW5k
ZXggNWJjYjM0ZjVlZmY2N2M0MzA5MmNmMTMzMjhhMDQ2NTExNjRiODRkYi4uOTk2MzNhOWVlMDRk
NTc4MWQ1OGI1N2M1OWEyZDM1ZWUyZTMyZTEzZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFz
dC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9qcy9y
ZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKQEAgLTQ2NywxMSArNDY3LDE1IEBAIGZ1bmN0aW9uIGZp
bmlzaEpTVGVzdCgpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsK
IH0KIAotZnVuY3Rpb24gc3RhcnRXb3JrZXIodGVzdFNjcmlwdFVSTCkKK2Z1bmN0aW9uIHN0YXJ0
V29ya2VyKHRlc3RTY3JpcHRVUkwsIHNoYXJlZCkKIHsKICAgICBzZWxmLmpzVGVzdElzQXN5bmMg
PSB0cnVlOwogICAgIGRlYnVnKCdTdGFydGluZyB3b3JrZXI6ICcgKyB0ZXN0U2NyaXB0VVJMKTsK
LSAgICB2YXIgd29ya2VyID0gbmV3IFdvcmtlcih0ZXN0U2NyaXB0VVJMKTsKKyAgICB2YXIgd29y
a2VyID0gc2hhcmVkID8gbmV3IFNoYXJlZFdvcmtlcih0ZXN0U2NyaXB0VVJMKSA6IG5ldyBXb3Jr
ZXIodGVzdFNjcmlwdFVSTCk7CisgICAgaWYgKHNoYXJlZCkgeworICAgICAgICB3b3JrZXIucG9y
dC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldnQpIHsgd29ya2VyLm9ubWVzc2FnZShldnQpOyB9Owor
ICAgICAgICB3b3JrZXIucG9zdE1lc3NhZ2UgPSBmdW5jdGlvbihtc2csIHBvcnQpIHsgd29ya2Vy
LnBvcnQucG9zdE1lc3NhZ2UobXNnLCBwb3J0KTsgfTsKKyAgICB9CiAgICAgd29ya2VyLm9ubWVz
c2FnZSA9IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHdvcmtlclByZWZpeCA9
ICJbV29ya2VyXSAiOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVz
dF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDkwOWM3M2U3N2JhYWE4ODU5MTI5MmFiNTJiZTM3MjFk
NWRlOTdhYWMuLjdlYWE3M2NmZGM2MjBmNDViMzUwZjYwYmFjMzhmYmE4YWU1ZTQ2MDggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQKQEAgLTE5Myw2ICsxOTMsNyBAQCBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3dlYnNvY2tl
dC90ZXN0cy9oeWJpL3dvcmtlcnMvc2hhcmVkLXdvcmtlci1zaW1wbGUuaHRtbAogV09OVEZJWCBT
S0lQIDogaHR0cC90ZXN0cy9pbnNwZWN0b3IvbmV0d29yay9uZXR3b3JrLXNoYXJlZC13b3JrZXIu
aHRtbCA9IFBBU1MgVElNRU9VVCBGQUlMCiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3Vy
aXR5L2NvbnRlbnRTZWN1cml0eVBvbGljeS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWFsbG93
ZWQuaHRtbCA9IFRFWFQKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVzdHMvc2VjdXJpdHkvY29udGVu
dFNlY3VyaXR5UG9saWN5L3NoYXJlZC13b3JrZXItY29ubmVjdC1zcmMtYmxvY2tlZC5odG1sID0g
VEVYVAorV09OVEZJWCBTS0lQIDogc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3Jr
ZXJzLmh0bWwgPSBQQVNTIFRJTUVPVVQgRkFJTAogCiAvLyB0ZXN0X3NoZWxsIGRvZXMgbm90IHN1
cHBvcnQgbWVzc2FnZSBwb3J0cwogQlVHV0s3NDQ1OSBTS0lQIDogZmFzdC93b3JrZXJzL3Rlcm1p
bmF0aW9uLXdpdGgtcG9ydC1tZXNzYWdlcy5odG1sID0gQ1JBU0gKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sIGIvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uMDczZjgyNzZkNGJjYWI3OGExYTI3MTA1MzE1ZjY5YjJlYmViYjk1ZQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQt
d29ya2Vycy5odG1sCkBAIC0wLDAgKzEsMTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9zaGFyZWQuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+
Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNj
cmlwdD5zdGFydFdvcmtlcigncmVzb3VyY2VzL2Jhc2ljcy5qcycsIHRydWUgLypzaGFyZWQqLyk7
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMgYi9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzCmluZGV4IGY0N2NlMTkwOTFhZDg2
YmQ3NGZkZmYxODg4ZWMxMzI1ZDU1OTM1MjEuLjUwZTVmNTQ4NzIxYjI4MTU5MzE5OTc4YTRiNjhh
ZGNlNDM0M2FkMWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jl
c291cmNlcy9zaGFyZWQuanMKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVz
b3VyY2VzL3NoYXJlZC5qcwpAQCAtMSw5ICsxLDM1IEBACiB2YXIganNUZXN0SXNBc3luYyA9IHRy
dWU7CitpZiAoc2VsZi5pbXBvcnRTY3JpcHRzKSB7CisgICAgaWYgKCFzZWxmLnBvc3RNZXNzYWdl
KSB7CisgICAgICAvLyBTaGFyZWQgd29ya2VyLgorICAgICAgc2VsZi5vbmNvbm5lY3QgPSBmdW5j
dGlvbihldmVudCkgeworICAgICAgICBldmVudC5wb3J0c1swXS5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihlKSB7CisgICAgICAgICAgc2VsZi5vbm1lc3NhZ2UoZSk7CisgICAgICAgIH0KKyAgICAgICAg
c2VsZi5wb3N0TWVzc2FnZSA9IGZ1bmN0aW9uKG1zZykgeworICAgICAgICAgIGV2ZW50LnBvcnRz
WzBdLnBvc3RNZXNzYWdlKG1zZyk7CisgICAgICAgIH07CisgICAgICAgIC8vIE5vdyB0aGF0IHNv
bWVvbmUgaGFzIGNvbm5lY3QgdG8gdXMsIG9mZmxvYWQgb3VyIHN0b3JlZCBtZXNzYWdlcy4KKyAg
ICAgICAgaWYgKCFzZWxmLnBlbmRpbmdNZXNzYWdlcykKKyAgICAgICAgICByZXR1cm47CisgICAg
ICAgIHdoaWxlIChzZWxmLnBlbmRpbmdNZXNzYWdlcy5sZW5ndGgpIHsKKyAgICAgICAgICBldmVu
dC5wb3J0c1swXS5wb3N0TWVzc2FnZShzZWxmLnBlbmRpbmdNZXNzYWdlcy5zaGlmdCgpKTsKKyAg
ICAgICAgfQorICAgICAgfQorICAgICAgLy8gU3RvcmUgbWVzc2FnZXMgZm9yIHNlbmRpbmcgdW50
aWwgd2UgaGF2ZSBzb21ld2hlcmUgdG8gc2VuZCB0aGVtLgorICAgICAgc2VsZi5wb3N0TWVzc2Fn
ZSA9IGZ1bmN0aW9uKG1zZykgeworICAgICAgICBpZiAodHlwZW9mIHNlbGYucGVuZGluZ01lc3Nh
Z2VzID09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgc2VsZi5wZW5kaW5nTWVzc2FnZXMgPSBb
XTsKKyAgICAgICAgfQorICAgICAgICBzZWxmLnBlbmRpbmdNZXNzYWdlcy5wdXNoKG1zZyk7Cisg
ICAgICB9CisgICAgfQorfQogCiBmdW5jdGlvbiBkb25lKCkKIHsKICAgICBpc1N1Y2Nlc3NmdWxs
eVBhcnNlZCgpOwotICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgaWYg
KHNlbGYubGF5b3V0VGVzdENvbnRyb2xsZXIpCiAgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVy
Lm5vdGlmeURvbmUoKQogfQogCkBAIC0xMyw3ICszOSw3IEBAIGZ1bmN0aW9uIHVuZXhwZWN0ZWRT
dWNjZXNzQ2FsbGJhY2soKQogICAgIGRvbmUoKTsKIH0KIAotZnVuY3Rpb24gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2soKQorZnVuY3Rpb24gdW5leHBlY3RlZEVycm9yQ2FsbGJhY2soZXZlbnQpCiB7
CiAgICAgdGVzdEZhaWxlZCgiRXJyb3IgZnVuY3Rpb24gY2FsbGVkIHVuZXhwZWN0ZWRseTogKCIg
KyBldmVudC50YXJnZXQuZXJyb3JDb2RlICsgIikgIiArIGV2ZW50LnRhcmdldC53ZWJraXRFcnJv
ck1lc3NhZ2UpOwogICAgIGRvbmUoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129555</attachid>
            <date>2012-02-29 16:52:48 -0800</date>
            <delta_ts>2012-02-29 17:58:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229165247.patch</filename>
            <type>text/plain</type>
            <size>16312</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIwN2ZlODNlOTEwYTMxYTA0MjYyNzZjMjNhNmQ2YzBkNDgzNjhiMDkuLjkwOWIzMzM5NmZhMTc3
ZThjYjc5MDQyODE4NTM2YTQ0ZDEzODllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
NzkxNyBhbmQgcjEwOTE4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdiMGNjMmVmN2M4
ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhkZWUzYTNmNzFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29y
a2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgPSAwOwor
CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkg
PSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFh
MmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4YmMxNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtl
ckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBD
YWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lz
dGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBl
LCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdiZmMxNzEwYzhl
MjljMC4uMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2NyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0luZGV4ZWREQk1v
ZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJbmRleGVkREJN
YWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50SW1wbCogd2Vi
V29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBj
cmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5nJiBtb2RlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBu
YW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAKICAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4KICAgICB2b2lk
IGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2ViV29ya2VyQmFz
ZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsxMTEsMjggQEAg
cHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBtX3dlYldvcmtl
ckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAgICAgaWYgKG1f
d2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMs
IHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVzdWx0KGZhbHNl
KQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGllbnRJbXBsKQor
ICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsKLSAgICAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYldv
cmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAvLyB3ZWJGcmFt
ZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZlLCByZWx5aW5n
IG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBzaG91bGQgYmUg
b2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50ID0gd2ViV29y
a2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFib3V0IHRocmVh
ZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJbmRleGVkREJU
YXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZyYW1lKSwgbmFt
ZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0luZGV4ZWRE
QlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50
KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERC
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IHBycFdlYkZy
YW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICBzdGF0aWMg
dm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNvbW1vbldvcmtl
ckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
bW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZyYW1lID0gcHJw
V2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJ
bXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNvbW1vbkNsaWVu
dCkgewogICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoZmFsc2UsIG1vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgYWxsb3dlZCA9ICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZS5nZXQoKSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgICAgIGJvb2wgYWxsb3dlZCA9IGNvbW1vbkNsaWVudC0+YWxsb3dJbmRleGVkREIo
bmFtZSk7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGFsbG93ZWQsIG1vZGUpOwog
ICAgIH0KIApAQCAtMTQ2LDI5ICsxNDMsMzMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9yZXN1
bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsIGlzIG5l
dmVyIGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgcHJvY2VzcwotICAgIC8vIGlzIGFs
aXZlLiBXZSB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHRvIG5vdGlmeSB0aGUgd29ya2VyIHRo
cmVhZCB0aGF0Ci0gICAgLy8gdGhlIHBlcm1pc3Npb24gcmVzdWx0IGhhcyBiZWVuIHNldC4gVGhl
IHVuZGVybHlpbmcgbWVzc2FnZSBwcm94eSBvYmplY3QKLSAgICAvLyBpcyB2YWxpZCBhcyBsb25n
IGFzIHRoZSB3b3JrZXIgcnVuIGxvb3AgaGFzbid0IHJldHVybmVkCi0gICAgLy8gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB1c2UgdGhlCi0gICAgLy8gV2Vi
V29ya2VyQ2xpZW50SW1wbC4KLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBtX3dlYldvcmtlckNs
aWVudEltcGw7CisgICAgLy8gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHVzZXMgdHdv
IG5vbi10aHJlYWRzYWZlIGNsYXNzZXMgYWNyb3NzCisgICAgLy8gdGhyZWFkczogV2ViV29ya2Vy
QmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIC8vIEluIHRoZSBkZWRpY2F0ZWQg
d29ya2VyIGNhc2UsIHRoZXNlIGFyZSBib3RoIHRoZSBzYW1lIG9iamVjdCBvZiB0eXBlCisgICAg
Ly8gV2ViV29ya2VyQ2xpZW50SW1wbCwgd2hpY2ggaXNuJ3QgZGVsZXRlZCBmb3IgdGhlIGxpZmUg
b2YgdGhlIHJlbmRlcmVyCisgICAgLy8gcHJvY2VzcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHVzZS1hZnRlci1mcmVlcy4KKyAgICAvLyBJbiB0aGUgc2hhcmVkIHdvcmtlciBjYXNl
LCB0aGVzZSBhcmUgb2YgdHlwZSBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZAorICAgIC8vIGNocm9t
aXVtJ3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50UHJveHksIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJl
IGJvdGgKKyAgICAvLyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNwb25zZSB0byBh
IHJlcXVlc3Qgb24gdGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkgYWZ0ZXIgdGhl
IHdvcmtlciBydW4gbG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiBTbyBldmVuIGluCisgICAg
Ly8gdGhlIG1vc3QgaW50ZXJsZWF2ZWQgY2FzZSwgd2UgaGF2ZToKKyAgICAvLyBXIEFsbG93SW5k
ZXhlZERCTWFpblRocmVhZEJyaWRnZSBzY2hlZHVsZXMgYWxsb3dJbmRleGVkREJUYXNrCisgICAg
Ly8gTSB3b3JrZXJSdW5Mb29wIG1hcmtlZCBhcyBraWxsZWQKKyAgICAvLyBXIHJ1bkxvb3Agc3Rv
cHMgYW5kIHNjaGVkdWxlcyBvYmplY3QgZGVsZXRpb24gb24gbWFpbiB0aHJlYWQKKyAgICAvLyBN
IGFsbG93SW5kZXhlZERCVGFzayBjYWxscyBjb21tb25DbGllbnQtPmFsbG93SW5kZXhlZERCKCkK
KyAgICAvLyBNIFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudCBhcmUgZGVs
ZXRlZAorICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKIH07CiAKIGJvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKQogewotICAgIC8vIEZJWE1FOiBCeXBhc3MgY2hlY2tpbmcgZm9yIHBlcm1pc3Npb24g
c28gYXMgbm90IHRvIGJsb2NrIHNoYXJlZCB3b3JrZXIKLSAgICAvLyB0ZXN0aW5nIHVudGlsIGEg
cGVybWlzc2lvbnMgY2hlY2sgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaGFzIHRvIGJlIGZpeGVkCi0g
ICAgLy8gYmVmb3JlIG0xOSBnb2VzIHRvIGJldGEuIGh0dHA6Ly9jcmJ1Zy5jb20vMTEyODU1Ci0g
ICAgaWYgKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNsaWVudElt
cGwgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJDbGllbnRJbXBsKj4oJndvcmtlckNvbnRleHQtPnRo
cmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKKyAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3Jr
ZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9
IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICBTdHJpbmcgbW9kZSA9
IGFsbG93SW5kZXhlZERCTW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICBSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmNyZWF0
ZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBuYW1lKTsKKyAgICBSZWZQdHI8QWxsb3dJbmRl
eGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRC
cmlkZ2U6OmNyZWF0ZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKTsKIAogICAgIC8vIEVpdGhl
ciB0aGUgYnJpZGdlIHJldHVybnMsIG9yIHRoZSBxdWV1ZSBnZXRzIHRlcm1pbmF0ZWQuCiAgICAg
aWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggMWRiMmQxZGQ5NzNiNjg5OGQwMmYyODNlOTg2MTc1YWIz
ZjM4NmE5MS4uYTY5ZjAxYTVmYTVmNGJkNzFjODY1MWVmZTY0OTUzOGVhNjQyMDJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
QEAgLTIxNCw2ICsyMTQsMTYgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0RhdGFi
YXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2Vi
Vmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJhbWUsIG5hbWUs
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KKworYm9vbCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjphbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1f
cHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdl
YktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOworICAg
IGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhd2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxs
b3dJbmRleGVkREIobV93ZWJGcmFtZSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4oKSk7Cit9CiAg
CiBXZWJWaWV3KiBXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KCkgY29uc3QgCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggM2Q1
ZGFiMGRlMmY1YzMxYWM2Y2Q3ZjAyYjcyOGU4OWVkZDIzZDZlNy4uNjczMjA4ZmI2MDM1NTk3YTg1
NzE3NDQxZjU4YjQwMjE2ZDAzYzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxlU3lzdGVtKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopOworICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5h
bWUpOwogCiAgICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKICAgICB2aXJ0dWFs
IFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgeyByZXR1cm4gdGhpczsgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDFkYzE3MzVkOTBlOTY1OTY3MmUyNzI3MjdjNzFmMGM5YjkwOTFiZjYuLmRjNjRlOWQ1
ZmViZTEwZGZkZDQ4MWE2NTM1OWMyMmFlZmQxZWE4NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wMi0yOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBDaGVjayBXZWJDb21tb25Xb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERC
IGJlZm9yZSBwcm9jZWVkaW5nIGZyb20gYSBzaGFyZWQgd29ya2VyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTk1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanM6CisgICAgICAgIChzdGFydFdvcmtlci53b3JrZXIucG9ydC5vbm1lc3NhZ2UpOgor
ICAgICAgICAoc3RhcnRXb3JrZXIud29ya2VyLnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYmFzaWNzLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICguc2VsZi5vbmNvbm5lY3QuZXZl
bnQucG9ydHMuMC5vbm1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0LnNlbGYucG9z
dE1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0KToKKyAgICAgICAgKC5zZWxmLnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKGRvbmUpOgorICAgICAgICAodW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2spOgorCiAyMDEyLTAyLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcml0YWJsZSBhdHRyaWJ1dGUgbm90IHNldCBjb3JyZWN0bHkg
d2hlbiByZWRlZmluaW5nIGFuIGFjY2Vzc29yIHRvIGEgZGF0YSBkZXNjcmlwdG9yCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCmluZGV4IDViY2IzNGY1ZWZm
NjdjNDMwOTJjZjEzMzI4YTA0NjUxMTY0Yjg0ZGIuLjk5NjMzYTllZTA0ZDU3ODFkNThiNTdjNTlh
MmQzNWVlMmUzMmUxM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzCkBAIC00NjcsMTEgKzQ2NywxNSBAQCBmdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQog
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9u
IHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCitmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2Ny
aXB0VVJMLCBzaGFyZWQpCiB7CiAgICAgc2VsZi5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAgICBk
ZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7Ci0gICAgdmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7CisgICAgdmFyIHdvcmtlciA9IHNoYXJlZCA/
IG5ldyBTaGFyZWRXb3JrZXIodGVzdFNjcmlwdFVSTCkgOiBuZXcgV29ya2VyKHRlc3RTY3JpcHRV
UkwpOworICAgIGlmIChzaGFyZWQpIHsKKyAgICAgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7IHdvcmtlci5vbm1lc3NhZ2UoZXZ0KTsgfTsKKyAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBvc3RNZXNz
YWdlKG1zZywgcG9ydCk7IH07CisgICAgfQogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3b3JrZXJQcmVmaXggPSAiW1dvcmtlcl0gIjsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBlMzZkZWU4YzBmMWY3ODNjOTRkMzQ1NjQ4ODM1ZmMyYzA2YzNiZWFhLi5hZjUw
MWVmMDQzN2E5MGFhZjQxNjdkYjdiYTlhOTdmZjVkY2E0OTZhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xOTUsNiAr
MTk1LDcgQEAgV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3NoYXJlZC13b3JrZXItc2ltcGxlLmh0bWwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0bWwgPSBQQVNTIFRJ
TUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLmh0bWwgPSBURVhU
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuaHRtbCA9IFRFWFQKK1dPTlRGSVgg
U0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sID0gUEFT
UyBUSU1FT1VUIEZBSUwKIAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2Ug
cG9ydHMKIEJVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBv
cnQtbWVzc2FnZXMuaHRtbCA9IENSQVNICmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbCBiL0xheW91dFRlc3RzL3N0b3Jh
Z2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3M2Y4
Mjc2ZDRiY2FiNzhhMWEyNzEwNTMxNWY2OWIyZWJlYmI5NWUKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbApA
QCAtMCwwICsxLDEyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3Qv
anMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvc2hhcmVkLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHAgaWQ9ImRlc2Ny
aXB0aW9uIj48L3A+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+c3RhcnRXb3Jr
ZXIoJ3Jlc291cmNlcy9iYXNpY3MuanMnLCB0cnVlIC8qc2hhcmVkKi8pOzwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2lu
ZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVkLmpzIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVk
ZGIvcmVzb3VyY2VzL3NoYXJlZC5qcwppbmRleCBmNDdjZTE5MDkxYWQ4NmJkNzRmZGZmMTg4OGVj
MTMyNWQ1NTkzNTIxLi41MGU1ZjU0ODcyMWIyODE1OTMxOTk3OGE0YjY4YWRjZTQzNDNhZDFiIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvc2hhcmVk
LmpzCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQu
anMKQEAgLTEsOSArMSwzNSBAQAogdmFyIGpzVGVzdElzQXN5bmMgPSB0cnVlOworaWYgKHNlbGYu
aW1wb3J0U2NyaXB0cykgeworICAgIGlmICghc2VsZi5wb3N0TWVzc2FnZSkgeworICAgICAgLy8g
U2hhcmVkIHdvcmtlci4KKyAgICAgIHNlbGYub25jb25uZWN0ID0gZnVuY3Rpb24oZXZlbnQpIHsK
KyAgICAgICAgZXZlbnQucG9ydHNbMF0ub25tZXNzYWdlID0gZnVuY3Rpb24oZSkgeworICAgICAg
ICAgIHNlbGYub25tZXNzYWdlKGUpOworICAgICAgICB9CisgICAgICAgIHNlbGYucG9zdE1lc3Nh
Z2UgPSBmdW5jdGlvbihtc2cpIHsKKyAgICAgICAgICBldmVudC5wb3J0c1swXS5wb3N0TWVzc2Fn
ZShtc2cpOworICAgICAgICB9OworICAgICAgICAvLyBOb3cgdGhhdCBzb21lb25lIGhhcyBjb25u
ZWN0IHRvIHVzLCBvZmZsb2FkIG91ciBzdG9yZWQgbWVzc2FnZXMuCisgICAgICAgIGlmICghc2Vs
Zi5wZW5kaW5nTWVzc2FnZXMpCisgICAgICAgICAgcmV0dXJuOworICAgICAgICB3aGlsZSAoc2Vs
Zi5wZW5kaW5nTWVzc2FnZXMubGVuZ3RoKSB7CisgICAgICAgICAgZXZlbnQucG9ydHNbMF0ucG9z
dE1lc3NhZ2Uoc2VsZi5wZW5kaW5nTWVzc2FnZXMuc2hpZnQoKSk7CisgICAgICAgIH0KKyAgICAg
IH0KKyAgICAgIC8vIFN0b3JlIG1lc3NhZ2VzIGZvciBzZW5kaW5nIHVudGlsIHdlIGhhdmUgc29t
ZXdoZXJlIHRvIHNlbmQgdGhlbS4KKyAgICAgIHNlbGYucG9zdE1lc3NhZ2UgPSBmdW5jdGlvbiht
c2cpIHsKKyAgICAgICAgaWYgKHR5cGVvZiBzZWxmLnBlbmRpbmdNZXNzYWdlcyA9PSAidW5kZWZp
bmVkIikgeworICAgICAgICAgIHNlbGYucGVuZGluZ01lc3NhZ2VzID0gW107CisgICAgICAgIH0K
KyAgICAgICAgc2VsZi5wZW5kaW5nTWVzc2FnZXMucHVzaChtc2cpOworICAgICAgfQorICAgIH0K
K30KIAogZnVuY3Rpb24gZG9uZSgpCiB7CiAgICAgaXNTdWNjZXNzZnVsbHlQYXJzZWQoKTsKLSAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgIGlmIChzZWxmLmxheW91dFRl
c3RDb250cm9sbGVyKQogICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCkK
IH0KIApAQCAtMTMsNyArMzksNyBAQCBmdW5jdGlvbiB1bmV4cGVjdGVkU3VjY2Vzc0NhbGxiYWNr
KCkKICAgICBkb25lKCk7CiB9CiAKLWZ1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrKCkK
K2Z1bmN0aW9uIHVuZXhwZWN0ZWRFcnJvckNhbGxiYWNrKGV2ZW50KQogewogICAgIHRlc3RGYWls
ZWQoIkVycm9yIGZ1bmN0aW9uIGNhbGxlZCB1bmV4cGVjdGVkbHk6ICgiICsgZXZlbnQudGFyZ2V0
LmVycm9yQ29kZSArICIpICIgKyBldmVudC50YXJnZXQud2Via2l0RXJyb3JNZXNzYWdlKTsKICAg
ICBkb25lKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129567</attachid>
            <date>2012-02-29 17:58:22 -0800</date>
            <delta_ts>2012-02-29 18:14:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229175821.patch</filename>
            <type>text/plain</type>
            <size>19064</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIwN2ZlODNlOTEwYTMxYTA0MjYyNzZjMjNhNmQ2YzBkNDgzNjhiMDkuLjkwOWIzMzM5NmZhMTc3
ZThjYjc5MDQyODE4NTM2YTQ0ZDEzODllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
NzkxNyBhbmQgcjEwOTE4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdiMGNjMmVmN2M4
ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhkZWUzYTNmNzFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29y
a2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgPSAwOwor
CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkg
PSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFh
MmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4YmMxNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtl
ckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBD
YWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lz
dGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBl
LCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdiZmMxNzEwYzhl
MjljMC4uMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2NyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0luZGV4ZWREQk1v
ZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJbmRleGVkREJN
YWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50SW1wbCogd2Vi
V29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBj
cmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5nJiBtb2RlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBu
YW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAKICAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4KICAgICB2b2lk
IGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2ViV29ya2VyQmFz
ZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsxMTEsMjggQEAg
cHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBtX3dlYldvcmtl
ckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAgICAgaWYgKG1f
d2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMs
IHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVzdWx0KGZhbHNl
KQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGllbnRJbXBsKQor
ICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsKLSAgICAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYldv
cmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAvLyB3ZWJGcmFt
ZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZlLCByZWx5aW5n
IG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBzaG91bGQgYmUg
b2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50ID0gd2ViV29y
a2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFib3V0IHRocmVh
ZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJbmRleGVkREJU
YXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZyYW1lKSwgbmFt
ZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0luZGV4ZWRE
QlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50
KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERC
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IHBycFdlYkZy
YW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICBzdGF0aWMg
dm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNvbW1vbldvcmtl
ckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
bW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZyYW1lID0gcHJw
V2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJ
bXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNvbW1vbkNsaWVu
dCkgewogICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoZmFsc2UsIG1vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgYWxsb3dlZCA9ICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZS5nZXQoKSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgICAgIGJvb2wgYWxsb3dlZCA9IGNvbW1vbkNsaWVudC0+YWxsb3dJbmRleGVkREIo
bmFtZSk7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGFsbG93ZWQsIG1vZGUpOwog
ICAgIH0KIApAQCAtMTQ2LDI5ICsxNDMsMzMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9yZXN1
bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsIGlzIG5l
dmVyIGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgcHJvY2VzcwotICAgIC8vIGlzIGFs
aXZlLiBXZSB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHRvIG5vdGlmeSB0aGUgd29ya2VyIHRo
cmVhZCB0aGF0Ci0gICAgLy8gdGhlIHBlcm1pc3Npb24gcmVzdWx0IGhhcyBiZWVuIHNldC4gVGhl
IHVuZGVybHlpbmcgbWVzc2FnZSBwcm94eSBvYmplY3QKLSAgICAvLyBpcyB2YWxpZCBhcyBsb25n
IGFzIHRoZSB3b3JrZXIgcnVuIGxvb3AgaGFzbid0IHJldHVybmVkCi0gICAgLy8gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB1c2UgdGhlCi0gICAgLy8gV2Vi
V29ya2VyQ2xpZW50SW1wbC4KLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBtX3dlYldvcmtlckNs
aWVudEltcGw7CisgICAgLy8gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHVzZXMgdHdv
IG5vbi10aHJlYWRzYWZlIGNsYXNzZXMgYWNyb3NzCisgICAgLy8gdGhyZWFkczogV2ViV29ya2Vy
QmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIC8vIEluIHRoZSBkZWRpY2F0ZWQg
d29ya2VyIGNhc2UsIHRoZXNlIGFyZSBib3RoIHRoZSBzYW1lIG9iamVjdCBvZiB0eXBlCisgICAg
Ly8gV2ViV29ya2VyQ2xpZW50SW1wbCwgd2hpY2ggaXNuJ3QgZGVsZXRlZCBmb3IgdGhlIGxpZmUg
b2YgdGhlIHJlbmRlcmVyCisgICAgLy8gcHJvY2VzcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHVzZS1hZnRlci1mcmVlcy4KKyAgICAvLyBJbiB0aGUgc2hhcmVkIHdvcmtlciBjYXNl
LCB0aGVzZSBhcmUgb2YgdHlwZSBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZAorICAgIC8vIGNocm9t
aXVtJ3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50UHJveHksIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJl
IGJvdGgKKyAgICAvLyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNwb25zZSB0byBh
IHJlcXVlc3Qgb24gdGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkgYWZ0ZXIgdGhl
IHdvcmtlciBydW4gbG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiBTbyBldmVuIGluCisgICAg
Ly8gdGhlIG1vc3QgaW50ZXJsZWF2ZWQgY2FzZSwgd2UgaGF2ZToKKyAgICAvLyBXIEFsbG93SW5k
ZXhlZERCTWFpblRocmVhZEJyaWRnZSBzY2hlZHVsZXMgYWxsb3dJbmRleGVkREJUYXNrCisgICAg
Ly8gTSB3b3JrZXJSdW5Mb29wIG1hcmtlZCBhcyBraWxsZWQKKyAgICAvLyBXIHJ1bkxvb3Agc3Rv
cHMgYW5kIHNjaGVkdWxlcyBvYmplY3QgZGVsZXRpb24gb24gbWFpbiB0aHJlYWQKKyAgICAvLyBN
IGFsbG93SW5kZXhlZERCVGFzayBjYWxscyBjb21tb25DbGllbnQtPmFsbG93SW5kZXhlZERCKCkK
KyAgICAvLyBNIFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudCBhcmUgZGVs
ZXRlZAorICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKIH07CiAKIGJvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKQogewotICAgIC8vIEZJWE1FOiBCeXBhc3MgY2hlY2tpbmcgZm9yIHBlcm1pc3Npb24g
c28gYXMgbm90IHRvIGJsb2NrIHNoYXJlZCB3b3JrZXIKLSAgICAvLyB0ZXN0aW5nIHVudGlsIGEg
cGVybWlzc2lvbnMgY2hlY2sgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaGFzIHRvIGJlIGZpeGVkCi0g
ICAgLy8gYmVmb3JlIG0xOSBnb2VzIHRvIGJldGEuIGh0dHA6Ly9jcmJ1Zy5jb20vMTEyODU1Ci0g
ICAgaWYgKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNsaWVudElt
cGwgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJDbGllbnRJbXBsKj4oJndvcmtlckNvbnRleHQtPnRo
cmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKKyAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3Jr
ZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9
IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICBTdHJpbmcgbW9kZSA9
IGFsbG93SW5kZXhlZERCTW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICBSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmNyZWF0
ZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBuYW1lKTsKKyAgICBSZWZQdHI8QWxsb3dJbmRl
eGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRC
cmlkZ2U6OmNyZWF0ZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKTsKIAogICAgIC8vIEVpdGhl
ciB0aGUgYnJpZGdlIHJldHVybnMsIG9yIHRoZSBxdWV1ZSBnZXRzIHRlcm1pbmF0ZWQuCiAgICAg
aWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggMWRiMmQxZGQ5NzNiNjg5OGQwMmYyODNlOTg2MTc1YWIz
ZjM4NmE5MS4uYTY5ZjAxYTVmYTVmNGJkNzFjODY1MWVmZTY0OTUzOGVhNjQyMDJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
QEAgLTIxNCw2ICsyMTQsMTYgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0RhdGFi
YXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2Vi
Vmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJhbWUsIG5hbWUs
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KKworYm9vbCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjphbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1f
cHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdl
YktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOworICAg
IGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhd2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxs
b3dJbmRleGVkREIobV93ZWJGcmFtZSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4oKSk7Cit9CiAg
CiBXZWJWaWV3KiBXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KCkgY29uc3QgCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggM2Q1
ZGFiMGRlMmY1YzMxYWM2Y2Q3ZjAyYjcyOGU4OWVkZDIzZDZlNy4uNjczMjA4ZmI2MDM1NTk3YTg1
NzE3NDQxZjU4YjQwMjE2ZDAzYzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxlU3lzdGVtKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopOworICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5h
bWUpOwogCiAgICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKICAgICB2aXJ0dWFs
IFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgeyByZXR1cm4gdGhpczsgfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDFkYzE3MzVkOTBlOTY1OTY3MmUyNzI3MjdjNzFmMGM5YjkwOTFiZjYuLmRjNjRlOWQ1
ZmViZTEwZGZkZDQ4MWE2NTM1OWMyMmFlZmQxZWE4NTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wMi0yOSAgRGF2aWQgR3JvZ2FuICA8ZGdyb2dhbkBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgSW5kZXhlZERCOiBDaGVjayBXZWJDb21tb25Xb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERC
IGJlZm9yZSBwcm9jZWVkaW5nIGZyb20gYSBzaGFyZWQgd29ya2VyCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTk1NAorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVz
dC1wcmUuanM6CisgICAgICAgIChzdGFydFdvcmtlci53b3JrZXIucG9ydC5vbm1lc3NhZ2UpOgor
ICAgICAgICAoc3RhcnRXb3JrZXIud29ya2VyLnBvc3RNZXNzYWdlKToKKyAgICAgICAgKiBzdG9y
YWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMvYmFzaWNzLmpzOgorICAgICAgICAqIHN0b3JhZ2UvaW5k
ZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanM6CisgICAgICAgICguc2VsZi5vbmNvbm5lY3QuZXZl
bnQucG9ydHMuMC5vbm1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0LnNlbGYucG9z
dE1lc3NhZ2UpOgorICAgICAgICAoLnNlbGYub25jb25uZWN0KToKKyAgICAgICAgKC5zZWxmLnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKGRvbmUpOgorICAgICAgICAodW5leHBlY3RlZEVycm9yQ2Fs
bGJhY2spOgorCiAyMDEyLTAyLTI5ICBHYXZpbiBCYXJyYWNsb3VnaCAgPGJhcnJhY2xvdWdoQGFw
cGxlLmNvbT4KIAogICAgICAgICBXcml0YWJsZSBhdHRyaWJ1dGUgbm90IHNldCBjb3JyZWN0bHkg
d2hlbiByZWRlZmluaW5nIGFuIGFjY2Vzc29yIHRvIGEgZGF0YSBkZXNjcmlwdG9yCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyBiL0xheW91
dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCmluZGV4IDViY2IzNGY1ZWZm
NjdjNDMwOTJjZjEzMzI4YTA0NjUxMTY0Yjg0ZGIuLjk5NjMzYTllZTA0ZDU3ODFkNThiNTdjNTlh
MmQzNWVlMmUzMmUxM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2Vz
L2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRl
c3QtcHJlLmpzCkBAIC00NjcsMTEgKzQ2NywxNSBAQCBmdW5jdGlvbiBmaW5pc2hKU1Rlc3QoKQog
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CiB9CiAKLWZ1bmN0aW9u
IHN0YXJ0V29ya2VyKHRlc3RTY3JpcHRVUkwpCitmdW5jdGlvbiBzdGFydFdvcmtlcih0ZXN0U2Ny
aXB0VVJMLCBzaGFyZWQpCiB7CiAgICAgc2VsZi5qc1Rlc3RJc0FzeW5jID0gdHJ1ZTsKICAgICBk
ZWJ1ZygnU3RhcnRpbmcgd29ya2VyOiAnICsgdGVzdFNjcmlwdFVSTCk7Ci0gICAgdmFyIHdvcmtl
ciA9IG5ldyBXb3JrZXIodGVzdFNjcmlwdFVSTCk7CisgICAgdmFyIHdvcmtlciA9IHNoYXJlZCA/
IG5ldyBTaGFyZWRXb3JrZXIodGVzdFNjcmlwdFVSTCkgOiBuZXcgV29ya2VyKHRlc3RTY3JpcHRV
UkwpOworICAgIGlmIChzaGFyZWQpIHsKKyAgICAgICAgd29ya2VyLnBvcnQub25tZXNzYWdlID0g
ZnVuY3Rpb24oZXZ0KSB7IHdvcmtlci5vbm1lc3NhZ2UoZXZ0KTsgfTsKKyAgICAgICAgd29ya2Vy
LnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnLCBwb3J0KSB7IHdvcmtlci5wb3J0LnBvc3RNZXNz
YWdlKG1zZywgcG9ydCk7IH07CisgICAgfQogICAgIHdvcmtlci5vbm1lc3NhZ2UgPSBmdW5jdGlv
bihldmVudCkKICAgICB7CiAgICAgICAgIHZhciB3b3JrZXJQcmVmaXggPSAiW1dvcmtlcl0gIjsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAppbmRleCBlMzZkZWU4YzBmMWY3ODNjOTRkMzQ1NjQ4ODM1ZmMyYzA2YzNiZWFhLi5hZjUw
MWVmMDQzN2E5MGFhZjQxNjdkYjdiYTlhOTdmZjVkY2E0OTZhIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CkBAIC0xOTUsNiAr
MTk1LDcgQEAgV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy93ZWJzb2NrZXQvdGVzdHMvaHliaS93
b3JrZXJzL3NoYXJlZC13b3JrZXItc2ltcGxlLmh0bWwKIFdPTlRGSVggU0tJUCA6IGh0dHAvdGVz
dHMvaW5zcGVjdG9yL25ldHdvcmsvbmV0d29yay1zaGFyZWQtd29ya2VyLmh0bWwgPSBQQVNTIFRJ
TUVPVVQgRkFJTAogV09OVEZJWCBTS0lQIDogaHR0cC90ZXN0cy9zZWN1cml0eS9jb250ZW50U2Vj
dXJpdHlQb2xpY3kvc2hhcmVkLXdvcmtlci1jb25uZWN0LXNyYy1hbGxvd2VkLmh0bWwgPSBURVhU
CiBXT05URklYIFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2NvbnRlbnRTZWN1cml0eVBvbGlj
eS9zaGFyZWQtd29ya2VyLWNvbm5lY3Qtc3JjLWJsb2NrZWQuaHRtbCA9IFRFWFQKK1dPTlRGSVgg
U0tJUCA6IHN0b3JhZ2UvaW5kZXhlZGRiL2Jhc2ljcy1zaGFyZWQtd29ya2Vycy5odG1sID0gUEFT
UyBUSU1FT1VUIEZBSUwKIAogLy8gdGVzdF9zaGVsbCBkb2VzIG5vdCBzdXBwb3J0IG1lc3NhZ2Ug
cG9ydHMKIEJVR1dLNzQ0NTkgU0tJUCA6IGZhc3Qvd29ya2Vycy90ZXJtaW5hdGlvbi13aXRoLXBv
cnQtbWVzc2FnZXMuaHRtbCA9IENSQVNICmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdG9yYWdl
L2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLWV4cGVjdGVkLnR4dApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi40M2YxZThhZmJlMDM5OTQ5YWU2YTk3ODYxOTAzZTUwOGU1ZjcyZjUxCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJl
ZC13b3JrZXJzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDU1IEBACitbV29ya2VyXSBUZXN0IElu
ZGV4ZWREQidzIGJhc2ljcy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9m
ICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1N0YXJ0
aW5nIHdvcmtlcjogcmVzb3VyY2VzL2Jhc2ljcy5qcworUEFTUyBbV29ya2VyXSAnd2Via2l0SW5k
ZXhlZERCJyBpbiBzZWxmIGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gd2Via2l0SW5kZXhlZERCID09
IG51bGwgaXMgZmFsc2UKK1BBU1MgW1dvcmtlcl0gJ3dlYmtpdElEQkN1cnNvcicgaW4gc2VsZiBp
cyB0cnVlCitQQVNTIFtXb3JrZXJdIHdlYmtpdElEQkN1cnNvciA9PSBudWxsIGlzIGZhbHNlCitb
V29ya2VyXSB3ZWJraXRJbmRleGVkREIub3BlbignYmFzaWNzJykKK1BBU1MgW1dvcmtlcl0gJ3Jl
c3VsdCcgaW4gcmVxdWVzdCBpcyB0cnVlCitbV29ya2VyXSBFeHBlY3RpbmcgZXhjZXB0aW9uIGZy
b20gcmVxdWVzdC5yZXN1bHQKK1BBU1MgW1dvcmtlcl0gRXhjZXB0aW9uIHdhcyB0aHJvd24uCitQ
QVNTIFtXb3JrZXJdIGNvZGUgaXMgd2Via2l0SURCRGF0YWJhc2VFeGNlcHRpb24uTk9UX0FMTE9X
RURfRVJSCitQQVNTIFtXb3JrZXJdICdlcnJvckNvZGUnIGluIHJlcXVlc3QgaXMgdHJ1ZQorW1dv
cmtlcl0gRXhwZWN0aW5nIGV4Y2VwdGlvbiBmcm9tIHJlcXVlc3QuZXJyb3JDb2RlCitQQVNTIFtX
b3JrZXJdIEV4Y2VwdGlvbiB3YXMgdGhyb3duLgorUEFTUyBbV29ya2VyXSBjb2RlIGlzIHdlYmtp
dElEQkRhdGFiYXNlRXhjZXB0aW9uLk5PVF9BTExPV0VEX0VSUgorUEFTUyBbV29ya2VyXSAnd2Vi
a2l0RXJyb3JNZXNzYWdlJyBpbiByZXF1ZXN0IGlzIHRydWUKK1tXb3JrZXJdIEV4cGVjdGluZyBl
eGNlcHRpb24gZnJvbSByZXF1ZXN0LndlYmtpdEVycm9yTWVzc2FnZQorUEFTUyBbV29ya2VyXSBF
eGNlcHRpb24gd2FzIHRocm93bi4KK1BBU1MgW1dvcmtlcl0gY29kZSBpcyB3ZWJraXRJREJEYXRh
YmFzZUV4Y2VwdGlvbi5OT1RfQUxMT1dFRF9FUlIKK1BBU1MgW1dvcmtlcl0gJ3NvdXJjZScgaW4g
cmVxdWVzdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIHJlcXVlc3Quc291cmNlIGlzIHdlYmtpdElu
ZGV4ZWREQgorUEFTUyBbV29ya2VyXSAndHJhbnNhY3Rpb24nIGluIHJlcXVlc3QgaXMgdHJ1ZQor
UEFTUyBbV29ya2VyXSByZXF1ZXN0LnRyYW5zYWN0aW9uIGlzIG51bGwKK1BBU1MgW1dvcmtlcl0g
J3JlYWR5U3RhdGUnIGluIHJlcXVlc3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXF1ZXN0LnJl
YWR5U3RhdGUgaXMgd2Via2l0SURCUmVxdWVzdC5MT0FESU5HCitQQVNTIFtXb3JrZXJdICdvbnN1
Y2Nlc3MnIGluIHJlcXVlc3QgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSByZXF1ZXN0Lm9uc3VjY2Vz
cyBpcyBudWxsCitQQVNTIFtXb3JrZXJdICdvbmVycm9yJyBpbiByZXF1ZXN0IGlzIHRydWUKK1BB
U1MgW1dvcmtlcl0gcmVxdWVzdC5vbmVycm9yIGlzIG51bGwKK1BBU1MgW1dvcmtlcl0gcmVxdWVz
dC5MT0FESU5HIGlzIDEKK1BBU1MgW1dvcmtlcl0gcmVxdWVzdC5ET05FIGlzIDIKK1BBU1MgW1dv
cmtlcl0gJ3Jlc3VsdCcgaW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gISFl
dmVudC50YXJnZXQucmVzdWx0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gJ2Vycm9yQ29kZScgaW4g
ZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LmVycm9yQ29k
ZSBpcyAwCitQQVNTIFtXb3JrZXJdICd3ZWJraXRFcnJvck1lc3NhZ2UnIGluIGV2ZW50LnRhcmdl
dCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdldC53ZWJraXRFcnJvck1lc3NhZ2Ug
aXMgdW5kZWZpbmVkLgorUEFTUyBbV29ya2VyXSAnc291cmNlJyBpbiBldmVudC50YXJnZXQgaXMg
dHJ1ZQorUEFTUyBbV29ya2VyXSByZXF1ZXN0LnNvdXJjZSBpcyB3ZWJraXRJbmRleGVkREIKK1BB
U1MgW1dvcmtlcl0gJ3RyYW5zYWN0aW9uJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBb
V29ya2VyXSBldmVudC50YXJnZXQudHJhbnNhY3Rpb24gaXMgbnVsbAorUEFTUyBbV29ya2VyXSAn
cmVhZHlTdGF0ZScgaW4gcmVxdWVzdCBpcyB0cnVlCitQQVNTIFtXb3JrZXJdIGV2ZW50LnRhcmdl
dC5yZWFkeVN0YXRlIGlzIHdlYmtpdElEQlJlcXVlc3QuRE9ORQorUEFTUyBbV29ya2VyXSAnb25z
dWNjZXNzJyBpbiBldmVudC50YXJnZXQgaXMgdHJ1ZQorUEFTUyBbV29ya2VyXSAnb25lcnJvcicg
aW4gZXZlbnQudGFyZ2V0IGlzIHRydWUKK1BBU1MgW1dvcmtlcl0gZXZlbnQudGFyZ2V0LkxPQURJ
TkcgaXMgMQorUEFTUyBbV29ya2VyXSBldmVudC50YXJnZXQuRE9ORSBpcyAyCitQQVNTIHN1Y2Nl
c3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJlZC13b3JrZXJzLmh0bWwgYi9M
YXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9iYXNpY3Mtc2hhcmVkLXdvcmtlcnMuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wNzNmODI3NmQ0YmNhYjc4YTFhMjcxMDUzMTVmNjliMmViZWJiOTVlCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvYmFzaWNzLXNoYXJl
ZC13b3JrZXJzLmh0bWwKQEAgLTAsMCArMSwxMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJlZC5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgorPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8
c2NyaXB0PnN0YXJ0V29ya2VyKCdyZXNvdXJjZXMvYmFzaWNzLmpzJywgdHJ1ZSAvKnNoYXJlZCov
KTs8L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0
LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL3NoYXJlZC5qcyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9zaGFyZWQuanMKaW5kZXggZjQ3Y2UxOTA5MWFk
ODZiZDc0ZmRmZjE4ODhlYzEzMjVkNTU5MzUyMS4uNTBlNWY1NDg3MjFiMjgxNTkzMTk5NzhhNGI2
OGFkY2U0MzQzYWQxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIv
cmVzb3VyY2VzL3NoYXJlZC5qcworKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9y
ZXNvdXJjZXMvc2hhcmVkLmpzCkBAIC0xLDkgKzEsMzUgQEAKIHZhciBqc1Rlc3RJc0FzeW5jID0g
dHJ1ZTsKK2lmIChzZWxmLmltcG9ydFNjcmlwdHMpIHsKKyAgICBpZiAoIXNlbGYucG9zdE1lc3Nh
Z2UpIHsKKyAgICAgIC8vIFNoYXJlZCB3b3JrZXIuCisgICAgICBzZWxmLm9uY29ubmVjdCA9IGZ1
bmN0aW9uKGV2ZW50KSB7CisgICAgICAgIGV2ZW50LnBvcnRzWzBdLm9ubWVzc2FnZSA9IGZ1bmN0
aW9uKGUpIHsKKyAgICAgICAgICBzZWxmLm9ubWVzc2FnZShlKTsKKyAgICAgICAgfQorICAgICAg
ICBzZWxmLnBvc3RNZXNzYWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAgICAgZXZlbnQucG9y
dHNbMF0ucG9zdE1lc3NhZ2UobXNnKTsKKyAgICAgICAgfTsKKyAgICAgICAgLy8gTm93IHRoYXQg
c29tZW9uZSBoYXMgY29ubmVjdCB0byB1cywgb2ZmbG9hZCBvdXIgc3RvcmVkIG1lc3NhZ2VzLgor
ICAgICAgICBpZiAoIXNlbGYucGVuZGluZ01lc3NhZ2VzKQorICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgd2hpbGUgKHNlbGYucGVuZGluZ01lc3NhZ2VzLmxlbmd0aCkgeworICAgICAgICAgIGV2
ZW50LnBvcnRzWzBdLnBvc3RNZXNzYWdlKHNlbGYucGVuZGluZ01lc3NhZ2VzLnNoaWZ0KCkpOwor
ICAgICAgICB9CisgICAgICB9CisgICAgICAvLyBTdG9yZSBtZXNzYWdlcyBmb3Igc2VuZGluZyB1
bnRpbCB3ZSBoYXZlIHNvbWV3aGVyZSB0byBzZW5kIHRoZW0uCisgICAgICBzZWxmLnBvc3RNZXNz
YWdlID0gZnVuY3Rpb24obXNnKSB7CisgICAgICAgIGlmICh0eXBlb2Ygc2VsZi5wZW5kaW5nTWVz
c2FnZXMgPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICBzZWxmLnBlbmRpbmdNZXNzYWdlcyA9
IFtdOworICAgICAgICB9CisgICAgICAgIHNlbGYucGVuZGluZ01lc3NhZ2VzLnB1c2gobXNnKTsK
KyAgICAgIH0KKyAgICB9Cit9CiAKIGZ1bmN0aW9uIGRvbmUoKQogewogICAgIGlzU3VjY2Vzc2Z1
bGx5UGFyc2VkKCk7Ci0gICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICBp
ZiAoc2VsZi5sYXlvdXRUZXN0Q29udHJvbGxlcikKICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xs
ZXIubm90aWZ5RG9uZSgpCiB9CiAKQEAgLTEzLDcgKzM5LDcgQEAgZnVuY3Rpb24gdW5leHBlY3Rl
ZFN1Y2Nlc3NDYWxsYmFjaygpCiAgICAgZG9uZSgpOwogfQogCi1mdW5jdGlvbiB1bmV4cGVjdGVk
RXJyb3JDYWxsYmFjaygpCitmdW5jdGlvbiB1bmV4cGVjdGVkRXJyb3JDYWxsYmFjayhldmVudCkK
IHsKICAgICB0ZXN0RmFpbGVkKCJFcnJvciBmdW5jdGlvbiBjYWxsZWQgdW5leHBlY3RlZGx5OiAo
IiArIGV2ZW50LnRhcmdldC5lcnJvckNvZGUgKyAiKSAiICsgZXZlbnQudGFyZ2V0LndlYmtpdEVy
cm9yTWVzc2FnZSk7CiAgICAgZG9uZSgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129572</attachid>
            <date>2012-02-29 18:14:05 -0800</date>
            <delta_ts>2012-02-29 18:16:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229181404.patch</filename>
            <type>text/plain</type>
            <size>20890</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIwN2ZlODNlOTEwYTMxYTA0MjYyNzZjMjNhNmQ2YzBkNDgzNjhiMDkuLjkwOWIzMzM5NmZhMTc3
ZThjYjc5MDQyODE4NTM2YTQ0ZDEzODllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
NzkxNyBhbmQgcjEwOTE4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdiMGNjMmVmN2M4
ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhkZWUzYTNmNzFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29y
a2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgPSAwOwor
CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkg
PSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFh
MmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4YmMxNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtl
ckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBD
YWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lz
dGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBl
LCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdiZmMxNzEwYzhl
MjljMC4uMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2NyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0luZGV4ZWREQk1v
ZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJbmRleGVkREJN
YWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50SW1wbCogd2Vi
V29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBj
cmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5nJiBtb2RlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBu
YW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAKICAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4KICAgICB2b2lk
IGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2ViV29ya2VyQmFz
ZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsxMTEsMjggQEAg
cHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBtX3dlYldvcmtl
ckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAgICAgaWYgKG1f
d2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMs
IHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVzdWx0KGZhbHNl
KQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGllbnRJbXBsKQor
ICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsKLSAgICAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYldv
cmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAvLyB3ZWJGcmFt
ZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZlLCByZWx5aW5n
IG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBzaG91bGQgYmUg
b2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50ID0gd2ViV29y
a2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFib3V0IHRocmVh
ZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJbmRleGVkREJU
YXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZyYW1lKSwgbmFt
ZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0luZGV4ZWRE
QlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50
KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERC
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IHBycFdlYkZy
YW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICBzdGF0aWMg
dm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNvbW1vbldvcmtl
ckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
bW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZyYW1lID0gcHJw
V2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJ
bXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNvbW1vbkNsaWVu
dCkgewogICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoZmFsc2UsIG1vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgYWxsb3dlZCA9ICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZS5nZXQoKSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgICAgIGJvb2wgYWxsb3dlZCA9IGNvbW1vbkNsaWVudC0+YWxsb3dJbmRleGVkREIo
bmFtZSk7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGFsbG93ZWQsIG1vZGUpOwog
ICAgIH0KIApAQCAtMTQ2LDI5ICsxNDMsMzMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9yZXN1
bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsIGlzIG5l
dmVyIGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgcHJvY2VzcwotICAgIC8vIGlzIGFs
aXZlLiBXZSB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHRvIG5vdGlmeSB0aGUgd29ya2VyIHRo
cmVhZCB0aGF0Ci0gICAgLy8gdGhlIHBlcm1pc3Npb24gcmVzdWx0IGhhcyBiZWVuIHNldC4gVGhl
IHVuZGVybHlpbmcgbWVzc2FnZSBwcm94eSBvYmplY3QKLSAgICAvLyBpcyB2YWxpZCBhcyBsb25n
IGFzIHRoZSB3b3JrZXIgcnVuIGxvb3AgaGFzbid0IHJldHVybmVkCi0gICAgLy8gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB1c2UgdGhlCi0gICAgLy8gV2Vi
V29ya2VyQ2xpZW50SW1wbC4KLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBtX3dlYldvcmtlckNs
aWVudEltcGw7CisgICAgLy8gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHVzZXMgdHdv
IG5vbi10aHJlYWRzYWZlIGNsYXNzZXMgYWNyb3NzCisgICAgLy8gdGhyZWFkczogV2ViV29ya2Vy
QmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIC8vIEluIHRoZSBkZWRpY2F0ZWQg
d29ya2VyIGNhc2UsIHRoZXNlIGFyZSBib3RoIHRoZSBzYW1lIG9iamVjdCBvZiB0eXBlCisgICAg
Ly8gV2ViV29ya2VyQ2xpZW50SW1wbCwgd2hpY2ggaXNuJ3QgZGVsZXRlZCBmb3IgdGhlIGxpZmUg
b2YgdGhlIHJlbmRlcmVyCisgICAgLy8gcHJvY2VzcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHVzZS1hZnRlci1mcmVlcy4KKyAgICAvLyBJbiB0aGUgc2hhcmVkIHdvcmtlciBjYXNl
LCB0aGVzZSBhcmUgb2YgdHlwZSBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZAorICAgIC8vIGNocm9t
aXVtJ3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50UHJveHksIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJl
IGJvdGgKKyAgICAvLyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNwb25zZSB0byBh
IHJlcXVlc3Qgb24gdGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkgYWZ0ZXIgdGhl
IHdvcmtlciBydW4gbG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiBTbyBldmVuIGluCisgICAg
Ly8gdGhlIG1vc3QgaW50ZXJsZWF2ZWQgY2FzZSwgd2UgaGF2ZToKKyAgICAvLyBXIEFsbG93SW5k
ZXhlZERCTWFpblRocmVhZEJyaWRnZSBzY2hlZHVsZXMgYWxsb3dJbmRleGVkREJUYXNrCisgICAg
Ly8gTSB3b3JrZXJSdW5Mb29wIG1hcmtlZCBhcyBraWxsZWQKKyAgICAvLyBXIHJ1bkxvb3Agc3Rv
cHMgYW5kIHNjaGVkdWxlcyBvYmplY3QgZGVsZXRpb24gb24gbWFpbiB0aHJlYWQKKyAgICAvLyBN
IGFsbG93SW5kZXhlZERCVGFzayBjYWxscyBjb21tb25DbGllbnQtPmFsbG93SW5kZXhlZERCKCkK
KyAgICAvLyBNIFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudCBhcmUgZGVs
ZXRlZAorICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKIH07CiAKIGJvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKQogewotICAgIC8vIEZJWE1FOiBCeXBhc3MgY2hlY2tpbmcgZm9yIHBlcm1pc3Npb24g
c28gYXMgbm90IHRvIGJsb2NrIHNoYXJlZCB3b3JrZXIKLSAgICAvLyB0ZXN0aW5nIHVudGlsIGEg
cGVybWlzc2lvbnMgY2hlY2sgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaGFzIHRvIGJlIGZpeGVkCi0g
ICAgLy8gYmVmb3JlIG0xOSBnb2VzIHRvIGJldGEuIGh0dHA6Ly9jcmJ1Zy5jb20vMTEyODU1Ci0g
ICAgaWYgKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNsaWVudElt
cGwgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJDbGllbnRJbXBsKj4oJndvcmtlckNvbnRleHQtPnRo
cmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKKyAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3Jr
ZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9
IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICBTdHJpbmcgbW9kZSA9
IGFsbG93SW5kZXhlZERCTW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICBSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmNyZWF0
ZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBuYW1lKTsKKyAgICBSZWZQdHI8QWxsb3dJbmRl
eGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRC
cmlkZ2U6OmNyZWF0ZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKTsKIAogICAgIC8vIEVpdGhl
ciB0aGUgYnJpZGdlIHJldHVybnMsIG9yIHRoZSBxdWV1ZSBnZXRzIHRlcm1pbmF0ZWQuCiAgICAg
aWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwLm9yaWcgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcC5vcmlnCm5ldyBmaWxlIG1vZGUgMTAwNzU1Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU5M2ZhYTU4ZWZi
NWViMTk2MDIxZTI3ZmUxOTgyN2Y4MjBiY2JmOWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcC5vcmlnCkBAIC0w
LDAgKzEsMjMwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIklEQkZhY3RvcnlC
YWNrZW5kUHJveHkuaCIKKworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorCisjaW5jbHVk
ZSAiQ3Jvc3NUaHJlYWRUYXNrLmgiCisjaW5jbHVkZSAiRE9NU3RyaW5nTGlzdC5oIgorI2luY2x1
ZGUgIklEQkRhdGFiYXNlQmFja2VuZFByb3h5LmgiCisjaW5jbHVkZSAiSURCRGF0YWJhc2VFcnJv
ci5oIgorI2luY2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBs
LmgiCisjaW5jbHVkZSAiV2ViSURCQ2FsbGJhY2tzSW1wbC5oIgorI2luY2x1ZGUgIldlYklEQkRh
dGFiYXNlLmgiCisjaW5jbHVkZSAiV2ViSURCRGF0YWJhc2VFcnJvci5oIgorI2luY2x1ZGUgIldl
YklEQkZhY3RvcnkuaCIKKyNpbmNsdWRlICJXZWJLaXQuaCIKKyNpbmNsdWRlICJwbGF0Zm9ybS9X
ZWJLaXRQbGF0Zm9ybVN1cHBvcnQuaCIKKyNpbmNsdWRlICJXZWJQZXJtaXNzaW9uQ2xpZW50Lmgi
CisjaW5jbHVkZSAicGxhdGZvcm0vV2ViVmVjdG9yLmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwu
aCIKKyNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCisjaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50
SW1wbC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHQuaCIKKyNpbmNsdWRlICJXb3JrZXJMb2Fk
ZXJQcm94eS5oIgorI2luY2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJXb3JrZXJUaHJlYWQuaCIKKworCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKKworbmFtZXNw
YWNlIFdlYktpdCB7CisKK1Bhc3NSZWZQdHI8SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2U+IElE
QkZhY3RvcnlCYWNrZW5kUHJveHk6OmNyZWF0ZSgpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBJREJGYWN0b3J5QmFja2VuZFByb3h5KCkpOworfQorCitJREJGYWN0b3J5QmFja2VuZFByb3h5
OjpJREJGYWN0b3J5QmFja2VuZFByb3h5KCkKKyAgICA6IG1fd2ViSURCRmFjdG9yeSh3ZWJLaXRQ
bGF0Zm9ybVN1cHBvcnQoKS0+aWRiRmFjdG9yeSgpKQoreworfQorCitJREJGYWN0b3J5QmFja2Vu
ZFByb3h5Ojp+SURCRmFjdG9yeUJhY2tlbmRQcm94eSgpCit7Cit9CisKK3ZvaWQgSURCRmFjdG9y
eUJhY2tlbmRQcm94eTo6Z2V0RGF0YWJhc2VOYW1lcyhQYXNzUmVmUHRyPElEQkNhbGxiYWNrcz4g
Y2FsbGJhY2tzLCBQYXNzUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwcnBPcmlnaW4sIEZyYW1lKiBm
cmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhRGlyKQoreworICAgIFdlYlNlY3VyaXR5T3JpZ2luIG9y
aWdpbihwcnBPcmlnaW4pOworICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBXZWJGcmFtZUlt
cGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFt
ZS0+dmlld0ltcGwoKTsKKworICAgIGlmICh3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgJiYg
IXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIod2ViRnJhbWUsICJE
YXRhYmFzZSBMaXN0aW5nIiwgb3JpZ2luKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3Io
V2ViSURCRGF0YWJhc2VFcnJvcigwLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1pc3Npb24gdG8gYWNj
ZXNzIHRoZSBkYXRhYmFzZS4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dl
YklEQkZhY3RvcnktPmdldERhdGFiYXNlTmFtZXMobmV3IFdlYklEQkNhbGxiYWNrc0ltcGwoY2Fs
bGJhY2tzKSwgb3JpZ2luLCB3ZWJGcmFtZSwgZGF0YURpcik7Cit9CisKK3N0YXRpYyBjb25zdCBj
aGFyIGFsbG93SW5kZXhlZERCTW9kZVtdID0gImFsbG93SW5kZXhlZERCTW9kZSI7CisKK2NsYXNz
IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291
bnRlZDxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IHsKK3B1YmxpYzoKKyAgICBzdGF0
aWMgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJX
b3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNlLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmlu
ZyYgbmFtZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKKyAgICB9CisK
KyAgICAvLyBUaGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4K
KyAgICB2b2lkIGNhbmNlbCgpCisgICAgeworICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9t
dXRleCk7CisgICAgICAgIG1fd2ViV29ya2VyQmFzZSA9IDA7CisgICAgfQorCisgICAgYm9vbCBy
ZXN1bHQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fcmVzdWx0OworICAgIH0KKworICAgIC8v
IFRoaXMgbWV0aG9kIGlzIGludm9rZWQgb24gdGhlIG1haW4gdGhyZWFkLgorICAgIHZvaWQgc2ln
bmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBjb25zdCBTdHJpbmcmIG1vZGUpCisgICAgeworICAg
ICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7CisgICAgICAgIGlmIChtX3dlYldvcmtl
ckJhc2UpCisgICAgICAgICAgICBtX3dlYldvcmtlckJhc2UtPnBvc3RUYXNrRm9yTW9kZVRvV29y
a2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQp
LCBtb2RlKTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgQWxsb3dJbmRleGVkREJNYWluVGhyZWFk
QnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0cmluZyYgbW9kZSwg
Y29uc3QgU3RyaW5nJiBuYW1lKQorICAgICAgICA6IG1fcmVzdWx0KGZhbHNlKQorICAgICAgICAs
IG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQorICAgIHsKKyAgICAgICAgV2ViQ29tbW9u
V29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQgPSB3ZWJXb3JrZXJCYXNlLT5jb21tb25DbGllbnQo
KTsKKyAgICAgICAgTE9HX0VSUk9SKCJEaXNwYXRjaGluZyBhbGxvd0luZGV4ZWREQlRhc2soY29t
bW9uQ2xpZW50KSB0byBtYWluIHRocmVhZCIpOworICAgICAgICAvLyBTZWUgbm90ZSBhYm91dCB0
aHJlYWQtc2FmZXR5IGJlbG93LgorICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tU
b01haW5UaHJlYWQoCisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmFsbG93SW5kZXhl
ZERCVGFzaywgdGhpcywgV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb21tb25DbGll
bnQpLCBuYW1lLCBtb2RlKSk7CisgICAgfQorCisgICAgc3RhdGljIHZvaWQgYWxsb3dJbmRleGVk
REJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEFsbG93SW5kZXhlZERC
TWFpblRocmVhZEJyaWRnZT4gYnJpZGdlLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNs
aWVudCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIG1vZGUpCisgICAgeworICAg
ICAgICBpZiAoIWNvbW1vbkNsaWVudCkgeworICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21w
bGV0ZWQoZmFsc2UsIG1vZGUpOworPDw8PDw8PCBIRUFECisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIH0KKz09PT09PT0KKyAgICAgICAgTE9HX0VSUk9SKCJ1c2luZyBjb21tb25DbGllbnQg
YWthIFdlYlNoYXJlZFdvcmtlckNsaWVudFByb3h5Iik7Cis+Pj4+Pj4+IDc5OWM0NmYuLi4gZGVi
dWcgY29kZQorICAgICAgICBib29sIGFsbG93ZWQgPSBjb21tb25DbGllbnQtPmFsbG93SW5kZXhl
ZERCKG5hbWUpOworICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChhbGxvd2VkLCBtb2Rl
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBkaWRDb21wbGV0ZShTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LCBQYXNzUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZT4gYnJpZGdlLCBib29sIHJlc3VsdCkKKyAgICB7CisgICAgICAgIGJyaWRnZS0+bV9yZXN1bHQg
PSByZXN1bHQ7CisgICAgfQorCisgICAgYm9vbCBtX3Jlc3VsdDsKKyAgICBNdXRleCBtX211dGV4
OworICAgIC8vIEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSB1c2VzIHR3byBub24tdGhy
ZWFkc2FmZSBjbGFzc2VzIGFjcm9zcworICAgIC8vIHRocmVhZHM6IFdlYldvcmtlckJhc2UgYW5k
IFdlYkNvbW1vbldvcmtlckNsaWVudC4KKyAgICAvLyBJbiB0aGUgZGVkaWNhdGVkIHdvcmtlciBj
YXNlLCB0aGVzZSBhcmUgYm90aCB0aGUgc2FtZSBvYmplY3Qgb2YgdHlwZQorICAgIC8vIFdlYldv
cmtlckNsaWVudEltcGwsIHdoaWNoIGlzbid0IGRlbGV0ZWQgZm9yIHRoZSBsaWZlIG9mIHRoZSBy
ZW5kZXJlcgorICAgIC8vIHByb2Nlc3Mgc28gd2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1
c2UtYWZ0ZXItZnJlZXMuCisgICAgLy8gSW4gdGhlIHNoYXJlZCB3b3JrZXIgY2FzZSwgdGhlc2Ug
YXJlIG9mIHR5cGUgV2ViU2hhcmVkV29ya2VySW1wbCBhbmQKKyAgICAvLyBjaHJvbWl1bSdzIFdl
YlNoYXJlZFdvcmtlckNsaWVudFByb3h5LCByZXNwZWN0aXZlbHkuIFRoZXNlIGFyZSBib3RoCisg
ICAgLy8gZGVsZXRlZCBvbiB0aGUgbWFpbiB0aHJlYWQgaW4gcmVzcG9uc2UgdG8gYSByZXF1ZXN0
IG9uIHRoZSB3b3JrZXIgdGhyZWFkLAorICAgIC8vIGJ1dCBvbmx5IGFmdGVyIHRoZSB3b3JrZXIg
cnVuIGxvb3Agc3RvcHMgcHJvY2Vzc2luZyB0YXNrcy4gU28gZXZlbiBpbgorICAgIC8vIHRoZSBt
b3N0IGludGVybGVhdmVkIGNhc2UsIHdlIGhhdmU6CisgICAgLy8gVyBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2Ugc2NoZWR1bGVzIGFsbG93SW5kZXhlZERCVGFzaworICAgIC8vIE0gd29y
a2VyUnVuTG9vcCBtYXJrZWQgYXMga2lsbGVkCisgICAgLy8gVyBydW5Mb29wIHN0b3BzIGFuZCBz
Y2hlZHVsZXMgb2JqZWN0IGRlbGV0aW9uIG9uIG1haW4gdGhyZWFkCisgICAgLy8gTSBhbGxvd0lu
ZGV4ZWREQlRhc2sgY2FsbHMgY29tbW9uQ2xpZW50LT5hbGxvd0luZGV4ZWREQigpCisgICAgLy8g
TSBXZWJXb3JrZXJCYXNlIGFuZCBXZWJDb21tb25Xb3JrZXJDbGllbnQgYXJlIGRlbGV0ZWQKKyAg
ICAvLworICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKK307CisKK2Jvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKQoreworCisgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSA9IHN0YXRpY19j
YXN0PFdlYldvcmtlckJhc2UqPigmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRl
clByb3h5KCkpOworICAgIFdvcmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJDb250ZXh0LT50
aHJlYWQoKS0+cnVuTG9vcCgpOworCisgICAgU3RyaW5nIG1vZGUgPSBhbGxvd0luZGV4ZWREQk1v
ZGU7CisgICAgbW9kZS5hcHBlbmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJ
ZCgpKSk7CisgICAgUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdl
ID0gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpjcmVhdGUod2ViV29ya2VyQmFzZSwg
bW9kZSwgbmFtZSk7CisKKyAgICAvLyBFaXRoZXIgdGhlIGJyaWRnZSByZXR1cm5zLCBvciB0aGUg
cXVldWUgZ2V0cyB0ZXJtaW5hdGVkLgorICAgIGlmIChydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJD
b250ZXh0LCBtb2RlKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CisgICAgICAgIGJyaWRn
ZS0+Y2FuY2VsKCk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgTE9HX0VSUk9S
KCJBYm91dCB0byByZXR1cm4gJWQgZnJvbSBJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0lE
QkZyb21Xb3JrZXJUaHJlYWQiLCAoaW50KWJyaWRnZS0+cmVzdWx0KCkpOworCisgICAgcmV0dXJu
IGJyaWRnZS0+cmVzdWx0KCk7Cit9CisKK3ZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3Bl
bkZyb21Xb3JrZXIoY29uc3QgU3RyaW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhbGxiYWNrcywg
UGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2luLCBXb3JrZXJDb250ZXh0KiBjb250
ZXh0LCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit7CisjaWYgRU5BQkxFKFdPUktFUlMpCisgICAg
V2ViU2VjdXJpdHlPcmlnaW4gb3JpZ2luKHBycE9yaWdpbik7CisgICAgaWYgKCFhbGxvd0lEQkZy
b21Xb3JrZXJUaHJlYWQoY29udGV4dCwgbmFtZSwgb3JpZ2luKSkgeworICAgICAgICBjYWxsYmFj
a3MtPm9uRXJyb3IoV2ViSURCRGF0YWJhc2VFcnJvcigwLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1p
c3Npb24gdG8gYWNjZXNzIHRoZSBkYXRhYmFzZS4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBs
KGNhbGxiYWNrcyksIG9yaWdpbiwgLyp3ZWJGcmFtZSovMCwgZGF0YURpcik7CisjZW5kaWYKK30K
Kwordm9pZCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjpvcGVuKGNvbnN0IFN0cmluZyYgbmFtZSwg
SURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIFBhc3NSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHBycE9y
aWdpbiwgRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFEaXIpCit7CisgICAgV2ViU2Vj
dXJpdHlPcmlnaW4gb3JpZ2luKHBycE9yaWdpbik7CisgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFt
ZSA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGZyYW1lKTsKKyAgICBXZWJWaWV3SW1wbCogd2Vi
VmlldyA9IHdlYkZyYW1lLT52aWV3SW1wbCgpOworICAgIGlmICh3ZWJWaWV3LT5wZXJtaXNzaW9u
Q2xpZW50KCkgJiYgIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIo
d2ViRnJhbWUsIG5hbWUsIG9yaWdpbikpIHsKKyAgICAgICAgY2FsbGJhY2tzLT5vbkVycm9yKFdl
YklEQkRhdGFiYXNlRXJyb3IoMCwgIlRoZSB1c2VyIGRlbmllZCBwZXJtaXNzaW9uIHRvIGFjY2Vz
cyB0aGUgZGF0YWJhc2UuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV93ZWJJ
REJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyks
IG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOworfQorCit2b2lkIElEQkZhY3RvcnlCYWNrZW5k
UHJveHk6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFN0cmluZyYgbmFtZSwgUGFzc1JlZlB0cjxJREJD
YWxsYmFja3M+IGNhbGxiYWNrcywgUGFzc1JlZlB0cjxTZWN1cml0eU9yaWdpbj4gcHJwT3JpZ2lu
LCBGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YURpcikKK3sKKyAgICBXZWJTZWN1cml0
eU9yaWdpbiBvcmlnaW4ocHJwT3JpZ2luKTsKKyAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0g
V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZnJhbWUpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3
ID0gd2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgaWYgKHdlYlZpZXctPnBlcm1pc3Npb25DbGll
bnQoKSAmJiAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQih3ZWJG
cmFtZSwgbmFtZSwgb3JpZ2luKSkgeworICAgICAgICBjYWxsYmFja3MtPm9uRXJyb3IoV2ViSURC
RGF0YWJhc2VFcnJvcigwLCAiVGhlIHVzZXIgZGVuaWVkIHBlcm1pc3Npb24gdG8gYWNjZXNzIHRo
ZSBkYXRhYmFzZS4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtX3dlYklEQkZh
Y3RvcnktPmRlbGV0ZURhdGFiYXNlKG5hbWUsIG5ldyBXZWJJREJDYWxsYmFja3NJbXBsKGNhbGxi
YWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIpOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCAxZGIy
ZDFkZDk3M2I2ODk4ZDAyZjI4M2U5ODYxNzVhYjNmMzg2YTkxLi5hNjlmMDFhNWZhNWY0YmQ3MWM4
NjUxZWZlNjQ5NTM4ZWE2NDIwMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcApAQCAtMjE0LDYgKzIxNCwxNiBAQCBib29sIFdl
YldvcmtlckNsaWVudEltcGw6OmFsbG93RGF0YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJp
bmcmIG5hbWUsIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gIXdlYlZp
ZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFs
bG93RGF0YWJhc2UobV93ZWJGcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
OwogfQorCitib29sIFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93SW5kZXhlZERCKGNvbnN0IFdl
YlN0cmluZyYgbmFtZSkKK3sKKyAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9
IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2Vi
Vmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQihtX3dlYkZyYW1lLCBuYW1l
LCBXZWJTZWN1cml0eU9yaWdpbigpKTsKK30KICAKIFdlYlZpZXcqIFdlYldvcmtlckNsaWVudElt
cGw6OnZpZXcoKSBjb25zdCAKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuaAppbmRleCAzZDVkYWIwZGUyZjVjMzFhYzZjZDdmMDJiNzI4ZTg5
ZWRkMjNkNmU3Li42NzMyMDhmYjYwMzU1OTdhODU3MTc0NDFmNThiNDAyMTZkMDNjN2RhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBA
IC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ZpbGVTeXN0
ZW0oKTsKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlw
ZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CisgICAgdmlydHVhbCBib29sIGFsbG93
SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBXZWJDb21tZW50V29y
a2VyQmFzZSBtZXRob2RzOgogICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21t
b25DbGllbnQoKSB7IHJldHVybiB0aGlzOyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129573</attachid>
            <date>2012-02-29 18:16:29 -0800</date>
            <delta_ts>2012-03-01 16:56:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120229181628.patch</filename>
            <type>text/plain</type>
            <size>10943</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDIwN2ZlODNlOTEwYTMxYTA0MjYyNzZjMjNhNmQ2YzBkNDgzNjhiMDkuLjkwOWIzMzM5NmZhMTc3
ZThjYjc5MDQyODE4NTM2YTQ0ZDEzODllZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yOCAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2
aWV3LmJvdEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEw
NzkxNyBhbmQgcjEwOTE4OC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdiMGNjMmVmN2M4
ZmY2OGZiYWI4ZThiNDMwYy4uZjg3M2IzYWNmNDgyNDBkZjRiYTFkMzBhOThkNDhkZWUzYTNmNzFj
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29y
a2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9u
V29ya2VyQ2xpZW50LmgKQEAgLTU0LDYgKzU0LDggQEAgcHVibGljOgogCiAgICAgLy8gQ2FsbGVk
IG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4K
ICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKikgPSAwOwor
CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkg
PSAwOwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTaGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlNoYXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFh
MmZjYmQ5MzM3ZDcuLjk4NTBlZGEyYjU2ZjJjZWFmOGUzZDI1OTU2YWJhYmQ2Zjg4YmMxNGIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNs
aWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtl
ckNsaWVudC5oCkBAIC04OCw2ICs4OCwxMSBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVl
OwogICAgIH0KIAorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJp
bmcmIG5hbWUpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICAvLyBD
YWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lz
dGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBl
LCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKQog
ICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlC
YWNrZW5kUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJh
Y2tlbmRQcm94eS5jcHAKaW5kZXggYTFjY2U0NWIwYjQ4NDkwNDcyNWU0ZWNhYTdiZmMxNzEwYzhl
MjljMC4uMTQ5YmZlMTJhMGUzOTY3M2Y3YjQ2NWFmNmI5N2QxMTBmM2RjZDU2NyAxMDA3NTUKLS0t
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5j
cHAKQEAgLTkwLDE2ICs5MCwxNiBAQCBzdGF0aWMgY29uc3QgY2hhciBhbGxvd0luZGV4ZWREQk1v
ZGVbXSA9ICJhbGxvd0luZGV4ZWREQk1vZGUiOwogCiBjbGFzcyBBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2UgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dJbmRleGVkREJN
YWluVGhyZWFkQnJpZGdlPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJ
bmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViV29ya2VyQ2xpZW50SW1wbCogd2Vi
V29ya2VyQ2xpZW50SW1wbCwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUp
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBj
cmVhdGUoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29uc3QgU3RyaW5nJiBtb2RlLCBj
b25zdCBTdHJpbmcmIG5hbWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBu
YW1lKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgQWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpKTsKICAgICB9CiAKICAgICAvLyBU
aGVzZSBtZXRob2RzIGFyZSBpbnZva2VkIG9uIHRoZSB3b3JrZXIgY29udGV4dC4KICAgICB2b2lk
IGNhbmNlbCgpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbCA9IDA7CisgICAgICAgIG1fd2ViV29ya2VyQmFz
ZSA9IDA7CiAgICAgfQogCiAgICAgYm9vbCByZXN1bHQoKQpAQCAtMTExLDMxICsxMTEsMjggQEAg
cHVibGljOgogICAgIHZvaWQgc2lnbmFsQ29tcGxldGVkKGJvb2wgcmVzdWx0LCBjb25zdCBTdHJp
bmcmIG1vZGUpCiAgICAgewogICAgICAgICBNdXRleExvY2tlciBsb2NrZXIobV9tdXRleCk7Ci0g
ICAgICAgIGlmIChtX3dlYldvcmtlckNsaWVudEltcGwpCi0gICAgICAgICAgICBtX3dlYldvcmtl
ckNsaWVudEltcGwtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFj
a1Rhc2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKKyAgICAgICAgaWYgKG1f
d2ViV29ya2VyQmFzZSkKKyAgICAgICAgICAgIG1fd2ViV29ya2VyQmFzZS0+cG9zdFRhc2tGb3JN
b2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMs
IHJlc3VsdCksIG1vZGUpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xpZW50SW1wbCwg
Y29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCisgICAgQWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2UsIGNvbnN0IFN0
cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICA6IG1fcmVzdWx0KGZhbHNl
KQotICAgICAgICAsIG1fd2ViV29ya2VyQ2xpZW50SW1wbCh3ZWJXb3JrZXJDbGllbnRJbXBsKQor
ICAgICAgICAsIG1fd2ViV29ya2VyQmFzZSh3ZWJXb3JrZXJCYXNlKQogICAgIHsKLSAgICAgICAg
V2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KHdlYldv
cmtlckNsaWVudEltcGwtPnZpZXcoKS0+bWFpbkZyYW1lKCkpOwotICAgICAgICAvLyB3ZWJGcmFt
ZSBpcyBub3QgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSBwcm9jZXNzIGlzIGFsaXZlLCByZWx5aW5n
IG9uCi0gICAgICAgIC8vIGl0IHRvIGV4aXN0IG9uIHRoZSBtYWluIHRocmVhZCBzaG91bGQgYmUg
b2suCisgICAgICAgIFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50ID0gd2ViV29y
a2VyQmFzZS0+Y29tbW9uQ2xpZW50KCk7CisgICAgICAgIC8vIFNlZSBub3RlIGFib3V0IHRocmVh
ZC1zYWZldHkgYmVsb3cuCiAgICAgICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFp
blRocmVhZCgKLSAgICAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmYWxsb3dJbmRleGVkREJU
YXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHdlYkZyYW1lKSwgbmFt
ZSwgbW9kZSkpOworICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0luZGV4ZWRE
QlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3MoY29tbW9uQ2xpZW50
KSwgbmFtZSwgbW9kZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERC
VGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgUGFzc1JlZlB0cjxXZWJGcmFtZUltcGw+IHBycFdlYkZy
YW1lLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgbW9kZSkKKyAgICBzdGF0aWMg
dm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NSZWZQ
dHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFdlYkNvbW1vbldvcmtl
ckNsaWVudCogY29tbW9uQ2xpZW50LCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYg
bW9kZSkKICAgICB7Ci0gICAgICAgIFJlZlB0cjxXZWJGcmFtZUltcGw+IHdlYkZyYW1lID0gcHJw
V2ViRnJhbWU7Ci0gICAgICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gd2ViRnJhbWUtPnZpZXdJ
bXBsKCk7Ci0gICAgICAgIGlmICghd2ViVmlldykgeworICAgICAgICBpZiAoIWNvbW1vbkNsaWVu
dCkgewogICAgICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoZmFsc2UsIG1vZGUpOwog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIGJvb2wgYWxsb3dlZCA9ICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQih3ZWJGcmFtZS5nZXQoKSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4o
KSk7CisgICAgICAgIGJvb2wgYWxsb3dlZCA9IGNvbW1vbkNsaWVudC0+YWxsb3dJbmRleGVkREIo
bmFtZSk7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKGFsbG93ZWQsIG1vZGUpOwog
ICAgIH0KIApAQCAtMTQ2LDI5ICsxNDMsMzMgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgbV9yZXN1
bHQ7CiAgICAgTXV0ZXggbV9tdXRleDsKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsIGlzIG5l
dmVyIGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcmVuZGVyZXIgcHJvY2VzcwotICAgIC8vIGlzIGFs
aXZlLiBXZSB1c2UgaXQgb24gdGhlIG1haW4gdGhyZWFkIHRvIG5vdGlmeSB0aGUgd29ya2VyIHRo
cmVhZCB0aGF0Ci0gICAgLy8gdGhlIHBlcm1pc3Npb24gcmVzdWx0IGhhcyBiZWVuIHNldC4gVGhl
IHVuZGVybHlpbmcgbWVzc2FnZSBwcm94eSBvYmplY3QKLSAgICAvLyBpcyB2YWxpZCBhcyBsb25n
IGFzIHRoZSB3b3JrZXIgcnVuIGxvb3AgaGFzbid0IHJldHVybmVkCi0gICAgLy8gTWVzc2FnZVF1
ZXVlVGVybWluYXRlZCwgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndCB1c2UgdGhlCi0gICAgLy8gV2Vi
V29ya2VyQ2xpZW50SW1wbC4KLSAgICBXZWJXb3JrZXJDbGllbnRJbXBsKiBtX3dlYldvcmtlckNs
aWVudEltcGw7CisgICAgLy8gQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHVzZXMgdHdv
IG5vbi10aHJlYWRzYWZlIGNsYXNzZXMgYWNyb3NzCisgICAgLy8gdGhyZWFkczogV2ViV29ya2Vy
QmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50LgorICAgIC8vIEluIHRoZSBkZWRpY2F0ZWQg
d29ya2VyIGNhc2UsIHRoZXNlIGFyZSBib3RoIHRoZSBzYW1lIG9iamVjdCBvZiB0eXBlCisgICAg
Ly8gV2ViV29ya2VyQ2xpZW50SW1wbCwgd2hpY2ggaXNuJ3QgZGVsZXRlZCBmb3IgdGhlIGxpZmUg
b2YgdGhlIHJlbmRlcmVyCisgICAgLy8gcHJvY2VzcyBzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5
IGFib3V0IHVzZS1hZnRlci1mcmVlcy4KKyAgICAvLyBJbiB0aGUgc2hhcmVkIHdvcmtlciBjYXNl
LCB0aGVzZSBhcmUgb2YgdHlwZSBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZAorICAgIC8vIGNocm9t
aXVtJ3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50UHJveHksIHJlc3BlY3RpdmVseS4gVGhlc2UgYXJl
IGJvdGgKKyAgICAvLyBkZWxldGVkIG9uIHRoZSBtYWluIHRocmVhZCBpbiByZXNwb25zZSB0byBh
IHJlcXVlc3Qgb24gdGhlIHdvcmtlciB0aHJlYWQsCisgICAgLy8gYnV0IG9ubHkgYWZ0ZXIgdGhl
IHdvcmtlciBydW4gbG9vcCBzdG9wcyBwcm9jZXNzaW5nIHRhc2tzLiBTbyBldmVuIGluCisgICAg
Ly8gdGhlIG1vc3QgaW50ZXJsZWF2ZWQgY2FzZSwgd2UgaGF2ZToKKyAgICAvLyBXIEFsbG93SW5k
ZXhlZERCTWFpblRocmVhZEJyaWRnZSBzY2hlZHVsZXMgYWxsb3dJbmRleGVkREJUYXNrCisgICAg
Ly8gTSB3b3JrZXJSdW5Mb29wIG1hcmtlZCBhcyBraWxsZWQKKyAgICAvLyBXIHJ1bkxvb3Agc3Rv
cHMgYW5kIHNjaGVkdWxlcyBvYmplY3QgZGVsZXRpb24gb24gbWFpbiB0aHJlYWQKKyAgICAvLyBN
IGFsbG93SW5kZXhlZERCVGFzayBjYWxscyBjb21tb25DbGllbnQtPmFsbG93SW5kZXhlZERCKCkK
KyAgICAvLyBNIFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudCBhcmUgZGVs
ZXRlZAorICAgIFdlYldvcmtlckJhc2UqIG1fd2ViV29ya2VyQmFzZTsKIH07CiAKIGJvb2wgSURC
RmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJREJGcm9tV29ya2VyVGhyZWFkKFdvcmtlckNvbnRl
eHQqIHdvcmtlckNvbnRleHQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgV2ViU2VjdXJpdHlP
cmlnaW4mKQogewotICAgIC8vIEZJWE1FOiBCeXBhc3MgY2hlY2tpbmcgZm9yIHBlcm1pc3Npb24g
c28gYXMgbm90IHRvIGJsb2NrIHNoYXJlZCB3b3JrZXIKLSAgICAvLyB0ZXN0aW5nIHVudGlsIGEg
cGVybWlzc2lvbnMgY2hlY2sgaXMgaW1wbGVtZW50ZWQuIFRoaXMgaGFzIHRvIGJlIGZpeGVkCi0g
ICAgLy8gYmVmb3JlIG0xOSBnb2VzIHRvIGJldGEuIGh0dHA6Ly9jcmJ1Zy5jb20vMTEyODU1Ci0g
ICAgaWYgKHdvcmtlckNvbnRleHQtPmlzU2hhcmVkV29ya2VyQ29udGV4dCgpKQotICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAotICAgIFdlYldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNsaWVudElt
cGwgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJDbGllbnRJbXBsKj4oJndvcmtlckNvbnRleHQtPnRo
cmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKKyAgICBXZWJXb3JrZXJCYXNlKiB3ZWJXb3Jr
ZXJCYXNlID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFzZSo+KCZ3b3JrZXJDb250ZXh0LT50aHJl
YWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CiAgICAgV29ya2VyUnVuTG9vcCYgcnVuTG9vcCA9
IHdvcmtlckNvbnRleHQtPnRocmVhZCgpLT5ydW5Mb29wKCk7CiAKICAgICBTdHJpbmcgbW9kZSA9
IGFsbG93SW5kZXhlZERCTW9kZTsKICAgICBtb2RlLmFwcGVuZChTdHJpbmc6Om51bWJlcihydW5M
b29wLmNyZWF0ZVVuaXF1ZUlkKCkpKTsKLSAgICBSZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhy
ZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmNyZWF0
ZSh3ZWJXb3JrZXJDbGllbnRJbXBsLCBtb2RlLCBuYW1lKTsKKyAgICBSZWZQdHI8QWxsb3dJbmRl
eGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UgPSBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRC
cmlkZ2U6OmNyZWF0ZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1lKTsKIAogICAgIC8vIEVpdGhl
ciB0aGUgYnJpZGdlIHJldHVybnMsIG9yIHRoZSBxdWV1ZSBnZXRzIHRlcm1pbmF0ZWQuCiAgICAg
aWYgKHJ1bkxvb3AucnVuSW5Nb2RlKHdvcmtlckNvbnRleHQsIG1vZGUpID09IE1lc3NhZ2VRdWV1
ZVRlcm1pbmF0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggMWRiMmQxZGQ5NzNiNjg5OGQwMmYyODNlOTg2MTc1YWIz
ZjM4NmE5MS4uYTY5ZjAxYTVmYTVmNGJkNzFjODY1MWVmZTY0OTUzOGVhNjQyMDJhOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAK
QEAgLTIxNCw2ICsyMTQsMTYgQEAgYm9vbCBXZWJXb3JrZXJDbGllbnRJbXBsOjphbGxvd0RhdGFi
YXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdAogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgcmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2Vi
Vmlldy0+cGVybWlzc2lvbkNsaWVudCgpLT5hbGxvd0RhdGFiYXNlKG1fd2ViRnJhbWUsIG5hbWUs
IGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsKIH0KKworYm9vbCBXZWJXb3JrZXJDbGllbnRJ
bXBsOjphbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpCit7CisgICAgaWYgKG1f
cHJveHktPmFza2VkVG9UZXJtaW5hdGUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFdl
YktpdDo6V2ViVmlld0ltcGwqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT52aWV3SW1wbCgpOworICAg
IGlmICghd2ViVmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiAhd2ViVmll
dy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxs
b3dJbmRleGVkREIobV93ZWJGcmFtZSwgbmFtZSwgV2ViU2VjdXJpdHlPcmlnaW4oKSk7Cit9CiAg
CiBXZWJWaWV3KiBXZWJXb3JrZXJDbGllbnRJbXBsOjp2aWV3KCkgY29uc3QgCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmggYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKaW5kZXggM2Q1
ZGFiMGRlMmY1YzMxYWM2Y2Q3ZjAyYjcyOGU4OWVkZDIzZDZlNy4uNjczMjA4ZmI2MDM1NTk3YTg1
NzE3NDQxZjU4YjQwMjE2ZDAzYzdkYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYldvcmtlckNsaWVudEltcGwuaApAQCAtMTA0LDYgKzEwNCw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIGJvb2wgYWxsb3dGaWxlU3lzdGVtKCk7CiAgICAgdmlydHVhbCB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopOworICAgIHZpcnR1YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5h
bWUpOwogCiAgICAgLy8gV2ViQ29tbWVudFdvcmtlckJhc2UgbWV0aG9kczoKICAgICB2aXJ0dWFs
IFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgeyByZXR1cm4gdGhpczsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129776</attachid>
            <date>2012-03-01 16:56:38 -0800</date>
            <delta_ts>2012-03-02 15:17:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120301165637.patch</filename>
            <type>text/plain</type>
            <size>11005</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM4OTRlZTY0NGFmYjZiMzkwYmQ0ZTVkZWI2ZmIxYzQ1MmExODNkM2UuLjY5ODIzYjEyMzlhZDEx
MjhmNzI3MTI4ZDA1YTdjZTY1Y2NhYmMwZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHB1YmxpYy9X
ZWJDb21tb25Xb3JrZXJDbGllbnQuaDoKKyAgICAgICAgKFdlYkNvbW1vbldvcmtlckNsaWVudCk6
CisgICAgICAgICogcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5oOgorICAgICAgICAoV2Vi
S2l0OjpXZWJTaGFyZWRXb3JrZXJDbGllbnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKFdl
YlNoYXJlZFdvcmtlckNsaWVudCk6CisgICAgICAgICogc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6
OmNyZWF0ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRn
ZTo6Y2FuY2VsKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJp
ZGdlOjpzaWduYWxDb21wbGV0ZWQpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAg
IChBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAg
IChXZWJLaXQ6OklEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdvcmtlclRocmVh
ZCk6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmg6CisgICAgICAgIChXZWJX
b3JrZXJDbGllbnRJbXBsKToKKwogMjAxMi0wMi0yOSAgRGFuYSBKYW5zZW5zICA8ZGFuYWtqQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIERvbid0IGxldCBpbnZhbGlkYXRpb24g
Zm9yIG5leHQgZnJhbWUgcHJldmVudCB0aWxlIHVwbG9hZApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAppbmRleCAyZmZiNTRk
NTdhM2YzN2IwY2MyZWY3YzhmZjY4ZmJhYjhlOGI0MzBjLi5mNzFiMjJlNjQ4MjhlYzcxMTQyYjVl
OTBmNTc0NzBiYjU5NTc5NGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaApAQCAtNTQsNiArNTQsOSBAQCBwdWJsaWM6
CiAKICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3Blbmlu
ZyBhIGZpbGUgc3lzdGVtLgogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxl
U3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1D
YWxsYmFja3MqKSA9IDA7CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVh
ZCBiZWZvcmUgb3BlbmluZyBhbiBpbmRleGVkIGRhdGFiYXNlLgorICAgIHZpcnR1YWwgYm9vbCBh
bGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpID0gMDsKIH07CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQu
aAppbmRleCBhMDg1YTNlYTJkYjc5ODRmMjNiZjk3MDYyOWMxYTJmY2JkOTMzN2Q3Li4xMTg4MzBi
NDc4MzIxOTU3OGQ4YzE3ZTllYjJkMzUyNjVmZTgxNjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRXb3JrZXJDbGllbnQuaApAQCAtODgsNiAr
ODgsOCBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAorICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0luZGV4ZWREQihjb25zdCBXZWJTdHJpbmcmIG5hbWUpID0gMDsKKwogICAg
IC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmls
ZSBzeXN0ZW0uCiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06
OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvSURCRmFj
dG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0
b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBhMWNjZTQ1YjBiNDg0OTA0NzI1ZTRlY2FhN2JmYzE3
MTBjOGUyOWMwLi4xNDliZmUxMmEwZTM5NjczZjdiNDY1YWY2Yjk3ZDExMGYzZGNkNTY3IDEwMDc1
NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFBy
b3h5LmNwcApAQCAtOTAsMTYgKzkwLDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyIGFsbG93SW5kZXhl
ZERCTW9kZVtdID0gImFsbG93SW5kZXhlZERCTW9kZSI7CiAKIGNsYXNzIEFsbG93SW5kZXhlZERC
TWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxBbGxvd0luZGV4
ZWREQk1haW5UaHJlYWRCcmlkZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxB
bGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJXb3JrZXJDbGllbnRJbXBs
KiB3ZWJXb3JrZXJDbGllbnRJbXBsLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYg
bmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlk
Z2U+IGNyZWF0ZShXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNlLCBjb25zdCBTdHJpbmcmIG1v
ZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlKHdlYldvcmtlckNsaWVudEltcGwsIG1v
ZGUsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2Uod2ViV29ya2VyQmFzZSwgbW9kZSwgbmFtZSkpOwogICAgIH0KIAogICAg
IC8vIFRoZXNlIG1ldGhvZHMgYXJlIGludm9rZWQgb24gdGhlIHdvcmtlciBjb250ZXh0LgogICAg
IHZvaWQgY2FuY2VsKCkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4
KTsKLSAgICAgICAgbV93ZWJXb3JrZXJDbGllbnRJbXBsID0gMDsKKyAgICAgICAgbV93ZWJXb3Jr
ZXJCYXNlID0gMDsKICAgICB9CiAKICAgICBib29sIHJlc3VsdCgpCkBAIC0xMTEsMzEgKzExMSwy
OCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaWduYWxDb21wbGV0ZWQoYm9vbCByZXN1bHQsIGNvbnN0
IFN0cmluZyYgbW9kZSkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tlcihtX211dGV4
KTsKLSAgICAgICAgaWYgKG1fd2ViV29ya2VyQ2xpZW50SW1wbCkKLSAgICAgICAgICAgIG1fd2Vi
V29ya2VyQ2xpZW50SW1wbC0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KGNyZWF0ZUNh
bGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMsIHJlc3VsdCksIG1vZGUpOworICAgICAgICBp
ZiAobV93ZWJXb3JrZXJCYXNlKQorICAgICAgICAgICAgbV93ZWJXb3JrZXJCYXNlLT5wb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwg
dGhpcywgcmVzdWx0KSwgbW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFsbG93SW5kZXhl
ZERCTWFpblRocmVhZEJyaWRnZShXZWJXb3JrZXJDbGllbnRJbXBsKiB3ZWJXb3JrZXJDbGllbnRJ
bXBsLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAgICBBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSwgY29u
c3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDogbV9yZXN1bHQo
ZmFsc2UpCi0gICAgICAgICwgbV93ZWJXb3JrZXJDbGllbnRJbXBsKHdlYldvcmtlckNsaWVudElt
cGwpCisgICAgICAgICwgbV93ZWJXb3JrZXJCYXNlKHdlYldvcmtlckJhc2UpCiAgICAgewotICAg
ICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJhbWVJbXBsKj4o
d2ViV29ya2VyQ2xpZW50SW1wbC0+dmlldygpLT5tYWluRnJhbWUoKSk7Ci0gICAgICAgIC8vIHdl
YkZyYW1lIGlzIG5vdCBkZWxldGVkIGFzIGxvbmcgYXMgdGhlIHByb2Nlc3MgaXMgYWxpdmUsIHJl
bHlpbmcgb24KLSAgICAgICAgLy8gaXQgdG8gZXhpc3Qgb24gdGhlIG1haW4gdGhyZWFkIHNob3Vs
ZCBiZSBvay4KKyAgICAgICAgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQgPSB3
ZWJXb3JrZXJCYXNlLT5jb21tb25DbGllbnQoKTsKKyAgICAgICAgLy8gU2VlIG5vdGUgYWJvdXQg
dGhyZWFkLXNhZmV0eSBiZWxvdy4KICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNr
VG9NYWluVGhyZWFkKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZhbGxvd0luZGV4
ZWREQlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mod2ViRnJhbWUp
LCBuYW1lLCBtb2RlKSk7CisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJmFsbG93SW5k
ZXhlZERCVGFzaywgdGhpcywgV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vzcyhjb21tb25D
bGllbnQpLCBuYW1lLCBtb2RlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYWxsb3dJbmRl
eGVkREJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEFsbG93SW5kZXhl
ZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlLCBQYXNzUmVmUHRyPFdlYkZyYW1lSW1wbD4gcHJw
V2ViRnJhbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBtb2RlKQorICAgIHN0
YXRpYyB2b2lkIGFsbG93SW5kZXhlZERCVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgUGFz
c1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwgV2ViQ29tbW9u
V29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBtb2RlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4gd2ViRnJhbWUg
PSBwcnBXZWJGcmFtZTsKLSAgICAgICAgV2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3ZWJGcmFtZS0+
dmlld0ltcGwoKTsKLSAgICAgICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIGlmICghY29tbW9u
Q2xpZW50KSB7CiAgICAgICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChmYWxzZSwgbW9k
ZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYm9vbCBhbGxvd2Vk
ID0gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xp
ZW50KCktPmFsbG93SW5kZXhlZERCKHdlYkZyYW1lLmdldCgpLCBuYW1lLCBXZWJTZWN1cml0eU9y
aWdpbigpKTsKKyAgICAgICAgYm9vbCBhbGxvd2VkID0gY29tbW9uQ2xpZW50LT5hbGxvd0luZGV4
ZWREQihuYW1lKTsKICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoYWxsb3dlZCwgbW9k
ZSk7CiAgICAgfQogCkBAIC0xNDYsMjkgKzE0MywzMyBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBt
X3Jlc3VsdDsKICAgICBNdXRleCBtX211dGV4OwotICAgIC8vIFdlYldvcmtlckNsaWVudEltcGwg
aXMgbmV2ZXIgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSByZW5kZXJlciBwcm9jZXNzCi0gICAgLy8g
aXMgYWxpdmUuIFdlIHVzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbm90aWZ5IHRoZSB3b3Jr
ZXIgdGhyZWFkIHRoYXQKLSAgICAvLyB0aGUgcGVybWlzc2lvbiByZXN1bHQgaGFzIGJlZW4gc2V0
LiBUaGUgdW5kZXJseWluZyBtZXNzYWdlIHByb3h5IG9iamVjdAotICAgIC8vIGlzIHZhbGlkIGFz
IGxvbmcgYXMgdGhlIHdvcmtlciBydW4gbG9vcCBoYXNuJ3QgcmV0dXJuZWQKLSAgICAvLyBNZXNz
YWdlUXVldWVUZXJtaW5hdGVkLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHVzZSB0aGUKLSAgICAv
LyBXZWJXb3JrZXJDbGllbnRJbXBsLgotICAgIFdlYldvcmtlckNsaWVudEltcGwqIG1fd2ViV29y
a2VyQ2xpZW50SW1wbDsKKyAgICAvLyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UgdXNl
cyB0d28gbm9uLXRocmVhZHNhZmUgY2xhc3NlcyBhY3Jvc3MKKyAgICAvLyB0aHJlYWRzOiBXZWJX
b3JrZXJCYXNlIGFuZCBXZWJDb21tb25Xb3JrZXJDbGllbnQuCisgICAgLy8gSW4gdGhlIGRlZGlj
YXRlZCB3b3JrZXIgY2FzZSwgdGhlc2UgYXJlIGJvdGggdGhlIHNhbWUgb2JqZWN0IG9mIHR5cGUK
KyAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsLCB3aGljaCBpc24ndCBkZWxldGVkIGZvciB0aGUg
bGlmZSBvZiB0aGUgcmVuZGVyZXIKKyAgICAvLyBwcm9jZXNzIHNvIHdlIGRvbid0IGhhdmUgdG8g
d29ycnkgYWJvdXQgdXNlLWFmdGVyLWZyZWVzLgorICAgIC8vIEluIHRoZSBzaGFyZWQgd29ya2Vy
IGNhc2UsIHRoZXNlIGFyZSBvZiB0eXBlIFdlYlNoYXJlZFdvcmtlckltcGwgYW5kCisgICAgLy8g
Y2hyb21pdW0ncyBXZWJTaGFyZWRXb3JrZXJDbGllbnRQcm94eSwgcmVzcGVjdGl2ZWx5LiBUaGVz
ZSBhcmUgYm90aAorICAgIC8vIGRlbGV0ZWQgb24gdGhlIG1haW4gdGhyZWFkIGluIHJlc3BvbnNl
IHRvIGEgcmVxdWVzdCBvbiB0aGUgd29ya2VyIHRocmVhZCwKKyAgICAvLyBidXQgb25seSBhZnRl
ciB0aGUgd29ya2VyIHJ1biBsb29wIHN0b3BzIHByb2Nlc3NpbmcgdGFza3MuIFNvIGV2ZW4gaW4K
KyAgICAvLyB0aGUgbW9zdCBpbnRlcmxlYXZlZCBjYXNlLCB3ZSBoYXZlOgorICAgIC8vIFcgQWxs
b3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHNjaGVkdWxlcyBhbGxvd0luZGV4ZWREQlRhc2sK
KyAgICAvLyBNIHdvcmtlclJ1bkxvb3AgbWFya2VkIGFzIGtpbGxlZAorICAgIC8vIFcgcnVuTG9v
cCBzdG9wcyBhbmQgc2NoZWR1bGVzIG9iamVjdCBkZWxldGlvbiBvbiBtYWluIHRocmVhZAorICAg
IC8vIE0gYWxsb3dJbmRleGVkREJUYXNrIGNhbGxzIGNvbW1vbkNsaWVudC0+YWxsb3dJbmRleGVk
REIoKQorICAgIC8vIE0gV2ViV29ya2VyQmFzZSBhbmQgV2ViQ29tbW9uV29ya2VyQ2xpZW50IGFy
ZSBkZWxldGVkCisgICAgV2ViV29ya2VyQmFzZSogbV93ZWJXb3JrZXJCYXNlOwogfTsKIAogYm9v
bCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0lEQkZyb21Xb3JrZXJUaHJlYWQoV29ya2Vy
Q29udGV4dCogd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTZWN1
cml0eU9yaWdpbiYpCiB7Ci0gICAgLy8gRklYTUU6IEJ5cGFzcyBjaGVja2luZyBmb3IgcGVybWlz
c2lvbiBzbyBhcyBub3QgdG8gYmxvY2sgc2hhcmVkIHdvcmtlcgotICAgIC8vIHRlc3RpbmcgdW50
aWwgYSBwZXJtaXNzaW9ucyBjaGVjayBpcyBpbXBsZW1lbnRlZC4gVGhpcyBoYXMgdG8gYmUgZml4
ZWQKLSAgICAvLyBiZWZvcmUgbTE5IGdvZXMgdG8gYmV0YS4gaHR0cDovL2NyYnVnLmNvbS8xMTI4
NTUKLSAgICBpZiAod29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0KCkpCi0gICAg
ICAgIHJldHVybiB0cnVlOwogCi0gICAgV2ViV29ya2VyQ2xpZW50SW1wbCogd2ViV29ya2VyQ2xp
ZW50SW1wbCA9IHN0YXRpY19jYXN0PFdlYldvcmtlckNsaWVudEltcGwqPigmd29ya2VyQ29udGV4
dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkpOworICAgIFdlYldvcmtlckJhc2UqIHdl
YldvcmtlckJhc2UgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4oJndvcmtlckNvbnRleHQt
PnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKICAgICBXb3JrZXJSdW5Mb29wJiBydW5M
b29wID0gd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKTsKIAogICAgIFN0cmluZyBt
b2RlID0gYWxsb3dJbmRleGVkREJNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmluZzo6bnVtYmVy
KHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSkpOwotICAgIFJlZlB0cjxBbGxvd0luZGV4ZWREQk1h
aW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSA9IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZTo6
Y3JlYXRlKHdlYldvcmtlckNsaWVudEltcGwsIG1vZGUsIG5hbWUpOworICAgIFJlZlB0cjxBbGxv
d0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSA9IEFsbG93SW5kZXhlZERCTWFpblRo
cmVhZEJyaWRnZTo6Y3JlYXRlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpOwogCiAgICAgLy8g
RWl0aGVyIHRoZSBicmlkZ2UgcmV0dXJucywgb3IgdGhlIHF1ZXVlIGdldHMgdGVybWluYXRlZC4K
ICAgICBpZiAocnVuTG9vcC5ydW5Jbk1vZGUod29ya2VyQ29udGV4dCwgbW9kZSkgPT0gTWVzc2Fn
ZVF1ZXVlVGVybWluYXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCAxZGIyZDFkZDk3M2I2ODk4ZDAyZjI4M2U5ODYx
NzVhYjNmMzg2YTkxLi5hNjlmMDFhNWZhNWY0YmQ3MWM4NjUxZWZlNjQ5NTM4ZWE2NDIwMmE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcApAQCAtMjE0LDYgKzIxNCwxNiBAQCBib29sIFdlYldvcmtlckNsaWVudEltcGw6OmFsbG93
RGF0YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0CiAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8
fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93RGF0YWJhc2UobV93ZWJGcmFtZSwg
bmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogfQorCitib29sIFdlYldvcmtlckNs
aWVudEltcGw6OmFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkKK3sKKyAgICBp
ZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJbXBsKCk7
CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuICF3
ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgp
LT5hbGxvd0luZGV4ZWREQihtX3dlYkZyYW1lLCBuYW1lLCBXZWJTZWN1cml0eU9yaWdpbigpKTsK
K30KICAKIFdlYlZpZXcqIFdlYldvcmtlckNsaWVudEltcGw6OnZpZXcoKSBjb25zdCAKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwu
aCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAppbmRl
eCAzZDVkYWIwZGUyZjVjMzFhYzZjZDdmMDJiNzI4ZTg5ZWRkMjNkNmU3Li42NzMyMDhmYjYwMzU1
OTdhODU3MTc0NDFmNThiNDAyMTZkMDNjN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ZpbGVTeXN0ZW0oKTsKICAgICB2aXJ0dWFsIHZvaWQg
b3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wg
Y3JlYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzKik7CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmlu
ZyYgbmFtZSk7CiAKICAgICAvLyBXZWJDb21tZW50V29ya2VyQmFzZSBtZXRob2RzOgogICAgIHZp
cnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSB7IHJldHVybiB0aGlz
OyB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129964</attachid>
            <date>2012-03-02 15:17:29 -0800</date>
            <delta_ts>2012-03-02 17:00:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120302151728.patch</filename>
            <type>text/plain</type>
            <size>11250</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5MjcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM4OTRlZTY0NGFmYjZiMzkwYmQ0ZTVkZWI2ZmIxYzQ1MmExODNkM2UuLjhhMTYzYzU0NjMyMDc4
YTdiYjVmYzdhMzg3ZTliYTRlZDdiNDA3MzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTItMDItMjkgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0czogVGhl
ICdhbGxvdycgY2FzZSB3aWxsIGJlIHRlc3RlZCBvbmNlIHRoZSBwYXRjaCBhdAorICAgICAgICBo
dHRwOi8vd2Via2l0Lm9yZy9iLzgwMTg5IGFuZAorICAgICAgICBodHRwczovL2Nocm9taXVtY29k
ZXJldmlldy5hcHBzcG90LmNvbS85NTg1MDMxLyBib3RoIGxhbmQuICBCdWcgZm9yCisgICAgICAg
IHRlc3RpbmcgdGhlICdkZW55JyBjYXNlIGlzIGh0dHA6Ly9jcmJ1Zy5jb20vMTEzNzM4LgorCisg
ICAgICAgICogcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oOgorICAgICAgICAoV2ViQ29t
bW9uV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlNoYXJlZFdvcmtlckNsaWVudDo6YWxsb3dJbmRleGVk
REIpOgorICAgICAgICAoV2ViU2hhcmVkV29ya2VyQ2xpZW50KToKKyAgICAgICAgKiBzcmMvSURC
RmFjdG9yeUJhY2tlbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERC
TWFpblRocmVhZEJyaWRnZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlOjpjYW5jZWwpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4
ZWREQk1haW5UaHJlYWRCcmlkZ2U6OnNpZ25hbENvbXBsZXRlZCk6CisgICAgICAgIChXZWJLaXQ6
OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZTo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFk
QnJpZGdlKToKKyAgICAgICAgKEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSk6CisgICAg
ICAgIChXZWJLaXQ6OkFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZTo6YWxsb3dJbmRleGVk
REJUYXNrKToKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6YWxsb3dJ
REJGcm9tV29ya2VyVGhyZWFkKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5j
cHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJ
bXBsOjphbGxvd0luZGV4ZWREQik6CisgICAgICAgICogc3JjL1dlYldvcmtlckNsaWVudEltcGwu
aDoKKyAgICAgICAgKFdlYldvcmtlckNsaWVudEltcGwpOgorCiAyMDEyLTAyLTI5ICBEYW5hIEph
bnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gRG9uJ3Qg
bGV0IGludmFsaWRhdGlvbiBmb3IgbmV4dCBmcmFtZSBwcmV2ZW50IHRpbGUgdXBsb2FkCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVu
dC5oCmluZGV4IDJmZmI1NGQ1N2EzZjM3YjBjYzJlZjdjOGZmNjhmYmFiOGU4YjQzMGMuLmY3MWIy
MmU2NDgyOGVjNzExNDJiNWU5MGY1NzQ3MGJiNTk1Nzk0YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oCkBAIC01NCw2
ICs1NCw5IEBAIHB1YmxpYzoKIAogICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhy
ZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmlsZSBzeXN0ZW0uCiAgICAgdmlydHVhbCB2b2lkIG9wZW5G
aWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopID0gMDsKKworICAgIC8vIENhbGxlZCBvbiB0aGUg
bWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGFuIGluZGV4ZWQgZGF0YWJhc2UuCisg
ICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkgPSAw
OwogfTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJT
aGFyZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNo
YXJlZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFhMmZj
YmQ5MzM3ZDcuLjExODgzMGI0NzgzMjE5NTc4ZDhjMTdlOWViMmQzNTI2NWZlODE2NzIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNs
aWVudC5oCkBAIC04OCw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSkgPSAwOworCiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVm
b3JlIG9wZW5pbmcgYSBmaWxlIHN5c3RlbS4KICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0
ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJG
aWxlU3lzdGVtQ2FsbGJhY2tzKikKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmluZGV4IGExY2NlNDViMGI0ODQ5
MDQ3MjVlNGVjYWE3YmZjMTcxMGM4ZTI5YzAuLjE0OWJmZTEyYTBlMzk2NzNmN2I0NjVhZjZiOTdk
MTEwZjNkY2Q1NjcgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZh
Y3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lE
QkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBAIC05MCwxNiArOTAsMTYgQEAgc3RhdGljIGNvbnN0
IGNoYXIgYWxsb3dJbmRleGVkREJNb2RlW10gPSAiYWxsb3dJbmRleGVkREJNb2RlIjsKIAogY2xh
c3MgQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gewogcHVibGljOgotICAgIHN0
YXRpYyBQYXNzUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdl
YldvcmtlckNsaWVudEltcGwqIHdlYldvcmtlckNsaWVudEltcGwsIGNvbnN0IFN0cmluZyYgbW9k
ZSwgY29uc3QgU3RyaW5nJiBuYW1lKQorICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbG93SW5kZXhl
ZERCTWFpblRocmVhZEJyaWRnZT4gY3JlYXRlKFdlYldvcmtlckJhc2UqIHdlYldvcmtlckJhc2Us
IGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBuYW1lKQogICAgIHsKLSAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2Uod2ViV29y
a2VyQ2xpZW50SW1wbCwgbW9kZSwgbmFtZSkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSh3ZWJXb3JrZXJCYXNlLCBtb2RlLCBuYW1l
KSk7CiAgICAgfQogCiAgICAgLy8gVGhlc2UgbWV0aG9kcyBhcmUgaW52b2tlZCBvbiB0aGUgd29y
a2VyIGNvbnRleHQuCiAgICAgdm9pZCBjYW5jZWwoKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBtX3dlYldvcmtlckNsaWVudEltcGwgPSAwOwor
ICAgICAgICBtX3dlYldvcmtlckJhc2UgPSAwOwogICAgIH0KIAogICAgIGJvb2wgcmVzdWx0KCkK
QEAgLTExMSwzMSArMTExLDI4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNpZ25hbENvbXBsZXRlZChi
b29sIHJlc3VsdCwgY29uc3QgU3RyaW5nJiBtb2RlKQogICAgIHsKICAgICAgICAgTXV0ZXhMb2Nr
ZXIgbG9ja2VyKG1fbXV0ZXgpOwotICAgICAgICBpZiAobV93ZWJXb3JrZXJDbGllbnRJbXBsKQot
ICAgICAgICAgICAgbV93ZWJXb3JrZXJDbGllbnRJbXBsLT5wb3N0VGFza0Zvck1vZGVUb1dvcmtl
ckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRDb21wbGV0ZSwgdGhpcywgcmVzdWx0KSwg
bW9kZSk7CisgICAgICAgIGlmIChtX3dlYldvcmtlckJhc2UpCisgICAgICAgICAgICBtX3dlYldv
cmtlckJhc2UtPnBvc3RUYXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dChjcmVhdGVDYWxsYmFja1Rh
c2soJmRpZENvbXBsZXRlLCB0aGlzLCByZXN1bHQpLCBtb2RlKTsKICAgICB9CiAKIHByaXZhdGU6
Ci0gICAgQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlKFdlYldvcmtlckNsaWVudEltcGwq
IHdlYldvcmtlckNsaWVudEltcGwsIGNvbnN0IFN0cmluZyYgbW9kZSwgY29uc3QgU3RyaW5nJiBu
YW1lKQorICAgIEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZShXZWJXb3JrZXJCYXNlKiB3
ZWJXb3JrZXJCYXNlLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAg
ICAgICAgOiBtX3Jlc3VsdChmYWxzZSkKLSAgICAgICAgLCBtX3dlYldvcmtlckNsaWVudEltcGwo
d2ViV29ya2VyQ2xpZW50SW1wbCkKKyAgICAgICAgLCBtX3dlYldvcmtlckJhc2Uod2ViV29ya2Vy
QmFzZSkKICAgICB7Ci0gICAgICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBzdGF0aWNfY2Fz
dDxXZWJGcmFtZUltcGwqPih3ZWJXb3JrZXJDbGllbnRJbXBsLT52aWV3KCktPm1haW5GcmFtZSgp
KTsKLSAgICAgICAgLy8gd2ViRnJhbWUgaXMgbm90IGRlbGV0ZWQgYXMgbG9uZyBhcyB0aGUgcHJv
Y2VzcyBpcyBhbGl2ZSwgcmVseWluZyBvbgotICAgICAgICAvLyBpdCB0byBleGlzdCBvbiB0aGUg
bWFpbiB0aHJlYWQgc2hvdWxkIGJlIG9rLgorICAgICAgICBXZWJDb21tb25Xb3JrZXJDbGllbnQq
IGNvbW1vbkNsaWVudCA9IHdlYldvcmtlckJhc2UtPmNvbW1vbkNsaWVudCgpOworICAgICAgICAv
LyBTZWUgbm90ZSBhYm91dCB0aHJlYWQtc2FmZXR5IGJlbG93LgogICAgICAgICBXZWJXb3JrZXJC
YXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCi0gICAgICAgICAgICBjcmVhdGVDYWxsYmFj
a1Rhc2soJmFsbG93SW5kZXhlZERCVGFzaywgdGhpcywgV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVh
ZEFjY2Vzcyh3ZWJGcmFtZSksIG5hbWUsIG1vZGUpKTsKKyAgICAgICAgICAgIGNyZWF0ZUNhbGxi
YWNrVGFzaygmYWxsb3dJbmRleGVkREJUYXNrLCB0aGlzLCBXZWJDb3JlOjpBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKGNvbW1vbkNsaWVudCksIG5hbWUsIG1vZGUpKTsKICAgICB9CiAKLSAgICBzdGF0
aWMgdm9pZCBhbGxvd0luZGV4ZWREQlRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFBhc3NS
ZWZQdHI8QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlPiBicmlkZ2UsIFBhc3NSZWZQdHI8
V2ViRnJhbWVJbXBsPiBwcnBXZWJGcmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJp
bmcmIG1vZGUpCisgICAgc3RhdGljIHZvaWQgYWxsb3dJbmRleGVkREJUYXNrKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4g
YnJpZGdlLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgY29uc3QgU3RyaW5n
JiBuYW1lLCBjb25zdCBTdHJpbmcmIG1vZGUpCiAgICAgewotICAgICAgICBSZWZQdHI8V2ViRnJh
bWVJbXBsPiB3ZWJGcmFtZSA9IHBycFdlYkZyYW1lOwotICAgICAgICBXZWJWaWV3SW1wbCogd2Vi
VmlldyA9IHdlYkZyYW1lLT52aWV3SW1wbCgpOwotICAgICAgICBpZiAoIXdlYlZpZXcpIHsKKyAg
ICAgICAgaWYgKCFjb21tb25DbGllbnQpIHsKICAgICAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29t
cGxldGVkKGZhbHNlLCBtb2RlKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAg
ICAgICBib29sIGFsbG93ZWQgPSAhd2ViVmlldy0+cGVybWlzc2lvbkNsaWVudCgpIHx8IHdlYlZp
ZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dJbmRleGVkREIod2ViRnJhbWUuZ2V0KCksIG5h
bWUsIFdlYlNlY3VyaXR5T3JpZ2luKCkpOworICAgICAgICBib29sIGFsbG93ZWQgPSBjb21tb25D
bGllbnQtPmFsbG93SW5kZXhlZERCKG5hbWUpOwogICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBs
ZXRlZChhbGxvd2VkLCBtb2RlKTsKICAgICB9CiAKQEAgLTE0NiwyOSArMTQzLDMzIEBAIHByaXZh
dGU6CiAKICAgICBib29sIG1fcmVzdWx0OwogICAgIE11dGV4IG1fbXV0ZXg7Ci0gICAgLy8gV2Vi
V29ya2VyQ2xpZW50SW1wbCBpcyBuZXZlciBkZWxldGVkIGFzIGxvbmcgYXMgdGhlIHJlbmRlcmVy
IHByb2Nlc3MKLSAgICAvLyBpcyBhbGl2ZS4gV2UgdXNlIGl0IG9uIHRoZSBtYWluIHRocmVhZCB0
byBub3RpZnkgdGhlIHdvcmtlciB0aHJlYWQgdGhhdAotICAgIC8vIHRoZSBwZXJtaXNzaW9uIHJl
c3VsdCBoYXMgYmVlbiBzZXQuIFRoZSB1bmRlcmx5aW5nIG1lc3NhZ2UgcHJveHkgb2JqZWN0Ci0g
ICAgLy8gaXMgdmFsaWQgYXMgbG9uZyBhcyB0aGUgd29ya2VyIHJ1biBsb29wIGhhc24ndCByZXR1
cm5lZAotICAgIC8vIE1lc3NhZ2VRdWV1ZVRlcm1pbmF0ZWQsIGluIHdoaWNoIGNhc2Ugd2UgZG9u
J3QgdXNlIHRoZQotICAgIC8vIFdlYldvcmtlckNsaWVudEltcGwuCi0gICAgV2ViV29ya2VyQ2xp
ZW50SW1wbCogbV93ZWJXb3JrZXJDbGllbnRJbXBsOworICAgIC8vIEFsbG93SW5kZXhlZERCTWFp
blRocmVhZEJyaWRnZSB1c2VzIHR3byBub24tdGhyZWFkc2FmZSBjbGFzc2VzIGFjcm9zcworICAg
IC8vIHRocmVhZHM6IFdlYldvcmtlckJhc2UgYW5kIFdlYkNvbW1vbldvcmtlckNsaWVudC4KKyAg
ICAvLyBJbiB0aGUgZGVkaWNhdGVkIHdvcmtlciBjYXNlLCB0aGVzZSBhcmUgYm90aCB0aGUgc2Ft
ZSBvYmplY3Qgb2YgdHlwZQorICAgIC8vIFdlYldvcmtlckNsaWVudEltcGwsIHdoaWNoIGlzbid0
IGRlbGV0ZWQgZm9yIHRoZSBsaWZlIG9mIHRoZSByZW5kZXJlcgorICAgIC8vIHByb2Nlc3Mgc28g
d2UgZG9uJ3QgaGF2ZSB0byB3b3JyeSBhYm91dCB1c2UtYWZ0ZXItZnJlZXMuCisgICAgLy8gSW4g
dGhlIHNoYXJlZCB3b3JrZXIgY2FzZSwgdGhlc2UgYXJlIG9mIHR5cGUgV2ViU2hhcmVkV29ya2Vy
SW1wbCBhbmQKKyAgICAvLyBjaHJvbWl1bSdzIFdlYlNoYXJlZFdvcmtlckNsaWVudFByb3h5LCBy
ZXNwZWN0aXZlbHkuIFRoZXNlIGFyZSBib3RoCisgICAgLy8gZGVsZXRlZCBvbiB0aGUgbWFpbiB0
aHJlYWQgaW4gcmVzcG9uc2UgdG8gYSByZXF1ZXN0IG9uIHRoZSB3b3JrZXIgdGhyZWFkLAorICAg
IC8vIGJ1dCBvbmx5IGFmdGVyIHRoZSB3b3JrZXIgcnVuIGxvb3Agc3RvcHMgcHJvY2Vzc2luZyB0
YXNrcy4gU28gZXZlbiBpbgorICAgIC8vIHRoZSBtb3N0IGludGVybGVhdmVkIGNhc2UsIHdlIGhh
dmU6CisgICAgLy8gVyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2Ugc2NoZWR1bGVzIGFs
bG93SW5kZXhlZERCVGFzaworICAgIC8vIE0gd29ya2VyUnVuTG9vcCBtYXJrZWQgYXMga2lsbGVk
CisgICAgLy8gVyBydW5Mb29wIHN0b3BzIGFuZCBzY2hlZHVsZXMgb2JqZWN0IGRlbGV0aW9uIG9u
IG1haW4gdGhyZWFkCisgICAgLy8gTSBhbGxvd0luZGV4ZWREQlRhc2sgY2FsbHMgY29tbW9uQ2xp
ZW50LT5hbGxvd0luZGV4ZWREQigpCisgICAgLy8gTSBXZWJXb3JrZXJCYXNlIGFuZCBXZWJDb21t
b25Xb3JrZXJDbGllbnQgYXJlIGRlbGV0ZWQKKyAgICBXZWJXb3JrZXJCYXNlKiBtX3dlYldvcmtl
ckJhc2U7CiB9OwogCiBib29sIElEQkZhY3RvcnlCYWNrZW5kUHJveHk6OmFsbG93SURCRnJvbVdv
cmtlclRocmVhZChXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0LCBjb25zdCBTdHJpbmcmIG5h
bWUsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJikKIHsKLSAgICAvLyBGSVhNRTogQnlwYXNzIGNo
ZWNraW5nIGZvciBwZXJtaXNzaW9uIHNvIGFzIG5vdCB0byBibG9jayBzaGFyZWQgd29ya2VyCi0g
ICAgLy8gdGVzdGluZyB1bnRpbCBhIHBlcm1pc3Npb25zIGNoZWNrIGlzIGltcGxlbWVudGVkLiBU
aGlzIGhhcyB0byBiZSBmaXhlZAotICAgIC8vIGJlZm9yZSBtMTkgZ29lcyB0byBiZXRhLiBodHRw
Oi8vY3JidWcuY29tLzExMjg1NQotICAgIGlmICh3b3JrZXJDb250ZXh0LT5pc1NoYXJlZFdvcmtl
ckNvbnRleHQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBXZWJXb3JrZXJDbGllbnRJ
bXBsKiB3ZWJXb3JrZXJDbGllbnRJbXBsID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQ2xpZW50SW1w
bCo+KCZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKSk7CisgICAg
V2ViV29ya2VyQmFzZSogd2ViV29ya2VyQmFzZSA9IHN0YXRpY19jYXN0PFdlYldvcmtlckJhc2Uq
Pigmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkpOwogICAgIFdv
cmtlclJ1bkxvb3AmIHJ1bkxvb3AgPSB3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+cnVuTG9vcCgp
OwogCiAgICAgU3RyaW5nIG1vZGUgPSBhbGxvd0luZGV4ZWREQk1vZGU7CiAgICAgbW9kZS5hcHBl
bmQoU3RyaW5nOjpudW1iZXIocnVuTG9vcC5jcmVhdGVVbmlxdWVJZCgpKSk7Ci0gICAgUmVmUHRy
PEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlID0gQWxsb3dJbmRleGVkREJN
YWluVGhyZWFkQnJpZGdlOjpjcmVhdGUod2ViV29ya2VyQ2xpZW50SW1wbCwgbW9kZSwgbmFtZSk7
CisgICAgUmVmUHRyPEFsbG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlID0gQWxs
b3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpjcmVhdGUod2ViV29ya2VyQmFzZSwgbW9kZSwg
bmFtZSk7CiAKICAgICAvLyBFaXRoZXIgdGhlIGJyaWRnZSByZXR1cm5zLCBvciB0aGUgcXVldWUg
Z2V0cyB0ZXJtaW5hdGVkLgogICAgIGlmIChydW5Mb29wLnJ1bkluTW9kZSh3b3JrZXJDb250ZXh0
LCBtb2RlKSA9PSBNZXNzYWdlUXVldWVUZXJtaW5hdGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwCmluZGV4IDFkYjJkMWRkOTcz
YjY4OThkMDJmMjgzZTk4NjE3NWFiM2YzODZhOTEuLmE2OWYwMWE1ZmE1ZjRiZDcxYzg2NTFlZmU2
NDk1MzhlYTY0MjAyYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YldvcmtlckNsaWVudEltcGwuY3BwCkBAIC0yMTQsNiArMjE0LDE2IEBAIGJvb2wgV2ViV29ya2Vy
Q2xpZW50SW1wbDo6YWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgbmFt
ZSwgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiAhd2ViVmlldy0+cGVy
bWlzc2lvbkNsaWVudCgpIHx8IHdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKS0+YWxsb3dEYXRh
YmFzZShtX3dlYkZyYW1lLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSk7CiB9CisK
K2Jvb2wgV2ViV29ya2VyQ2xpZW50SW1wbDo6YWxsb3dJbmRleGVkREIoY29uc3QgV2ViU3RyaW5n
JiBuYW1lKQoreworICAgIGlmIChtX3Byb3h5LT5hc2tlZFRvVGVybWluYXRlKCkpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICBXZWJLaXQ6OldlYlZpZXdJbXBsKiB3ZWJWaWV3ID0gbV93ZWJG
cmFtZS0+dmlld0ltcGwoKTsKKyAgICBpZiAoIXdlYlZpZXcpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5w
ZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93SW5kZXhlZERCKG1fd2ViRnJhbWUsIG5hbWUsIFdlYlNl
Y3VyaXR5T3JpZ2luKCkpOworfQogIAogV2ViVmlldyogV2ViV29ya2VyQ2xpZW50SW1wbDo6dmll
dygpIGNvbnN0IAogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
V29ya2VyQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2Vy
Q2xpZW50SW1wbC5oCmluZGV4IDNkNWRhYjBkZTJmNWMzMWFjNmNkN2YwMmI3MjhlODllZGQyM2Q2
ZTcuLjY3MzIwOGZiNjAzNTU5N2E4NTcxNzQ0MWY1OGI0MDIxNmQwM2M3ZGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuaAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKQEAgLTEwNCw2
ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGFsbG93RmlsZVN5c3RlbSgpOwog
ICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25n
IGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFdlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbmRleGVk
REIoY29uc3QgV2ViU3RyaW5nJiBuYW1lKTsKIAogICAgIC8vIFdlYkNvbW1lbnRXb3JrZXJCYXNl
IG1ldGhvZHM6CiAgICAgdmlydHVhbCBXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVu
dCgpIHsgcmV0dXJuIHRoaXM7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>129981</attachid>
            <date>2012-03-02 17:00:44 -0800</date>
            <delta_ts>2012-03-06 12:17:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79954-20120302170043.patch</filename>
            <type>text/plain</type>
            <size>12838</size>
            <attacher name="David Grogan">dgrogan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA5NjE3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDNiOWUwYmQ1MDljOTQzZTE2NTA5YzEwNDAzYjhjOGZlOTQwYWIzZmQuLjhiMjQyOThlMmZlOTJl
YWI1YzRiOTEwMzFmMmRjOGZlYzU3NzNiYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzcgQEAKKzIwMTItMDMtMDIgIERhdmlkIEdyb2dhbiAgPGRncm9nYW5AY2hyb21p
dW0ub3JnPgorCisgICAgICAgIEluZGV4ZWREQjogQ2hlY2sgV2ViQ29tbW9uV29ya2VyQ2xpZW50
OjphbGxvd0luZGV4ZWREQiBiZWZvcmUgcHJvY2VlZGluZyBmcm9tIGEgc2hhcmVkIHdvcmtlcgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzk5NTQKKwor
ICAgICAgICBUZXN0czogVGhlICdhbGxvdycgY2FzZSB3aWxsIGJlIHRlc3RlZCBvbmNlIHRoZSBw
YXRjaCBhdAorICAgICAgICBodHRwOi8vd2Via2l0Lm9yZy9iLzgwMTg5IGFuZAorICAgICAgICBo
dHRwczovL2Nocm9taXVtY29kZXJldmlldy5hcHBzcG90LmNvbS85NTg1MDMxLyBib3RoIGxhbmQu
IEJ1ZyBmb3IKKyAgICAgICAgdGVzdGluZyB0aGUgJ2RlbnknIGNhc2UgaXMgaHR0cDovL2NyYnVn
LmNvbS8xMTM3MzguCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBwdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbW1vbldvcmtlckNsaWVudDo6YWxsb3dEYXRhYmFzZSk6CisgICAgICAgIChXZWJLaXQ6
OldlYkNvbW1vbldvcmtlckNsaWVudDo6YWxsb3dGaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYktp
dDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50OjpvcGVuRmlsZVN5c3RlbSk6CisgICAgICAgIChXZWJD
b21tb25Xb3JrZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21tb25Xb3JrZXJDbGll
bnQ6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKiBwdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xp
ZW50Lmg6CisgICAgICAgIChXZWJTaGFyZWRXb3JrZXJDbGllbnQpOgorICAgICAgICAqIHNyYy9J
REJGYWN0b3J5QmFja2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6QWxsb3dJbmRleGVk
REJNYWluVGhyZWFkQnJpZGdlOjpjcmVhdGUpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4
ZWREQk1haW5UaHJlYWRCcmlkZ2U6OmNhbmNlbCk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93SW5k
ZXhlZERCTWFpblRocmVhZEJyaWRnZTo6c2lnbmFsQ29tcGxldGVkKToKKyAgICAgICAgKFdlYktp
dDo6QWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlOjpBbGxvd0luZGV4ZWREQk1haW5UaHJl
YWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlk
Z2U6OmFsbG93SW5kZXhlZERCVGFzayk6CisgICAgICAgIChBbGxvd0luZGV4ZWREQk1haW5UaHJl
YWRCcmlkZ2UpOgorICAgICAgICAoV2ViS2l0OjpJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxv
d0lEQkZyb21Xb3JrZXJUaHJlYWQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBs
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckNsaWVu
dEltcGw6OmFsbG93SW5kZXhlZERCKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VyQ2xpZW50SW1w
bC5oOgorICAgICAgICAoV2ViV29ya2VyQ2xpZW50SW1wbCk6CisKIDIwMTItMDMtMDIgIERhbmEg
SmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBBbGxv
dyBwbHVnaW5zIHRvIHNldCBvcGFxdWUoKSBvbiB0aGVpciBwbGF0Zm9ybSBsYXllcgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQu
aAppbmRleCAyZmZiNTRkNTdhM2YzN2IwY2MyZWY3YzhmZjY4ZmJhYjhlOGI0MzBjLi4yZDg3YzE0
MDFmZTU4OGNiMjcwMmVhYjE1MzdhMTc4OWFlMGUyZWU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJDb21tb25Xb3JrZXJDbGllbnQuaApAQCAtNDcsMTMg
KzQ3LDI4IEBAIGNsYXNzIFdlYldvcmtlckNsaWVudDsKIGNsYXNzIFdlYkNvbW1vbldvcmtlckNs
aWVudCB7CiBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQg
YmVmb3JlIG9wZW5pbmcgYSB3ZWIgZGF0YWJhc2UuCi0gICAgdmlydHVhbCBib29sIGFsbG93RGF0
YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0IFdlYlN0cmluZyYg
ZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1hdGVkU2l6ZSkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBj
b25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUp
CisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAgICAvLyBDYWxsZWQgb24g
dGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lzdGVtLgotICAg
IHZpcnR1YWwgYm9vbCBhbGxvd0ZpbGVTeXN0ZW0oKSA9IDA7CisgICAgdmlydHVhbCBib29sIGFs
bG93RmlsZVN5c3RlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CiAKICAg
ICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZp
bGUgc3lzdGVtLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lzdGVt
OjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxsYmFj
a3MqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06
OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNr
cyopCisgICAgeworICAgICAgICBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfQor
CisgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcg
YW4gaW5kZXhlZCBkYXRhYmFzZS4KKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dJbmRleGVkREIoY29u
c3QgV2ViU3RyaW5nJiBuYW1lKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQog
fTsKIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFy
ZWRXb3JrZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJl
ZFdvcmtlckNsaWVudC5oCmluZGV4IGEwODVhM2VhMmRiNzk4NGYyM2JmOTcwNjI5YzFhMmZjYmQ5
MzM3ZDcuLjRhMmI4NzMyZmYwY2Q2NzI3NzNmMjgyOTQ4Y2QwYjM4MDg4MTIyOTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVu
dC5oCkBAIC03OSwyMSArNzksNiBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWlu
IHdlYmtpdCB0aHJlYWQgaW4gdGhlIHdvcmtlciBwcm9jZXNzIGR1cmluZyBpbml0aWFsaXphdGlv
bi4KICAgICB2aXJ0dWFsIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVhdGVBcHBsaWNhdGlv
bkNhY2hlSG9zdChXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCopID0gMDsKIAotICAgIC8v
IENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgd2ViIGRh
dGFiYXNlLgotICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwgY29uc3Qg
V2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBs
b25nIGVzdGltYXRlZFNpemUpID0gMDsKLQotICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJr
aXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmlsZSBzeXN0ZW0uCi0gICAgdmlydHVhbCBib29s
IGFsbG93RmlsZVN5c3RlbSgpCi0gICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0K
LSAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBh
IGZpbGUgc3lzdGVtLgotICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJGaWxlU3lz
dGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3MqKQotICAgIHsKLSAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAg
IH0KLQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERldlRvb2xzTWVzc2FnZShjb25zdCBXZWJT
dHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgc2F2ZURldlRvb2xzQWdlbnRTdGF0ZShjb25z
dCBXZWJTdHJpbmcmKSB7IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvSURCRmFjdG9yeUJhY2tlbmRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcAppbmRleCBhMWNjZTQ1YjBiNDg0OTA0NzI1ZTRl
Y2FhN2JmYzE3MTBjOGUyOWMwLi4xNDliZmUxMmEwZTM5NjczZjdiNDY1YWY2Yjk3ZDExMGYzZGNk
NTY3IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5
QmFja2VuZFByb3h5LmNwcApAQCAtOTAsMTYgKzkwLDE2IEBAIHN0YXRpYyBjb25zdCBjaGFyIGFs
bG93SW5kZXhlZERCTW9kZVtdID0gImFsbG93SW5kZXhlZERCTW9kZSI7CiAKIGNsYXNzIEFsbG93
SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxB
bGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFz
c1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJXb3JrZXJD
bGllbnRJbXBsKiB3ZWJXb3JrZXJDbGllbnRJbXBsLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0
IFN0cmluZyYgbmFtZSkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5U
aHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXJCYXNlLCBjb25zdCBT
dHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZihuZXcgQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlKHdlYldvcmtlckNsaWVu
dEltcGwsIG1vZGUsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2Uod2ViV29ya2VyQmFzZSwgbW9kZSwgbmFtZSkpOwogICAg
IH0KIAogICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGludm9rZWQgb24gdGhlIHdvcmtlciBjb250
ZXh0LgogICAgIHZvaWQgY2FuY2VsKCkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKLSAgICAgICAgbV93ZWJXb3JrZXJDbGllbnRJbXBsID0gMDsKKyAgICAgICAg
bV93ZWJXb3JrZXJCYXNlID0gMDsKICAgICB9CiAKICAgICBib29sIHJlc3VsdCgpCkBAIC0xMTEs
MzEgKzExMSwyOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaWduYWxDb21wbGV0ZWQoYm9vbCByZXN1
bHQsIGNvbnN0IFN0cmluZyYgbW9kZSkKICAgICB7CiAgICAgICAgIE11dGV4TG9ja2VyIGxvY2tl
cihtX211dGV4KTsKLSAgICAgICAgaWYgKG1fd2ViV29ya2VyQ2xpZW50SW1wbCkKLSAgICAgICAg
ICAgIG1fd2ViV29ya2VyQ2xpZW50SW1wbC0+cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0
KGNyZWF0ZUNhbGxiYWNrVGFzaygmZGlkQ29tcGxldGUsIHRoaXMsIHJlc3VsdCksIG1vZGUpOwor
ICAgICAgICBpZiAobV93ZWJXb3JrZXJCYXNlKQorICAgICAgICAgICAgbV93ZWJXb3JrZXJCYXNl
LT5wb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZkaWRD
b21wbGV0ZSwgdGhpcywgcmVzdWx0KSwgbW9kZSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZShXZWJXb3JrZXJDbGllbnRJbXBsKiB3ZWJXb3Jr
ZXJDbGllbnRJbXBsLCBjb25zdCBTdHJpbmcmIG1vZGUsIGNvbnN0IFN0cmluZyYgbmFtZSkKKyAg
ICBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2UoV2ViV29ya2VyQmFzZSogd2ViV29ya2Vy
QmFzZSwgY29uc3QgU3RyaW5nJiBtb2RlLCBjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAgICAgIDog
bV9yZXN1bHQoZmFsc2UpCi0gICAgICAgICwgbV93ZWJXb3JrZXJDbGllbnRJbXBsKHdlYldvcmtl
ckNsaWVudEltcGwpCisgICAgICAgICwgbV93ZWJXb3JrZXJCYXNlKHdlYldvcmtlckJhc2UpCiAg
ICAgewotICAgICAgICBXZWJGcmFtZUltcGwqIHdlYkZyYW1lID0gc3RhdGljX2Nhc3Q8V2ViRnJh
bWVJbXBsKj4od2ViV29ya2VyQ2xpZW50SW1wbC0+dmlldygpLT5tYWluRnJhbWUoKSk7Ci0gICAg
ICAgIC8vIHdlYkZyYW1lIGlzIG5vdCBkZWxldGVkIGFzIGxvbmcgYXMgdGhlIHByb2Nlc3MgaXMg
YWxpdmUsIHJlbHlpbmcgb24KLSAgICAgICAgLy8gaXQgdG8gZXhpc3Qgb24gdGhlIG1haW4gdGhy
ZWFkIHNob3VsZCBiZSBvay4KKyAgICAgICAgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25D
bGllbnQgPSB3ZWJXb3JrZXJCYXNlLT5jb21tb25DbGllbnQoKTsKKyAgICAgICAgLy8gU2VlIG5v
dGUgYWJvdXQgdGhyZWFkLXNhZmV0eSBiZWxvdy4KICAgICAgICAgV2ViV29ya2VyQmFzZTo6ZGlz
cGF0Y2hUYXNrVG9NYWluVGhyZWFkKAotICAgICAgICAgICAgY3JlYXRlQ2FsbGJhY2tUYXNrKCZh
bGxvd0luZGV4ZWREQlRhc2ssIHRoaXMsIFdlYkNvcmU6OkFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3Mo
d2ViRnJhbWUpLCBuYW1lLCBtb2RlKSk7CisgICAgICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2so
JmFsbG93SW5kZXhlZERCVGFzaywgdGhpcywgV2ViQ29yZTo6QWxsb3dDcm9zc1RocmVhZEFjY2Vz
cyhjb21tb25DbGllbnQpLCBuYW1lLCBtb2RlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQg
YWxsb3dJbmRleGVkREJUYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBQYXNzUmVmUHRyPEFs
bG93SW5kZXhlZERCTWFpblRocmVhZEJyaWRnZT4gYnJpZGdlLCBQYXNzUmVmUHRyPFdlYkZyYW1l
SW1wbD4gcHJwV2ViRnJhbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3RyaW5nJiBtb2Rl
KQorICAgIHN0YXRpYyB2b2lkIGFsbG93SW5kZXhlZERCVGFzayhTY3JpcHRFeGVjdXRpb25Db250
ZXh0KiwgUGFzc1JlZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSwg
V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBtb2RlKQogICAgIHsKLSAgICAgICAgUmVmUHRyPFdlYkZyYW1lSW1wbD4g
d2ViRnJhbWUgPSBwcnBXZWJGcmFtZTsKLSAgICAgICAgV2ViVmlld0ltcGwqIHdlYlZpZXcgPSB3
ZWJGcmFtZS0+dmlld0ltcGwoKTsKLSAgICAgICAgaWYgKCF3ZWJWaWV3KSB7CisgICAgICAgIGlm
ICghY29tbW9uQ2xpZW50KSB7CiAgICAgICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChm
YWxzZSwgbW9kZSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAgICAgICAgYm9v
bCBhbGxvd2VkID0gIXdlYlZpZXctPnBlcm1pc3Npb25DbGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJt
aXNzaW9uQ2xpZW50KCktPmFsbG93SW5kZXhlZERCKHdlYkZyYW1lLmdldCgpLCBuYW1lLCBXZWJT
ZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAgYm9vbCBhbGxvd2VkID0gY29tbW9uQ2xpZW50LT5h
bGxvd0luZGV4ZWREQihuYW1lKTsKICAgICAgICAgYnJpZGdlLT5zaWduYWxDb21wbGV0ZWQoYWxs
b3dlZCwgbW9kZSk7CiAgICAgfQogCkBAIC0xNDYsMjkgKzE0MywzMyBAQCBwcml2YXRlOgogCiAg
ICAgYm9vbCBtX3Jlc3VsdDsKICAgICBNdXRleCBtX211dGV4OwotICAgIC8vIFdlYldvcmtlckNs
aWVudEltcGwgaXMgbmV2ZXIgZGVsZXRlZCBhcyBsb25nIGFzIHRoZSByZW5kZXJlciBwcm9jZXNz
Ci0gICAgLy8gaXMgYWxpdmUuIFdlIHVzZSBpdCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gbm90aWZ5
IHRoZSB3b3JrZXIgdGhyZWFkIHRoYXQKLSAgICAvLyB0aGUgcGVybWlzc2lvbiByZXN1bHQgaGFz
IGJlZW4gc2V0LiBUaGUgdW5kZXJseWluZyBtZXNzYWdlIHByb3h5IG9iamVjdAotICAgIC8vIGlz
IHZhbGlkIGFzIGxvbmcgYXMgdGhlIHdvcmtlciBydW4gbG9vcCBoYXNuJ3QgcmV0dXJuZWQKLSAg
ICAvLyBNZXNzYWdlUXVldWVUZXJtaW5hdGVkLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0IHVzZSB0
aGUKLSAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsLgotICAgIFdlYldvcmtlckNsaWVudEltcGwq
IG1fd2ViV29ya2VyQ2xpZW50SW1wbDsKKyAgICAvLyBBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRC
cmlkZ2UgdXNlcyB0d28gbm9uLXRocmVhZHNhZmUgY2xhc3NlcyBhY3Jvc3MKKyAgICAvLyB0aHJl
YWRzOiBXZWJXb3JrZXJCYXNlIGFuZCBXZWJDb21tb25Xb3JrZXJDbGllbnQuCisgICAgLy8gSW4g
dGhlIGRlZGljYXRlZCB3b3JrZXIgY2FzZSwgdGhlc2UgYXJlIGJvdGggdGhlIHNhbWUgb2JqZWN0
IG9mIHR5cGUKKyAgICAvLyBXZWJXb3JrZXJDbGllbnRJbXBsLCB3aGljaCBpc24ndCBkZWxldGVk
IGZvciB0aGUgbGlmZSBvZiB0aGUgcmVuZGVyZXIKKyAgICAvLyBwcm9jZXNzIHNvIHdlIGRvbid0
IGhhdmUgdG8gd29ycnkgYWJvdXQgdXNlLWFmdGVyLWZyZWVzLgorICAgIC8vIEluIHRoZSBzaGFy
ZWQgd29ya2VyIGNhc2UsIHRoZXNlIGFyZSBvZiB0eXBlIFdlYlNoYXJlZFdvcmtlckltcGwgYW5k
CisgICAgLy8gY2hyb21pdW0ncyBXZWJTaGFyZWRXb3JrZXJDbGllbnRQcm94eSwgcmVzcGVjdGl2
ZWx5LiBUaGVzZSBhcmUgYm90aAorICAgIC8vIGRlbGV0ZWQgb24gdGhlIG1haW4gdGhyZWFkIGlu
IHJlc3BvbnNlIHRvIGEgcmVxdWVzdCBvbiB0aGUgd29ya2VyIHRocmVhZCwKKyAgICAvLyBidXQg
b25seSBhZnRlciB0aGUgd29ya2VyIHJ1biBsb29wIHN0b3BzIHByb2Nlc3NpbmcgdGFza3MuIFNv
IGV2ZW4gaW4KKyAgICAvLyB0aGUgbW9zdCBpbnRlcmxlYXZlZCBjYXNlLCB3ZSBoYXZlOgorICAg
IC8vIFcgQWxsb3dJbmRleGVkREJNYWluVGhyZWFkQnJpZGdlIHNjaGVkdWxlcyBhbGxvd0luZGV4
ZWREQlRhc2sKKyAgICAvLyBNIHdvcmtlclJ1bkxvb3AgbWFya2VkIGFzIGtpbGxlZAorICAgIC8v
IFcgcnVuTG9vcCBzdG9wcyBhbmQgc2NoZWR1bGVzIG9iamVjdCBkZWxldGlvbiBvbiBtYWluIHRo
cmVhZAorICAgIC8vIE0gYWxsb3dJbmRleGVkREJUYXNrIGNhbGxzIGNvbW1vbkNsaWVudC0+YWxs
b3dJbmRleGVkREIoKQorICAgIC8vIE0gV2ViV29ya2VyQmFzZSBhbmQgV2ViQ29tbW9uV29ya2Vy
Q2xpZW50IGFyZSBkZWxldGVkCisgICAgV2ViV29ya2VyQmFzZSogbV93ZWJXb3JrZXJCYXNlOwog
fTsKIAogYm9vbCBJREJGYWN0b3J5QmFja2VuZFByb3h5OjphbGxvd0lEQkZyb21Xb3JrZXJUaHJl
YWQoV29ya2VyQ29udGV4dCogd29ya2VyQ29udGV4dCwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25z
dCBXZWJTZWN1cml0eU9yaWdpbiYpCiB7Ci0gICAgLy8gRklYTUU6IEJ5cGFzcyBjaGVja2luZyBm
b3IgcGVybWlzc2lvbiBzbyBhcyBub3QgdG8gYmxvY2sgc2hhcmVkIHdvcmtlcgotICAgIC8vIHRl
c3RpbmcgdW50aWwgYSBwZXJtaXNzaW9ucyBjaGVjayBpcyBpbXBsZW1lbnRlZC4gVGhpcyBoYXMg
dG8gYmUgZml4ZWQKLSAgICAvLyBiZWZvcmUgbTE5IGdvZXMgdG8gYmV0YS4gaHR0cDovL2NyYnVn
LmNvbS8xMTI4NTUKLSAgICBpZiAod29ya2VyQ29udGV4dC0+aXNTaGFyZWRXb3JrZXJDb250ZXh0
KCkpCi0gICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgV2ViV29ya2VyQ2xpZW50SW1wbCogd2Vi
V29ya2VyQ2xpZW50SW1wbCA9IHN0YXRpY19jYXN0PFdlYldvcmtlckNsaWVudEltcGwqPigmd29y
a2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxvYWRlclByb3h5KCkpOworICAgIFdlYldvcmtl
ckJhc2UqIHdlYldvcmtlckJhc2UgPSBzdGF0aWNfY2FzdDxXZWJXb3JrZXJCYXNlKj4oJndvcmtl
ckNvbnRleHQtPnRocmVhZCgpLT53b3JrZXJMb2FkZXJQcm94eSgpKTsKICAgICBXb3JrZXJSdW5M
b29wJiBydW5Mb29wID0gd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPnJ1bkxvb3AoKTsKIAogICAg
IFN0cmluZyBtb2RlID0gYWxsb3dJbmRleGVkREJNb2RlOwogICAgIG1vZGUuYXBwZW5kKFN0cmlu
Zzo6bnVtYmVyKHJ1bkxvb3AuY3JlYXRlVW5pcXVlSWQoKSkpOwotICAgIFJlZlB0cjxBbGxvd0lu
ZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSA9IEFsbG93SW5kZXhlZERCTWFpblRocmVh
ZEJyaWRnZTo6Y3JlYXRlKHdlYldvcmtlckNsaWVudEltcGwsIG1vZGUsIG5hbWUpOworICAgIFJl
ZlB0cjxBbGxvd0luZGV4ZWREQk1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSA9IEFsbG93SW5kZXhl
ZERCTWFpblRocmVhZEJyaWRnZTo6Y3JlYXRlKHdlYldvcmtlckJhc2UsIG1vZGUsIG5hbWUpOwog
CiAgICAgLy8gRWl0aGVyIHRoZSBicmlkZ2UgcmV0dXJucywgb3IgdGhlIHF1ZXVlIGdldHMgdGVy
bWluYXRlZC4KICAgICBpZiAocnVuTG9vcC5ydW5Jbk1vZGUod29ya2VyQ29udGV4dCwgbW9kZSkg
PT0gTWVzc2FnZVF1ZXVlVGVybWluYXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcAppbmRleCAxZGIyZDFkZDk3M2I2ODk4ZDAy
ZjI4M2U5ODYxNzVhYjNmMzg2YTkxLi5hNjlmMDFhNWZhNWY0YmQ3MWM4NjUxZWZlNjQ5NTM4ZWE2
NDIwMmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJD
bGllbnRJbXBsLmNwcApAQCAtMjE0LDYgKzIxNCwxNiBAQCBib29sIFdlYldvcmtlckNsaWVudElt
cGw6OmFsbG93RGF0YWJhc2UoV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIG5hbWUsIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICByZXR1cm4gIXdlYlZpZXctPnBlcm1pc3Npb25D
bGllbnQoKSB8fCB3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCktPmFsbG93RGF0YWJhc2UobV93
ZWJGcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUpOwogfQorCitib29sIFdl
YldvcmtlckNsaWVudEltcGw6OmFsbG93SW5kZXhlZERCKGNvbnN0IFdlYlN0cmluZyYgbmFtZSkK
K3sKKyAgICBpZiAobV9wcm94eS0+YXNrZWRUb1Rlcm1pbmF0ZSgpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisgICAgV2ViS2l0OjpXZWJWaWV3SW1wbCogd2ViVmlldyA9IG1fd2ViRnJhbWUtPnZp
ZXdJbXBsKCk7CisgICAgaWYgKCF3ZWJWaWV3KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
cmV0dXJuICF3ZWJWaWV3LT5wZXJtaXNzaW9uQ2xpZW50KCkgfHwgd2ViVmlldy0+cGVybWlzc2lv
bkNsaWVudCgpLT5hbGxvd0luZGV4ZWREQihtX3dlYkZyYW1lLCBuYW1lLCBXZWJTZWN1cml0eU9y
aWdpbigpKTsKK30KICAKIFdlYlZpZXcqIFdlYldvcmtlckNsaWVudEltcGw6OnZpZXcoKSBjb25z
dCAKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudElt
cGwuaAppbmRleCAzZDVkYWIwZGUyZjVjMzFhYzZjZDdmMDJiNzI4ZTg5ZWRkMjNkNmU3Li42NzMy
MDhmYjYwMzU1OTdhODU3MTc0NDFmNThiNDAyMTZkMDNjN2RhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC0xMDQsNiArMTA0LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBhbGxvd0ZpbGVTeXN0ZW0oKTsKICAgICB2aXJ0
dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNp
emUsIGJvb2wgY3JlYXRlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CisgICAgdmlydHVhbCBib29sIGFsbG93SW5kZXhlZERCKGNvbnN0
IFdlYlN0cmluZyYgbmFtZSk7CiAKICAgICAvLyBXZWJDb21tZW50V29ya2VyQmFzZSBtZXRob2Rz
OgogICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQoKSB7IHJl
dHVybiB0aGlzOyB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>