<?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>103955</bug_id>
          
          <creation_ts>2012-12-03 18:16:04 -0800</creation_ts>
          <short_desc>Make caret repainting container-aware</short_desc>
          <delta_ts>2013-07-25 20:56:03 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          <blocked>104200</blocked>
    
    <blocked>119122</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Tien-Ren Chen">trchen</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>jamesr</cc>
    
    <cc>mifenton</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan.autocc</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>782099</commentid>
    <comment_count>0</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-03 18:16:04 -0800</bug_when>
    <thetext>Make caret repainting container aware</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782107</commentid>
    <comment_count>1</comment_count>
      <attachid>177390</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-03 18:22:37 -0800</bug_when>
    <thetext>Created attachment 177390
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>782133</commentid>
    <comment_count>2</comment_count>
      <attachid>177394</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-03 19:16:09 -0800</bug_when>
    <thetext>Created attachment 177394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784383</commentid>
    <comment_count>3</comment_count>
      <attachid>177891</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-05 17:59:00 -0800</bug_when>
    <thetext>Created attachment 177891
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784389</commentid>
    <comment_count>4</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-05 18:00:35 -0800</bug_when>
    <thetext>I&apos;m moving the removal of RenderView::repaintRectangleInViewAndCompositedLayers() to a new patch, so this patch will be focused on refactoring the caret.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>784578</commentid>
    <comment_count>5</comment_count>
      <attachid>177891</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-05 21:43:01 -0800</bug_when>
    <thetext>Comment on attachment 177891
Patch

Attachment 177891 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15157641

New failing tests:
fast/repaint/japanese-rl-selection-repaint.html
fast/repaint/selection-rl.html
fast/repaint/japanese-rl-selection-repaint-in-regions.html
fast/repaint/4774354.html
fast/repaint/repaint-across-writing-mode-boundary.html
fast/repaint/caret-outside-block.html
fast/repaint/4776765.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785514</commentid>
    <comment_count>6</comment_count>
      <attachid>178127</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-06 18:21:09 -0800</bug_when>
    <thetext>Created attachment 178127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785524</commentid>
    <comment_count>7</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-06 18:34:00 -0800</bug_when>
    <thetext>I think the patch is almost ready for production. The layout test failures are expected and should be safe to rebaseline. PTAL.

Changes from last patch:
1. Corrected the layout test fail with RTL text. We no longer need to manually call flipForWritingMode(). repaintRectangle() will do the right thing for us.

2. Corrected the caret ghosting bug. We need to retain the previous Node* that rendered the caret for the last frame because we no longer store an absolute rect.

3. Added a layout test for transformation. There is actually an improvement over repaintRectangleInViewAndCompositedLayers() such that we now handle transformation correctly.

Layout test difference:
The 1-pixel inflation is removed from the repaint rect. I examined the layout test result and didn&apos;t observe any problems with that. The inflation is probably no longer needed with the container-aware approach.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785529</commentid>
    <comment_count>8</comment_count>
      <attachid>178133</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-06 18:43:24 -0800</bug_when>
    <thetext>Created attachment 178133
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785530</commentid>
    <comment_count>9</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-06 18:43:49 -0800</bug_when>
    <thetext>Change from last patch: Add ChangeLog comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785645</commentid>
    <comment_count>10</comment_count>
      <attachid>178133</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-12-06 22:23:46 -0800</bug_when>
    <thetext>Comment on attachment 178133
Patch

Attachment 178133 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/15187165

New failing tests:
fast/repaint/japanese-rl-selection-repaint.html
fast/repaint/japanese-rl-selection-repaint-in-regions.html
fast/repaint/selection-rl.html
fast/repaint/caret-with-transformation.html
fast/repaint/4774354.html
fast/repaint/repaint-across-writing-mode-boundary.html
fast/repaint/caret-outside-block.html
fast/repaint/4776765.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>785653</commentid>
    <comment_count>11</comment_count>
      <attachid>178133</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-12-06 22:45:20 -0800</bug_when>
    <thetext>Comment on attachment 178133
Patch

Attachment 178133 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/15160978

New failing tests:
fast/repaint/caret-with-transformation.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786240</commentid>
    <comment_count>12</comment_count>
      <attachid>178295</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-07 15:41:32 -0800</bug_when>
    <thetext>Created attachment 178295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>786241</commentid>
    <comment_count>13</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2012-12-07 15:42:40 -0800</bug_when>
    <thetext>Change from last patch:
1. Rebased to latest tree
2. Update TestExpectations

PTAL. Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803024</commentid>
    <comment_count>14</comment_count>
      <attachid>181845</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-01-08 22:06:45 -0800</bug_when>
    <thetext>Created attachment 181845
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803026</commentid>
    <comment_count>15</comment_count>
      <attachid>181845</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-01-08 22:07:13 -0800</bug_when>
    <thetext>Comment on attachment 181845
Patch

Rebased</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803048</commentid>
    <comment_count>16</comment_count>
      <attachid>181845</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-08 22:54:42 -0800</bug_when>
    <thetext>Comment on attachment 181845
Patch

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

&gt; Source/WebCore/rendering/RenderView.cpp:548
&gt; +void RenderView::repaintSelection() const

Who calls this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803889</commentid>
    <comment_count>17</comment_count>
      <attachid>182030</attachid>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-01-09 17:46:12 -0800</bug_when>
    <thetext>Created attachment 182030
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>803890</commentid>
    <comment_count>18</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-01-09 17:47:24 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (From update of attachment 181845 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=181845&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/RenderView.cpp:548
&gt; &gt; +void RenderView::repaintSelection() const
&gt; 
&gt; Who calls this?

Sorry, one hunk was dropped during the rebase. The new patch corrected that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804063</commentid>
    <comment_count>19</comment_count>
      <attachid>182030</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 22:24:55 -0800</bug_when>
    <thetext>Comment on attachment 182030
Patch

Clearing flags on attachment: 182030

Committed r139282: &lt;http://trac.webkit.org/changeset/139282&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>804064</commentid>
    <comment_count>20</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-09 22:25:00 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>819683</commentid>
    <comment_count>21</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-01-29 18:55:32 -0800</bug_when>
    <thetext>This caused https://bugs.webkit.org/show_bug.cgi?id=108283.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>820443</commentid>
    <comment_count>22</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-01-30 12:56:51 -0800</bug_when>
    <thetext>*** Bug 23629 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859795</commentid>
    <comment_count>23</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-20 15:25:11 -0700</bug_when>
    <thetext>This never got rebaselined :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859798</commentid>
    <comment_count>24</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-20 15:29:48 -0700</bug_when>
    <thetext>Thanks for reminding! Give me one day. I&apos;ll do it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859832</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-03-20 15:56:20 -0700</bug_when>
    <thetext>(In reply to comment #24)
&gt; Thanks for reminding! Give me one day. I&apos;ll do it now.

Done that in http://trac.webkit.org/changeset/146403.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>859854</commentid>
    <comment_count>26</comment_count>
    <who name="Tien-Ren Chen">trchen</who>
    <bug_when>2013-03-20 16:38:12 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; (In reply to comment #24)
&gt; &gt; Thanks for reminding! Give me one day. I&apos;ll do it now.
&gt; 
&gt; Done that in http://trac.webkit.org/changeset/146403.

LGTM. Thank you so much! I owe you one. :)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177390</attachid>
            <date>2012-12-03 18:22:37 -0800</date>
            <delta_ts>2012-12-03 19:16:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121203182002.patch</filename>
            <type>text/plain</type>
            <size>15573</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2MDg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmVmMTMzM2UxNTI2ZDBl
MDNjNzA5ZTc0Y2M3M2Q2ZjUyYWJhOWEwZi4uMjg2YTFlNDIyNzZkNzVhYjUwZjYyNzE3ZDgwZDVm
ODE5MWY3OTNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTAzICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgUmVtb3ZlZCBSZW5k
ZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycygpLAorICAg
ICAgICB3aGljaCBpcyBtYXJrZWQgYXMgIkZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0
byBkbyB0aGlzIgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU2hhbGwgbm90IGNoYW5nZSByZW5k
ZXJpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhcmV0UmVuZGVyc0luc2lkZU5vZGUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDYXJldENvbnRyb2xsZXI6OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVw
YWludENhcmV0Rm9yTG9jYWxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpyZWNvbXB1dGVDYXJldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjppbnZh
bGlkYXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpmb2N1
c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVmlldy5oOgorICAgICAgICAoUmVuZGVyVmlldyk6CisKIDIwMTItMTEtMjggIEhheWF0
byBJdG8gIDxoYXlhdG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIE5vZGU6OmNvbXBhcmVEb2N1
bWVudFBvc2l0aW9uIHJldHVybnMgd3JvbmcgdmFsdWUgZm9yIGEgbm9kZSBpbiB0aGUgZGlmZmVy
ZW50IHNoYWRvdyB0cmVlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNw
cAppbmRleCAwNTcxMGNlZmRmOGNmNTUxNzIzZGQxMjQ4ODI2MzY2ZmQ2ZmVkNzFkLi40MTNkZTFi
MDBjZDdjZDBjNWFhMmYwNmJkNjIwMmQ2YTMyZTFhZjIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTIxOCw2ICsxMjE4LDI1IEBAIHZvaWQgQ2FyZXRC
YXNlOjpjbGVhckNhcmV0UmVjdCgpCiAgICAgbV9jYXJldExvY2FsUmVjdCA9IExheW91dFJlY3Qo
KTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSog
bm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVk
aXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsKK30KKworc3RhdGljIFJlbmRlck9iamVjdCogY2Fy
ZXRSZW5kZXJlcihOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJu
IDA7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAg
ICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIGlmIGNhcmV0Tm9k
ZSBpcyBhIGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBjYXJldCBzaG91bGQgYmUg
cGFpbnRlZCBieSB0aGF0IGJsb2NrCisgICAgYm9vbCBwYWludGVkQnlCbG9jayA9IHJlbmRlcmVy
LT5pc0Jsb2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUobm9kZSk7CisgICAgcmV0
dXJuIHBhaW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2Nr
KCk7Cit9CisKIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJlY3QoRG9jdW1lbnQqIGRvY3Vt
ZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24pCiB7CiAgICAgZG9jdW1l
bnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEyNTYsMzMgKzEyNzUsMTQgQEAgYm9vbCBD
YXJldEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZpc2li
bGVQb3NpdGlvbiYgY2FyZXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBi
b29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gbm9k
ZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRpbmdJZ25vcmVzQ29udGVudChub2Rl
KTsKLX0KLQotUmVuZGVyT2JqZWN0KiBDYXJldEJhc2U6OmNhcmV0UmVuZGVyZXIoTm9kZSogbm9k
ZSkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVu
ZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJl
cikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBpZiBjYXJldE5vZGUgaXMgYSBibG9jayBh
bmQgY2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhh
dCBibG9jawotICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sgPSByZW5kZXJlci0+aXNCbG9ja0Zsb3co
KSAmJiBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUpOwotICAgIHJldHVybiBwYWludGVkQnlC
bG9jayA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwotfQotCiBSZW5k
ZXJPYmplY3QqIEZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICBy
ZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVj
YXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhcmV0UmVuZGVyZXIobV9zZWxlY3Rp
b24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBEcmFnQ2Fy
ZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2FyZXRC
YXNlOjpjYXJldFJlbmRlcmVyKG1fcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVk
Tm9kZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FyZXRSZW5kZXJlcihtX3Bvc2l0aW9uLmRl
ZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiB9CiAKIHN0YXRpYyBib29sIGlzTm9u
T3JwaGFuZWRDYXJldChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkBAIC0xMzIw
LDIwICsxMzIwLDE3IEBAIEludFJlY3QgRnJhbWVTZWxlY3Rpb246OmFic29sdXRlQ2FyZXRCb3Vu
ZHMoKQogICAgIHJldHVybiBtX2Fic0NhcmV0Qm91bmRzOwogfQogCi1zdGF0aWMgTGF5b3V0UmVj
dCByZXBhaW50UmVjdEZvckNhcmV0KExheW91dFJlY3QgY2FyZXQpCitzdGF0aWMgdm9pZCByZXBh
aW50Q2FyZXRGb3JMb2NhbFJlY3QoTm9kZSogbm9kZSwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkK
IHsKLSAgICBpZiAoY2FyZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgp
OwotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJ0eSByZWN0IGludGVyc2VjdHMgdGhlIGJsb2Nr
IHRoYXQgcGFpbnRzIHRoZSBjYXJldCBldmVuIGluIHRoZSBjYXNlIHdoZXJlCi0gICAgLy8gdGhl
IGNhcmV0IGl0c2VsZiBpcyBqdXN0IG91dHNpZGUgdGhlIGJsb2NrLiBTZWUgPGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4Nj4uCi0gICAgY2FyZXQuaW5mbGF0ZVgo
MSk7Ci0gICAgY2FyZXQuaW5mbGF0ZVkoMSk7Ci0gICAgcmV0dXJuIGNhcmV0OwotfQorICAgIFJl
bmRlck9iamVjdCogY2FyZXRQYWludGVyID0gY2FyZXRSZW5kZXJlcihub2RlKTsKKyAgICBpZiAo
IWNhcmV0UGFpbnRlcikKKyAgICAgICAgcmV0dXJuOwogCi1JbnRSZWN0IENhcmV0QmFzZTo6Y2Fy
ZXRSZXBhaW50UmVjdChOb2RlKiBub2RlKSBjb25zdAotewotICAgIHJldHVybiBhYnNvbHV0ZUJv
dW5kc0ZvckxvY2FsUmVjdChub2RlLCByZXBhaW50UmVjdEZvckNhcmV0KGxvY2FsQ2FyZXRSZWN0
V2l0aG91dFVwZGF0ZSgpKSk7CisgICAgTGF5b3V0UmVjdCBsb2NhbFJlY3QocmVjdCk7CisgICAg
aWYgKGNhcmV0UGFpbnRlci0+aXNCb3goKSkKKyAgICAgICAgdG9SZW5kZXJCb3goY2FyZXRQYWlu
dGVyKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGxvY2FsUmVjdCk7CisKKyAgICBjYXJldFBhaW50ZXIt
PnJlcGFpbnRSZWN0YW5nbGUobG9jYWxSZWN0KTsKIH0KIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6
cmVjb21wdXRlQ2FyZXRSZWN0KCkKQEAgLTEzNjIsMTggKzEzNTksMTEgQEAgYm9vbCBGcmFtZVNl
bGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgSW50UmVjdCBvbGRBYnNvbHV0ZUNhcmV0UmVwYWlu
dEJvdW5kcyA9IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7Ci0jZW5kaWYKLQotICAgIC8v
IFdlIGJlbGlldmUgdGhhdCB3ZSBuZWVkIHRvIGluZmxhdGUgdGhlIGxvY2FsIHJlY3QgYmVmb3Jl
IHRyYW5zZm9ybWluZyBpdCB0byBvYnRhaW4gdGhlIHJlcGFpbnQgYm91bmRzLgotICAgIG1fYWJz
b2x1dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBjYXJldFJlcGFpbnRSZWN0KG1fc2VsZWN0aW9uLnN0
YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0KLSNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBp
ZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkg
ewotICAgICAgICAvLyBGSVhNRTogbWFrZSBjYXJldCByZXBhaW50aW5nIGNvbnRhaW5lci1hd2Fy
ZS4KLSAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXll
cnMob2xkQWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAgTm9kZSog
bm9kZSA9IG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAgICAgcmVw
YWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIG9sZFJlY3QpOwogICAgICAgICBpZiAoc2hvdWxk
UmVwYWludENhcmV0KHZpZXcsIGlzQ29udGVudEVkaXRhYmxlKCkpKQotICAgICAgICAgICAgdmll
dy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMobV9hYnNvbHV0ZUNh
cmV0UmVwYWludEJvdW5kcywgZmFsc2UpOworICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9j
YWxSZWN0KG5vZGUsIG5ld1JlY3QpOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpA
QCAtMTQxNSw3ICsxNDA1LDcgQEAgdm9pZCBDYXJldEJhc2U6OmludmFsaWRhdGVDYXJldFJlY3Qo
Tm9kZSogbm9kZSwgYm9vbCBjYXJldFJlY3RDaGFuZ2VkKQogCiAgICAgaWYgKFJlbmRlclZpZXcq
IHZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAgaWYgKHNo
b3VsZFJlcGFpbnRDYXJldCh2aWV3LCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZShOb2RlOjpVc2Vy
U2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWlu
dFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY2FyZXRSZXBhaW50UmVjdChub2Rl
KSwgZmFsc2UpOworICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIGxv
Y2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTE2ODIsNyArMTY3
Miw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgp
CiAgICAgLy8gUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25Gb3JlZ3JvdW5kQ29sb3IoKSBjaGVjayBp
ZiB0aGUgZnJhbWUgaXMgYWN0aXZlLAogICAgIC8vIHdlIGhhdmUgdG8gdXBkYXRlIHBsYWNlcyB0
aG9zZSBjb2xvcnMgd2VyZSBwYWludGVkLgogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQotICAgICAgICB2aWV3LT5yZXBhaW50UmVj
dGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhlbmNsb3NpbmdJbnRSZWN0KGJvdW5kcygp
KSk7CisgICAgICAgIHZpZXctPnJlcGFpbnRTZWxlY3Rpb24oKTsKIAogICAgIC8vIENhcmV0IGFw
cGVhcnMgaW4gdGhlIGFjdGl2ZSBmcmFtZS4KICAgICBpZiAoYWN0aXZlQW5kRm9jdXNlZCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBkNjUxMjAzYjFkMDI0Yzhl
NzEzYzAzMDhhYmFiY2Q0ZjYzMjQ2ZjczLi5hNjJiODIzOTViZDQzNTRkNTJlZTU5YmU4YmJiNDU2
NGRhNzVjNzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0
aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC02
NSwxMCArNjUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhckNhcmV0UmVjdCgpOwogICAg
IGJvb2wgdXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50KiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBj
YXJldFBvc2l0aW9uKTsKICAgICBJbnRSZWN0IGFic29sdXRlQm91bmRzRm9yTG9jYWxSZWN0KE5v
ZGUqLCBjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Ci0gICAgSW50UmVjdCBjYXJldFJlcGFpbnRS
ZWN0KE5vZGUqKSBjb25zdDsKICAgICBib29sIHNob3VsZFJlcGFpbnRDYXJldChjb25zdCBSZW5k
ZXJWaWV3KiwgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSkgY29uc3Q7CiAgICAgdm9pZCBwYWludENh
cmV0KE5vZGUqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExh
eW91dFJlY3QmIGNsaXBSZWN0KSBjb25zdDsKLSAgICBSZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVy
ZXIoTm9kZSopIGNvbnN0OwogCiAgICAgY29uc3QgTGF5b3V0UmVjdCYgbG9jYWxDYXJldFJlY3RX
aXRob3V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jYXJldExvY2FsUmVjdDsgfQogCkBAIC0z
MDgsNyArMzA2LDYgQEAgcHJpdmF0ZToKICAgICAvLyBUaGUgcGFpbnRlZCBib3VuZHMgb2YgdGhl
IGNhcmV0IGluIGFic29sdXRlIGNvb3JkaW5hdGVzCiAgICAgSW50UmVjdCBtX2Fic0NhcmV0Qm91
bmRzOwogICAgIC8vIFNpbWlsYXIgdG8gYWJvdmUsIGJ1dCBpbmZsYXRlZCB0byBlbnN1cmUgcHJv
cGVyIHJlcGFpbnQgKHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwODYpCi0gICAgSW50UmVjdCBtX2Fic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzOwogICAgIGJv
b2wgbV9hYnNDYXJldEJvdW5kc0RpcnR5IDogMTsKICAgICBib29sIG1fY2FyZXRQYWludCA6IDE7
CiAgICAgYm9vbCBtX2lzQ2FyZXRCbGlua2luZ1N1c3BlbmRlZCA6IDE7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCmluZGV4IDg3MGJm
MWRkZmE3Mzk1OWMwZWUwYTJjYzE4ZTllZmE4ODU5Y2YyMWMuLjQzNjFmYzUyOWNkNGViNThjMTFh
MTQwZmU5NGE2MDk5OWRiOThhMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3BwCkBAIC0xMzM5LDU0ICsxMzM5LDYgQEAgdm9pZCBS
ZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFudEdlb21ldHJ5
KFJlbmRlckxheWVyKiBjb20KICAgICB9CiB9CiAKLQotdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0
b3I6OnJlcGFpbnRDb21wb3NpdGVkTGF5ZXJzQWJzb2x1dGVSZWN0KGNvbnN0IEludFJlY3QmIGFi
c1JlY3QpCi17Ci0gICAgcmVjdXJzaXZlUmVwYWludExheWVyUmVjdChyb290UmVuZGVyTGF5ZXIo
KSwgYWJzUmVjdCk7Ci19Ci0KLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVS
ZXBhaW50TGF5ZXJSZWN0KFJlbmRlckxheWVyKiBsYXllciwgY29uc3QgSW50UmVjdCYgcmVjdCkK
LXsKLSAgICAvLyBGSVhNRTogVGhpcyBtZXRob2QgZG9lcyBub3Qgd29yayBjb3JyZWN0bHkgd2l0
aCB0cmFuc2Zvcm1zLgotICAgIGlmIChsYXllci0+aXNDb21wb3NpdGVkKCkgJiYgIWxheWVyLT5i
YWNraW5nKCktPnBhaW50c0ludG9Db21wb3NpdGVkQW5jZXN0b3IoKSkKLSAgICAgICAgbGF5ZXIt
PnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QocmVjdCk7Ci0KLSNpZiAhQVNTRVJUX0RJU0FC
TEVECi0gICAgTGF5ZXJMaXN0TXV0YXRpb25EZXRlY3RvciBtdXRhdGlvbkNoZWNrZXIobGF5ZXIp
OwotI2VuZGlmCi0KLSAgICBpZiAobGF5ZXItPmhhc0NvbXBvc2l0aW5nRGVzY2VuZGFudCgpKSB7
Ci0gICAgICAgIGlmIChWZWN0b3I8UmVuZGVyTGF5ZXIqPiogbmVnWk9yZGVyTGlzdCA9IGxheWVy
LT5uZWdaT3JkZXJMaXN0KCkpIHsKLSAgICAgICAgICAgIHNpemVfdCBsaXN0U2l6ZSA9IG5lZ1pP
cmRlckxpc3QtPnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGlz
dFNpemU7ICsraSkgewotICAgICAgICAgICAgICAgIFJlbmRlckxheWVyKiBjdXJMYXllciA9IG5l
Z1pPcmRlckxpc3QtPmF0KGkpOwotICAgICAgICAgICAgICAgIEludFJlY3QgY2hpbGRSZWN0KHJl
Y3QpOwotICAgICAgICAgICAgICAgIGN1ckxheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXll
ckNvb3JkcyhsYXllciwgY2hpbGRSZWN0KTsKLSAgICAgICAgICAgICAgICByZWN1cnNpdmVSZXBh
aW50TGF5ZXJSZWN0KGN1ckxheWVyLCBjaGlsZFJlY3QpOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBwb3NaT3JkZXJMaXN0ID0g
bGF5ZXItPnBvc1pPcmRlckxpc3QoKSkgewotICAgICAgICAgICAgc2l6ZV90IGxpc3RTaXplID0g
cG9zWk9yZGVyTGlzdC0+c2l6ZSgpOwotICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVy
ID0gcG9zWk9yZGVyTGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICAgICAgSW50UmVjdCBjaGlsZFJl
Y3QocmVjdCk7Ci0gICAgICAgICAgICAgICAgY3VyTGF5ZXItPmNvbnZlcnRUb1BpeGVsU25hcHBl
ZExheWVyQ29vcmRzKGxheWVyLCBjaGlsZFJlY3QpOwotICAgICAgICAgICAgICAgIHJlY3Vyc2l2
ZVJlcGFpbnRMYXllclJlY3QoY3VyTGF5ZXIsIGNoaWxkUmVjdCk7Ci0gICAgICAgICAgICB9Ci0g
ICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKFZlY3RvcjxSZW5kZXJMYXllcio+KiBub3JtYWxGbG93
TGlzdCA9IGxheWVyLT5ub3JtYWxGbG93TGlzdCgpKSB7Ci0gICAgICAgIHNpemVfdCBsaXN0U2l6
ZSA9IG5vcm1hbEZsb3dMaXN0LT5zaXplKCk7Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbGlzdFNpemU7ICsraSkgewotICAgICAgICAgICAgUmVuZGVyTGF5ZXIqIGN1ckxheWVyID0g
bm9ybWFsRmxvd0xpc3QtPmF0KGkpOwotICAgICAgICAgICAgSW50UmVjdCBjaGlsZFJlY3QocmVj
dCk7Ci0gICAgICAgICAgICBjdXJMYXllci0+Y29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29y
ZHMobGF5ZXIsIGNoaWxkUmVjdCk7Ci0gICAgICAgICAgICByZWN1cnNpdmVSZXBhaW50TGF5ZXJS
ZWN0KGN1ckxheWVyLCBjaGlsZFJlY3QpOwotICAgICAgICB9Ci0gICAgfQotfQotCiBSZW5kZXJM
YXllciogUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyb290UmVuZGVyTGF5ZXIoKSBjb25zdAogewog
ICAgIHJldHVybiBtX3JlbmRlclZpZXctPmxheWVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgKaW5kZXggNGQ4MjhmMWE1ZjFmMTAwYmYy
NDBiYzMxNGIwMzczYWRhYmJiNTZmNy4uODRhN2Q2ZTdjOGJmMTM2YjAxNWRkN2YxN2ExNDZiNjg1
MTFjMjhiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVy
Q29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNv
bXBvc2l0b3IuaApAQCAtMTQ0LDkgKzE0NCw2IEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIG5l
YXJlc3QgYW5jZXN0b3IgbGF5ZXIgdGhhdCBoYXMgb3ZlcmZsb3cgb3IgY2xpcCwgYnV0IGlzIG5v
dCBhIHN0YWNraW5nIGNvbnRleHQKICAgICBSZW5kZXJMYXllciogZW5jbG9zaW5nTm9uU3RhY2tp
bmdDbGlwcGluZ0xheWVyKGNvbnN0IFJlbmRlckxheWVyKiBsYXllcikgY29uc3Q7CiAKLSAgICAv
LyBSZXBhaW50IHBhcnRzIG9mIGFsbCBjb21wb3NpdGVkIGxheWVycyB0aGF0IGludGVyc2VjdCB0
aGUgZ2l2ZW4gYWJzb2x1dGUgcmVjdGFuZ2xlLgotICAgIHZvaWQgcmVwYWludENvbXBvc2l0ZWRM
YXllcnNBYnNvbHV0ZVJlY3QoY29uc3QgSW50UmVjdCYpOwotCiAgICAgLy8gUmV0dXJucyB0cnVl
IGlmIHRoZSBnaXZlbiBsYXllciBuZWVkcyBpdCBvd24gYmFja2luZyBzdG9yZS4KICAgICBib29s
IHJlcXVpcmVzT3duQmFja2luZ1N0b3JlKGNvbnN0IFJlbmRlckxheWVyKiwgY29uc3QgUmVuZGVy
TGF5ZXIqIGNvbXBvc2l0aW5nQW5jZXN0b3JMYXllcikgY29uc3Q7CiAKQEAgLTI1Niw5ICsyNTMs
NiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBjbGVhckJhY2tpbmdGb3JMYXllckluY2x1ZGluZ0Rl
c2NlbmRhbnRzKFJlbmRlckxheWVyKik7CiAKLSAgICAvLyBSZXBhaW50IHRoZSBnaXZlbiByZWN0
ICh3aGljaCBpcyBsYXllcidzIGNvb3JkcyksIGFuZCByZWdpb25zIG9mIGNoaWxkIGxheWVycyB0
aGF0IGludGVyc2VjdCB0aGF0IHJlY3QuCi0gICAgdm9pZCByZWN1cnNpdmVSZXBhaW50TGF5ZXJS
ZWN0KFJlbmRlckxheWVyKiwgY29uc3QgSW50UmVjdCYpOwotCiAgICAgdm9pZCBhZGRUb092ZXJs
YXBNYXAoT3ZlcmxhcE1hcCYsIFJlbmRlckxheWVyKiwgSW50UmVjdCYgbGF5ZXJCb3VuZHMsIGJv
b2wmIGJvdW5kc0NvbXB1dGVkKTsKICAgICB2b2lkIGFkZFRvT3ZlcmxhcE1hcFJlY3Vyc2l2ZShP
dmVybGFwTWFwJiwgUmVuZGVyTGF5ZXIqLCBSZW5kZXJMYXllciogYW5jZXN0b3JMYXllciA9IDAp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKaW5kZXggMTQ1N2I2YmUy
YTQ3ZjlmYjYzYmRhZDI2MWYwMjA1YThmMTAzMTNhNi4uMmQxMzUwYjk4NDM4MTJiYzljMWVlZTRl
MmU0MTViN2VmMDE3OTY0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlclZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNw
cApAQCAtNDI3LDE5ICs0MjcsNiBAQCB2b2lkIFJlbmRlclZpZXc6OnJlcGFpbnRWaWV3UmVjdGFu
Z2xlKGNvbnN0IExheW91dFJlY3QmIHVyLCBib29sIGltbWVkaWF0ZSkgY29ucwogICAgIH0KIH0K
IAotdm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExh
eWVycyhjb25zdCBMYXlvdXRSZWN0JiB1ciwgYm9vbCBpbW1lZGlhdGUpCi17Ci0gICAgaWYgKCFz
aG91bGRSZXBhaW50KHVyKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgcmVwYWludFZpZXdSZWN0
YW5nbGUodXIsIGltbWVkaWF0ZSk7Ci0gICAgCi0jaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lU
SU5HKQotICAgIGlmIChjb21wb3NpdG9yKCktPmluQ29tcG9zaXRpbmdNb2RlKCkpCi0gICAgICAg
IGNvbXBvc2l0b3IoKS0+cmVwYWludENvbXBvc2l0ZWRMYXllcnNBYnNvbHV0ZVJlY3QocGl4ZWxT
bmFwcGVkSW50UmVjdCh1cikpOwotI2VuZGlmCi19Ci0KIHZvaWQgUmVuZGVyVmlldzo6Y29tcHV0
ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QmIHJlY3QsIGJvb2wgZml4ZWQpIGNvbnN0CiB7CiAgICAgLy8gSWYg
YSBjb250YWluZXIgd2FzIHNwZWNpZmllZCwgYW5kIHdhcyBub3QgMCBvciB0aGUgUmVuZGVyVmll
dywKQEAgLTUyOSw2ICs1MTYsMzEgQEAgSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3Vu
ZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFw
cGVkSW50UmVjdChzZWxSZWN0KTsKIH0KIAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U2VsZWN0
aW9uKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisK
KyAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tzOworCisgICAgUmVuZGVy
T2JqZWN0KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1fc2Vs
ZWN0aW9uRW5kUG9zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogbyA9IG1fc2VsZWN0aW9uU3Rh
cnQ7IG8gJiYgbyAhPSBlbmQ7IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpKSB7CisgICAgICAgIGlm
ICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAhPSBtX3NlbGVjdGlvblN0YXJ0ICYmIG8g
IT0gbV9zZWxlY3Rpb25FbmQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG8t
PnNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8obywgdHJ1ZSkucmVwYWludCgpOworCisg
ICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBh
bmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgorICAgICAgICBm
b3IgKFJlbmRlckJsb2NrKiBibG9jayA9IG8tPmNvbnRhaW5pbmdCbG9jaygpOyBibG9jayAmJiAh
YmxvY2stPmlzUmVuZGVyVmlldygpOyBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKSkg
eworICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEJsb2Nrcy5jb250YWlucyhibG9jaykpCisgICAg
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwcm9jZXNzZWRCbG9ja3MuYWRkKGJsb2Nr
KTsKKyAgICAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8oYmxvY2ssIHRydWUpLnJlcGFpbnQo
KTsKKyAgICAgICAgfQorICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElO
RykKIC8vIENvbXBvc2l0aW5nIGxheWVyIGRpbWVuc2lvbnMgdGFrZSBvdXRsaW5lIHNpemUgaW50
byBhY2NvdW50LCBzbyB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBsYXllcgogLy8gYm91bmRzIHdoZW4g
aXQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IGQ2M2Y4
ZGY4Njg2MTM3MTU4YjlhYjk4NGVhMWVjMzU0MjQ3NmU5N2UuLmZkZDFmZDQzNDI1MjY5MjYxM2Nk
ZmFkZGMwMGU3ODAwMTIyY2Q0OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcu
aApAQCAtNzksOSArNzksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZVJl
Y3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWlu
ZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwogICAg
IHZpcnR1YWwgdm9pZCByZXBhaW50Vmlld1JlY3RhbmdsZShjb25zdCBMYXlvdXRSZWN0JiwgYm9v
bCBpbW1lZGlhdGUgPSBmYWxzZSkgY29uc3Q7Ci0gICAgLy8gUmVwYWludCB0aGUgdmlldywgYW5k
IGFsbCBjb21wb3NpdGVkIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZ2l2ZW4gYWJzb2x1dGUg
cmVjdGFuZ2xlLgotICAgIC8vIEZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0byBkbyB0
aGlzLCBpZiBhbGwgcmVwYWludHMgYXJlIGNvbnRhaW5lci1yZWxhdGl2ZS4KLSAgICB2aXJ0dWFs
IHZvaWQgcmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY29uc3QgTGF5
b3V0UmVjdCYsIGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOwogCiAgICAgdmlydHVhbCB2b2lkIHBh
aW50KFBhaW50SW5mbyYsIGNvbnN0IExheW91dFBvaW50Jik7CiAgICAgdmlydHVhbCB2b2lkIHBh
aW50Qm94RGVjb3JhdGlvbnMoUGFpbnRJbmZvJiwgY29uc3QgTGF5b3V0UG9pbnQmKSBPVkVSUklE
RTsKQEAgLTk0LDYgKzkxLDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9u
RW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmQ7IH0KICAgICBJbnRSZWN0IHNlbGVj
dGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7CiAgICAg
dm9pZCBzZWxlY3Rpb25TdGFydEVuZChpbnQmIHN0YXJ0UG9zLCBpbnQmIGVuZFBvcykgY29uc3Q7
CisgICAgdm9pZCByZXBhaW50U2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIHByaW50aW5n
KCkgY29uc3Q7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177394</attachid>
            <date>2012-12-03 19:16:09 -0800</date>
            <delta_ts>2012-12-05 17:58:57 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121203191335.patch</filename>
            <type>text/plain</type>
            <size>16550</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NDY2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjllMzQwYjRkYTJlMmY3
YTg0NjczYmU3MTI0NWY1ZDIyMzgzOTJiZS4uM2RhMWJjMDMzNWI1NDhlNzJlMjZkYjFkMmM2MmQ0
ZTlmMjI3NWYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDEyLTEyLTAzICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgUmVtb3ZlZCBSZW5k
ZXJWaWV3OjpyZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycygpLAorICAg
ICAgICB3aGljaCBpcyBtYXJrZWQgYXMgIkZJWE1FOiBpZGVhbGx5IHdlJ2QgbmV2ZXIgaGF2ZSB0
byBkbyB0aGlzIgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gU2hhbGwgbm90IGNoYW5nZSByZW5k
ZXJpbmcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBlZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNhcmV0UmVuZGVyc0luc2lkZU5vZGUpOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRy
YWdDYXJldENvbnRyb2xsZXI6OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6cmVw
YWludENhcmV0Rm9yTG9jYWxSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9u
OjpyZWNvbXB1dGVDYXJldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q2FyZXRCYXNlOjppbnZh
bGlkYXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpmb2N1
c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rp
b24uaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmg6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlclZpZXcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVmlldzo6cmVw
YWludFNlbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiByZW5kZXJpbmcv
UmVuZGVyVmlldy5oOgorICAgICAgICAoUmVuZGVyVmlldyk6CisKIDIwMTItMTItMDMgIFNoZXJp
ZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVucmV2aWV3
ZWQsIHJvbGxpbmcgb3V0IHIxMzY0NjAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IDA1NzEwY2VmZGY4Y2Y1NTE3MjNkZDEyNDg4MjYzNjZmZDZmZWQ3MWQu
LjQxM2RlMWIwMGNkN2NkMGM1YWEyZjA2YmQ2MjAyZDZhMzJlMWFmMjAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0xMjE4LDYgKzEyMTgsMjUgQEAgdm9p
ZCBDYXJldEJhc2U6OmNsZWFyQ2FyZXRSZWN0KCkKICAgICBtX2NhcmV0TG9jYWxSZWN0ID0gTGF5
b3V0UmVjdCgpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgY2FyZXRSZW5kZXJzSW5zaWRlTm9k
ZShOb2RlKiBub2RlKQoreworICAgIHJldHVybiBub2RlICYmICFpc1RhYmxlRWxlbWVudChub2Rl
KSAmJiAhZWRpdGluZ0lnbm9yZXNDb250ZW50KG5vZGUpOworfQorCitzdGF0aWMgUmVuZGVyT2Jq
ZWN0KiBjYXJldFJlbmRlcmVyKE5vZGUqIG5vZGUpCit7CisgICAgaWYgKCFub2RlKQorICAgICAg
ICByZXR1cm4gMDsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwOworCisgICAgLy8gaWYg
Y2FyZXROb2RlIGlzIGEgYmxvY2sgYW5kIGNhcmV0IGlzIGluc2lkZSBpdCB0aGVuIGNhcmV0IHNo
b3VsZCBiZSBwYWludGVkIGJ5IHRoYXQgYmxvY2sKKyAgICBib29sIHBhaW50ZWRCeUJsb2NrID0g
cmVuZGVyZXItPmlzQmxvY2tGbG93KCkgJiYgY2FyZXRSZW5kZXJzSW5zaWRlTm9kZShub2RlKTsK
KyAgICByZXR1cm4gcGFpbnRlZEJ5QmxvY2sgPyByZW5kZXJlciA6IHJlbmRlcmVyLT5jb250YWlu
aW5nQmxvY2soKTsKK30KKwogYm9vbCBDYXJldEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXRQb3NpdGlvbikKIHsKICAg
ICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpAQCAtMTI1NiwzMyArMTI3NSwxNCBA
QCBib29sIENhcmV0QmFzZTo6dXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50KiBkb2N1bWVudCwgY29u
c3QgVmlzaWJsZVBvc2l0aW9uJiBjYXJldAogICAgIHJldHVybiB0cnVlOwogfQogCi1zdGF0aWMg
aW5saW5lIGJvb2wgY2FyZXRSZW5kZXJzSW5zaWRlTm9kZShOb2RlKiBub2RlKQotewotICAgIHJl
dHVybiBub2RlICYmICFpc1RhYmxlRWxlbWVudChub2RlKSAmJiAhZWRpdGluZ0lnbm9yZXNDb250
ZW50KG5vZGUpOwotfQotCi1SZW5kZXJPYmplY3QqIENhcmV0QmFzZTo6Y2FyZXRSZW5kZXJlcihO
b2RlKiBub2RlKSBjb25zdAotewotICAgIGlmICghbm9kZSkKLSAgICAgICAgcmV0dXJuIDA7Ci0K
LSAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKLSAgICBpZiAo
IXJlbmRlcmVyKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIC8vIGlmIGNhcmV0Tm9kZSBpcyBh
IGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBjYXJldCBzaG91bGQgYmUgcGFpbnRl
ZCBieSB0aGF0IGJsb2NrCi0gICAgYm9vbCBwYWludGVkQnlCbG9jayA9IHJlbmRlcmVyLT5pc0Js
b2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUobm9kZSk7Ci0gICAgcmV0dXJuIHBh
aW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7Ci19
Ci0KIFJlbmRlck9iamVjdCogRnJhbWVTZWxlY3Rpb246OmNhcmV0UmVuZGVyZXIoKSBjb25zdAog
ewotICAgIHJldHVybiBDYXJldEJhc2U6OmNhcmV0UmVuZGVyZXIobV9zZWxlY3Rpb24uc3RhcnQo
KS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FyZXRSZW5kZXJlciht
X3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwogfQogCiBSZW5kZXJPYmplY3Qq
IERyYWdDYXJldENvbnRyb2xsZXI6OmNhcmV0UmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVy
biBDYXJldEJhc2U6OmNhcmV0UmVuZGVyZXIobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRl
cHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpjYXJldFJlbmRlcmVyKG1fcG9z
aXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogc3RhdGljIGJv
b2wgaXNOb25PcnBoYW5lZENhcmV0KGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikK
QEAgLTEzMjAsMjAgKzEzMjAsMTcgQEAgSW50UmVjdCBGcmFtZVNlbGVjdGlvbjo6YWJzb2x1dGVD
YXJldEJvdW5kcygpCiAgICAgcmV0dXJuIG1fYWJzQ2FyZXRCb3VuZHM7CiB9CiAKLXN0YXRpYyBM
YXlvdXRSZWN0IHJlcGFpbnRSZWN0Rm9yQ2FyZXQoTGF5b3V0UmVjdCBjYXJldCkKK3N0YXRpYyB2
b2lkIHJlcGFpbnRDYXJldEZvckxvY2FsUmVjdChOb2RlKiBub2RlLCBjb25zdCBMYXlvdXRSZWN0
JiByZWN0KQogewotICAgIGlmIChjYXJldC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBMYXlv
dXRSZWN0KCk7Ci0gICAgLy8gRW5zdXJlIHRoYXQgdGhlIGRpcnR5IHJlY3QgaW50ZXJzZWN0cyB0
aGUgYmxvY2sgdGhhdCBwYWludHMgdGhlIGNhcmV0IGV2ZW4gaW4gdGhlIGNhc2Ugd2hlcmUKLSAg
ICAvLyB0aGUgY2FyZXQgaXRzZWxmIGlzIGp1c3Qgb3V0c2lkZSB0aGUgYmxvY2suIFNlZSA8aHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDg2Pi4KLSAgICBjYXJldC5p
bmZsYXRlWCgxKTsKLSAgICBjYXJldC5pbmZsYXRlWSgxKTsKLSAgICByZXR1cm4gY2FyZXQ7Ci19
CisgICAgUmVuZGVyT2JqZWN0KiBjYXJldFBhaW50ZXIgPSBjYXJldFJlbmRlcmVyKG5vZGUpOwor
ICAgIGlmICghY2FyZXRQYWludGVyKQorICAgICAgICByZXR1cm47CiAKLUludFJlY3QgQ2FyZXRC
YXNlOjpjYXJldFJlcGFpbnRSZWN0KE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGFi
c29sdXRlQm91bmRzRm9yTG9jYWxSZWN0KG5vZGUsIHJlcGFpbnRSZWN0Rm9yQ2FyZXQobG9jYWxD
YXJldFJlY3RXaXRob3V0VXBkYXRlKCkpKTsKKyAgICBMYXlvdXRSZWN0IGxvY2FsUmVjdChyZWN0
KTsKKyAgICBpZiAoY2FyZXRQYWludGVyLT5pc0JveCgpKQorICAgICAgICB0b1JlbmRlckJveChj
YXJldFBhaW50ZXIpLT5mbGlwRm9yV3JpdGluZ01vZGUobG9jYWxSZWN0KTsKKworICAgIGNhcmV0
UGFpbnRlci0+cmVwYWludFJlY3RhbmdsZShsb2NhbFJlY3QpOwogfQogCiBib29sIEZyYW1lU2Vs
ZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJlY3QoKQpAQCAtMTM2MiwxOCArMTM1OSwxMSBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJlY3QoKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBJbnRSZWN0IG9sZEFic29sdXRlQ2Fy
ZXRSZXBhaW50Qm91bmRzID0gbV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kczsKLSNlbmRpZgot
Ci0gICAgLy8gV2UgYmVsaWV2ZSB0aGF0IHdlIG5lZWQgdG8gaW5mbGF0ZSB0aGUgbG9jYWwgcmVj
dCBiZWZvcmUgdHJhbnNmb3JtaW5nIGl0IHRvIG9idGFpbiB0aGUgcmVwYWludCBib3VuZHMuCi0g
ICAgbV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcyA9IGNhcmV0UmVwYWludFJlY3QobV9zZWxl
Y3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKLQotI2lmIEVOQUJMRShURVhUX0NBUkVU
KQogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVy
VmlldygpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBtYWtlIGNhcmV0IHJlcGFpbnRpbmcgY29udGFp
bmVyLWF3YXJlLgotICAgICAgICB2aWV3LT5yZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9z
aXRlZExheWVycyhvbGRBYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcywgZmFsc2UpOworICAgICAg
ICBOb2RlKiBub2RlID0gbV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpOworICAg
ICAgICByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3Qobm9kZSwgb2xkUmVjdCk7CiAgICAgICAgIGlm
IChzaG91bGRSZXBhaW50Q2FyZXQodmlldywgaXNDb250ZW50RWRpdGFibGUoKSkpCi0gICAgICAg
ICAgICB2aWV3LT5yZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhtX2Fi
c29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzLCBmYWxzZSk7CisgICAgICAgICAgICByZXBhaW50Q2Fy
ZXRGb3JMb2NhbFJlY3Qobm9kZSwgbmV3UmVjdCk7CiAgICAgfQogI2VuZGlmCiAgICAgcmV0dXJu
IHRydWU7CkBAIC0xNDE1LDcgKzE0MDUsNyBAQCB2b2lkIENhcmV0QmFzZTo6aW52YWxpZGF0ZUNh
cmV0UmVjdChOb2RlKiBub2RlLCBib29sIGNhcmV0UmVjdENoYW5nZWQpCiAKICAgICBpZiAoUmVu
ZGVyVmlldyogdmlldyA9IG5vZGUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkgewogICAgICAg
ICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZpZXcsIG5vZGUtPmlzQ29udGVudEVkaXRhYmxlKE5v
ZGU6OlVzZXJTZWxlY3RBbGxJc0Fsd2F5c05vbkVkaXRhYmxlKSkpCi0gICAgICAgICAgICB2aWV3
LT5yZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjYXJldFJlcGFpbnRS
ZWN0KG5vZGUpLCBmYWxzZSk7CisgICAgICAgICAgICByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3Qo
bm9kZSwgbG9jYWxDYXJldFJlY3RXaXRob3V0VXBkYXRlKCkpOwogICAgIH0KIH0KIApAQCAtMTY4
Miw3ICsxNjcyLDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVD
aGFuZ2VkKCkKICAgICAvLyBSZW5kZXJPYmplY3Q6OnNlbGVjdGlvbkZvcmVncm91bmRDb2xvcigp
IGNoZWNrIGlmIHRoZSBmcmFtZSBpcyBhY3RpdmUsCiAgICAgLy8gd2UgaGF2ZSB0byB1cGRhdGUg
cGxhY2VzIHRob3NlIGNvbG9ycyB3ZXJlIHBhaW50ZWQuCiAgICAgaWYgKFJlbmRlclZpZXcqIHZp
ZXcgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCi0gICAgICAgIHZpZXctPnJl
cGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGVuY2xvc2luZ0ludFJlY3Qo
Ym91bmRzKCkpKTsKKyAgICAgICAgdmlldy0+cmVwYWludFNlbGVjdGlvbigpOwogCiAgICAgLy8g
Q2FyZXQgYXBwZWFycyBpbiB0aGUgYWN0aXZlIGZyYW1lLgogICAgIGlmIChhY3RpdmVBbmRGb2N1
c2VkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCmluZGV4IGQ2NTEyMDNi
MWQwMjRjOGU3MTNjMDMwOGFiYWJjZDRmNjMyNDZmNzMuLmE2MmI4MjM5NWJkNDM1NGQ1MmVlNTli
ZThiYmI0NTY0ZGE3NWM3NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJh
bWVTZWxlY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9u
LmgKQEAgLTY1LDEwICs2NSw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNsZWFyQ2FyZXRSZWN0
KCk7CiAgICAgYm9vbCB1cGRhdGVDYXJldFJlY3QoRG9jdW1lbnQqLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mIGNhcmV0UG9zaXRpb24pOwogICAgIEludFJlY3QgYWJzb2x1dGVCb3VuZHNGb3JMb2Nh
bFJlY3QoTm9kZSosIGNvbnN0IExheW91dFJlY3QmKSBjb25zdDsKLSAgICBJbnRSZWN0IGNhcmV0
UmVwYWludFJlY3QoTm9kZSopIGNvbnN0OwogICAgIGJvb2wgc2hvdWxkUmVwYWludENhcmV0KGNv
bnN0IFJlbmRlclZpZXcqLCBib29sIGlzQ29udGVudEVkaXRhYmxlKSBjb25zdDsKICAgICB2b2lk
IHBhaW50Q2FyZXQoTm9kZSosIEdyYXBoaWNzQ29udGV4dCosIGNvbnN0IExheW91dFBvaW50Jiwg
Y29uc3QgTGF5b3V0UmVjdCYgY2xpcFJlY3QpIGNvbnN0OwotICAgIFJlbmRlck9iamVjdCogY2Fy
ZXRSZW5kZXJlcihOb2RlKikgY29uc3Q7CiAKICAgICBjb25zdCBMYXlvdXRSZWN0JiBsb2NhbENh
cmV0UmVjdFdpdGhvdXRVcGRhdGUoKSBjb25zdCB7IHJldHVybiBtX2NhcmV0TG9jYWxSZWN0OyB9
CiAKQEAgLTMwOCw3ICszMDYsNiBAQCBwcml2YXRlOgogICAgIC8vIFRoZSBwYWludGVkIGJvdW5k
cyBvZiB0aGUgY2FyZXQgaW4gYWJzb2x1dGUgY29vcmRpbmF0ZXMKICAgICBJbnRSZWN0IG1fYWJz
Q2FyZXRCb3VuZHM7CiAgICAgLy8gU2ltaWxhciB0byBhYm92ZSwgYnV0IGluZmxhdGVkIHRvIGVu
c3VyZSBwcm9wZXIgcmVwYWludCAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xOTA4NikKLSAgICBJbnRSZWN0IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7
CiAgICAgYm9vbCBtX2Fic0NhcmV0Qm91bmRzRGlydHkgOiAxOwogICAgIGJvb2wgbV9jYXJldFBh
aW50IDogMTsKICAgICBib29sIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVkIDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKaW5k
ZXggNTYxZWIyOGE2ZDljOGIxOGZiZTkxNDA2Y2NkM2QzOGYyNGNhYTc3MC4uMmQ1ZDA2ZGZjOGRj
NTcyMzM1ODQ4MjE4YTAzMTBlM2Y5M2Q1ZDU0NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAKQEAgLTEzMzksNjUgKzEzMzksMjcg
QEAgdm9pZCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnVwZGF0ZUNvbXBvc2l0aW5nRGVzY2VuZGFu
dEdlb21ldHJ5KFJlbmRlckxheWVyKiBjb20KICAgICB9CiB9CiAKLQotdm9pZCBSZW5kZXJMYXll
ckNvbXBvc2l0b3I6OnJlcGFpbnRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IEludFJlY3QqIGFic1Jl
Y3QpCitzdGF0aWMgdm9pZCByZXBhaW50Q29tcG9zaXRlZExheWVyc1JlY3Vyc2l2ZShHcmFwaGlj
c0xheWVyKiBncmFwaGljc0xheWVyKQogewotICAgIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihyb290
UmVuZGVyTGF5ZXIoKSwgYWJzUmVjdCk7Ci19CisgICAgaWYgKCFncmFwaGljc0xheWVyKQorICAg
ICAgICByZXR1cm47CiAKLXZvaWQgUmVuZGVyTGF5ZXJDb21wb3NpdG9yOjpyZWN1cnNpdmVSZXBh
aW50TGF5ZXIoUmVuZGVyTGF5ZXIqIGxheWVyLCBjb25zdCBJbnRSZWN0KiByZWN0KQotewotICAg
IC8vIEZJWE1FOiBUaGlzIG1ldGhvZCBkb2VzIG5vdCB3b3JrIGNvcnJlY3RseSB3aXRoIHRyYW5z
Zm9ybXMuCi0gICAgaWYgKGxheWVyLT5pc0NvbXBvc2l0ZWQoKSAmJiAhbGF5ZXItPmJhY2tpbmco
KS0+cGFpbnRzSW50b0NvbXBvc2l0ZWRBbmNlc3RvcigpKSB7Ci0gICAgICAgIGlmIChyZWN0KQot
ICAgICAgICAgICAgbGF5ZXItPnNldEJhY2tpbmdOZWVkc1JlcGFpbnRJblJlY3QoKnJlY3QpOwot
ICAgICAgICBlbHNlCi0gICAgICAgICAgICBsYXllci0+c2V0QmFja2luZ05lZWRzUmVwYWludCgp
OwotICAgIH0KKyAgICBncmFwaGljc0xheWVyLT5zZXROZWVkc0Rpc3BsYXkoKTsKIAotI2lmICFB
U1NFUlRfRElTQUJMRUQKLSAgICBMYXllckxpc3RNdXRhdGlvbkRldGVjdG9yIG11dGF0aW9uQ2hl
Y2tlcihsYXllcik7Ci0jZW5kaWYKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGdyYXBoaWNz
TGF5ZXItPmNoaWxkcmVuKCkuc2l6ZSgpOyArK2kpCisgICAgICAgIHJlcGFpbnRDb21wb3NpdGVk
TGF5ZXJzUmVjdXJzaXZlKGdyYXBoaWNzTGF5ZXItPmNoaWxkcmVuKClbaV0pOwogCi0gICAgaWYg
KGxheWVyLT5oYXNDb21wb3NpdGluZ0Rlc2NlbmRhbnQoKSkgewotICAgICAgICBpZiAoVmVjdG9y
PFJlbmRlckxheWVyKj4qIG5lZ1pPcmRlckxpc3QgPSBsYXllci0+bmVnWk9yZGVyTGlzdCgpKSB7
Ci0gICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBuZWdaT3JkZXJMaXN0LT5zaXplKCk7Ci0g
ICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxpc3RTaXplOyArK2kpIHsKLSAgICAg
ICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBuZWdaT3JkZXJMaXN0LT5hdChpKTsK
LSAgICAgICAgICAgICAgICBpZiAocmVjdCkgewotICAgICAgICAgICAgICAgICAgICBJbnRSZWN0
IGNoaWxkUmVjdCgqcmVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIGN1ckxheWVyLT5jb252ZXJ0
VG9QaXhlbFNuYXBwZWRMYXllckNvb3JkcyhsYXllciwgY2hpbGRSZWN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGN1ckxheWVyLCAmY2hpbGRSZWN0KTsKLSAg
ICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWlu
dExheWVyKGN1ckxheWVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgIGlmIChHcmFw
aGljc0xheWVyKiByZXBsaWNhTGF5ZXIgPSBncmFwaGljc0xheWVyLT5yZXBsaWNhTGF5ZXIoKSkK
KyAgICAgICAgcmVwYWludENvbXBvc2l0ZWRMYXllcnNSZWN1cnNpdmUocmVwbGljYUxheWVyKTsK
IAotICAgICAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIHBvc1pPcmRlckxpc3QgPSBsYXll
ci0+cG9zWk9yZGVyTGlzdCgpKSB7Ci0gICAgICAgICAgICBzaXplX3QgbGlzdFNpemUgPSBwb3Na
T3JkZXJMaXN0LT5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxp
c3RTaXplOyArK2kpIHsKLSAgICAgICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBw
b3NaT3JkZXJMaXN0LT5hdChpKTsKLSAgICAgICAgICAgICAgICBpZiAocmVjdCkgewotICAgICAg
ICAgICAgICAgICAgICBJbnRSZWN0IGNoaWxkUmVjdCgqcmVjdCk7Ci0gICAgICAgICAgICAgICAg
ICAgIGN1ckxheWVyLT5jb252ZXJ0VG9QaXhlbFNuYXBwZWRMYXllckNvb3JkcyhsYXllciwgY2hp
bGRSZWN0KTsKLSAgICAgICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGN1ckxh
eWVyLCAmY2hpbGRSZWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGN1ckxheWVyKTsKLSAgICAgICAgICAgIH0KLSAg
ICAgICAgfQotICAgIH0KLSAgICBpZiAoVmVjdG9yPFJlbmRlckxheWVyKj4qIG5vcm1hbEZsb3dM
aXN0ID0gbGF5ZXItPm5vcm1hbEZsb3dMaXN0KCkpIHsKLSAgICAgICAgc2l6ZV90IGxpc3RTaXpl
ID0gbm9ybWFsRmxvd0xpc3QtPnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBsaXN0U2l6ZTsgKytpKSB7Ci0gICAgICAgICAgICBSZW5kZXJMYXllciogY3VyTGF5ZXIgPSBu
b3JtYWxGbG93TGlzdC0+YXQoaSk7Ci0gICAgICAgICAgICBpZiAocmVjdCkgewotICAgICAgICAg
ICAgICAgIEludFJlY3QgY2hpbGRSZWN0KCpyZWN0KTsKLSAgICAgICAgICAgICAgICBjdXJMYXll
ci0+Y29udmVydFRvUGl4ZWxTbmFwcGVkTGF5ZXJDb29yZHMobGF5ZXIsIGNoaWxkUmVjdCk7Ci0g
ICAgICAgICAgICAgICAgcmVjdXJzaXZlUmVwYWludExheWVyKGN1ckxheWVyLCAmY2hpbGRSZWN0
KTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZVJlcGFpbnRM
YXllcihjdXJMYXllcik7Ci0gICAgICAgIH0KLSAgICB9CisgICAgaWYgKEdyYXBoaWNzTGF5ZXIq
IG1hc2tMYXllciA9IGdyYXBoaWNzTGF5ZXItPm1hc2tMYXllcigpKQorICAgICAgICByZXBhaW50
Q29tcG9zaXRlZExheWVyc1JlY3Vyc2l2ZShtYXNrTGF5ZXIpOworCit9CisKK3ZvaWQgUmVuZGVy
TGF5ZXJDb21wb3NpdG9yOjpyZXBhaW50Q29tcG9zaXRlZExheWVycygpIGNvbnN0Cit7CisgICAg
cmVwYWludENvbXBvc2l0ZWRMYXllcnNSZWN1cnNpdmUocm9vdEdyYXBoaWNzTGF5ZXIoKSk7CiB9
CiAKIFJlbmRlckxheWVyKiBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJvb3RSZW5kZXJMYXllcigp
IGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmgKaW5kZXggNTE5MzQxMWEyZDcxMGU3OWUyMzhmNTEwYmY3NGFlMGU2YTFmZGNhMS4uNTgz
NWRlMDFkNWQ2YmIyYTA4NTA2NDIxZmE2MmFlOTdjNWFlZTYyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckNvbXBvc2l0b3IuaApAQCAtMTQ0LDggKzE0NCw4
IEBAIHB1YmxpYzoKICAgICAvLyBHZXQgdGhlIG5lYXJlc3QgYW5jZXN0b3IgbGF5ZXIgdGhhdCBo
YXMgb3ZlcmZsb3cgb3IgY2xpcCwgYnV0IGlzIG5vdCBhIHN0YWNraW5nIGNvbnRleHQKICAgICBS
ZW5kZXJMYXllciogZW5jbG9zaW5nTm9uU3RhY2tpbmdDbGlwcGluZ0xheWVyKGNvbnN0IFJlbmRl
ckxheWVyKiBsYXllcikgY29uc3Q7CiAKLSAgICAvLyBSZXBhaW50IHBhcnRzIG9mIGFsbCBjb21w
b3NpdGVkIGxheWVycyB0aGF0IGludGVyc2VjdCB0aGUgZ2l2ZW4gYWJzb2x1dGUgcmVjdGFuZ2xl
IChvciB0aGUgZW50aXJlIGxheWVyIGlmIHRoZSBwb2ludGVyIGlzIG51bGwpLgotICAgIHZvaWQg
cmVwYWludENvbXBvc2l0ZWRMYXllcnMoY29uc3QgSW50UmVjdCogPSAwKTsKKyAgICAvLyBSZXBh
aW50IGFsbCBjb21wb3NpdGVkIGxheWVycworICAgIHZvaWQgcmVwYWludENvbXBvc2l0ZWRMYXll
cnMoKSBjb25zdDsKIAogICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gbGF5ZXIgbmVl
ZHMgaXQgb3duIGJhY2tpbmcgc3RvcmUuCiAgICAgYm9vbCByZXF1aXJlc093bkJhY2tpbmdTdG9y
ZShjb25zdCBSZW5kZXJMYXllciosIGNvbnN0IFJlbmRlckxheWVyKiBjb21wb3NpdGluZ0FuY2Vz
dG9yTGF5ZXIpIGNvbnN0OwpAQCAtMjU2LDkgKzI1Niw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lk
IGNsZWFyQmFja2luZ0ZvckxheWVySW5jbHVkaW5nRGVzY2VuZGFudHMoUmVuZGVyTGF5ZXIqKTsK
IAotICAgIC8vIFJlcGFpbnQgdGhlIGdpdmVuIHJlY3QgKHdoaWNoIGlzIGxheWVyJ3MgY29vcmRz
KSwgYW5kIHJlZ2lvbnMgb2YgY2hpbGQgbGF5ZXJzIHRoYXQgaW50ZXJzZWN0IHRoYXQgcmVjdC4K
LSAgICB2b2lkIHJlY3Vyc2l2ZVJlcGFpbnRMYXllcihSZW5kZXJMYXllciosIGNvbnN0IEludFJl
Y3QqID0gMCk7Ci0KICAgICB2b2lkIGFkZFRvT3ZlcmxhcE1hcChPdmVybGFwTWFwJiwgUmVuZGVy
TGF5ZXIqLCBJbnRSZWN0JiBsYXllckJvdW5kcywgYm9vbCYgYm91bmRzQ29tcHV0ZWQpOwogICAg
IHZvaWQgYWRkVG9PdmVybGFwTWFwUmVjdXJzaXZlKE92ZXJsYXBNYXAmLCBSZW5kZXJMYXllcios
IFJlbmRlckxheWVyKiBhbmNlc3RvckxheWVyID0gMCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJWaWV3LmNwcAppbmRleCA0MTEwZWZkOWIyZmFmODRmYjNkODNmNGFhYTI1ZDVjMDM4
MDU0ZGIxLi5kMTMwNDg1YWJhN2U5MjQ4YzMzNmRkYzliZjA5N2YyZGFkMWUxODY1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC00MjksMjEgKzQyOSw2IEBAIHZv
aWQgUmVuZGVyVmlldzo6cmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYgdXIs
IGJvb2wgaW1tZWRpYXRlKSBjb25zCiAgICAgfQogfQogCi12b2lkIFJlbmRlclZpZXc6OnJlcGFp
bnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNvbnN0IExheW91dFJlY3QmIHVy
LCBib29sIGltbWVkaWF0ZSkKLXsKLSAgICBpZiAoIXNob3VsZFJlcGFpbnQodXIpKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICByZXBhaW50Vmlld1JlY3RhbmdsZSh1ciwgaW1tZWRpYXRlKTsKLSAg
ICAKLSNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCi0gICAgaWYgKGNvbXBvc2l0b3Io
KS0+aW5Db21wb3NpdGluZ01vZGUoKSkgewotICAgICAgICBJbnRSZWN0IHJlcGFpbnRSZWN0ID0g
cGl4ZWxTbmFwcGVkSW50UmVjdCh1cik7Ci0gICAgICAgIGNvbXBvc2l0b3IoKS0+cmVwYWludENv
bXBvc2l0ZWRMYXllcnMoJnJlcGFpbnRSZWN0KTsKLSAgICB9Ci0jZW5kaWYKLX0KLQogdm9pZCBS
ZW5kZXJWaWV3OjpyZXBhaW50Vmlld0FuZENvbXBvc2l0ZWRMYXllcnMoKQogewogICAgIHJlcGFp
bnQoKTsKQEAgLTU0Myw2ICs1MjgsMzEgQEAgSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25C
b3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxT
bmFwcGVkSW50UmVjdChzZWxSZWN0KTsKIH0KIAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U2Vs
ZWN0aW9uKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CisKKyAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tzOworCisgICAgUmVu
ZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1f
c2VsZWN0aW9uRW5kUG9zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogbyA9IG1fc2VsZWN0aW9u
U3RhcnQ7IG8gJiYgbyAhPSBlbmQ7IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpKSB7CisgICAgICAg
IGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAhPSBtX3NlbGVjdGlvblN0YXJ0ICYm
IG8gIT0gbV9zZWxlY3Rpb25FbmQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYg
KG8tPnNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGNvbnRp
bnVlOworCisgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8obywgdHJ1ZSkucmVwYWludCgpOwor
CisgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2Fw
cyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgorICAgICAg
ICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9IG8tPmNvbnRhaW5pbmdCbG9jaygpOyBibG9jayAm
JiAhYmxvY2stPmlzUmVuZGVyVmlldygpOyBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2so
KSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEJsb2Nrcy5jb250YWlucyhibG9jaykpCisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwcm9jZXNzZWRCbG9ja3MuYWRkKGJs
b2NrKTsKKyAgICAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8oYmxvY2ssIHRydWUpLnJlcGFp
bnQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJ
VElORykKIC8vIENvbXBvc2l0aW5nIGxheWVyIGRpbWVuc2lvbnMgdGFrZSBvdXRsaW5lIHNpemUg
aW50byBhY2NvdW50LCBzbyB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBsYXllcgogLy8gYm91bmRzIHdo
ZW4gaXQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDk5
YWIxYzFhM2JiZTA2NjVhZjYxMmM2NDA5MGQxY2E5YTQ4Yzc5ODIuLjdkZTI5N2VlYmMxMmU5Njli
N2UzYTEwNzNkZDcxNWQwMzQ4ODU5NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZp
ZXcuaApAQCAtNzksOSArNzksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgY29tcHV0
ZVJlY3RGb3JSZXBhaW50KGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqIHJlcGFpbnRDb250
YWluZXIsIExheW91dFJlY3QmLCBib29sIGZpeGVkID0gZmFsc2UpIGNvbnN0IE9WRVJSSURFOwog
ICAgIHZvaWQgcmVwYWludFZpZXdSZWN0YW5nbGUoY29uc3QgTGF5b3V0UmVjdCYsIGJvb2wgaW1t
ZWRpYXRlID0gZmFsc2UpIGNvbnN0OwotICAgIC8vIFJlcGFpbnQgdGhlIHZpZXcsIGFuZCBhbGwg
Y29tcG9zaXRlZCBsYXllcnMgdGhhdCBpbnRlcnNlY3QgdGhlIGdpdmVuIGFic29sdXRlIHJlY3Rh
bmdsZS4KLSAgICAvLyBGSVhNRTogaWRlYWxseSB3ZSdkIG5ldmVyIGhhdmUgdG8gZG8gdGhpcywg
aWYgYWxsIHJlcGFpbnRzIGFyZSBjb250YWluZXItcmVsYXRpdmUuCi0gICAgdm9pZCByZXBhaW50
UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhjb25zdCBMYXlvdXRSZWN0JiwgYm9v
bCBpbW1lZGlhdGUgPSBmYWxzZSk7CiAgICAgdm9pZCByZXBhaW50Vmlld0FuZENvbXBvc2l0ZWRM
YXllcnMoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBwYWludChQYWludEluZm8mLCBjb25zdCBMYXlv
dXRQb2ludCYpOwpAQCAtOTUsNiArOTIsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBz
ZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQogICAgIEludFJl
Y3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBjb25z
dDsKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3RhcnRQb3MsIGludCYgZW5kUG9z
KSBjb25zdDsKKyAgICB2b2lkIHJlcGFpbnRTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIGJvb2wg
cHJpbnRpbmcoKSBjb25zdDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>177891</attachid>
            <date>2012-12-05 17:59:00 -0800</date>
            <delta_ts>2012-12-06 18:21:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121205175625.patch</filename>
            <type>text/plain</type>
            <size>10151</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI2OGI3NDkzNTdkNWU4
ZDk2NzNlOWViYzk0MWNhNTU0NjkyOTlmMi4uNzMyNDIxNTM5MmIxYjdjMGY1YzZkNGU5ZWM4YjEx
YWVhZWM4ZTJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTEyLTA1ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgTm8gbmV3IHRlc3Rz
LiBTaGFsbCBub3QgY2hhbmdlIHJlbmRlcmluZyBiZWhhdmlvci4KKworICAgICAgICAqIGVkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y2FyZXRSZW5kZXJzSW5z
aWRlTm9kZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcmV0UmVu
ZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmNhcmV0UmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NhcmV0Q29udHJvbGxlcjo6Y2FyZXRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpyZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpDYXJldEJhc2U6OmludmFsaWRhdGVDYXJldFJlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVTZWxlY3Rpb246OmZvY3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAg
ICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTZWxlY3Rpb24p
OgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoK
KyAgICAgICAgKFJlbmRlclZpZXcpOgorCiAyMDEyLTEyLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVs
bEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFu
c2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCAwNTcxMGNlZmRmOGNmNTUxNzIzZGQxMjQ4
ODI2MzY2ZmQ2ZmVkNzFkLi40MTNkZTFiMDBjZDdjZDBjNWFhMmYwNmJkNjIwMmQ2YTMyZTFhZjIw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTIxOCw2
ICsxMjE4LDI1IEBAIHZvaWQgQ2FyZXRCYXNlOjpjbGVhckNhcmV0UmVjdCgpCiAgICAgbV9jYXJl
dExvY2FsUmVjdCA9IExheW91dFJlY3QoKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGNhcmV0
UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZSAmJiAhaXNU
YWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsKK30KKwor
c3RhdGljIFJlbmRlck9iamVjdCogY2FyZXRSZW5kZXJlcihOb2RlKiBub2RlKQoreworICAgIGlm
ICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVy
ID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIC8vIGlmIGNhcmV0Tm9kZSBpcyBhIGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUg
aXQgdGhlbiBjYXJldCBzaG91bGQgYmUgcGFpbnRlZCBieSB0aGF0IGJsb2NrCisgICAgYm9vbCBw
YWludGVkQnlCbG9jayA9IHJlbmRlcmVyLT5pc0Jsb2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0lu
c2lkZU5vZGUobm9kZSk7CisgICAgcmV0dXJuIHBhaW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiBy
ZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7Cit9CisKIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVD
YXJldFJlY3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0
UG9zaXRpb24pCiB7CiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEy
NTYsMzMgKzEyNzUsMTQgQEAgYm9vbCBDYXJldEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVu
dCogZG9jdW1lbnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXQKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSog
bm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVk
aXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsKLX0KLQotUmVuZGVyT2JqZWN0KiBDYXJldEJhc2U6
OmNhcmV0UmVuZGVyZXIoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAg
ICAgIHJldHVybiAwOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBp
ZiBjYXJldE5vZGUgaXMgYSBibG9jayBhbmQgY2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQg
c2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhhdCBibG9jawotICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sg
PSByZW5kZXJlci0+aXNCbG9ja0Zsb3coKSAmJiBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUp
OwotICAgIHJldHVybiBwYWludGVkQnlCbG9jayA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRh
aW5pbmdCbG9jaygpOwotfQotCiBSZW5kZXJPYmplY3QqIEZyYW1lU2VsZWN0aW9uOjpjYXJldFJl
bmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1f
c2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6
OmNhcmV0UmVuZGVyZXIobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0K
IAogUmVuZGVyT2JqZWN0KiBEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKCkgY29u
c3QKIHsKLSAgICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fcG9zaXRpb24uZGVl
cEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2Fy
ZXRSZW5kZXJlcihtX3Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7
CiB9CiAKIHN0YXRpYyBib29sIGlzTm9uT3JwaGFuZWRDYXJldChjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJiBzZWxlY3Rpb24pCkBAIC0xMzIwLDIwICsxMzIwLDE3IEBAIEludFJlY3QgRnJhbWVTZWxl
Y3Rpb246OmFic29sdXRlQ2FyZXRCb3VuZHMoKQogICAgIHJldHVybiBtX2Fic0NhcmV0Qm91bmRz
OwogfQogCi1zdGF0aWMgTGF5b3V0UmVjdCByZXBhaW50UmVjdEZvckNhcmV0KExheW91dFJlY3Qg
Y2FyZXQpCitzdGF0aWMgdm9pZCByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QoTm9kZSogbm9kZSwg
Y29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoY2FyZXQuaXNFbXB0eSgpKQotICAg
ICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJ0eSBy
ZWN0IGludGVyc2VjdHMgdGhlIGJsb2NrIHRoYXQgcGFpbnRzIHRoZSBjYXJldCBldmVuIGluIHRo
ZSBjYXNlIHdoZXJlCi0gICAgLy8gdGhlIGNhcmV0IGl0c2VsZiBpcyBqdXN0IG91dHNpZGUgdGhl
IGJsb2NrLiBTZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4
Nj4uCi0gICAgY2FyZXQuaW5mbGF0ZVgoMSk7Ci0gICAgY2FyZXQuaW5mbGF0ZVkoMSk7Ci0gICAg
cmV0dXJuIGNhcmV0OwotfQorICAgIFJlbmRlck9iamVjdCogY2FyZXRQYWludGVyID0gY2FyZXRS
ZW5kZXJlcihub2RlKTsKKyAgICBpZiAoIWNhcmV0UGFpbnRlcikKKyAgICAgICAgcmV0dXJuOwog
Ci1JbnRSZWN0IENhcmV0QmFzZTo6Y2FyZXRSZXBhaW50UmVjdChOb2RlKiBub2RlKSBjb25zdAot
ewotICAgIHJldHVybiBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChub2RlLCByZXBhaW50UmVj
dEZvckNhcmV0KGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKSk7CisgICAgTGF5b3V0UmVj
dCBsb2NhbFJlY3QocmVjdCk7CisgICAgaWYgKGNhcmV0UGFpbnRlci0+aXNCb3goKSkKKyAgICAg
ICAgdG9SZW5kZXJCb3goY2FyZXRQYWludGVyKS0+ZmxpcEZvcldyaXRpbmdNb2RlKGxvY2FsUmVj
dCk7CisKKyAgICBjYXJldFBhaW50ZXItPnJlcGFpbnRSZWN0YW5nbGUobG9jYWxSZWN0KTsKIH0K
IAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKQEAgLTEzNjIsMTgg
KzEzNTksMTEgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgSW50UmVj
dCBvbGRBYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcyA9IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRC
b3VuZHM7Ci0jZW5kaWYKLQotICAgIC8vIFdlIGJlbGlldmUgdGhhdCB3ZSBuZWVkIHRvIGluZmxh
dGUgdGhlIGxvY2FsIHJlY3QgYmVmb3JlIHRyYW5zZm9ybWluZyBpdCB0byBvYnRhaW4gdGhlIHJl
cGFpbnQgYm91bmRzLgotICAgIG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBjYXJldFJl
cGFpbnRSZWN0KG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0KLSNpZiBF
TkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCktPnJlbmRlclZpZXcoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFrZSBjYXJldCBy
ZXBhaW50aW5nIGNvbnRhaW5lci1hd2FyZS4KLSAgICAgICAgdmlldy0+cmVwYWludFJlY3Rhbmds
ZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMob2xkQWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMs
IGZhbHNlKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVj
YXRlZE5vZGUoKTsKKyAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIG9sZFJl
Y3QpOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZpZXcsIGlzQ29udGVudEVkaXRh
YmxlKCkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBv
c2l0ZWRMYXllcnMobV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcywgZmFsc2UpOworICAgICAg
ICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIG5ld1JlY3QpOwogICAgIH0KICNl
bmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTQxNSw3ICsxNDA1LDcgQEAgdm9pZCBDYXJldEJh
c2U6OmludmFsaWRhdGVDYXJldFJlY3QoTm9kZSogbm9kZSwgYm9vbCBjYXJldFJlY3RDaGFuZ2Vk
KQogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFJlcGFpbnRDYXJldCh2aWV3LCBub2RlLT5pc0Nv
bnRlbnRFZGl0YWJsZShOb2RlOjpVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkpKQot
ICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXll
cnMoY2FyZXRSZXBhaW50UmVjdChub2RlKSwgZmFsc2UpOworICAgICAgICAgICAgcmVwYWludENh
cmV0Rm9yTG9jYWxSZWN0KG5vZGUsIGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsKICAg
ICB9CiB9CiAKQEAgLTE2ODIsNyArMTY3Miw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OmZvY3Vz
ZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCgpCiAgICAgLy8gUmVuZGVyT2JqZWN0OjpzZWxlY3Rpb25G
b3JlZ3JvdW5kQ29sb3IoKSBjaGVjayBpZiB0aGUgZnJhbWUgaXMgYWN0aXZlLAogICAgIC8vIHdl
IGhhdmUgdG8gdXBkYXRlIHBsYWNlcyB0aG9zZSBjb2xvcnMgd2VyZSBwYWludGVkLgogICAgIGlm
IChSZW5kZXJWaWV3KiB2aWV3ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQot
ICAgICAgICB2aWV3LT5yZXBhaW50UmVjdGFuZ2xlSW5WaWV3QW5kQ29tcG9zaXRlZExheWVycyhl
bmNsb3NpbmdJbnRSZWN0KGJvdW5kcygpKSk7CisgICAgICAgIHZpZXctPnJlcGFpbnRTZWxlY3Rp
b24oKTsKIAogICAgIC8vIENhcmV0IGFwcGVhcnMgaW4gdGhlIGFjdGl2ZSBmcmFtZS4KICAgICBp
ZiAoYWN0aXZlQW5kRm9jdXNlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aAppbmRleCBkNjUxMjAzYjFkMDI0YzhlNzEzYzAzMDhhYmFiY2Q0ZjYzMjQ2ZjczLi5lYzc3YzNm
NDYxMDZhMjIzNDI3N2VmNTYzOThmZjk0ODA2MjZjMDIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oCkBAIC02NSwxMCArNjUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9p
ZCBjbGVhckNhcmV0UmVjdCgpOwogICAgIGJvb2wgdXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50Kiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjYXJldFBvc2l0aW9uKTsKICAgICBJbnRSZWN0IGFic29s
dXRlQm91bmRzRm9yTG9jYWxSZWN0KE5vZGUqLCBjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Ci0g
ICAgSW50UmVjdCBjYXJldFJlcGFpbnRSZWN0KE5vZGUqKSBjb25zdDsKICAgICBib29sIHNob3Vs
ZFJlcGFpbnRDYXJldChjb25zdCBSZW5kZXJWaWV3KiwgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSkg
Y29uc3Q7CiAgICAgdm9pZCBwYWludENhcmV0KE5vZGUqLCBHcmFwaGljc0NvbnRleHQqLCBjb25z
dCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25zdDsKLSAgICBS
ZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgY29uc3QgTGF5
b3V0UmVjdCYgbG9jYWxDYXJldFJlY3RXaXRob3V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9j
YXJldExvY2FsUmVjdDsgfQogCkBAIC0zMDcsOCArMzA1LDYgQEAgcHJpdmF0ZToKICAgICBUaW1l
cjxGcmFtZVNlbGVjdGlvbj4gbV9jYXJldEJsaW5rVGltZXI7CiAgICAgLy8gVGhlIHBhaW50ZWQg
Ym91bmRzIG9mIHRoZSBjYXJldCBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcwogICAgIEludFJlY3Qg
bV9hYnNDYXJldEJvdW5kczsKLSAgICAvLyBTaW1pbGFyIHRvIGFib3ZlLCBidXQgaW5mbGF0ZWQg
dG8gZW5zdXJlIHByb3BlciByZXBhaW50IChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE5MDg2KQotICAgIEludFJlY3QgbV9hYnNvbHV0ZUNhcmV0UmVwYWludEJv
dW5kczsKICAgICBib29sIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2Nh
cmV0UGFpbnQgOiAxOwogICAgIGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDQxMTBlZmQ5YjJmYWY4
NGZiM2Q4M2Y0YWFhMjVkNWMwMzgwNTRkYjEuLjRlYTAxYTYzNGRkZTAxZDYwMTJmOWExMmZjMTEw
NDJlOTE0YzNjZDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAg
LTU0Myw2ICs1NDMsMzEgQEAgSW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9v
bCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50
UmVjdChzZWxSZWN0KTsKIH0KIAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U2VsZWN0aW9uKCkg
Y29uc3QKK3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBI
YXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tzOworCisgICAgUmVuZGVyT2JqZWN0
KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9u
RW5kUG9zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogbyA9IG1fc2VsZWN0aW9uU3RhcnQ7IG8g
JiYgbyAhPSBlbmQ7IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigpKSB7CisgICAgICAgIGlmICghby0+
Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAhPSBtX3NlbGVjdGlvblN0YXJ0ICYmIG8gIT0gbV9z
ZWxlY3Rpb25FbmQpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG8tPnNlbGVj
dGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisg
ICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8obywgdHJ1ZSkucmVwYWludCgpOworCisgICAgICAg
IC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFy
Z2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3ZWxsLgorICAgICAgICBmb3IgKFJl
bmRlckJsb2NrKiBibG9jayA9IG8tPmNvbnRhaW5pbmdCbG9jaygpOyBibG9jayAmJiAhYmxvY2st
PmlzUmVuZGVyVmlldygpOyBibG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKSkgeworICAg
ICAgICAgICAgaWYgKHByb2Nlc3NlZEJsb2Nrcy5jb250YWlucyhibG9jaykpCisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBwcm9jZXNzZWRCbG9ja3MuYWRkKGJsb2NrKTsKKyAg
ICAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8oYmxvY2ssIHRydWUpLnJlcGFpbnQoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIC8v
IENvbXBvc2l0aW5nIGxheWVyIGRpbWVuc2lvbnMgdGFrZSBvdXRsaW5lIHNpemUgaW50byBhY2Nv
dW50LCBzbyB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBsYXllcgogLy8gYm91bmRzIHdoZW4gaXQgY2hh
bmdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDk5YWIxYzFhM2Ji
ZTA2NjVhZjYxMmM2NDA5MGQxY2E5YTQ4Yzc5ODIuLjk5MWYwYmI1MDU1MmMyNTQ0YWVlOWY5MmQw
ZjI1YjJhYjk5Y2U4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAt
OTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQoKSBj
b25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQogICAgIEludFJlY3Qgc2VsZWN0aW9uQm91
bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKICAgICB2b2lkIHNl
bGVjdGlvblN0YXJ0RW5kKGludCYgc3RhcnRQb3MsIGludCYgZW5kUG9zKSBjb25zdDsKKyAgICB2
b2lkIHJlcGFpbnRTZWxlY3Rpb24oKSBjb25zdDsKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25z
dDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178127</attachid>
            <date>2012-12-06 18:21:09 -0800</date>
            <delta_ts>2012-12-06 18:43:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121206181833.patch</filename>
            <type>text/plain</type>
            <size>11851</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI2OGI3NDkzNTdkNWU4
ZDk2NzNlOWViYzk0MWNhNTU0NjkyOTlmMi4uNjI2ZThiMmE0ZjQ3MDUzYTA3NzExMDk1NmFmYmZh
MDkyODc5MDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA2ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FyZXRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2FyZXRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlcGFpbnRDYXJldEZvckxvY2FsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdCk6CisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KFJlbmRlclZpZXcpOgorCiAyMDEyLTEyLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMg
dG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcAppbmRleCAwNTcxMGNlZmRmOGNmNTUxNzIzZGQxMjQ4ODI2MzY2ZmQ2
ZmVkNzFkLi5mNjU4MmM0NmVmY2MyODljOTJjYTk0ODQ1MmIwMmRjMjZkYzhkNWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTIxOCw2ICsxMjE4LDI1
IEBAIHZvaWQgQ2FyZXRCYXNlOjpjbGVhckNhcmV0UmVjdCgpCiAgICAgbV9jYXJldExvY2FsUmVj
dCA9IExheW91dFJlY3QoKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0lu
c2lkZU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1l
bnQobm9kZSkgJiYgIWVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsKK30KKworc3RhdGljIFJl
bmRlck9iamVjdCogY2FyZXRSZW5kZXJlcihOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IC8vIGlmIGNhcmV0Tm9kZSBpcyBhIGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBj
YXJldCBzaG91bGQgYmUgcGFpbnRlZCBieSB0aGF0IGJsb2NrCisgICAgYm9vbCBwYWludGVkQnlC
bG9jayA9IHJlbmRlcmVyLT5pc0Jsb2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUo
bm9kZSk7CisgICAgcmV0dXJuIHBhaW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiByZW5kZXJlci0+
Y29udGFpbmluZ0Jsb2NrKCk7Cit9CisKIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJlY3Qo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24p
CiB7CiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEyNTYsMzMgKzEy
NzUsMTQgQEAgYm9vbCBDYXJldEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9kZSkKLXsK
LSAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRpbmdJZ25v
cmVzQ29udGVudChub2RlKTsKLX0KLQotUmVuZGVyT2JqZWN0KiBDYXJldEJhc2U6OmNhcmV0UmVu
ZGVyZXIoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBpZiBjYXJldE5v
ZGUgaXMgYSBibG9jayBhbmQgY2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQgc2hvdWxkIGJl
IHBhaW50ZWQgYnkgdGhhdCBibG9jawotICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sgPSByZW5kZXJl
ci0+aXNCbG9ja0Zsb3coKSAmJiBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUpOwotICAgIHJl
dHVybiBwYWludGVkQnlCbG9jayA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9j
aygpOwotfQotCiBSZW5kZXJPYmplY3QqIEZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fc2VsZWN0aW9u
LnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhcmV0UmVu
ZGVyZXIobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogUmVuZGVy
T2JqZWN0KiBEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fcG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FyZXRSZW5kZXJl
cihtX3Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiB9CiAKIHN0
YXRpYyBib29sIGlzTm9uT3JwaGFuZWRDYXJldChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24pCkBAIC0xMzIwLDIwICsxMzIwLDEzIEBAIEludFJlY3QgRnJhbWVTZWxlY3Rpb246OmFi
c29sdXRlQ2FyZXRCb3VuZHMoKQogICAgIHJldHVybiBtX2Fic0NhcmV0Qm91bmRzOwogfQogCi1z
dGF0aWMgTGF5b3V0UmVjdCByZXBhaW50UmVjdEZvckNhcmV0KExheW91dFJlY3QgY2FyZXQpCitz
dGF0aWMgdm9pZCByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QoTm9kZSogbm9kZSwgY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoY2FyZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdCgpOwotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJ0eSByZWN0IGludGVy
c2VjdHMgdGhlIGJsb2NrIHRoYXQgcGFpbnRzIHRoZSBjYXJldCBldmVuIGluIHRoZSBjYXNlIHdo
ZXJlCi0gICAgLy8gdGhlIGNhcmV0IGl0c2VsZiBpcyBqdXN0IG91dHNpZGUgdGhlIGJsb2NrLiBT
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4Nj4uCi0gICAg
Y2FyZXQuaW5mbGF0ZVgoMSk7Ci0gICAgY2FyZXQuaW5mbGF0ZVkoMSk7Ci0gICAgcmV0dXJuIGNh
cmV0OwotfQorICAgIFJlbmRlck9iamVjdCogY2FyZXRQYWludGVyID0gY2FyZXRSZW5kZXJlcihu
b2RlKTsKKyAgICBpZiAoIWNhcmV0UGFpbnRlcikKKyAgICAgICAgcmV0dXJuOwogCi1JbnRSZWN0
IENhcmV0QmFzZTo6Y2FyZXRSZXBhaW50UmVjdChOb2RlKiBub2RlKSBjb25zdAotewotICAgIHJl
dHVybiBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChub2RlLCByZXBhaW50UmVjdEZvckNhcmV0
KGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKSk7CisgICAgY2FyZXRQYWludGVyLT5yZXBh
aW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCiBib29sIEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVD
YXJldFJlY3QoKQpAQCAtMTM1NCw3ICsxMzQ3LDYgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVj
b21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBv
bGRBYnNDYXJldEJvdW5kcyA9IG1fYWJzQ2FyZXRCb3VuZHM7Ci0gICAgLy8gRklYTUU6IFJlbmFt
ZSBtX2NhcmV0UmVjdCB0byBtX2xvY2FsQ2FyZXRSZWN0LgogICAgIG1fYWJzQ2FyZXRCb3VuZHMg
PSBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0
ZWROb2RlKCksIGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsKICAgICBtX2Fic0NhcmV0
Qm91bmRzRGlydHkgPSBmYWxzZTsKICAgICAKQEAgLTEzNjIsMTggKzEzNTQsMTMgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgSW50UmVjdCBvbGRBYnNvbHV0ZUNhcmV0
UmVwYWludEJvdW5kcyA9IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7Ci0jZW5kaWYKLQot
ICAgIC8vIFdlIGJlbGlldmUgdGhhdCB3ZSBuZWVkIHRvIGluZmxhdGUgdGhlIGxvY2FsIHJlY3Qg
YmVmb3JlIHRyYW5zZm9ybWluZyBpdCB0byBvYnRhaW4gdGhlIHJlcGFpbnQgYm91bmRzLgotICAg
IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBjYXJldFJlcGFpbnRSZWN0KG1fc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0KLSNpZiBFTkFCTEUoVEVYVF9DQVJFVCkK
ICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFrZSBjYXJldCByZXBhaW50aW5nIGNvbnRhaW5l
ci1hd2FyZS4KLSAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0
ZWRMYXllcnMob2xkQWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAg
ICAgaWYgKG1fcHJldmlvdXNDYXJldE5vZGUpCisgICAgICAgICAgICByZXBhaW50Q2FyZXRGb3JM
b2NhbFJlY3QobV9wcmV2aW91c0NhcmV0Tm9kZS5nZXQoKSwgb2xkUmVjdCk7CisgICAgICAgIG1f
cHJldmlvdXNDYXJldE5vZGUgPSBub2RlOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0
KHZpZXcsIGlzQ29udGVudEVkaXRhYmxlKCkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJl
Y3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMobV9hYnNvbHV0ZUNhcmV0UmVwYWludEJv
dW5kcywgZmFsc2UpOworICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUs
IG5ld1JlY3QpOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTQxNSw3ICsx
NDAyLDcgQEAgdm9pZCBDYXJldEJhc2U6OmludmFsaWRhdGVDYXJldFJlY3QoTm9kZSogbm9kZSwg
Ym9vbCBjYXJldFJlY3RDaGFuZ2VkKQogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBub2Rl
LT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFJlcGFpbnRD
YXJldCh2aWV3LCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZShOb2RlOjpVc2VyU2VsZWN0QWxsSXNB
bHdheXNOb25FZGl0YWJsZSkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUlu
Vmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY2FyZXRSZXBhaW50UmVjdChub2RlKSwgZmFsc2UpOwor
ICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIGxvY2FsQ2FyZXRSZWN0
V2l0aG91dFVwZGF0ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAppbmRleCBkNjUxMjAzYjFkMDI0YzhlNzEzYzAzMDhhYmFiY2Q0ZjYzMjQ2Zjcz
Li43MWIzMTRiZWRhZWU4MjA1OTU2ZTUwYTU2NDVlNGJhYzJhYzJkMzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC02NSwxMCArNjUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBjbGVhckNhcmV0UmVjdCgpOwogICAgIGJvb2wgdXBkYXRlQ2FyZXRSZWN0KERv
Y3VtZW50KiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjYXJldFBvc2l0aW9uKTsKICAgICBJbnRS
ZWN0IGFic29sdXRlQm91bmRzRm9yTG9jYWxSZWN0KE5vZGUqLCBjb25zdCBMYXlvdXRSZWN0Jikg
Y29uc3Q7Ci0gICAgSW50UmVjdCBjYXJldFJlcGFpbnRSZWN0KE5vZGUqKSBjb25zdDsKICAgICBi
b29sIHNob3VsZFJlcGFpbnRDYXJldChjb25zdCBSZW5kZXJWaWV3KiwgYm9vbCBpc0NvbnRlbnRF
ZGl0YWJsZSkgY29uc3Q7CiAgICAgdm9pZCBwYWludENhcmV0KE5vZGUqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKLSAgICBSZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgbG9jYWxDYXJldFJlY3RXaXRob3V0VXBkYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXJldExvY2FsUmVjdDsgfQogCkBAIC0zMDIsMTMgKzMwMCwxMyBAQCBwcml2YXRl
OgogICAgIFZpc2libGVQb3NpdGlvbiBtX29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0byBzdG9yZSBi
YXNlIGJlZm9yZSB0aGUgYWRqdXN0bWVudCBhdCBiaWRpIGJvdW5kYXJ5CiAgICAgVGV4dEdyYW51
bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91c0NhcmV0
Tm9kZTsgLy8gVGhlIGxhc3Qgbm9kZSB3aGljaCBwYWludGVkIHRoZSBjYXJldC4gUmV0YWluZWQg
Zm9yIGNsZWFyaW5nIHRoZSBvbGQgY2FyZXQgd2hlbiBpdCBtb3Zlcy4KKwogICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IG1fdHlwaW5nU3R5bGU7CiAKICAgICBUaW1lcjxGcmFtZVNlbGVjdGlvbj4g
bV9jYXJldEJsaW5rVGltZXI7CiAgICAgLy8gVGhlIHBhaW50ZWQgYm91bmRzIG9mIHRoZSBjYXJl
dCBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcwogICAgIEludFJlY3QgbV9hYnNDYXJldEJvdW5kczsK
LSAgICAvLyBTaW1pbGFyIHRvIGFib3ZlLCBidXQgaW5mbGF0ZWQgdG8gZW5zdXJlIHByb3BlciBy
ZXBhaW50IChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDg2
KQotICAgIEludFJlY3QgbV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kczsKICAgICBib29sIG1f
YWJzQ2FyZXRCb3VuZHNEaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2NhcmV0UGFpbnQgOiAxOwogICAg
IGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDQxMTBlZmQ5YjJmYWY4NGZiM2Q4M2Y0YWFhMjVkNWMw
MzgwNTRkYjEuLjRlYTAxYTYzNGRkZTAxZDYwMTJmOWExMmZjMTEwNDJlOTE0YzNjZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTU0Myw2ICs1NDMsMzEgQEAg
SW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChzZWxSZWN0KTsKIH0K
IAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBkb2N1
bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBIYXNoU2V0PFJlbmRlckJsb2Nr
Kj4gcHJvY2Vzc2VkQmxvY2tzOworCisgICAgUmVuZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFm
dGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9uRW5kUG9zKTsKKyAgICBmb3Ig
KFJlbmRlck9iamVjdCogbyA9IG1fc2VsZWN0aW9uU3RhcnQ7IG8gJiYgbyAhPSBlbmQ7IG8gPSBv
LT5uZXh0SW5QcmVPcmRlcigpKSB7CisgICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFm
KCkgJiYgbyAhPSBtX3NlbGVjdGlvblN0YXJ0ICYmIG8gIT0gbV9zZWxlY3Rpb25FbmQpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG8tPnNlbGVjdGlvblN0YXRlKCkgPT0gU2Vs
ZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlbmRlclNlbGVj
dGlvbkluZm8obywgdHJ1ZSkucmVwYWludCgpOworCisgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVz
cG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVz
dCBiZSBleGFtaW5lZCBhcyB3ZWxsLgorICAgICAgICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9
IG8tPmNvbnRhaW5pbmdCbG9jaygpOyBibG9jayAmJiAhYmxvY2stPmlzUmVuZGVyVmlldygpOyBi
bG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKHByb2Nl
c3NlZEJsb2Nrcy5jb250YWlucyhibG9jaykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBwcm9jZXNzZWRCbG9ja3MuYWRkKGJsb2NrKTsKKyAgICAgICAgICAgIFJlbmRlclNl
bGVjdGlvbkluZm8oYmxvY2ssIHRydWUpLnJlcGFpbnQoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIC8vIENvbXBvc2l0aW5nIGxheWVy
IGRpbWVuc2lvbnMgdGFrZSBvdXRsaW5lIHNpemUgaW50byBhY2NvdW50LCBzbyB3ZSBoYXZlIHRv
IHJlY29tcHV0ZSBsYXllcgogLy8gYm91bmRzIHdoZW4gaXQgY2hhbmdlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDk5YWIxYzFhM2JiZTA2NjVhZjYxMmM2NDA5MGQx
Y2E5YTQ4Yzc5ODIuLjk5MWYwYmI1MDU1MmMyNTQ0YWVlOWY5MmQwZjI1YjJhYjk5Y2U4ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbkVuZDsgfQogICAgIEludFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGlu
dCYgc3RhcnRQb3MsIGludCYgZW5kUG9zKSBjb25zdDsKKyAgICB2b2lkIHJlcGFpbnRTZWxlY3Rp
b24oKSBjb25zdDsKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzNzU0
YTQ0ZDUzMTUzOTY5OTk0Y2UxZDAyM2ZmYTU5OTc2ZDQwNGYuLjcxMzdlZjVjNjUyYjljNmFlNTg3
YmM4ZDA0NWRmZmZjMTMyZjk0ODIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0wNiAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBjYXJl
dCByZXBhaW50aW5nIGNvbnRhaW5lci1hd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvZiB0aGUgY2hhbmdl
IHN1Y2ggYXMgYXBwcm9hY2gsIHJhdGlvbmFsZS4gUGxlYXNlIGFkZCBwZXItZnVuY3Rpb24gZGVz
Y3JpcHRpb25zIGJlbG93IChPT1BTISkuCisKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvY2FyZXQt
d2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sOiBBZGRlZC4KKwogMjAxMi0xMi0wNSAgSm9zaHVhIEJl
bGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWREQjogQWxsb3cgbXVs
dGlwbGUgdHJhbnNhY3Rpb25zIHRvIGludGVybGVhdmUgcmVxdWVzdCBleGVjdXRpb24KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9jYXJldC13aXRoLXRyYW5zZm9ybWF0aW9u
Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlv
bi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjI3N2Q2ZDMxMzBlNTcyNDNmNTU1NjI0MzI1NGRmM2Y0ZWJjMWVl
OWQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvY2FyZXQtd2l0
aC10cmFuc2Zvcm1hdGlvbi5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvcmVwYWludC5qcyIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48L3NjcmlwdD4KKzxzY3Jp
cHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KK2Z1bmN0aW9uIHJlcGFpbnRUZXN0KCkgeworICAg
IHZhciBkaXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZGl2Iik7CisgICAgd2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRpdiwgMSk7Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9u
bG9hZD0icnVuUmVwYWludFRlc3QoKTsiPgorPGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiIHN0
eWxlPSItd2Via2l0LXRyYW5zZm9ybTpyb3RhdGUoMzBkZWcpdHJhbnNsYXRlKDEwMHB4LDIwMHB4
KSI+Cis8ZGl2IGlkPSJkaXYiPlRoaXMgdGVzdCB2ZXJpZmllcyBjYXJldCByZXBhaW50IGlzIGNv
cnJlY3RseSB0cmFuc2Zvcm1lZC48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5nZXRT
ZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkaXYsIDApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178133</attachid>
            <date>2012-12-06 18:43:24 -0800</date>
            <delta_ts>2012-12-07 15:41:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121206184048.patch</filename>
            <type>text/plain</type>
            <size>11796</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2NzgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjI2OGI3NDkzNTdkNWU4
ZDk2NzNlOWViYzk0MWNhNTU0NjkyOTlmMi4uNjI2ZThiMmE0ZjQ3MDUzYTA3NzExMDk1NmFmYmZh
MDkyODc5MDcyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA2ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FyZXRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2FyZXRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlcGFpbnRDYXJldEZvckxvY2FsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdCk6CisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KFJlbmRlclZpZXcpOgorCiAyMDEyLTEyLTA1ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBtdWx0aXBsZSB0cmFuc2FjdGlvbnMg
dG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Zy
YW1lU2VsZWN0aW9uLmNwcAppbmRleCAwNTcxMGNlZmRmOGNmNTUxNzIzZGQxMjQ4ODI2MzY2ZmQ2
ZmVkNzFkLi5mNjU4MmM0NmVmY2MyODljOTJjYTk0ODQ1MmIwMmRjMjZkYzhkNWM3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTIxOCw2ICsxMjE4LDI1
IEBAIHZvaWQgQ2FyZXRCYXNlOjpjbGVhckNhcmV0UmVjdCgpCiAgICAgbV9jYXJldExvY2FsUmVj
dCA9IExheW91dFJlY3QoKTsKIH0KIAorc3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0lu
c2lkZU5vZGUoTm9kZSogbm9kZSkKK3sKKyAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1l
bnQobm9kZSkgJiYgIWVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsKK30KKworc3RhdGljIFJl
bmRlck9iamVjdCogY2FyZXRSZW5kZXJlcihOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkK
KyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+
cmVuZGVyZXIoKTsKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAg
IC8vIGlmIGNhcmV0Tm9kZSBpcyBhIGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBj
YXJldCBzaG91bGQgYmUgcGFpbnRlZCBieSB0aGF0IGJsb2NrCisgICAgYm9vbCBwYWludGVkQnlC
bG9jayA9IHJlbmRlcmVyLT5pc0Jsb2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUo
bm9kZSk7CisgICAgcmV0dXJuIHBhaW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiByZW5kZXJlci0+
Y29udGFpbmluZ0Jsb2NrKCk7Cit9CisKIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJlY3Qo
RG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24p
CiB7CiAgICAgZG9jdW1lbnQtPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEyNTYsMzMgKzEy
NzUsMTQgQEAgYm9vbCBDYXJldEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVudCogZG9jdW1l
bnQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAot
c3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9kZSkKLXsK
LSAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRpbmdJZ25v
cmVzQ29udGVudChub2RlKTsKLX0KLQotUmVuZGVyT2JqZWN0KiBDYXJldEJhc2U6OmNhcmV0UmVu
ZGVyZXIoTm9kZSogbm9kZSkgY29uc3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0g
ICAgaWYgKCFyZW5kZXJlcikKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBpZiBjYXJldE5v
ZGUgaXMgYSBibG9jayBhbmQgY2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQgc2hvdWxkIGJl
IHBhaW50ZWQgYnkgdGhhdCBibG9jawotICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sgPSByZW5kZXJl
ci0+aXNCbG9ja0Zsb3coKSAmJiBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUpOwotICAgIHJl
dHVybiBwYWludGVkQnlCbG9jayA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9j
aygpOwotfQotCiBSZW5kZXJPYmplY3QqIEZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fc2VsZWN0aW9u
LnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhcmV0UmVu
ZGVyZXIobV9zZWxlY3Rpb24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogUmVuZGVy
T2JqZWN0KiBEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fcG9zaXRpb24uZGVlcEVxdWl2YWxl
bnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FyZXRSZW5kZXJl
cihtX3Bvc2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiB9CiAKIHN0
YXRpYyBib29sIGlzTm9uT3JwaGFuZWRDYXJldChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxl
Y3Rpb24pCkBAIC0xMzIwLDIwICsxMzIwLDEzIEBAIEludFJlY3QgRnJhbWVTZWxlY3Rpb246OmFi
c29sdXRlQ2FyZXRCb3VuZHMoKQogICAgIHJldHVybiBtX2Fic0NhcmV0Qm91bmRzOwogfQogCi1z
dGF0aWMgTGF5b3V0UmVjdCByZXBhaW50UmVjdEZvckNhcmV0KExheW91dFJlY3QgY2FyZXQpCitz
dGF0aWMgdm9pZCByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QoTm9kZSogbm9kZSwgY29uc3QgTGF5
b3V0UmVjdCYgcmVjdCkKIHsKLSAgICBpZiAoY2FyZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1
cm4gTGF5b3V0UmVjdCgpOwotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJ0eSByZWN0IGludGVy
c2VjdHMgdGhlIGJsb2NrIHRoYXQgcGFpbnRzIHRoZSBjYXJldCBldmVuIGluIHRoZSBjYXNlIHdo
ZXJlCi0gICAgLy8gdGhlIGNhcmV0IGl0c2VsZiBpcyBqdXN0IG91dHNpZGUgdGhlIGJsb2NrLiBT
ZWUgPGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4Nj4uCi0gICAg
Y2FyZXQuaW5mbGF0ZVgoMSk7Ci0gICAgY2FyZXQuaW5mbGF0ZVkoMSk7Ci0gICAgcmV0dXJuIGNh
cmV0OwotfQorICAgIFJlbmRlck9iamVjdCogY2FyZXRQYWludGVyID0gY2FyZXRSZW5kZXJlcihu
b2RlKTsKKyAgICBpZiAoIWNhcmV0UGFpbnRlcikKKyAgICAgICAgcmV0dXJuOwogCi1JbnRSZWN0
IENhcmV0QmFzZTo6Y2FyZXRSZXBhaW50UmVjdChOb2RlKiBub2RlKSBjb25zdAotewotICAgIHJl
dHVybiBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChub2RlLCByZXBhaW50UmVjdEZvckNhcmV0
KGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKSk7CisgICAgY2FyZXRQYWludGVyLT5yZXBh
aW50UmVjdGFuZ2xlKHJlY3QpOwogfQogCiBib29sIEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVD
YXJldFJlY3QoKQpAQCAtMTM1NCw3ICsxMzQ3LDYgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVj
b21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBv
bGRBYnNDYXJldEJvdW5kcyA9IG1fYWJzQ2FyZXRCb3VuZHM7Ci0gICAgLy8gRklYTUU6IFJlbmFt
ZSBtX2NhcmV0UmVjdCB0byBtX2xvY2FsQ2FyZXRSZWN0LgogICAgIG1fYWJzQ2FyZXRCb3VuZHMg
PSBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0
ZWROb2RlKCksIGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsKICAgICBtX2Fic0NhcmV0
Qm91bmRzRGlydHkgPSBmYWxzZTsKICAgICAKQEAgLTEzNjIsMTggKzEzNTQsMTMgQEAgYm9vbCBG
cmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgSW50UmVjdCBvbGRBYnNvbHV0ZUNhcmV0
UmVwYWludEJvdW5kcyA9IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7Ci0jZW5kaWYKLQot
ICAgIC8vIFdlIGJlbGlldmUgdGhhdCB3ZSBuZWVkIHRvIGluZmxhdGUgdGhlIGxvY2FsIHJlY3Qg
YmVmb3JlIHRyYW5zZm9ybWluZyBpdCB0byBvYnRhaW4gdGhlIHJlcGFpbnQgYm91bmRzLgotICAg
IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBjYXJldFJlcGFpbnRSZWN0KG1fc2VsZWN0
aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7Ci0KLSNpZiBFTkFCTEUoVEVYVF9DQVJFVCkK
ICAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKSkgewotICAgICAgICAvLyBGSVhNRTogbWFrZSBjYXJldCByZXBhaW50aW5nIGNvbnRhaW5l
ci1hd2FyZS4KLSAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0
ZWRMYXllcnMob2xkQWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAg
Tm9kZSogbm9kZSA9IG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAg
ICAgaWYgKG1fcHJldmlvdXNDYXJldE5vZGUpCisgICAgICAgICAgICByZXBhaW50Q2FyZXRGb3JM
b2NhbFJlY3QobV9wcmV2aW91c0NhcmV0Tm9kZS5nZXQoKSwgb2xkUmVjdCk7CisgICAgICAgIG1f
cHJldmlvdXNDYXJldE5vZGUgPSBub2RlOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0
KHZpZXcsIGlzQ29udGVudEVkaXRhYmxlKCkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJl
Y3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMobV9hYnNvbHV0ZUNhcmV0UmVwYWludEJv
dW5kcywgZmFsc2UpOworICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUs
IG5ld1JlY3QpOwogICAgIH0KICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTQxNSw3ICsx
NDAyLDcgQEAgdm9pZCBDYXJldEJhc2U6OmludmFsaWRhdGVDYXJldFJlY3QoTm9kZSogbm9kZSwg
Ym9vbCBjYXJldFJlY3RDaGFuZ2VkKQogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBub2Rl
LT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFJlcGFpbnRD
YXJldCh2aWV3LCBub2RlLT5pc0NvbnRlbnRFZGl0YWJsZShOb2RlOjpVc2VyU2VsZWN0QWxsSXNB
bHdheXNOb25FZGl0YWJsZSkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUlu
Vmlld0FuZENvbXBvc2l0ZWRMYXllcnMoY2FyZXRSZXBhaW50UmVjdChub2RlKSwgZmFsc2UpOwor
ICAgICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIGxvY2FsQ2FyZXRSZWN0
V2l0aG91dFVwZGF0ZSgpKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVT
ZWxlY3Rpb24uaAppbmRleCBkNjUxMjAzYjFkMDI0YzhlNzEzYzAzMDhhYmFiY2Q0ZjYzMjQ2Zjcz
Li43MWIzMTRiZWRhZWU4MjA1OTU2ZTUwYTU2NDVlNGJhYzJhYzJkMzk0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCkBAIC02NSwxMCArNjUsOCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdm9pZCBjbGVhckNhcmV0UmVjdCgpOwogICAgIGJvb2wgdXBkYXRlQ2FyZXRSZWN0KERv
Y3VtZW50KiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjYXJldFBvc2l0aW9uKTsKICAgICBJbnRS
ZWN0IGFic29sdXRlQm91bmRzRm9yTG9jYWxSZWN0KE5vZGUqLCBjb25zdCBMYXlvdXRSZWN0Jikg
Y29uc3Q7Ci0gICAgSW50UmVjdCBjYXJldFJlcGFpbnRSZWN0KE5vZGUqKSBjb25zdDsKICAgICBi
b29sIHNob3VsZFJlcGFpbnRDYXJldChjb25zdCBSZW5kZXJWaWV3KiwgYm9vbCBpc0NvbnRlbnRF
ZGl0YWJsZSkgY29uc3Q7CiAgICAgdm9pZCBwYWludENhcmV0KE5vZGUqLCBHcmFwaGljc0NvbnRl
eHQqLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25z
dDsKLSAgICBSZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAg
Y29uc3QgTGF5b3V0UmVjdCYgbG9jYWxDYXJldFJlY3RXaXRob3V0VXBkYXRlKCkgY29uc3QgeyBy
ZXR1cm4gbV9jYXJldExvY2FsUmVjdDsgfQogCkBAIC0zMDIsMTMgKzMwMCwxMyBAQCBwcml2YXRl
OgogICAgIFZpc2libGVQb3NpdGlvbiBtX29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0byBzdG9yZSBi
YXNlIGJlZm9yZSB0aGUgYWRqdXN0bWVudCBhdCBiaWRpIGJvdW5kYXJ5CiAgICAgVGV4dEdyYW51
bGFyaXR5IG1fZ3JhbnVsYXJpdHk7CiAKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91c0NhcmV0
Tm9kZTsgLy8gVGhlIGxhc3Qgbm9kZSB3aGljaCBwYWludGVkIHRoZSBjYXJldC4gUmV0YWluZWQg
Zm9yIGNsZWFyaW5nIHRoZSBvbGQgY2FyZXQgd2hlbiBpdCBtb3Zlcy4KKwogICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IG1fdHlwaW5nU3R5bGU7CiAKICAgICBUaW1lcjxGcmFtZVNlbGVjdGlvbj4g
bV9jYXJldEJsaW5rVGltZXI7CiAgICAgLy8gVGhlIHBhaW50ZWQgYm91bmRzIG9mIHRoZSBjYXJl
dCBpbiBhYnNvbHV0ZSBjb29yZGluYXRlcwogICAgIEludFJlY3QgbV9hYnNDYXJldEJvdW5kczsK
LSAgICAvLyBTaW1pbGFyIHRvIGFib3ZlLCBidXQgaW5mbGF0ZWQgdG8gZW5zdXJlIHByb3BlciBy
ZXBhaW50IChzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDg2
KQotICAgIEludFJlY3QgbV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kczsKICAgICBib29sIG1f
YWJzQ2FyZXRCb3VuZHNEaXJ0eSA6IDE7CiAgICAgYm9vbCBtX2NhcmV0UGFpbnQgOiAxOwogICAg
IGJvb2wgbV9pc0NhcmV0QmxpbmtpbmdTdXNwZW5kZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuY3BwCmluZGV4IDQxMTBlZmQ5YjJmYWY4NGZiM2Q4M2Y0YWFhMjVkNWMw
MzgwNTRkYjEuLjRlYTAxYTYzNGRkZTAxZDYwMTJmOWExMmZjMTEwNDJlOTE0YzNjZDIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKQEAgLTU0Myw2ICs1NDMsMzEgQEAg
SW50UmVjdCBSZW5kZXJWaWV3OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29u
dGVudCkgY29uc3QKICAgICByZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChzZWxSZWN0KTsKIH0K
IAordm9pZCBSZW5kZXJWaWV3OjpyZXBhaW50U2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBkb2N1
bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisKKyAgICBIYXNoU2V0PFJlbmRlckJsb2Nr
Kj4gcHJvY2Vzc2VkQmxvY2tzOworCisgICAgUmVuZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFm
dGVyUG9zaXRpb24obV9zZWxlY3Rpb25FbmQsIG1fc2VsZWN0aW9uRW5kUG9zKTsKKyAgICBmb3Ig
KFJlbmRlck9iamVjdCogbyA9IG1fc2VsZWN0aW9uU3RhcnQ7IG8gJiYgbyAhPSBlbmQ7IG8gPSBv
LT5uZXh0SW5QcmVPcmRlcigpKSB7CisgICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFm
KCkgJiYgbyAhPSBtX3NlbGVjdGlvblN0YXJ0ICYmIG8gIT0gbV9zZWxlY3Rpb25FbmQpCisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgaWYgKG8tPnNlbGVjdGlvblN0YXRlKCkgPT0gU2Vs
ZWN0aW9uTm9uZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlbmRlclNlbGVj
dGlvbkluZm8obywgdHJ1ZSkucmVwYWludCgpOworCisgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVz
cG9uc2libGUgZm9yIHBhaW50aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVz
dCBiZSBleGFtaW5lZCBhcyB3ZWxsLgorICAgICAgICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9
IG8tPmNvbnRhaW5pbmdCbG9jaygpOyBibG9jayAmJiAhYmxvY2stPmlzUmVuZGVyVmlldygpOyBi
bG9jayA9IGJsb2NrLT5jb250YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKHByb2Nl
c3NlZEJsb2Nrcy5jb250YWlucyhibG9jaykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBwcm9jZXNzZWRCbG9ja3MuYWRkKGJsb2NrKTsKKyAgICAgICAgICAgIFJlbmRlclNl
bGVjdGlvbkluZm8oYmxvY2ssIHRydWUpLnJlcGFpbnQoKTsKKyAgICAgICAgfQorICAgIH0KK30K
KwogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIC8vIENvbXBvc2l0aW5nIGxheWVy
IGRpbWVuc2lvbnMgdGFrZSBvdXRsaW5lIHNpemUgaW50byBhY2NvdW50LCBzbyB3ZSBoYXZlIHRv
IHJlY29tcHV0ZSBsYXllcgogLy8gYm91bmRzIHdoZW4gaXQgY2hhbmdlcy4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCmluZGV4IDk5YWIxYzFhM2JiZTA2NjVhZjYxMmM2NDA5MGQx
Y2E5YTQ4Yzc5ODIuLjk5MWYwYmI1MDU1MmMyNTQ0YWVlOWY5MmQwZjI1YjJhYjk5Y2U4ZDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJs
aWM6CiAgICAgUmVuZGVyT2JqZWN0KiBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX3Nl
bGVjdGlvbkVuZDsgfQogICAgIEludFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQgPSB0cnVlKSBjb25zdDsKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGlu
dCYgc3RhcnRQb3MsIGludCYgZW5kUG9zKSBjb25zdDsKKyAgICB2b2lkIHJlcGFpbnRTZWxlY3Rp
b24oKSBjb25zdDsKIAogICAgIGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IGIzNzU0
YTQ0ZDUzMTUzOTY5OTk0Y2UxZDAyM2ZmYTU5OTc2ZDQwNGYuLjJiZmFjNjlkMWFhNTg1MjE4ZmI5
YmI5NzgxYmUwNjQwNTQ2NzlhMGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMi0xMi0wNiAg
VGllbi1SZW4gQ2hlbiAgPHRyY2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBjYXJl
dCByZXBhaW50aW5nIGNvbnRhaW5lci1hd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAzOTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ2FyZXRzIHNob3VsZCBiZSByZXBhaW50ZWQgY29ycmVjdGx5
IG9uIGEgdHJhbnNmb3JtZWQgZWxlbWVudC4KKworICAgICAgICAqIGZhc3QvcmVwYWludC9jYXJl
dC13aXRoLXRyYW5zZm9ybWF0aW9uLmh0bWw6IEFkZGVkLgorCiAyMDEyLTEyLTA1ICBKb3NodWEg
QmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgSW5kZXhlZERCOiBBbGxvdyBt
dWx0aXBsZSB0cmFuc2FjdGlvbnMgdG8gaW50ZXJsZWF2ZSByZXF1ZXN0IGV4ZWN1dGlvbgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9jYXJldC13aXRoLXRyYW5zZm9ybWF0
aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3ZDZkMzEzMGU1NzI0M2Y1NTU2MjQzMjU0ZGYzZjRlYmMx
ZWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9jYXJldC13
aXRoLXRyYW5zZm9ybWF0aW9uLmh0bWwKQEAgLTAsMCArMSwxNSBAQAorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yZXBhaW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwvc2NyaXB0PgorPHNj
cmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7Cisg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYiKTsKKyAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZGl2LCAxKTsKK30KKzwvc2NyaXB0PgorPGJvZHkg
b25sb2FkPSJydW5SZXBhaW50VGVzdCgpOyI+Cis8ZGl2IGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIg
c3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzMGRlZyl0cmFuc2xhdGUoMTAwcHgsMjAw
cHgpIj4KKzxkaXYgaWQ9ImRpdiI+VGhpcyB0ZXN0IHZlcmlmaWVzIGNhcmV0IHJlcGFpbnQgaXMg
Y29ycmVjdGx5IHRyYW5zZm9ybWVkLjwvZGl2PgorPC9kaXY+Cis8c2NyaXB0Pgord2luZG93Lmdl
dFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRpdiwgMCk7Cis8L3NjcmlwdD4KKzwvYm9keT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178295</attachid>
            <date>2012-12-07 15:41:32 -0800</date>
            <delta_ts>2013-01-08 22:06:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20121207153856.patch</filename>
            <type>text/plain</type>
            <size>14458</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM2OTkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDk0NDg3MmQyZTRmNDU5
MGExNDVmNDkyYzY3NGY1MDVlNzlhMmFjNi4uOTg3MjI4Yjg4ZDFmMzQ5OTg3MzYwYjgxOGY1MzJj
MWNkOTdmMmVlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEyLTEyLTA3ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Y2FyZXRSZW5k
ZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y2FyZXRSZW5kZXJlcik6
CisgICAgICAgIChXZWJDb3JlOjpEcmFnQ2FyZXRDb250cm9sbGVyOjpjYXJldFJlbmRlcmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OnJlcGFpbnRDYXJldEZvckxvY2FsUmVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkNhcmV0QmFzZTo6aW52YWxpZGF0ZUNhcmV0UmVjdCk6CisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTZWxlY3Rpb24pOgorICAgICAg
ICAoV2ViQ29yZSk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclZpZXcuaDoKKyAgICAgICAg
KFJlbmRlclZpZXcpOgorCiAyMDEyLTEyLTA2ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgQ3Jhc2ggaW4gSlNDOjpCaW5kaW5nczo6Um9vdE9iamVjdDo6Z2xv
YmFsT2JqZWN0KCkgc3luYydpbmcgbm90ZXMgaW4gRXZlcm5vdGUKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggMDU3MTBjZWZkZjhjZjU1MTcyM2RkMTI0ODgy
NjM2NmZkNmZlZDcxZC4uZjY1ODJjNDZlZmNjMjg5YzkyY2E5NDg0NTJiMDJkYzI2ZGM4ZDVjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKQEAgLTEyMTgsNiAr
MTIxOCwyNSBAQCB2b2lkIENhcmV0QmFzZTo6Y2xlYXJDYXJldFJlY3QoKQogICAgIG1fY2FyZXRM
b2NhbFJlY3QgPSBMYXlvdXRSZWN0KCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9vbCBjYXJldFJl
bmRlcnNJbnNpZGVOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5vZGUgJiYgIWlzVGFi
bGVFbGVtZW50KG5vZGUpICYmICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSk7Cit9CisKK3N0
YXRpYyBSZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVyZXIoTm9kZSogbm9kZSkKK3sKKyAgICBpZiAo
IW5vZGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICAvLyBpZiBjYXJldE5vZGUgaXMgYSBibG9jayBhbmQgY2FyZXQgaXMgaW5zaWRlIGl0
IHRoZW4gY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhhdCBibG9jaworICAgIGJvb2wgcGFp
bnRlZEJ5QmxvY2sgPSByZW5kZXJlci0+aXNCbG9ja0Zsb3coKSAmJiBjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKG5vZGUpOworICAgIHJldHVybiBwYWludGVkQnlCbG9jayA/IHJlbmRlcmVyIDogcmVu
ZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOworfQorCiBib29sIENhcmV0QmFzZTo6dXBkYXRlQ2Fy
ZXRSZWN0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBjYXJldFBv
c2l0aW9uKQogewogICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CkBAIC0xMjU2
LDMzICsxMjc1LDE0IEBAIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJlY3QoRG9jdW1lbnQq
IGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0CiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKE5vZGUqIG5v
ZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUgJiYgIWlzVGFibGVFbGVtZW50KG5vZGUpICYmICFlZGl0
aW5nSWdub3Jlc0NvbnRlbnQobm9kZSk7Ci19Ci0KLVJlbmRlck9iamVjdCogQ2FyZXRCYXNlOjpj
YXJldFJlbmRlcmVyKE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFub2RlKQotICAgICAg
ICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBub2RlLT5yZW5kZXJl
cigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgLy8gaWYg
Y2FyZXROb2RlIGlzIGEgYmxvY2sgYW5kIGNhcmV0IGlzIGluc2lkZSBpdCB0aGVuIGNhcmV0IHNo
b3VsZCBiZSBwYWludGVkIGJ5IHRoYXQgYmxvY2sKLSAgICBib29sIHBhaW50ZWRCeUJsb2NrID0g
cmVuZGVyZXItPmlzQmxvY2tGbG93KCkgJiYgY2FyZXRSZW5kZXJzSW5zaWRlTm9kZShub2RlKTsK
LSAgICByZXR1cm4gcGFpbnRlZEJ5QmxvY2sgPyByZW5kZXJlciA6IHJlbmRlcmVyLT5jb250YWlu
aW5nQmxvY2soKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBGcmFtZVNlbGVjdGlvbjo6Y2FyZXRSZW5k
ZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENhcmV0QmFzZTo6Y2FyZXRSZW5kZXJlcihtX3Nl
bGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVybiBXZWJDb3JlOjpj
YXJldFJlbmRlcmVyKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiB9CiAK
IFJlbmRlck9iamVjdCogRHJhZ0NhcmV0Q29udHJvbGxlcjo6Y2FyZXRSZW5kZXJlcigpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIENhcmV0QmFzZTo6Y2FyZXRSZW5kZXJlcihtX3Bvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhcmV0
UmVuZGVyZXIobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWROb2RlKCkpOwog
fQogCiBzdGF0aWMgYm9vbCBpc05vbk9ycGhhbmVkQ2FyZXQoY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uKQpAQCAtMTMyMCwyMCArMTMyMCwxMyBAQCBJbnRSZWN0IEZyYW1lU2VsZWN0
aW9uOjphYnNvbHV0ZUNhcmV0Qm91bmRzKCkKICAgICByZXR1cm4gbV9hYnNDYXJldEJvdW5kczsK
IH0KIAotc3RhdGljIExheW91dFJlY3QgcmVwYWludFJlY3RGb3JDYXJldChMYXlvdXRSZWN0IGNh
cmV0KQorc3RhdGljIHZvaWQgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KE5vZGUqIG5vZGUsIGNv
bnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNhcmV0LmlzRW1wdHkoKSkKLSAgICAg
ICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgZGlydHkgcmVj
dCBpbnRlcnNlY3RzIHRoZSBibG9jayB0aGF0IHBhaW50cyB0aGUgY2FyZXQgZXZlbiBpbiB0aGUg
Y2FzZSB3aGVyZQotICAgIC8vIHRoZSBjYXJldCBpdHNlbGYgaXMganVzdCBvdXRzaWRlIHRoZSBi
bG9jay4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwODY+
LgotICAgIGNhcmV0LmluZmxhdGVYKDEpOwotICAgIGNhcmV0LmluZmxhdGVZKDEpOwotICAgIHJl
dHVybiBjYXJldDsKLX0KKyAgICBSZW5kZXJPYmplY3QqIGNhcmV0UGFpbnRlciA9IGNhcmV0UmVu
ZGVyZXIobm9kZSk7CisgICAgaWYgKCFjYXJldFBhaW50ZXIpCisgICAgICAgIHJldHVybjsKIAot
SW50UmVjdCBDYXJldEJhc2U6OmNhcmV0UmVwYWludFJlY3QoTm9kZSogbm9kZSkgY29uc3QKLXsK
LSAgICByZXR1cm4gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3Qobm9kZSwgcmVwYWludFJlY3RG
b3JDYXJldChsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSkpOworICAgIGNhcmV0UGFpbnRl
ci0+cmVwYWludFJlY3RhbmdsZShyZWN0KTsKIH0KIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVj
b21wdXRlQ2FyZXRSZWN0KCkKQEAgLTEzNTQsNyArMTM0Nyw2IEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnJlY29tcHV0ZUNhcmV0UmVjdCgpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIElu
dFJlY3Qgb2xkQWJzQ2FyZXRCb3VuZHMgPSBtX2Fic0NhcmV0Qm91bmRzOwotICAgIC8vIEZJWE1F
OiBSZW5hbWUgbV9jYXJldFJlY3QgdG8gbV9sb2NhbENhcmV0UmVjdC4KICAgICBtX2Fic0NhcmV0
Qm91bmRzID0gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3QobV9zZWxlY3Rpb24uc3RhcnQoKS5k
ZXByZWNhdGVkTm9kZSgpLCBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSk7CiAgICAgbV9h
YnNDYXJldEJvdW5kc0RpcnR5ID0gZmFsc2U7CiAgICAgCkBAIC0xMzYyLDE4ICsxMzU0LDEzIEBA
IGJvb2wgRnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCgpCiAgICAgICAgIHJldHVy
biBmYWxzZTsKIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIEludFJlY3Qgb2xkQWJzb2x1
dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBtX2Fic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzOwotI2Vu
ZGlmCi0KLSAgICAvLyBXZSBiZWxpZXZlIHRoYXQgd2UgbmVlZCB0byBpbmZsYXRlIHRoZSBsb2Nh
bCByZWN0IGJlZm9yZSB0cmFuc2Zvcm1pbmcgaXQgdG8gb2J0YWluIHRoZSByZXBhaW50IGJvdW5k
cy4KLSAgICBtX2Fic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzID0gY2FyZXRSZXBhaW50UmVjdCht
X3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwotCi0jaWYgRU5BQkxFKFRFWFRf
Q0FSRVQpCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5y
ZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IG1ha2UgY2FyZXQgcmVwYWludGluZyBj
b250YWluZXItYXdhcmUuCi0gICAgICAgIHZpZXctPnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRD
b21wb3NpdGVkTGF5ZXJzKG9sZEFic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzLCBmYWxzZSk7Cisg
ICAgICAgIE5vZGUqIG5vZGUgPSBtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCk7
CisgICAgICAgIGlmIChtX3ByZXZpb3VzQ2FyZXROb2RlKQorICAgICAgICAgICAgcmVwYWludENh
cmV0Rm9yTG9jYWxSZWN0KG1fcHJldmlvdXNDYXJldE5vZGUuZ2V0KCksIG9sZFJlY3QpOworICAg
ICAgICBtX3ByZXZpb3VzQ2FyZXROb2RlID0gbm9kZTsKICAgICAgICAgaWYgKHNob3VsZFJlcGFp
bnRDYXJldCh2aWV3LCBpc0NvbnRlbnRFZGl0YWJsZSgpKSkKLSAgICAgICAgICAgIHZpZXctPnJl
cGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKG1fYWJzb2x1dGVDYXJldFJl
cGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAgICAgIHJlcGFpbnRDYXJldEZvckxvY2FsUmVj
dChub2RlLCBuZXdSZWN0KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKQEAgLTE0
MTUsNyArMTQwMiw3IEBAIHZvaWQgQ2FyZXRCYXNlOjppbnZhbGlkYXRlQ2FyZXRSZWN0KE5vZGUq
IG5vZGUsIGJvb2wgY2FyZXRSZWN0Q2hhbmdlZCkKIAogICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3
ID0gbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKSB7CiAgICAgICAgIGlmIChzaG91bGRS
ZXBhaW50Q2FyZXQodmlldywgbm9kZS0+aXNDb250ZW50RWRpdGFibGUoTm9kZTo6VXNlclNlbGVj
dEFsbElzQWx3YXlzTm9uRWRpdGFibGUpKSkKLSAgICAgICAgICAgIHZpZXctPnJlcGFpbnRSZWN0
YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNhcmV0UmVwYWludFJlY3Qobm9kZSksIGZh
bHNlKTsKKyAgICAgICAgICAgIHJlcGFpbnRDYXJldEZvckxvY2FsUmVjdChub2RlLCBsb2NhbENh
cmV0UmVjdFdpdGhvdXRVcGRhdGUoKSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggZDY1MTIwM2IxZDAyNGM4ZTcxM2MwMzA4YWJhYmNkNGY2
MzI0NmY3My4uNzFiMzE0YmVkYWVlODIwNTk1NmU1MGE1NjQ1ZTRiYWMyYWMyZDM5NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtNjUsMTAgKzY1LDggQEAgcHJv
dGVjdGVkOgogICAgIHZvaWQgY2xlYXJDYXJldFJlY3QoKTsKICAgICBib29sIHVwZGF0ZUNhcmV0
UmVjdChEb2N1bWVudCosIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgY2FyZXRQb3NpdGlvbik7CiAg
ICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2FsUmVjdChOb2RlKiwgY29uc3QgTGF5b3V0
UmVjdCYpIGNvbnN0OwotICAgIEludFJlY3QgY2FyZXRSZXBhaW50UmVjdChOb2RlKikgY29uc3Q7
CiAgICAgYm9vbCBzaG91bGRSZXBhaW50Q2FyZXQoY29uc3QgUmVuZGVyVmlldyosIGJvb2wgaXND
b250ZW50RWRpdGFibGUpIGNvbnN0OwogICAgIHZvaWQgcGFpbnRDYXJldChOb2RlKiwgR3JhcGhp
Y3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBjb25zdCBMYXlvdXRSZWN0JiBjbGlwUmVj
dCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBjYXJldFJlbmRlcmVyKE5vZGUqKSBjb25zdDsK
IAogICAgIGNvbnN0IExheW91dFJlY3QmIGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpIGNv
bnN0IHsgcmV0dXJuIG1fY2FyZXRMb2NhbFJlY3Q7IH0KIApAQCAtMzAyLDEzICszMDAsMTMgQEAg
cHJpdmF0ZToKICAgICBWaXNpYmxlUG9zaXRpb24gbV9vcmlnaW5hbEJhc2U7IC8vIFVzZWQgdG8g
c3RvcmUgYmFzZSBiZWZvcmUgdGhlIGFkanVzdG1lbnQgYXQgYmlkaSBib3VuZGFyeQogICAgIFRl
eHRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwogCisgICAgUmVmUHRyPE5vZGU+IG1fcHJldmlv
dXNDYXJldE5vZGU7IC8vIFRoZSBsYXN0IG5vZGUgd2hpY2ggcGFpbnRlZCB0aGUgY2FyZXQuIFJl
dGFpbmVkIGZvciBjbGVhcmluZyB0aGUgb2xkIGNhcmV0IHdoZW4gaXQgbW92ZXMuCisKICAgICBS
ZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3R5cGluZ1N0eWxlOwogCiAgICAgVGltZXI8RnJhbWVTZWxl
Y3Rpb24+IG1fY2FyZXRCbGlua1RpbWVyOwogICAgIC8vIFRoZSBwYWludGVkIGJvdW5kcyBvZiB0
aGUgY2FyZXQgaW4gYWJzb2x1dGUgY29vcmRpbmF0ZXMKICAgICBJbnRSZWN0IG1fYWJzQ2FyZXRC
b3VuZHM7Ci0gICAgLy8gU2ltaWxhciB0byBhYm92ZSwgYnV0IGluZmxhdGVkIHRvIGVuc3VyZSBw
cm9wZXIgcmVwYWludCAoc2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTA4NikKLSAgICBJbnRSZWN0IG1fYWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7CiAgICAg
Ym9vbCBtX2Fic0NhcmV0Qm91bmRzRGlydHkgOiAxOwogICAgIGJvb2wgbV9jYXJldFBhaW50IDog
MTsKICAgICBib29sIG1faXNDYXJldEJsaW5raW5nU3VzcGVuZGVkIDogMTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA0MTEwZWZkOWIyZmFmODRmYjNkODNmNGFh
YTI1ZDVjMDM4MDU0ZGIxLi40ZWEwMWE2MzRkZGUwMWQ2MDEyZjlhMTJmYzExMDQyZTkxNGMzY2Qy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3BwCkBAIC01NDMsNiArNTQz
LDMxIEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlz
aWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIHBpeGVsU25hcHBlZEludFJlY3Qoc2VsUmVj
dCk7CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWludFNlbGVjdGlvbigpIGNvbnN0Cit7Cisg
ICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworCisgICAgSGFzaFNldDxSZW5k
ZXJCbG9jayo+IHByb2Nlc3NlZEJsb2NrczsKKworICAgIFJlbmRlck9iamVjdCogZW5kID0gcmVu
ZGVyZXJBZnRlclBvc2l0aW9uKG1fc2VsZWN0aW9uRW5kLCBtX3NlbGVjdGlvbkVuZFBvcyk7Cisg
ICAgZm9yIChSZW5kZXJPYmplY3QqIG8gPSBtX3NlbGVjdGlvblN0YXJ0OyBvICYmIG8gIT0gZW5k
OyBvID0gby0+bmV4dEluUHJlT3JkZXIoKSkgeworICAgICAgICBpZiAoIW8tPmNhbkJlU2VsZWN0
aW9uTGVhZigpICYmIG8gIT0gbV9zZWxlY3Rpb25TdGFydCAmJiBvICE9IG1fc2VsZWN0aW9uRW5k
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChvLT5zZWxlY3Rpb25TdGF0ZSgp
ID09IFNlbGVjdGlvbk5vbmUpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBSZW5k
ZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpLnJlcGFpbnQoKTsKKworICAgICAgICAvLyBCbG9ja3Mg
YXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5lIGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBU
aGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KKyAgICAgICAgZm9yIChSZW5kZXJCbG9jayog
YmxvY2sgPSBvLT5jb250YWluaW5nQmxvY2soKTsgYmxvY2sgJiYgIWJsb2NrLT5pc1JlbmRlclZp
ZXcoKTsgYmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Jsb2NrKCkpIHsKKyAgICAgICAgICAgIGlm
IChwcm9jZXNzZWRCbG9ja3MuY29udGFpbnMoYmxvY2spKQorICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgcHJvY2Vzc2VkQmxvY2tzLmFkZChibG9jayk7CisgICAgICAgICAgICBS
ZW5kZXJTZWxlY3Rpb25JbmZvKGJsb2NrLCB0cnVlKS5yZXBhaW50KCk7CisgICAgICAgIH0KKyAg
ICB9Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09NUE9TSVRJTkcpCiAvLyBDb21wb3NpdGlu
ZyBsYXllciBkaW1lbnNpb25zIHRha2Ugb3V0bGluZSBzaXplIGludG8gYWNjb3VudCwgc28gd2Ug
aGF2ZSB0byByZWNvbXB1dGUgbGF5ZXIKIC8vIGJvdW5kcyB3aGVuIGl0IGNoYW5nZXMuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRleCA5OWFiMWMxYTNiYmUwNjY1YWY2MTJj
NjQwOTBkMWNhOWE0OGM3OTgyLi45OTFmMGJiNTA1NTJjMjU0NGFlZTlmOTJkMGYyNWIyYWI5OWNl
OGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmlldy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKQEAgLTk1LDYgKzk1LDcg
QEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogc2VsZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1
cm4gbV9zZWxlY3Rpb25FbmQ7IH0KICAgICBJbnRSZWN0IHNlbGVjdGlvbkJvdW5kcyhib29sIGNs
aXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFy
dEVuZChpbnQmIHN0YXJ0UG9zLCBpbnQmIGVuZFBvcykgY29uc3Q7CisgICAgdm9pZCByZXBhaW50
U2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIHByaW50aW5nKCkgY29uc3Q7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBkMWYwZjM2YzM5NzlhYTJlMWRiODE5NmY0MGFjZDQ5YjQ3M2M3YzkxLi42MGViYjg5MTU2OTFj
ODE5MWZkY2IxODY3YTZiNTMwYzIzMzc2ZWI0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTIt
MTItMDcgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIE1h
a2UgY2FyZXQgcmVwYWludGluZyBjb250YWluZXItYXdhcmUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1NQorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBjYXJldCByZXBhaW50IHBhZGRpbmcgaGFz
IGJlZW4gcmVtb3ZlZC4gTmVlZHMgcmViYXNlbGluZS4KKyAgICAgICAgQWRkZWQgdGVzdCB0aGF0
IGNhcmV0cyBzaG91bGQgYmUgcmVwYWludGVkIGNvcnJlY3RseSBvbiBhIHRyYW5zZm9ybWVkIGVs
ZW1lbnQuCisKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlv
bi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRp
b25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEyLTEy
LTA3ICBLb25kYXBhbGx5IEthbHlhbiAgPGthbHlhbi5rb25kYXBhbGx5QGludGVsLmNvbT4KIAog
ICAgICAgICBGaXggd2ViZ2wtZGVwdGgtdGV4dHVyZS5odG1sIHRvIG1hdGNoIHRoZSB0ZXN0IGV4
cGVjdGF0aW9uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2NhcmV0LXdp
dGgtdHJhbnNmb3JtYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVwYWludC9jYXJldC13
aXRoLXRyYW5zZm9ybWF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjc3ZDZkMzEzMGU1NzI0M2Y1NTU2
MjQzMjU0ZGYzZjRlYmMxZWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3Qv
cmVwYWludC9jYXJldC13aXRoLXRyYW5zZm9ybWF0aW9uLmh0bWwKQEAgLTAsMCArMSwxNSBAQAor
PHNjcmlwdCBzcmM9InJlc291cmNlcy9yZXBhaW50LmpzIiB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
Pjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorZnVuY3Rpb24gcmVw
YWludFRlc3QoKSB7CisgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJkaXYi
KTsKKyAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0UG9zaXRpb24oZGl2LCAxKTsKK30KKzwv
c2NyaXB0PgorPGJvZHkgb25sb2FkPSJydW5SZXBhaW50VGVzdCgpOyI+Cis8ZGl2IGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSIgc3R5bGU9Ii13ZWJraXQtdHJhbnNmb3JtOnJvdGF0ZSgzMGRlZyl0cmFu
c2xhdGUoMTAwcHgsMjAwcHgpIj4KKzxkaXYgaWQ9ImRpdiI+VGhpcyB0ZXN0IHZlcmlmaWVzIGNh
cmV0IHJlcGFpbnQgaXMgY29ycmVjdGx5IHRyYW5zZm9ybWVkLjwvZGl2PgorPC9kaXY+Cis8c2Ny
aXB0Pgord2luZG93LmdldFNlbGVjdGlvbigpLnNldFBvc2l0aW9uKGRpdiwgMCk7Cis8L3Njcmlw
dD4KKzwvYm9keT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IGEzZjVlYTUyOTc0ZDIzMWVkMDVlZTg5MmY0YTJhZGQxMTZmZGU4ODEuLjg4
ZTIyNGEzNGM5MGE4YjA2N2QyYWVlY2U2YzlhNDU2ZWYxMTNjZGEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDIzNywzICs0MjM3LDEz
IEBAIHdlYmtpdC5vcmcvYi8xMDM1MTAgY3NzMy9mbGV4Ym94L3JlcGFpbnQtY29sdW1uLXJldmVy
c2UuaHRtbCBbIE1pc3NpbmcgXQogIyBGbGFreQogd2Via2l0Lm9yZy9iLzEwNDI4MyBbIFhQIF0g
Zm9udHMvbW9ub3NwYWNlLmh0bWwgWyBGYWlsdXJlIFBhc3MgXQogd2Via2l0Lm9yZy9iLzEwNDI4
MyBbIE1hYyBEZWJ1ZyBdIGZvbnRzL21vbm9zcGFjZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBQ
YXNzIF0KKworIyBUcmFuc2llbnQuIE5lZWRzIHJlYmFzZWxpbmUuCit3ZWJraXQub3JnL2IvMTAz
OTU1IGZhc3QvcmVwYWludC80Nzc0MzU0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50LzQ3NzY3NjUuaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvY2FyZXQtb3V0c2lkZS1ibG9j
ay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVw
YWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L2phcGFuZXNl
LXJsLXNlbGVjdGlvbi1yZXBhaW50Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3Vu
ZGFyeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3Qv
cmVwYWludC9zZWxlY3Rpb24tcmwuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIFsg
TWlzc2luZyBdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVj
dGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4
IGYwMDk3MzY4YTBjYjM4ZmM1MTBlNThlNDkzN2I2ZmE4ZmI5YTU5NDQuLmUxYjZjNDJjNWIzYmY5
NWYwMjk0ZTBiNTk5NDIxY2M1OGZjNmIwMmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9U
ZXN0RXhwZWN0YXRpb25zCkBAIC0xMjQxLDMgKzEyNDEsMTMgQEAgd2Via2l0Lm9yZy9iLzEwMjU3
OSBmYXN0L2Nzcy9jdXJzb3ItcGFyc2luZy1pbWFnZS1zZXQuaHRtbCBbIEZhaWwgXQogd2Via2l0
Lm9yZy9iLzEwMjU3OSBmYXN0L2V2ZW50cy9tb3VzZS1jdXJzb3ItaW1hZ2Utc2V0Lmh0bWwgWyBG
YWlsIF0KIAogd2Via2l0Lm9yZy9iLzEwNDEwNCBmYXN0L292ZXJmbG93L3Njcm9sbGJhci1jbGlj
ay1yZXRhaW5zLWZvY3VzLmh0bWwgWyBGYWlsdXJlIF0KKworIyBUcmFuc2llbnQuIE5lZWRzIHJl
YmFzZWxpbmUuCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC80Nzc0MzU0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50LzQ3
NzY3NjUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0
L3JlcGFpbnQvY2FyZXQtb3V0c2lkZS1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVw
YWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8x
MDM5NTUgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L3JlcGFp
bnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcmwuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvY2FyZXQt
d2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIFsgTWlzc2luZyBdCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>181845</attachid>
            <date>2013-01-08 22:06:45 -0800</date>
            <delta_ts>2013-01-09 17:46:07 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20130108220348.patch</filename>
            <type>text/plain</type>
            <size>14579</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZGJiM2NjYzI4Y2E0Nzg1
OWI5NDA0MjhjYjgyNmFlZWMwZjAxMWE1NC4uZTY4ZGE2MDk1N2ZkOWE3MGZjNmNlMzc0MDZhMzNj
NjRlMWY0NTZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4IEBACisyMDEzLTAxLTA4ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NhcmV0Q29udHJvbGxlcjo6Y2FyZXRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpy
ZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OnJlY29tcHV0ZUNhcmV0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYXJldEJhc2U6Omlu
dmFsaWRhdGVDYXJldFJlY3QpOgorICAgICAgICAqIGVkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJWaWV3OjpyZXBhaW50U2VsZWN0aW9uKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
Vmlldy5oOgorCiAyMDEzLTAxLTA4ICBUb20gU2VwZXogIDx0c2VwZXpAY2hyb21pdW0ub3JnPgog
CiAgICAgICAgIENvcHktcGFzdGUgcHJlc2VydmVzIDxlbWJlZD4gdGFncyBjb250YWluaW5nIGFj
dGl2ZSBjb250ZW50LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApp
bmRleCBiYTJhMjBiYmE1YTAyNmFhYzRkZThiMjhlY2FlZWVkOGFiODU4NmY1Li42NGRlZDM5NDIx
MzMyZTY1MjZkNGExYjhjOTk5MjcyMThkZDk0NDM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTIxOSw2ICsxMjE5LDI1IEBAIHZvaWQgQ2FyZXRCYXNl
OjpjbGVhckNhcmV0UmVjdCgpCiAgICAgbV9jYXJldExvY2FsUmVjdCA9IExheW91dFJlY3QoKTsK
IH0KIAorc3RhdGljIGlubGluZSBib29sIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9k
ZSkKK3sKKyAgICByZXR1cm4gbm9kZSAmJiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRp
bmdJZ25vcmVzQ29udGVudChub2RlKTsKK30KKworc3RhdGljIFJlbmRlck9iamVjdCogY2FyZXRS
ZW5kZXJlcihOb2RlKiBub2RlKQoreworICAgIGlmICghbm9kZSkKKyAgICAgICAgcmV0dXJuIDA7
CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gbm9kZS0+cmVuZGVyZXIoKTsKKyAgICBp
ZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8vIGlmIGNhcmV0Tm9kZSBp
cyBhIGJsb2NrIGFuZCBjYXJldCBpcyBpbnNpZGUgaXQgdGhlbiBjYXJldCBzaG91bGQgYmUgcGFp
bnRlZCBieSB0aGF0IGJsb2NrCisgICAgYm9vbCBwYWludGVkQnlCbG9jayA9IHJlbmRlcmVyLT5p
c0Jsb2NrRmxvdygpICYmIGNhcmV0UmVuZGVyc0luc2lkZU5vZGUobm9kZSk7CisgICAgcmV0dXJu
IHBhaW50ZWRCeUJsb2NrID8gcmVuZGVyZXIgOiByZW5kZXJlci0+Y29udGFpbmluZ0Jsb2NrKCk7
Cit9CisKIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJlY3QoRG9jdW1lbnQqIGRvY3VtZW50
LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0UG9zaXRpb24pCiB7CiAgICAgZG9jdW1lbnQt
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKQEAgLTEyNTcsMzMgKzEyNzYsMTQgQEAgYm9vbCBDYXJl
dEJhc2U6OnVwZGF0ZUNhcmV0UmVjdChEb2N1bWVudCogZG9jdW1lbnQsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYgY2FyZXQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGNhcmV0UmVuZGVyc0luc2lkZU5vZGUoTm9kZSogbm9kZSkKLXsKLSAgICByZXR1cm4gbm9kZSAm
JiAhaXNUYWJsZUVsZW1lbnQobm9kZSkgJiYgIWVkaXRpbmdJZ25vcmVzQ29udGVudChub2RlKTsK
LX0KLQotUmVuZGVyT2JqZWN0KiBDYXJldEJhc2U6OmNhcmV0UmVuZGVyZXIoTm9kZSogbm9kZSkg
Y29uc3QKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUmVuZGVy
T2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlcikK
LSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAvLyBpZiBjYXJldE5vZGUgaXMgYSBibG9jayBhbmQg
Y2FyZXQgaXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhhdCBi
bG9jawotICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sgPSByZW5kZXJlci0+aXNCbG9ja0Zsb3coKSAm
JiBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUpOwotICAgIHJldHVybiBwYWludGVkQnlCbG9j
ayA/IHJlbmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOwotfQotCiBSZW5kZXJP
YmplY3QqIEZyYW1lU2VsZWN0aW9uOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1
cm4gQ2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRl
ZE5vZGUoKSk7CisgICAgcmV0dXJuIFdlYkNvcmU6OmNhcmV0UmVuZGVyZXIobV9zZWxlY3Rpb24u
c3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBEcmFnQ2FyZXRD
b250cm9sbGVyOjpjYXJldFJlbmRlcmVyKCkgY29uc3QKIHsKLSAgICByZXR1cm4gQ2FyZXRCYXNl
OjpjYXJldFJlbmRlcmVyKG1fcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkTm9k
ZSgpKTsKKyAgICByZXR1cm4gV2ViQ29yZTo6Y2FyZXRSZW5kZXJlcihtX3Bvc2l0aW9uLmRlZXBF
cXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CiB9CiAKIHN0YXRpYyBib29sIGlzTm9uT3Jw
aGFuZWRDYXJldChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCkBAIC0xMzIxLDIw
ICsxMzIxLDEzIEBAIEludFJlY3QgRnJhbWVTZWxlY3Rpb246OmFic29sdXRlQ2FyZXRCb3VuZHMo
KQogICAgIHJldHVybiBtX2Fic0NhcmV0Qm91bmRzOwogfQogCi1zdGF0aWMgTGF5b3V0UmVjdCBy
ZXBhaW50UmVjdEZvckNhcmV0KExheW91dFJlY3QgY2FyZXQpCitzdGF0aWMgdm9pZCByZXBhaW50
Q2FyZXRGb3JMb2NhbFJlY3QoTm9kZSogbm9kZSwgY29uc3QgTGF5b3V0UmVjdCYgcmVjdCkKIHsK
LSAgICBpZiAoY2FyZXQuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gTGF5b3V0UmVjdCgpOwot
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBkaXJ0eSByZWN0IGludGVyc2VjdHMgdGhlIGJsb2NrIHRo
YXQgcGFpbnRzIHRoZSBjYXJldCBldmVuIGluIHRoZSBjYXNlIHdoZXJlCi0gICAgLy8gdGhlIGNh
cmV0IGl0c2VsZiBpcyBqdXN0IG91dHNpZGUgdGhlIGJsb2NrLiBTZWUgPGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4Nj4uCi0gICAgY2FyZXQuaW5mbGF0ZVgoMSk7
Ci0gICAgY2FyZXQuaW5mbGF0ZVkoMSk7Ci0gICAgcmV0dXJuIGNhcmV0OwotfQorICAgIFJlbmRl
ck9iamVjdCogY2FyZXRQYWludGVyID0gY2FyZXRSZW5kZXJlcihub2RlKTsKKyAgICBpZiAoIWNh
cmV0UGFpbnRlcikKKyAgICAgICAgcmV0dXJuOwogCi1JbnRSZWN0IENhcmV0QmFzZTo6Y2FyZXRS
ZXBhaW50UmVjdChOb2RlKiBub2RlKSBjb25zdAotewotICAgIHJldHVybiBhYnNvbHV0ZUJvdW5k
c0ZvckxvY2FsUmVjdChub2RlLCByZXBhaW50UmVjdEZvckNhcmV0KGxvY2FsQ2FyZXRSZWN0V2l0
aG91dFVwZGF0ZSgpKSk7CisgICAgY2FyZXRQYWludGVyLT5yZXBhaW50UmVjdGFuZ2xlKHJlY3Qp
OwogfQogCiBib29sIEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJlY3QoKQpAQCAtMTM1
NSw3ICsxMzQ4LDYgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgSW50UmVjdCBvbGRBYnNDYXJldEJvdW5kcyA9
IG1fYWJzQ2FyZXRCb3VuZHM7Ci0gICAgLy8gRklYTUU6IFJlbmFtZSBtX2NhcmV0UmVjdCB0byBt
X2xvY2FsQ2FyZXRSZWN0LgogICAgIG1fYWJzQ2FyZXRCb3VuZHMgPSBhYnNvbHV0ZUJvdW5kc0Zv
ckxvY2FsUmVjdChtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCksIGxvY2FsQ2Fy
ZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsKICAgICBtX2Fic0NhcmV0Qm91bmRzRGlydHkgPSBmYWxz
ZTsKICAgICAKQEAgLTEzNjMsMTggKzEzNTUsMTMgQEAgYm9vbCBGcmFtZVNlbGVjdGlvbjo6cmVj
b21wdXRlQ2FyZXRSZWN0KCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAjaWYgRU5BQkxFKFRF
WFRfQ0FSRVQpCi0gICAgSW50UmVjdCBvbGRBYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcyA9IG1f
YWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHM7Ci0jZW5kaWYKLQotICAgIC8vIFdlIGJlbGlldmUg
dGhhdCB3ZSBuZWVkIHRvIGluZmxhdGUgdGhlIGxvY2FsIHJlY3QgYmVmb3JlIHRyYW5zZm9ybWlu
ZyBpdCB0byBvYnRhaW4gdGhlIHJlcGFpbnQgYm91bmRzLgotICAgIG1fYWJzb2x1dGVDYXJldFJl
cGFpbnRCb3VuZHMgPSBjYXJldFJlcGFpbnRSZWN0KG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVj
YXRlZE5vZGUoKSk7Ci0KLSNpZiBFTkFCTEUoVEVYVF9DQVJFVCkKICAgICBpZiAoUmVuZGVyVmll
dyogdmlldyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkgewotICAgICAgICAv
LyBGSVhNRTogbWFrZSBjYXJldCByZXBhaW50aW5nIGNvbnRhaW5lci1hd2FyZS4KLSAgICAgICAg
dmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMob2xkQWJzb2x1
dGVDYXJldFJlcGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAgTm9kZSogbm9kZSA9IG1fc2Vs
ZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAgICAgaWYgKG1fcHJldmlvdXND
YXJldE5vZGUpCisgICAgICAgICAgICByZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QobV9wcmV2aW91
c0NhcmV0Tm9kZS5nZXQoKSwgb2xkUmVjdCk7CisgICAgICAgIG1fcHJldmlvdXNDYXJldE5vZGUg
PSBub2RlOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZpZXcsIGlzQ29udGVudEVk
aXRhYmxlKCkpKQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENv
bXBvc2l0ZWRMYXllcnMobV9hYnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kcywgZmFsc2UpOworICAg
ICAgICAgICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIG5ld1JlY3QpOwogICAgIH0K
ICNlbmRpZgogICAgIHJldHVybiB0cnVlOwpAQCAtMTQxNiw3ICsxNDAzLDcgQEAgdm9pZCBDYXJl
dEJhc2U6OmludmFsaWRhdGVDYXJldFJlY3QoTm9kZSogbm9kZSwgYm9vbCBjYXJldFJlY3RDaGFu
Z2VkKQogCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBub2RlLT5kb2N1bWVudCgpLT5yZW5k
ZXJWaWV3KCkpIHsKICAgICAgICAgaWYgKHNob3VsZFJlcGFpbnRDYXJldCh2aWV3LCBub2RlLT5p
c0NvbnRlbnRFZGl0YWJsZShOb2RlOjpVc2VyU2VsZWN0QWxsSXNBbHdheXNOb25FZGl0YWJsZSkp
KQotICAgICAgICAgICAgdmlldy0+cmVwYWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRM
YXllcnMoY2FyZXRSZXBhaW50UmVjdChub2RlKSwgZmFsc2UpOworICAgICAgICAgICAgcmVwYWlu
dENhcmV0Rm9yTG9jYWxSZWN0KG5vZGUsIGxvY2FsQ2FyZXRSZWN0V2l0aG91dFVwZGF0ZSgpKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaAppbmRleCBk
NjUxMjAzYjFkMDI0YzhlNzEzYzAzMDhhYmFiY2Q0ZjYzMjQ2ZjczLi43MWIzMTRiZWRhZWU4MjA1
OTU2ZTUwYTU2NDVlNGJhYzJhYzJkMzk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNl
bGVjdGlvbi5oCkBAIC02NSwxMCArNjUsOCBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBjbGVhckNh
cmV0UmVjdCgpOwogICAgIGJvb2wgdXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50KiwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBjYXJldFBvc2l0aW9uKTsKICAgICBJbnRSZWN0IGFic29sdXRlQm91bmRz
Rm9yTG9jYWxSZWN0KE5vZGUqLCBjb25zdCBMYXlvdXRSZWN0JikgY29uc3Q7Ci0gICAgSW50UmVj
dCBjYXJldFJlcGFpbnRSZWN0KE5vZGUqKSBjb25zdDsKICAgICBib29sIHNob3VsZFJlcGFpbnRD
YXJldChjb25zdCBSZW5kZXJWaWV3KiwgYm9vbCBpc0NvbnRlbnRFZGl0YWJsZSkgY29uc3Q7CiAg
ICAgdm9pZCBwYWludENhcmV0KE5vZGUqLCBHcmFwaGljc0NvbnRleHQqLCBjb25zdCBMYXlvdXRQ
b2ludCYsIGNvbnN0IExheW91dFJlY3QmIGNsaXBSZWN0KSBjb25zdDsKLSAgICBSZW5kZXJPYmpl
Y3QqIGNhcmV0UmVuZGVyZXIoTm9kZSopIGNvbnN0OwogCiAgICAgY29uc3QgTGF5b3V0UmVjdCYg
bG9jYWxDYXJldFJlY3RXaXRob3V0VXBkYXRlKCkgY29uc3QgeyByZXR1cm4gbV9jYXJldExvY2Fs
UmVjdDsgfQogCkBAIC0zMDIsMTMgKzMwMCwxMyBAQCBwcml2YXRlOgogICAgIFZpc2libGVQb3Np
dGlvbiBtX29yaWdpbmFsQmFzZTsgLy8gVXNlZCB0byBzdG9yZSBiYXNlIGJlZm9yZSB0aGUgYWRq
dXN0bWVudCBhdCBiaWRpIGJvdW5kYXJ5CiAgICAgVGV4dEdyYW51bGFyaXR5IG1fZ3JhbnVsYXJp
dHk7CiAKKyAgICBSZWZQdHI8Tm9kZT4gbV9wcmV2aW91c0NhcmV0Tm9kZTsgLy8gVGhlIGxhc3Qg
bm9kZSB3aGljaCBwYWludGVkIHRoZSBjYXJldC4gUmV0YWluZWQgZm9yIGNsZWFyaW5nIHRoZSBv
bGQgY2FyZXQgd2hlbiBpdCBtb3Zlcy4KKwogICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG1fdHlw
aW5nU3R5bGU7CiAKICAgICBUaW1lcjxGcmFtZVNlbGVjdGlvbj4gbV9jYXJldEJsaW5rVGltZXI7
CiAgICAgLy8gVGhlIHBhaW50ZWQgYm91bmRzIG9mIHRoZSBjYXJldCBpbiBhYnNvbHV0ZSBjb29y
ZGluYXRlcwogICAgIEludFJlY3QgbV9hYnNDYXJldEJvdW5kczsKLSAgICAvLyBTaW1pbGFyIHRv
IGFib3ZlLCBidXQgaW5mbGF0ZWQgdG8gZW5zdXJlIHByb3BlciByZXBhaW50IChzZWUgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDg2KQotICAgIEludFJlY3QgbV9h
YnNvbHV0ZUNhcmV0UmVwYWludEJvdW5kczsKICAgICBib29sIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0
eSA6IDE7CiAgICAgYm9vbCBtX2NhcmV0UGFpbnQgOiAxOwogICAgIGJvb2wgbV9pc0NhcmV0Qmxp
bmtpbmdTdXNwZW5kZWQgOiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuY3Bw
CmluZGV4IGIwNjE1OWE5MWFiYTM1MzZjYmQ4ZDRkYTExMDcyNzA2MzVjNjI2MjYuLjhkNjQ5NTQ5
N2FlZjIyOGQyZTBiODdhMGE0YzhmOWE2YzFlODY5Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyVmlldy5jcHAKQEAgLTU0NSw2ICs1NDUsMzEgQEAgSW50UmVjdCBSZW5kZXJWaWV3
OjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBjbGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKICAgICBy
ZXR1cm4gcGl4ZWxTbmFwcGVkSW50UmVjdChzZWxSZWN0KTsKIH0KIAordm9pZCBSZW5kZXJWaWV3
OjpyZXBhaW50U2VsZWN0aW9uKCkgY29uc3QKK3sKKyAgICBkb2N1bWVudCgpLT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CisKKyAgICBIYXNoU2V0PFJlbmRlckJsb2NrKj4gcHJvY2Vzc2VkQmxvY2tz
OworCisgICAgUmVuZGVyT2JqZWN0KiBlbmQgPSByZW5kZXJlckFmdGVyUG9zaXRpb24obV9zZWxl
Y3Rpb25FbmQsIG1fc2VsZWN0aW9uRW5kUG9zKTsKKyAgICBmb3IgKFJlbmRlck9iamVjdCogbyA9
IG1fc2VsZWN0aW9uU3RhcnQ7IG8gJiYgbyAhPSBlbmQ7IG8gPSBvLT5uZXh0SW5QcmVPcmRlcigp
KSB7CisgICAgICAgIGlmICghby0+Y2FuQmVTZWxlY3Rpb25MZWFmKCkgJiYgbyAhPSBtX3NlbGVj
dGlvblN0YXJ0ICYmIG8gIT0gbV9zZWxlY3Rpb25FbmQpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgaWYgKG8tPnNlbGVjdGlvblN0YXRlKCkgPT0gU2VsZWN0aW9uTm9uZSkKKyAgICAg
ICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8obywgdHJ1ZSku
cmVwYWludCgpOworCisgICAgICAgIC8vIEJsb2NrcyBhcmUgcmVzcG9uc2libGUgZm9yIHBhaW50
aW5nIGxpbmUgZ2FwcyBhbmQgbWFyZ2luIGdhcHMuIFRoZXkgbXVzdCBiZSBleGFtaW5lZCBhcyB3
ZWxsLgorICAgICAgICBmb3IgKFJlbmRlckJsb2NrKiBibG9jayA9IG8tPmNvbnRhaW5pbmdCbG9j
aygpOyBibG9jayAmJiAhYmxvY2stPmlzUmVuZGVyVmlldygpOyBibG9jayA9IGJsb2NrLT5jb250
YWluaW5nQmxvY2soKSkgeworICAgICAgICAgICAgaWYgKHByb2Nlc3NlZEJsb2Nrcy5jb250YWlu
cyhibG9jaykpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwcm9jZXNzZWRC
bG9ja3MuYWRkKGJsb2NrKTsKKyAgICAgICAgICAgIFJlbmRlclNlbGVjdGlvbkluZm8oYmxvY2ss
IHRydWUpLnJlcGFpbnQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwogI2lmIFVTRShBQ0NFTEVS
QVRFRF9DT01QT1NJVElORykKIC8vIENvbXBvc2l0aW5nIGxheWVyIGRpbWVuc2lvbnMgdGFrZSBv
dXRsaW5lIHNpemUgaW50byBhY2NvdW50LCBzbyB3ZSBoYXZlIHRvIHJlY29tcHV0ZSBsYXllcgog
Ly8gYm91bmRzIHdoZW4gaXQgY2hhbmdlcy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJWaWV3LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVmll
dy5oCmluZGV4IGYyMDcxMTcyZjQ1YTVkZDIyYmEzZGE4YmI5NzVjNjA0MmUxMjY0MWYuLmNhNzhk
MzVlMTY3NDAxMDE2M2M0NDUyMmE3OGMwNmRhM2ZlNDBlYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlclZpZXcuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJsaWM6CiAgICAgUmVuZGVyT2Jq
ZWN0KiBzZWxlY3Rpb25FbmQoKSBjb25zdCB7IHJldHVybiBtX3NlbGVjdGlvbkVuZDsgfQogICAg
IEludFJlY3Qgc2VsZWN0aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQgPSB0cnVl
KSBjb25zdDsKICAgICB2b2lkIHNlbGVjdGlvblN0YXJ0RW5kKGludCYgc3RhcnRQb3MsIGludCYg
ZW5kUG9zKSBjb25zdDsKKyAgICB2b2lkIHJlcGFpbnRTZWxlY3Rpb24oKSBjb25zdDsKIAogICAg
IGJvb2wgcHJpbnRpbmcoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDNkYjJiOTQwY2IyYzc3Nzg1YzYwMjZl
NTRhOTc5YWZhNzczNjQ1ZTguLjBkYzdmZWQxOWRmNzMzNmNlODYzMzc4YjFjYWUyNDIxNGMyNTZk
NmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMy0wMS0wOCAgVGllbi1SZW4gQ2hlbiAgPHRy
Y2hlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgTWFrZSBjYXJldCByZXBhaW50aW5nIGNvbnRh
aW5lci1hd2FyZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTAzOTU1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVGhlIGNhcmV0IHJlcGFpbnQgcGFkZGluZyBoYXMgYmVlbiByZW1vdmVkLiBOZWVkcyByZWJh
c2VsaW5lLgorICAgICAgICBBZGRlZCB0ZXN0IHRoYXQgY2FyZXRzIHNob3VsZCBiZSByZXBhaW50
ZWQgY29ycmVjdGx5IG9uIGEgdHJhbnNmb3JtZWQgZWxlbWVudC4KKworICAgICAgICAqIGZhc3Qv
cmVwYWludC9jYXJldC13aXRoLXRyYW5zZm9ybWF0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgICogcGxhdGZvcm0v
bWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisKIDIwMTMtMDEtMDggIFRvbSBTZXBleiAgPHRzZXBlekBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQ29weS1wYXN0ZSBwcmVzZXJ2ZXMgPGVtYmVkPiB0YWdz
IGNvbnRhaW5pbmcgYWN0aXZlIGNvbnRlbnQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L3JlcGFpbnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzI5
NWE3M2RjNDUzYTBkM2FlZTkzMjM0NDEyMzdmYjg0MGQzNjgyCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbApA
QCAtMCwwICsxLDE3IEBACis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcGFpbnQuanMiIHR5cGU9
InRleHQvamF2YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlw
dCI+CitmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoImRpdiIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlv
bihkaXYsIDEpOworfQorPC9zY3JpcHQ+Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0icnVuUmVwYWlu
dFRlc3QoKTsiPgorPGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiIHN0eWxlPSItd2Via2l0LXRy
YW5zZm9ybTpyb3RhdGUoMzBkZWcpdHJhbnNsYXRlKDEwMHB4LDIwMHB4KSI+Cis8ZGl2IGlkPSJk
aXYiPlRoaXMgdGVzdCB2ZXJpZmllcyBjYXJldCByZXBhaW50IGlzIGNvcnJlY3RseSB0cmFuc2Zv
cm1lZC48L2Rpdj4KKzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQ
b3NpdGlvbihkaXYsIDApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCA0MjZkZDk0Y2I4
Mjg5MDgyMGVjMjc0MTMzNjNjODhiMGY0OWVlYmZiLi40MWNmYzgwMzFjNGJlY2I5ZmNkOTc4NjY4
YmQ4MTg4MmIxY2QzZGJmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTQyOTksMyArNDI5OSwxMyBAQCB3ZWJraXQub3JnL2IvOTY1OTcg
ZmFzdC9tdWx0aWNvbC92ZXJ0aWNhbC1ybC9mbG9hdC1tdWx0aWNvbC5odG1sIFsgRmFpbHVyZSBJ
bWFnZQogIyBOZWVkcyByZWJhc2VsaW5lLiBDdXJyZW50IGV4cGVjdGF0aW9uIGlzIHdyb25nIGJl
Y2F1c2UgbWFyZ2luIG9mIGJvZHkgZG9uJ3QgY29sbGFwc2Ugd2l0aCBtYXJnaW4gb2YgMXN0IGNo
aWxkLgogd2Via2l0Lm9yZy9iLzk2NTk3IGZhc3QvdGV4dC9lbXBoYXNpcy12ZXJ0aWNhbC5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA2MzMyIGh0dHAvdGVzdHMvbWlz
Yy9hdXRoZW50aWNhdGlvbi1yZWRpcmVjdC00L2F1dGhlbnRpY2F0aW9uLXNlbnQtdG8tcmVkaXJl
Y3Qtc2FtZS1vcmlnaW4tdXJsLmh0bWwgWyBTa2lwIF0KKworIyBUcmFuc2llbnQuIE5lZWRzIHJl
YmFzZWxpbmUuCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC80Nzc0MzU0Lmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50LzQ3
NzY3NjUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0
L3JlcGFpbnQvY2FyZXQtb3V0c2lkZS1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVw
YWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8x
MDM5NTUgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50Lmh0bWwgWyBJ
bWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L3JlcGFp
bnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcmwuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvY2FyZXQt
d2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIFsgTWlzc2luZyBdCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGRlNWQ3Nzg2ZTVhYTMyYTE4MGUzZmZlZmQxODdm
YmRhYTBiNjUwMTcuLjAxOGU3MmVmYmY3ZWUzYmQ5NTVmMmRjYzRkZGYzYTUxOWFkMmNlOTcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0xMjcwLDMgKzEy
NzAsMTMgQEAgd2Via2l0Lm9yZy9iLzEwNjE1MSBbIExpb24gXSBodHRwL3Rlc3RzL21pc2MvbGlu
ay1yZWwtaWNvbi1iZWZvcmVsb2FkLmh0bWwgWyBQYXMKIHdlYmtpdC5vcmcvYi8xMDYxODUgZmFz
dC9mcmFtZXMvZmxhdHRlbmluZy9pZnJhbWUtZmxhdHRlbmluZy1maXhlZC1oZWlnaHQuaHRtbCBb
IFBhc3MgRmFpbHVyZSBdCiAKIHdlYmtpdC5vcmcvYi8xMDYzNjEgWyBEZWJ1ZyBdIHN2Zy9jdXN0
b20vdGV4dC11c2UtY2xpY2stY3Jhc2gueGh0bWwgWyBDcmFzaCBdCisKKyMgVHJhbnNpZW50LiBO
ZWVkcyByZWJhc2VsaW5lLgord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvNDc3NDM1
NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVw
YWludC80Nzc2NzY1Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5
NTUgZmFzdC9yZXBhaW50L2NhcmV0LW91dHNpZGUtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1
cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0
aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWlu
dC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1vZGUtYm91bmRhcnkuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvc2VsZWN0aW9uLXJsLmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50
L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbCBbIE1pc3NpbmcgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>182030</attachid>
            <date>2013-01-09 17:46:12 -0800</date>
            <delta_ts>2013-01-09 22:24:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103955-20130109174316.patch</filename>
            <type>text/plain</type>
            <size>14951</size>
            <attacher name="Tien-Ren Chen">trchen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM5MjU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTY1MmJkN2NkZjI2NjA4
NDFmN2FhZWVjNmZlYzg4YTViOWRmMDczMS4uZTI3MDJhNmQ2YmRkZTQzN2MzNzk2NzI1YWIwNzgx
NmI1YmI4NTZiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEzLTAxLTA5ICBUaWVu
LVJlbiBDaGVuICA8dHJjaGVuQGNocm9taXVtLm9yZz4KKworICAgICAgICBNYWtlIGNhcmV0IHJl
cGFpbnRpbmcgY29udGFpbmVyLWF3YXJlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDM5NTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBPbmx5IGludmFsaWRhdGUgbG9jYWwgcmVjdHMgb24gdGhlIGNhcmV0
J3MgcmVwYWludCBjb250YWluZXIsCisgICAgICAgIGluc3RlYWQgb2YgaW52YWxpZGF0aW5nIGFu
IGFic29sdXRlIHJlY3Qgb24gdGhlIHdob2xlIHZpZXcuCisKKyAgICAgICAgVGVzdDogZmFzdC9y
ZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbAorCisgICAgICAgICogZWRpdGlu
Zy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjYXJldFJlbmRlcnNJbnNp
ZGVOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVTZWxlY3Rpb246OmNhcmV0UmVuZGVyZXIpOgorICAgICAgICAoV2ViQ29yZTo6
RHJhZ0NhcmV0Q29udHJvbGxlcjo6Y2FyZXRSZW5kZXJlcik6CisgICAgICAgIChXZWJDb3JlOjpy
ZXBhaW50Q2FyZXRGb3JMb2NhbFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rp
b246OnJlY29tcHV0ZUNhcmV0UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDYXJldEJhc2U6Omlu
dmFsaWRhdGVDYXJldFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OmZv
Y3VzZWRPckFjdGl2ZVN0YXRlQ2hhbmdlZCk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJWaWV3LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclZpZXc6OnJlcGFpbnRTZWxlY3Rpb24pOgorICAgICAgICAqIHJlbmRlcmlu
Zy9SZW5kZXJWaWV3Lmg6CisKIDIwMTMtMDEtMDkgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRv
bkBhcHBsZS5jb20+CiAKICAgICAgICAgRG9uJ3QgZHJvcCB0byBodWdlIHRpbGUgbW9kZSBpZiB3
ZSdyZSBvbmx5IHNsb3ctc2Nyb2xsaW5nIGJlY2F1c2Ugb2YgYSBwYWdlIG92ZXJsYXkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAKaW5kZXggYmEyYTIwYmJhNWEwMjZh
YWM0ZGU4YjI4ZWNhZWVlZDhhYjg1ODZmNS4uZDc1MTg4NjBmODk0MTNlOTNjODU4YTAzZDAyZDcw
OGZmMGIyNDIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAK
QEAgLTEyMTksNiArMTIxOSwyNSBAQCB2b2lkIENhcmV0QmFzZTo6Y2xlYXJDYXJldFJlY3QoKQog
ICAgIG1fY2FyZXRMb2NhbFJlY3QgPSBMYXlvdXRSZWN0KCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUg
Ym9vbCBjYXJldFJlbmRlcnNJbnNpZGVOb2RlKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuIG5v
ZGUgJiYgIWlzVGFibGVFbGVtZW50KG5vZGUpICYmICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9k
ZSk7Cit9CisKK3N0YXRpYyBSZW5kZXJPYmplY3QqIGNhcmV0UmVuZGVyZXIoTm9kZSogbm9kZSkK
K3sKKyAgICBpZiAoIW5vZGUpCisgICAgICAgIHJldHVybiAwOworCisgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAg
ICAgcmV0dXJuIDA7CisKKyAgICAvLyBpZiBjYXJldE5vZGUgaXMgYSBibG9jayBhbmQgY2FyZXQg
aXMgaW5zaWRlIGl0IHRoZW4gY2FyZXQgc2hvdWxkIGJlIHBhaW50ZWQgYnkgdGhhdCBibG9jawor
ICAgIGJvb2wgcGFpbnRlZEJ5QmxvY2sgPSByZW5kZXJlci0+aXNCbG9ja0Zsb3coKSAmJiBjYXJl
dFJlbmRlcnNJbnNpZGVOb2RlKG5vZGUpOworICAgIHJldHVybiBwYWludGVkQnlCbG9jayA/IHJl
bmRlcmVyIDogcmVuZGVyZXItPmNvbnRhaW5pbmdCbG9jaygpOworfQorCiBib29sIENhcmV0QmFz
ZTo6dXBkYXRlQ2FyZXRSZWN0KERvY3VtZW50KiBkb2N1bWVudCwgY29uc3QgVmlzaWJsZVBvc2l0
aW9uJiBjYXJldFBvc2l0aW9uKQogewogICAgIGRvY3VtZW50LT51cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CkBAIC0xMjU3LDMzICsxMjc2LDE0IEBAIGJvb2wgQ2FyZXRCYXNlOjp1cGRhdGVDYXJldFJl
Y3QoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIGNhcmV0CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBjYXJldFJlbmRlcnNJbnNpZGVO
b2RlKE5vZGUqIG5vZGUpCi17Ci0gICAgcmV0dXJuIG5vZGUgJiYgIWlzVGFibGVFbGVtZW50KG5v
ZGUpICYmICFlZGl0aW5nSWdub3Jlc0NvbnRlbnQobm9kZSk7Ci19Ci0KLVJlbmRlck9iamVjdCog
Q2FyZXRCYXNlOjpjYXJldFJlbmRlcmVyKE5vZGUqIG5vZGUpIGNvbnN0Ci17Ci0gICAgaWYgKCFu
b2RlKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBu
b2RlLT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgIHJldHVybiAwOwot
Ci0gICAgLy8gaWYgY2FyZXROb2RlIGlzIGEgYmxvY2sgYW5kIGNhcmV0IGlzIGluc2lkZSBpdCB0
aGVuIGNhcmV0IHNob3VsZCBiZSBwYWludGVkIGJ5IHRoYXQgYmxvY2sKLSAgICBib29sIHBhaW50
ZWRCeUJsb2NrID0gcmVuZGVyZXItPmlzQmxvY2tGbG93KCkgJiYgY2FyZXRSZW5kZXJzSW5zaWRl
Tm9kZShub2RlKTsKLSAgICByZXR1cm4gcGFpbnRlZEJ5QmxvY2sgPyByZW5kZXJlciA6IHJlbmRl
cmVyLT5jb250YWluaW5nQmxvY2soKTsKLX0KLQogUmVuZGVyT2JqZWN0KiBGcmFtZVNlbGVjdGlv
bjo6Y2FyZXRSZW5kZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENhcmV0QmFzZTo6Y2FyZXRS
ZW5kZXJlcihtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOworICAgIHJldHVy
biBXZWJDb3JlOjpjYXJldFJlbmRlcmVyKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5v
ZGUoKSk7CiB9CiAKIFJlbmRlck9iamVjdCogRHJhZ0NhcmV0Q29udHJvbGxlcjo6Y2FyZXRSZW5k
ZXJlcigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIENhcmV0QmFzZTo6Y2FyZXRSZW5kZXJlcihtX3Bv
c2l0aW9uLmRlZXBFcXVpdmFsZW50KCkuZGVwcmVjYXRlZE5vZGUoKSk7CisgICAgcmV0dXJuIFdl
YkNvcmU6OmNhcmV0UmVuZGVyZXIobV9wb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0
ZWROb2RlKCkpOwogfQogCiBzdGF0aWMgYm9vbCBpc05vbk9ycGhhbmVkQ2FyZXQoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQpAQCAtMTMyMSwyMCArMTMyMSwxMyBAQCBJbnRSZWN0
IEZyYW1lU2VsZWN0aW9uOjphYnNvbHV0ZUNhcmV0Qm91bmRzKCkKICAgICByZXR1cm4gbV9hYnND
YXJldEJvdW5kczsKIH0KIAotc3RhdGljIExheW91dFJlY3QgcmVwYWludFJlY3RGb3JDYXJldChM
YXlvdXRSZWN0IGNhcmV0KQorc3RhdGljIHZvaWQgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KE5v
ZGUqIG5vZGUsIGNvbnN0IExheW91dFJlY3QmIHJlY3QpCiB7Ci0gICAgaWYgKGNhcmV0LmlzRW1w
dHkoKSkKLSAgICAgICAgcmV0dXJuIExheW91dFJlY3QoKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0
aGUgZGlydHkgcmVjdCBpbnRlcnNlY3RzIHRoZSBibG9jayB0aGF0IHBhaW50cyB0aGUgY2FyZXQg
ZXZlbiBpbiB0aGUgY2FzZSB3aGVyZQotICAgIC8vIHRoZSBjYXJldCBpdHNlbGYgaXMganVzdCBv
dXRzaWRlIHRoZSBibG9jay4gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTkwODY+LgotICAgIGNhcmV0LmluZmxhdGVYKDEpOwotICAgIGNhcmV0LmluZmxhdGVZ
KDEpOwotICAgIHJldHVybiBjYXJldDsKLX0KKyAgICBSZW5kZXJPYmplY3QqIGNhcmV0UGFpbnRl
ciA9IGNhcmV0UmVuZGVyZXIobm9kZSk7CisgICAgaWYgKCFjYXJldFBhaW50ZXIpCisgICAgICAg
IHJldHVybjsKIAotSW50UmVjdCBDYXJldEJhc2U6OmNhcmV0UmVwYWludFJlY3QoTm9kZSogbm9k
ZSkgY29uc3QKLXsKLSAgICByZXR1cm4gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3Qobm9kZSwg
cmVwYWludFJlY3RGb3JDYXJldChsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSkpOworICAg
IGNhcmV0UGFpbnRlci0+cmVwYWludFJlY3RhbmdsZShyZWN0KTsKIH0KIAogYm9vbCBGcmFtZVNl
bGVjdGlvbjo6cmVjb21wdXRlQ2FyZXRSZWN0KCkKQEAgLTEzNTUsNyArMTM0OCw2IEBAIGJvb2wg
RnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCgpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEludFJlY3Qgb2xkQWJzQ2FyZXRCb3VuZHMgPSBtX2Fic0NhcmV0Qm91bmRzOwot
ICAgIC8vIEZJWE1FOiBSZW5hbWUgbV9jYXJldFJlY3QgdG8gbV9sb2NhbENhcmV0UmVjdC4KICAg
ICBtX2Fic0NhcmV0Qm91bmRzID0gYWJzb2x1dGVCb3VuZHNGb3JMb2NhbFJlY3QobV9zZWxlY3Rp
b24uc3RhcnQoKS5kZXByZWNhdGVkTm9kZSgpLCBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUo
KSk7CiAgICAgbV9hYnNDYXJldEJvdW5kc0RpcnR5ID0gZmFsc2U7CiAgICAgCkBAIC0xMzYzLDE4
ICsxMzU1LDEzIEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCgpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIEludFJl
Y3Qgb2xkQWJzb2x1dGVDYXJldFJlcGFpbnRCb3VuZHMgPSBtX2Fic29sdXRlQ2FyZXRSZXBhaW50
Qm91bmRzOwotI2VuZGlmCi0KLSAgICAvLyBXZSBiZWxpZXZlIHRoYXQgd2UgbmVlZCB0byBpbmZs
YXRlIHRoZSBsb2NhbCByZWN0IGJlZm9yZSB0cmFuc2Zvcm1pbmcgaXQgdG8gb2J0YWluIHRoZSBy
ZXBhaW50IGJvdW5kcy4KLSAgICBtX2Fic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRzID0gY2FyZXRS
ZXBhaW50UmVjdChtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCkpOwotCi0jaWYg
RU5BQkxFKFRFWFRfQ0FSRVQpCiAgICAgaWYgKFJlbmRlclZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpIHsKLSAgICAgICAgLy8gRklYTUU6IG1ha2UgY2FyZXQg
cmVwYWludGluZyBjb250YWluZXItYXdhcmUuCi0gICAgICAgIHZpZXctPnJlcGFpbnRSZWN0YW5n
bGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKG9sZEFic29sdXRlQ2FyZXRSZXBhaW50Qm91bmRz
LCBmYWxzZSk7CisgICAgICAgIE5vZGUqIG5vZGUgPSBtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJl
Y2F0ZWROb2RlKCk7CisgICAgICAgIGlmIChtX3ByZXZpb3VzQ2FyZXROb2RlKQorICAgICAgICAg
ICAgcmVwYWludENhcmV0Rm9yTG9jYWxSZWN0KG1fcHJldmlvdXNDYXJldE5vZGUuZ2V0KCksIG9s
ZFJlY3QpOworICAgICAgICBtX3ByZXZpb3VzQ2FyZXROb2RlID0gbm9kZTsKICAgICAgICAgaWYg
KHNob3VsZFJlcGFpbnRDYXJldCh2aWV3LCBpc0NvbnRlbnRFZGl0YWJsZSgpKSkKLSAgICAgICAg
ICAgIHZpZXctPnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKG1fYWJz
b2x1dGVDYXJldFJlcGFpbnRCb3VuZHMsIGZhbHNlKTsKKyAgICAgICAgICAgIHJlcGFpbnRDYXJl
dEZvckxvY2FsUmVjdChub2RlLCBuZXdSZWN0KTsKICAgICB9CiAjZW5kaWYKICAgICByZXR1cm4g
dHJ1ZTsKQEAgLTE0MTYsNyArMTQwMyw3IEBAIHZvaWQgQ2FyZXRCYXNlOjppbnZhbGlkYXRlQ2Fy
ZXRSZWN0KE5vZGUqIG5vZGUsIGJvb2wgY2FyZXRSZWN0Q2hhbmdlZCkKIAogICAgIGlmIChSZW5k
ZXJWaWV3KiB2aWV3ID0gbm9kZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKSB7CiAgICAgICAg
IGlmIChzaG91bGRSZXBhaW50Q2FyZXQodmlldywgbm9kZS0+aXNDb250ZW50RWRpdGFibGUoTm9k
ZTo6VXNlclNlbGVjdEFsbElzQWx3YXlzTm9uRWRpdGFibGUpKSkKLSAgICAgICAgICAgIHZpZXct
PnJlcGFpbnRSZWN0YW5nbGVJblZpZXdBbmRDb21wb3NpdGVkTGF5ZXJzKGNhcmV0UmVwYWludFJl
Y3Qobm9kZSksIGZhbHNlKTsKKyAgICAgICAgICAgIHJlcGFpbnRDYXJldEZvckxvY2FsUmVjdChu
b2RlLCBsb2NhbENhcmV0UmVjdFdpdGhvdXRVcGRhdGUoKSk7CiAgICAgfQogfQogCkBAIC0xNjgz
LDcgKzE2NzAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNo
YW5nZWQoKQogICAgIC8vIFJlbmRlck9iamVjdDo6c2VsZWN0aW9uRm9yZWdyb3VuZENvbG9yKCkg
Y2hlY2sgaWYgdGhlIGZyYW1lIGlzIGFjdGl2ZSwKICAgICAvLyB3ZSBoYXZlIHRvIHVwZGF0ZSBw
bGFjZXMgdGhvc2UgY29sb3JzIHdlcmUgcGFpbnRlZC4KICAgICBpZiAoUmVuZGVyVmlldyogdmll
dyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKLSAgICAgICAgdmlldy0+cmVw
YWludFJlY3RhbmdsZUluVmlld0FuZENvbXBvc2l0ZWRMYXllcnMoZW5jbG9zaW5nSW50UmVjdChi
b3VuZHMoKSkpOworICAgICAgICB2aWV3LT5yZXBhaW50U2VsZWN0aW9uKCk7CiAKICAgICAvLyBD
YXJldCBhcHBlYXJzIGluIHRoZSBhY3RpdmUgZnJhbWUuCiAgICAgaWYgKGFjdGl2ZUFuZEZvY3Vz
ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggZDY1MTIwM2Ix
ZDAyNGM4ZTcxM2MwMzA4YWJhYmNkNGY2MzI0NmY3My4uNzFiMzE0YmVkYWVlODIwNTk1NmU1MGE1
NjQ1ZTRiYWMyYWMyZDM5NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24u
aApAQCAtNjUsMTAgKzY1LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2xlYXJDYXJldFJlY3Qo
KTsKICAgICBib29sIHVwZGF0ZUNhcmV0UmVjdChEb2N1bWVudCosIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgY2FyZXRQb3NpdGlvbik7CiAgICAgSW50UmVjdCBhYnNvbHV0ZUJvdW5kc0ZvckxvY2Fs
UmVjdChOb2RlKiwgY29uc3QgTGF5b3V0UmVjdCYpIGNvbnN0OwotICAgIEludFJlY3QgY2FyZXRS
ZXBhaW50UmVjdChOb2RlKikgY29uc3Q7CiAgICAgYm9vbCBzaG91bGRSZXBhaW50Q2FyZXQoY29u
c3QgUmVuZGVyVmlldyosIGJvb2wgaXNDb250ZW50RWRpdGFibGUpIGNvbnN0OwogICAgIHZvaWQg
cGFpbnRDYXJldChOb2RlKiwgR3JhcGhpY3NDb250ZXh0KiwgY29uc3QgTGF5b3V0UG9pbnQmLCBj
b25zdCBMYXlvdXRSZWN0JiBjbGlwUmVjdCkgY29uc3Q7Ci0gICAgUmVuZGVyT2JqZWN0KiBjYXJl
dFJlbmRlcmVyKE5vZGUqKSBjb25zdDsKIAogICAgIGNvbnN0IExheW91dFJlY3QmIGxvY2FsQ2Fy
ZXRSZWN0V2l0aG91dFVwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY2FyZXRMb2NhbFJlY3Q7IH0K
IApAQCAtMzAyLDEzICszMDAsMTMgQEAgcHJpdmF0ZToKICAgICBWaXNpYmxlUG9zaXRpb24gbV9v
cmlnaW5hbEJhc2U7IC8vIFVzZWQgdG8gc3RvcmUgYmFzZSBiZWZvcmUgdGhlIGFkanVzdG1lbnQg
YXQgYmlkaSBib3VuZGFyeQogICAgIFRleHRHcmFudWxhcml0eSBtX2dyYW51bGFyaXR5OwogCisg
ICAgUmVmUHRyPE5vZGU+IG1fcHJldmlvdXNDYXJldE5vZGU7IC8vIFRoZSBsYXN0IG5vZGUgd2hp
Y2ggcGFpbnRlZCB0aGUgY2FyZXQuIFJldGFpbmVkIGZvciBjbGVhcmluZyB0aGUgb2xkIGNhcmV0
IHdoZW4gaXQgbW92ZXMuCisKICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3R5cGluZ1N0eWxl
OwogCiAgICAgVGltZXI8RnJhbWVTZWxlY3Rpb24+IG1fY2FyZXRCbGlua1RpbWVyOwogICAgIC8v
IFRoZSBwYWludGVkIGJvdW5kcyBvZiB0aGUgY2FyZXQgaW4gYWJzb2x1dGUgY29vcmRpbmF0ZXMK
ICAgICBJbnRSZWN0IG1fYWJzQ2FyZXRCb3VuZHM7Ci0gICAgLy8gU2ltaWxhciB0byBhYm92ZSwg
YnV0IGluZmxhdGVkIHRvIGVuc3VyZSBwcm9wZXIgcmVwYWludCAoc2VlIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTA4NikKLSAgICBJbnRSZWN0IG1fYWJzb2x1dGVD
YXJldFJlcGFpbnRCb3VuZHM7CiAgICAgYm9vbCBtX2Fic0NhcmV0Qm91bmRzRGlydHkgOiAxOwog
ICAgIGJvb2wgbV9jYXJldFBhaW50IDogMTsKICAgICBib29sIG1faXNDYXJldEJsaW5raW5nU3Vz
cGVuZGVkIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJWaWV3LmNwcAppbmRleCA2
ODdjYzRhZmRkNDBhNmQ0Njk3MWIyYzI0ZWRjZjE0OGU2ZWFhYTUzLi4xOGZlMmNiM2QxMjEwZjJl
OTViNDNkMTk5ZjlkNTVmMmIyYjcxZTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clZpZXcuY3BwCkBAIC01NDUsNiArNTQ1LDMxIEBAIEludFJlY3QgUmVuZGVyVmlldzo6c2VsZWN0
aW9uQm91bmRzKGJvb2wgY2xpcFRvVmlzaWJsZUNvbnRlbnQpIGNvbnN0CiAgICAgcmV0dXJuIHBp
eGVsU25hcHBlZEludFJlY3Qoc2VsUmVjdCk7CiB9CiAKK3ZvaWQgUmVuZGVyVmlldzo6cmVwYWlu
dFNlbGVjdGlvbigpIGNvbnN0Cit7CisgICAgZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOworCisgICAgSGFzaFNldDxSZW5kZXJCbG9jayo+IHByb2Nlc3NlZEJsb2NrczsKKworICAg
IFJlbmRlck9iamVjdCogZW5kID0gcmVuZGVyZXJBZnRlclBvc2l0aW9uKG1fc2VsZWN0aW9uRW5k
LCBtX3NlbGVjdGlvbkVuZFBvcyk7CisgICAgZm9yIChSZW5kZXJPYmplY3QqIG8gPSBtX3NlbGVj
dGlvblN0YXJ0OyBvICYmIG8gIT0gZW5kOyBvID0gby0+bmV4dEluUHJlT3JkZXIoKSkgeworICAg
ICAgICBpZiAoIW8tPmNhbkJlU2VsZWN0aW9uTGVhZigpICYmIG8gIT0gbV9zZWxlY3Rpb25TdGFy
dCAmJiBvICE9IG1fc2VsZWN0aW9uRW5kKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
IGlmIChvLT5zZWxlY3Rpb25TdGF0ZSgpID09IFNlbGVjdGlvbk5vbmUpCisgICAgICAgICAgICBj
b250aW51ZTsKKworICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKG8sIHRydWUpLnJlcGFpbnQo
KTsKKworICAgICAgICAvLyBCbG9ja3MgYXJlIHJlc3BvbnNpYmxlIGZvciBwYWludGluZyBsaW5l
IGdhcHMgYW5kIG1hcmdpbiBnYXBzLiBUaGV5IG11c3QgYmUgZXhhbWluZWQgYXMgd2VsbC4KKyAg
ICAgICAgZm9yIChSZW5kZXJCbG9jayogYmxvY2sgPSBvLT5jb250YWluaW5nQmxvY2soKTsgYmxv
Y2sgJiYgIWJsb2NrLT5pc1JlbmRlclZpZXcoKTsgYmxvY2sgPSBibG9jay0+Y29udGFpbmluZ0Js
b2NrKCkpIHsKKyAgICAgICAgICAgIGlmIChwcm9jZXNzZWRCbG9ja3MuY29udGFpbnMoYmxvY2sp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgcHJvY2Vzc2VkQmxvY2tzLmFk
ZChibG9jayk7CisgICAgICAgICAgICBSZW5kZXJTZWxlY3Rpb25JbmZvKGJsb2NrLCB0cnVlKS5y
ZXBhaW50KCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKICNpZiBVU0UoQUNDRUxFUkFURURfQ09N
UE9TSVRJTkcpCiAvLyBDb21wb3NpdGluZyBsYXllciBkaW1lbnNpb25zIHRha2Ugb3V0bGluZSBz
aXplIGludG8gYWNjb3VudCwgc28gd2UgaGF2ZSB0byByZWNvbXB1dGUgbGF5ZXIKIC8vIGJvdW5k
cyB3aGVuIGl0IGNoYW5nZXMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyVmlldy5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclZpZXcuaAppbmRl
eCBmMjA3MTE3MmY0NWE1ZGQyMmJhM2RhOGJiOTc1YzYwNDJlMTI2NDFmLi5jYTc4ZDM1ZTE2NzQw
MTAxNjNjNDQ1MjJhNzhjMDZkYTNmZTQwZWFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVmlldy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJWaWV3LmgKQEAgLTk1LDYgKzk1LDcgQEAgcHVibGljOgogICAgIFJlbmRlck9iamVjdCogc2Vs
ZWN0aW9uRW5kKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb25FbmQ7IH0KICAgICBJbnRSZWN0
IHNlbGVjdGlvbkJvdW5kcyhib29sIGNsaXBUb1Zpc2libGVDb250ZW50ID0gdHJ1ZSkgY29uc3Q7
CiAgICAgdm9pZCBzZWxlY3Rpb25TdGFydEVuZChpbnQmIHN0YXJ0UG9zLCBpbnQmIGVuZFBvcykg
Y29uc3Q7CisgICAgdm9pZCByZXBhaW50U2VsZWN0aW9uKCkgY29uc3Q7CiAKICAgICBib29sIHBy
aW50aW5nKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxZGU2ZmJjOWNjMmJiM2IyNWY1MTk3Mjg1ZDNiZTE1
MTNhNjgwYTlmLi5kZGJhNzA2MjMzZjUxYzUwMzY5Mzg5MWEyOTRiNzMzYjg5Nzc4OGVmIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMTMtMDEtMDkgIFRpZW4tUmVuIENoZW4gIDx0cmNoZW5AY2hy
b21pdW0ub3JnPgorCisgICAgICAgIE1ha2UgY2FyZXQgcmVwYWludGluZyBjb250YWluZXItYXdh
cmUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzk1
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBj
YXJldCByZXBhaW50IHBhZGRpbmcgaGFzIGJlZW4gcmVtb3ZlZC4gTmVlZHMgcmViYXNlbGluZS4K
KyAgICAgICAgQWRkZWQgdGVzdCB0aGF0IGNhcmV0cyBzaG91bGQgYmUgcmVwYWludGVkIGNvcnJl
Y3RseSBvbiBhIHRyYW5zZm9ybWVkIGVsZW1lbnQuCisKKyAgICAgICAgKiBmYXN0L3JlcGFpbnQv
Y2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9UZXN0
RXhwZWN0YXRpb25zOgorCiAyMDEzLTAxLTA5ICBUYWthc2hpIFNha2Ftb3RvICA8dGFzYWtAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBib3JkZXItcmFkaXVzIHdpdGggYm94LXNoYWRvdyBpcyBub3Qg
cmVuZGVyZWQgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQv
Y2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9yZXBhaW50
L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzI5NWE3M2RjNDUz
YTBkM2FlZTkzMjM0NDEyMzdmYjg0MGQzNjgyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24uaHRtbApAQCAtMCwwICsx
LDE3IEBACis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcGFpbnQuanMiIHR5cGU9InRleHQvamF2
YXNjcmlwdCI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CitmdW5j
dGlvbiByZXBhaW50VGVzdCgpIHsKKyAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoImRpdiIpOworICAgIHdpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihkaXYsIDEp
OworfQorPC9zY3JpcHQ+Cis8aHRtbD4KKzxib2R5IG9ubG9hZD0icnVuUmVwYWludFRlc3QoKTsi
PgorPGRpdiBjb250ZW50ZWRpdGFibGU9InRydWUiIHN0eWxlPSItd2Via2l0LXRyYW5zZm9ybTpy
b3RhdGUoMzBkZWcpdHJhbnNsYXRlKDEwMHB4LDIwMHB4KSI+Cis8ZGl2IGlkPSJkaXYiPlRoaXMg
dGVzdCB2ZXJpZmllcyBjYXJldCByZXBhaW50IGlzIGNvcnJlY3RseSB0cmFuc2Zvcm1lZC48L2Rp
dj4KKzwvZGl2PgorPHNjcmlwdD4KK3dpbmRvdy5nZXRTZWxlY3Rpb24oKS5zZXRQb3NpdGlvbihk
aXYsIDApOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhNWUxZmUxMjE2NjQ1NmY1MDYy
YjgxNjEzM2I4ZWU0MTVlYzMxZDZiLi4xNmJmMzlkZDA0MzM1OTliY2ZiOTIwOWY5MDgzOGFhOGIw
OTNkYWZmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9UZXN0RXhw
ZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL1Rlc3RFeHBlY3Rh
dGlvbnMKQEAgLTQzNzcsMyArNDM3NywxMiBAQCB3ZWJraXQub3JnL2IvMTA2NDczIFsgTGludXgg
XSBmYXN0L2ltYWdlcy9lbWJlZC1kb2VzLW5vdC1wcm9wYWdhdGUtZGltZW5zaW9ucy10bwogd2Vi
a2l0Lm9yZy9iLzEwNjQ4NyBbIFdpbiBdIGluc3BlY3Rvci9nZW9sb2NhdGlvbi1lcnJvci5odG1s
IFsgRmFpbHVyZSBQYXNzIF0KIGNyYnVnLmNvbS8xNjY5MzIgWyBEZWJ1ZyBdIHBsdWdpbnMvZW1i
ZWQtYXR0cmlidXRlcy1zZXR0aW5nLmh0bWwgWyBDcmFzaCBQYXNzIF0KIAorIyBUcmFuc2llbnQu
IE5lZWRzIHJlYmFzZWxpbmUuCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC80Nzc0
MzU0Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9y
ZXBhaW50LzQ3NzY3NjUuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEw
Mzk1NSBmYXN0L3JlcGFpbnQvY2FyZXQtb3V0c2lkZS1ibG9jay5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9qYXBhbmVzZS1ybC1zZWxl
Y3Rpb24tcmVwYWludC1pbi1yZWdpb25zLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L2phcGFuZXNlLXJsLXNlbGVjdGlvbi1yZXBhaW50
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBh
aW50L3JlcGFpbnQtYWNyb3NzLXdyaXRpbmctbW9kZS1ib3VuZGFyeS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9zZWxlY3Rpb24tcmwu
aHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBmYXN0L3JlcGFp
bnQvY2FyZXQtd2l0aC10cmFuc2Zvcm1hdGlvbi5odG1sIFsgTWlzc2luZyBdCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IGZkNTdiMWU3NDk1MzhmNmUyYzdl
ZTJjNmNlM2E5ODY2MTE0YmQ4MzUuLjU5YzExODk3MWJkOWFjMTA1Zjg1MTZkZjRhY2YyMDI5ZDky
NmI4ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRp
b25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zCkBAIC0x
MjczLDMgKzEyNzMsMTIgQEAgd2Via2l0Lm9yZy9iLzEwNjQxNSBmYXN0L3dvcmtlcnMvd29ya2Vy
LWNsb3NlLW1vcmUuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiB3ZWJraXQub3JnL2IvMTA2NDE1IGZh
c3Qvd29ya2Vycy93b3JrZXItZG9jdW1lbnQtbGVhay5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIHdl
YmtpdC5vcmcvYi8xMDY0MTUgZmFzdC93b3JrZXJzL3dvcmtlci1saWZlY3ljbGUuaHRtbCBbIFBh
c3MgRmFpbHVyZSBdCiAKKyMgVHJhbnNpZW50LiBOZWVkcyByZWJhc2VsaW5lLgord2Via2l0Lm9y
Zy9iLzEwMzk1NSBmYXN0L3JlcGFpbnQvNDc3NDM1NC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC80Nzc2NzY1Lmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L2NhcmV0LW91dHNp
ZGUtYmxvY2suaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1NSBm
YXN0L3JlcGFpbnQvamFwYW5lc2Utcmwtc2VsZWN0aW9uLXJlcGFpbnQtaW4tcmVnaW9ucy5odG1s
IFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9q
YXBhbmVzZS1ybC1zZWxlY3Rpb24tcmVwYWludC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3
ZWJraXQub3JnL2IvMTAzOTU1IGZhc3QvcmVwYWludC9yZXBhaW50LWFjcm9zcy13cml0aW5nLW1v
ZGUtYm91bmRhcnkuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzEwMzk1
NSBmYXN0L3JlcGFpbnQvc2VsZWN0aW9uLXJsLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dl
YmtpdC5vcmcvYi8xMDM5NTUgZmFzdC9yZXBhaW50L2NhcmV0LXdpdGgtdHJhbnNmb3JtYXRpb24u
aHRtbCBbIE1pc3NpbmcgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>