<?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>68491</bug_id>
          
          <creation_ts>2011-09-20 17:35:43 -0700</creation_ts>
          <short_desc>Get rid of Widget::setBoundsSize</short_desc>
          <delta_ts>2011-09-23 13:51:38 -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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>fsamuel</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thakis</cc>
    
    <cc>vsevik</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>470503</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-20 17:35:43 -0700</bug_when>
    <thetext>Get rid of Widget::setBoundsSize</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470510</commentid>
    <comment_count>1</comment_count>
      <attachid>108087</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-20 17:41:06 -0700</bug_when>
    <thetext>Created attachment 108087
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470516</commentid>
    <comment_count>2</comment_count>
      <attachid>108087</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-09-20 17:50:46 -0700</bug_when>
    <thetext>Comment on attachment 108087
Patch

Attachment 108087 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9772473</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470519</commentid>
    <comment_count>3</comment_count>
      <attachid>108087</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-09-20 17:52:02 -0700</bug_when>
    <thetext>Comment on attachment 108087
Patch

Attachment 108087 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/9772475</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470520</commentid>
    <comment_count>4</comment_count>
      <attachid>108090</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-20 17:52:08 -0700</bug_when>
    <thetext>Created attachment 108090
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470523</commentid>
    <comment_count>5</comment_count>
      <attachid>108090</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-20 17:57:18 -0700</bug_when>
    <thetext>Comment on attachment 108090
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        This basically reverts http://trac.webkit.org/changeset/79167 and http://trac.webkit.org/changeset/75897
&gt; +        which were added to make zoom gestures work with WebKit1, but since we don&apos;t support zoom gestures in WebKit1
&gt; +        anymore, it&apos;s better for code cleanliness to get rid of Widget::setBoundsSize and the associated code.

&lt;http://trac.webkit.org/r75897&gt; included a fix for bug 15676. Transformed iframes are supported in WebKit1 and this change looks like it will break them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470544</commentid>
    <comment_count>6</comment_count>
      <attachid>108090</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 18:41:09 -0700</bug_when>
    <thetext>Comment on attachment 108090
Patch

Attachment 108090 did not pass cr-mac-ews (chromium):
Output: http://queues.webkit.org/results/9765547</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470561</commentid>
    <comment_count>7</comment_count>
      <attachid>108090</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-09-20 19:19:47 -0700</bug_when>
    <thetext>Comment on attachment 108090
Patch

Attachment 108090 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9772511</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470584</commentid>
    <comment_count>8</comment_count>
      <attachid>108090</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2011-09-20 21:04:16 -0700</bug_when>
    <thetext>Comment on attachment 108090
Patch

Attachment 108090 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/9773528</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470912</commentid>
    <comment_count>9</comment_count>
      <attachid>108176</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-21 10:33:04 -0700</bug_when>
    <thetext>Created attachment 108176
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470929</commentid>
    <comment_count>10</comment_count>
      <attachid>108176</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-21 10:49:54 -0700</bug_when>
    <thetext>Comment on attachment 108176
Patch

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

&gt; Source/WebCore/ChangeLog:10
&gt; +        This basically reverts http://trac.webkit.org/changeset/79167 and http://trac.webkit.org/changeset/75897
&gt; +        which were added to make zoom gestures work with WebKit1, but since we don&apos;t support zoom gestures in WebKit1
&gt; +        anymore, it&apos;s better for code cleanliness to get rid of Widget::setBoundsSize and the associated code.

Safari zoom gestures are one way to apply transforms to iframes and plug-ins. Another way is CSS transforms specified in the content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>470933</commentid>
    <comment_count>11</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-21 10:54:07 -0700</bug_when>
    <thetext>(In reply to comment #10)

&gt; 
&gt; Safari zoom gestures are one way to apply transforms to iframes and plug-ins. Another way is CSS transforms specified in the content.

I&apos;ll update the ChangeLog to mention that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471032</commentid>
    <comment_count>12</comment_count>
      <attachid>108204</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-21 12:17:59 -0700</bug_when>
    <thetext>Created attachment 108204
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471040</commentid>
    <comment_count>13</comment_count>
      <attachid>108204</attachid>
    <who name="">mitz</who>
    <bug_when>2011-09-21 12:23:17 -0700</bug_when>
    <thetext>Comment on attachment 108204
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        This basically reverts http://trac.webkit.org/changeset/79167 and http://trac.webkit.org/changeset/75897
&gt; +        which were added to make zoom gestures work with WebKit1, but since we don&apos;t support zoom gestures in WebKit1
&gt; +        anymore, it&apos;s better for code cleanliness to get rid of Widget::setBoundsSize and the associated code. While this
&gt; +        will unfortunately break transformed iframes in WebKit1, but Simon says that it&apos;s an acceptable tradeoff.

What are the benefits of this change?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471058</commentid>
    <comment_count>14</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-21 12:44:57 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 108204 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=108204&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:11
&gt; &gt; +        This basically reverts http://trac.webkit.org/changeset/79167 and http://trac.webkit.org/changeset/75897
&gt; &gt; +        which were added to make zoom gestures work with WebKit1, but since we don&apos;t support zoom gestures in WebKit1
&gt; &gt; +        anymore, it&apos;s better for code cleanliness to get rid of Widget::setBoundsSize and the associated code. While this
&gt; &gt; +        will unfortunately break transformed iframes in WebKit1, but Simon says that it&apos;s an acceptable tradeoff.
&gt; 
&gt; What are the benefits of this change?

It removes a lot of cross platform code that&apos;s in reality only used by a single port, and makes the Widget class hierarchy easier to understand/refactor.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471650</commentid>
    <comment_count>15</comment_count>
      <attachid>108204</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-22 10:08:22 -0700</bug_when>
    <thetext>Comment on attachment 108204
Patch

Clearing flags on attachment: 108204

Committed r95725: &lt;http://trac.webkit.org/changeset/95725&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>471651</commentid>
    <comment_count>16</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2011-09-22 10:08:26 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472357</commentid>
    <comment_count>17</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-09-23 11:23:54 -0700</bug_when>
    <thetext>This change breaks inspector (tested in chrome). 
Open docked inspector, resize it and after releasing mouse button move mouse up, without hovering inspector.
If you increased inspector size, you&apos;ll see white stripe in the bottom, because document body is not resized with the window

Inspector body has following style:

    position:absolute;
    top:0;
    left:0;
    bottom:0;
    right:0;

Once you hover inspector body is resized properly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472407</commentid>
    <comment_count>18</comment_count>
      <attachid>108509</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-09-23 12:30:20 -0700</bug_when>
    <thetext>Created attachment 108509
Chromium failure test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>472477</commentid>
    <comment_count>19</comment_count>
    <who name="Nico Weber">thakis</who>
    <bug_when>2011-09-23 13:51:38 -0700</bug_when>
    <thetext>Also breaks window resizing in chromium: http://crbug.com/97787</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108087</attachid>
            <date>2011-09-20 17:41:06 -0700</date>
            <delta_ts>2011-09-20 17:52:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68491-20110920174105.patch</filename>
            <type>text/plain</type>
            <size>21597</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMjAgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdpZGdl
dDo6c2V0Qm91bmRzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGJhc2ljYWxseSByZXZlcnRzIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0Lzc5MTY3IGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NTg5Nwor
ICAgICAgICB3aGljaCB3ZXJlIGFkZGVkIHRvIG1ha2Ugem9vbSBnZXN0dXJlcyB3b3JrIHdpdGgg
V2ViS2l0MSwgYnV0IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgem9vbSBnZXN0dXJlcyBpbiBXZWJL
aXQxCisgICAgICAgIGFueW1vcmUsIGl0J3MgYmV0dGVyIGZvciBjb2RlIGNsZWFubGluZXNzIHRv
IGdldCByaWQgb2YgV2lkZ2V0OjpzZXRCb3VuZHNTaXplIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2Rl
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnJlc2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldFBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0Lmg6CisKIDIwMTEtMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGNsYW5nIGNvbXBpbGUgZXJyb3JzIGluIFdlYiBBdWRp
bwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTgyNSw3ICs4MjUsNiBAQCBf
X1pON1dlYkNvcmU2UmVnaW9uOXRyYW5zbGF0ZUVSS05TXzdJbnRTCiBfX1pON1dlYkNvcmU2UmVn
aW9uQzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTZSZWdpb25DMUV2CiBfX1pON1dlYkNv
cmU2V2lkZ2V0MTJzZXRGcmFtZVJlY3RFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTZXaWRn
ZXQxM3NldEJvdW5kc1NpemVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTZXaWRnZXQxNnJl
bW92ZUZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlNldpZGdldDE3ZnJhbWVSZWN0c0NoYW5nZWRF
dgogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxhdGZvcm1XaWRnZXRFUDZOU1ZpZXcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gOTU1NjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDYwLDExICsyMDYwLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2Um
IAogICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgIC8vIFVzZSB0
aGUgY3VycmVudCBTY3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KLSAgICBpZiAobV9mcmFtZS0+dmll
dygpKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9IG1fZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0
KCk7Ci0gICAgICAgIHZpZXctPnNldEZyYW1lUmVjdChyZWN0KTsKLSAgICAgICAgdmlldy0+c2V0
Qm91bmRzU2l6ZShyZWN0LnNpemUoKSk7Ci0gICAgfQorICAgIGlmIChtX2ZyYW1lLT52aWV3KCkp
CisgICAgICAgIHZpZXctPnNldEZyYW1lUmVjdChtX2ZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgp
KTsKICAgICBtX2ZyYW1lLT5zZXRWaWV3KHZpZXcpOwogICAgIAogICAgIG1fZnJhbWUtPnNldERv
Y3VtZW50KGRvY3VtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlz
aW9uIDk1NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDYgQEAgUGFzc1JlZlB0cjxGcmFtZVZpZXc+IEZyYW1lVmll
dzo6Y3JlYXRlKAogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBhZG9wdFJlZihuZXcg
RnJhbWVWaWV3KGZyYW1lKSk7CiAgICAgdmlldy0+V2lkZ2V0OjpzZXRGcmFtZVJlY3QoTGF5b3V0
UmVjdCh2aWV3LT5sb2NhdGlvbigpLCBpbml0aWFsU2l6ZSkpOwotICAgIHZpZXctPnNldEluaXRp
YWxCb3VuZHNTaXplKGluaXRpYWxTaXplKTsKICAgICB2aWV3LT5zaG93KCk7CiAgICAgcmV0dXJu
IHZpZXcucmVsZWFzZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAJKHJldmlzaW9uIDk1NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw4ICsyMzcsOCBAQCBJbnRSZWN0IFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdChiCiAgICAgICAgICYmICFpbmNsdWRlU2Nyb2xsYmFy
cyA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCkgOiAwOwogCiAgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwgbV9zY3JvbGxPZmZzZXQuaGVp
Z2h0KCkpLAotICAgICAgICAgICAgICAgICAgIEludFNpemUobWF4KDAsIG1fYm91bmRzU2l6ZS53
aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCksIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4KDAsIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQpKSk7CisgICAgICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgd2lkdGgoKSAtIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgw
LCBoZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKSk7CiB9CiAjZW5kaWYKIApA
QCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgYm9vbCBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSBmYWxzZTsK
ICAgICAgICAgCiAgICAgICAgIEludFNpemUgZG9jU2l6ZSA9IGNvbnRlbnRzU2l6ZSgpOwotICAg
ICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IG1fYm91bmRzU2l6ZTsKKyAgICAgICAgSW50U2l6ZSBm
cmFtZVNpemUgPSBmcmFtZVJlY3QoKS5zaXplKCk7CiAKICAgICAgICAgaWYgKGhTY3JvbGwgPT0g
U2Nyb2xsYmFyQXV0bykgewogICAgICAgICAgICAgbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9
IGRvY1NpemUud2lkdGgoKSA+IHZpc2libGVXaWR0aCgpOwpAQCAtNTMyLDggKzUzMiw4IEBAIHZv
aWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAgICAgaW50IHBhZ2VT
dGVwID0gbWF4KG1heDxpbnQ+KGNsaWVudFdpZHRoICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRv
U3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50V2lkdGggLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3
ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0
KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS5oZWln
aHQoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS53aWR0aCgpIC0gKG1fdmVydGljYWxTY3Jv
bGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpIDogMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5o
ZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtICht
X3ZlcnRpY2FsU2Nyb2xsYmFyID8gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSA6IDApLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PmhlaWdodCgpKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3Qo
aEJhclJlY3QpOwogICAgICAgICBpZiAoIW1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xkUmVj
dCAhPSBtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKQpAQCAtNTUyLDEwICs1NTIs
MTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkgPiBjbGllbnRI
ZWlnaHQpOwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50SGVpZ2h0
ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50SGVpZ2h0
IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKLSAgICAgICAg
SW50UmVjdCB2QmFyUmVjdCA9IEludFJlY3QobV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT53aWR0aCgpLCAKKyAgICAgICAgSW50UmVjdCB2QmFyUmVjdCA9IEludFJl
Y3Qod2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2JvdW5kc1NpemUuaGVpZ2h0KCkgLSAobV9ob3Jpem9udGFsU2Nyb2xs
YmFyID8gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSA6IDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSAobV9ob3Jpem9udGFsU2Nyb2xsYmFy
ID8gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSA6IDApKTsKICAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+c2V0RnJhbWVSZWN0KHZCYXJSZWN0KTsKICAgICAgICAgaWYgKCFtX3Nj
cm9sbGJhcnNTdXBwcmVzc2VkICYmIG9sZFJlY3QgIT0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJh
bWVSZWN0KCkpCiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7
CkBAIC04MjcsMzAgKzgyNyw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0
IEludFIKICAgICBmcmFtZVJlY3RzQ2hhbmdlZCgpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNl
dEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKLXsKLSAgICBpZiAobmV3U2l6ZSA9
PSBtX2JvdW5kc1NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdpZGdldDo6c2V0Qm91bmRz
U2l6ZShuZXdTaXplKTsKLSAgICBtX2JvdW5kc1NpemUgPSBuZXdTaXplOwotCi0gICAgaWYgKHBs
YXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNjcm9sbGJhcnMo
bV9zY3JvbGxPZmZzZXQpOwotICAgIGlmICghbV91c2VGaXhlZExheW91dCkKLSAgICAgICAgY29u
dGVudHNSZXNpemVkKCk7Ci0KLSAgICBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwotfQotCi12
b2lkIFNjcm9sbFZpZXc6OnNldEluaXRpYWxCb3VuZHNTaXplKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCi17Ci0gICAgQVNTRVJUKG1fYm91bmRzU2l6ZS5pc1plcm8oKSk7Ci0gICAgbV9ib3VuZHNT
aXplID0gbmV3U2l6ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCkBAIC05MjEsMTggKzg5NywxOCBAQCBJbnRS
ZWN0IFNjcm9sbFZpZXc6OnNjcm9sbENvcm5lclJlY3QoKSBjCiAgICAgaWYgKGhhc092ZXJsYXlT
Y3JvbGxiYXJzKCkpCiAgICAgICAgIHJldHVybiBjb3JuZXJSZWN0OwogCi0gICAgaWYgKG1faG9y
aXpvbnRhbFNjcm9sbGJhciAmJiBtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1faG9yaXpvbnRhbFNj
cm9sbGJhci0+d2lkdGgoKSA+IDApIHsKKyAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYm
IHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKSB7CiAgICAgICAg
IGNvcm5lclJlY3QudW5pdGUoSW50UmVjdChtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JvdW5kc1NpemUuaGVpZ2h0KCkg
LSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXIt
PndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1f
aG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQo
KSkpOwogICAgIH0KIAotICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIG1fYm91bmRzU2l6
ZS5oZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpID4gMCkgewotICAgICAg
ICBjb3JuZXJSZWN0LnVuaXRlKEludFJlY3QobV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT53aWR0aCgpLAorICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhl
aWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7CisgICAgICAgIGNv
cm5lclJlY3QudW5pdGUoSW50UmVjdCh3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lk
dGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXItPmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Ym91bmRzU2l6ZS5oZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3Jv
bGxiYXItPmhlaWdodCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBjb3JuZXJSZWN0OwpA
QCAtMTEzMiw4ICsxMTA4LDggQEAgYm9vbCBTY3JvbGxWaWV3Ojppc1BvaW50SW5TY3JvbGxiYXJD
b3JuZQogCiBib29sIFNjcm9sbFZpZXc6OnNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdAog
ewotICAgIHJldHVybiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYmIG1fYm91bmRzU2l6ZS53aWR0
aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAg
KG1fdmVydGljYWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLmhlaWdodCgpIC0gbV92ZXJ0aWNh
bFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKTsKKyAgICByZXR1cm4gKG1faG9yaXpvbnRhbFNjcm9s
bGJhciAmJiB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpID4gMCkKKyAg
ICAgICAgfHwgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgaGVpZ2h0KCkgLSBtX3ZlcnRpY2FsU2Ny
b2xsYmFyLT5oZWlnaHQoKSA+IDApOwogfQogCiBJbnRSZWN0IFNjcm9sbFZpZXc6OmNvbnZlcnRG
cm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAkocmV2aXNpb24gOTU1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw3ICsyMjcsNiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlIHRvIHVwZGF0ZSBvdXIgc2Nyb2xsYmFycyBh
bmQgbm90aWZ5IG91ciBjb250ZW50cyBvZiB0aGUgcmVzaXplLgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHNT
aXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRv
IGhpdCB0ZXN0IHNjcm9sbGJhcnMgZnJvbSB3aXRoaW4gdGhlIGVuZ2luZSdzIGV2ZW50IGhhbmRs
ZXJzIChsaWtlIFdpbjMyKS4KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhckF0UG9pbnQoY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKQEAgLTMwMiw5ICszMDEsNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXhlZFZpc2libGVDb250ZW50UmVjdDsgfQogCi0gICAgSW50U2l6ZSBib3VuZHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHNTaXplOyB9Ci0gICAgdm9pZCBzZXRJbml0aWFsQm91bmRzU2l6
ZShjb25zdCBJbnRTaXplJik7Ci0KICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8g
Y3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KICAgICB2b2lkIHNldEhhc0hvcml6b250YWxTY3Jv
bGxiYXIoYm9vbCk7CiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sKTsKQEAg
LTM2Myw4ICszNTksNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRhaW5zU2Nyb2xsYWJs
ZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnM7CiAKLSAgICBJbnRTaXplIG1fYm91bmRzU2l6ZTsK
LQogICAgIHZvaWQgaW5pdCgpOwogICAgIHZvaWQgZGVzdHJveSgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9XaWRnZXQuaAkocmV2aXNpb24gOTU1NjkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5LDEyICsxNDksMTEgQEAgcHVibGlj
OgogICAgIEludFBvaW50IGxvY2F0aW9uKCkgY29uc3QgeyByZXR1cm4gZnJhbWVSZWN0KCkubG9j
YXRpb24oKTsgfQogCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYpOwogICAg
IHZpcnR1YWwgSW50UmVjdCBmcmFtZVJlY3QoKSBjb25zdDsKICAgICBJbnRSZWN0IGJvdW5kc1Jl
Y3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KDAsIDAsIHdpZHRoKCksICBoZWlnaHQoKSk7IH0K
IAotICAgIHZvaWQgcmVzaXplKGludCB3LCBpbnQgaCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdCh4
KCksIHkoKSwgdywgaCkpOyBzZXRCb3VuZHNTaXplKEludFNpemUodywgaCkpOyB9Ci0gICAgdm9p
ZCByZXNpemUoY29uc3QgSW50U2l6ZSYgcykgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChsb2NhdGlv
bigpLCBzKSk7IHNldEJvdW5kc1NpemUocyk7IH0KKyAgICB2b2lkIHJlc2l6ZShpbnQgdywgaW50
IGgpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QoeCgpLCB5KCksIHcsIGgpKTsgfQorICAgIHZvaWQg
cmVzaXplKGNvbnN0IEludFNpemUmIHMpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QobG9jYXRpb24o
KSwgcykpOyB9CiAgICAgdm9pZCBtb3ZlKGludCB4LCBpbnQgeSkgeyBzZXRGcmFtZVJlY3QoSW50
UmVjdCh4LCB5LCB3aWR0aCgpLCBoZWlnaHQoKSkpOyB9CiAgICAgdm9pZCBtb3ZlKGNvbnN0IElu
dFBvaW50JiBwKSB7IHNldEZyYW1lUmVjdChJbnRSZWN0KHAsIHNpemUoKSkpOyB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQkocmV2aXNpb24gOTU1Njkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0zMSw3ICszMSw2IEBACiAjaW1wb3J0ICJDaHJvbWUuaCIKICNpbXBvcnQgIkN1cnNv
ci5oIgogI2ltcG9ydCAiRG9jdW1lbnQuaCIKLSNpbXBvcnQgIkZsb2F0Q29udmVyc2lvbi5oIgog
I2ltcG9ydCAiRm9udC5oIgogI2ltcG9ydCAiRnJhbWUuaCIKICNpbXBvcnQgIkdyYXBoaWNzQ29u
dGV4dC5oIgpAQCAtMTg5LDI1ICsxODgsNiBAQCB2b2lkIFdpZGdldDo6c2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIH0KIAotdm9pZCBX
aWRnZXQ6OnNldEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSkKLXsKLSAgICBOU1NpemUg
bnNTaXplID0gc2l6ZTsKLQotICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICBO
U1ZpZXcgKm91dGVyVmlldyA9IGdldE91dGVyVmlldygpOwotICAgIGlmICghb3V0ZXJWaWV3KQot
ICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUYWtlIGEgcmVmZXJlbmNlIHRvIHRoaXMgV2lkZ2V0
LCBiZWNhdXNlIHNlbmRpbmcgbWVzc2FnZXMgdG8gb3V0ZXJWaWV3IGNhbiBpbnZva2UgYXJiaXRy
YXJ5Ci0gICAgLy8gY29kZSwgd2hpY2ggY2FuIGRlcmVmIGl0LgotICAgIFJlZlB0cjxXaWRnZXQ+
IHByb3RlY3RlZFRoaXModGhpcyk7Ci0gICAgaWYgKCFOU0VxdWFsU2l6ZXMobnNTaXplLCBbb3V0
ZXJWaWV3IGJvdW5kc10uc2l6ZSkpIHsKLSAgICAgICAgW291dGVyVmlldyBzZXRCb3VuZHNTaXpl
Om5zU2l6ZV07Ci0gICAgICAgIFtvdXRlclZpZXcgc2V0TmVlZHNEaXNwbGF5Ok5PXTsKLSAgICB9
Ci0gICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLX0KLQogTlNWaWV3ICpXaWRnZXQ6Omdl
dE91dGVyVmlldygpIGNvbnN0CiB7CiAgICAgTlNWaWV3ICp2aWV3ID0gcGxhdGZvcm1XaWRnZXQo
KTsKQEAgLTIzMiwzMCArMjEyLDExIEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRl
eHQqIHAsIGMKICAgICAvLyBjb2RlLCB3aGljaCBjYW4gZGVyZWYgaXQuCiAgICAgUmVmUHRyPFdp
ZGdldD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKIAotICAgIEludFBvaW50IHRyYW5zZm9ybU9yaWdp
biA9IGZyYW1lUmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgQWZmaW5lVHJhbnNmb3JtIHdpZGdldFRv
Vmlld1RyYW5mb3JtID0gbWFrZU1hcEJldHdlZW5SZWN0cyhJbnRSZWN0KEludFBvaW50KCksIGZy
YW1lUmVjdCgpLnNpemUoKSksIFt2aWV3IGJvdW5kc10pOwotCiAgICAgTlNHcmFwaGljc0NvbnRl
eHQgKmN1cnJlbnRDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGN1cnJlbnRDb250ZXh0XTsK
ICAgICBpZiAoY3VycmVudENvbnRleHQgPT0gW1t2aWV3IHdpbmRvd10gZ3JhcGhpY3NDb250ZXh0
XSB8fCAhW2N1cnJlbnRDb250ZXh0IGlzRHJhd2luZ1RvU2NyZWVuXSkgewogICAgICAgICAvLyBU
aGlzIGlzIHRoZSBjb21tb24gY2FzZSBvZiBkcmF3aW5nIGludG8gYSB3aW5kb3cgb3IgcHJpbnRp
bmcuCiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKLSAgICAgICAgCi0gICAg
ICAgIENHQ29udGV4dFJlZiBjb250ZXh0ID0gKENHQ29udGV4dFJlZilbY3VycmVudENvbnRleHQg
Z3JhcGhpY3NQb3J0XTsKLQotICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNvbnRleHQpOwot
ICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY29udGV4dCwgdHJhbnNmb3JtT3JpZ2luLngo
KSwgdHJhbnNmb3JtT3JpZ2luLnkoKSk7Ci0gICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNvbnRl
eHQsIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkZ2V0VG9WaWV3VHJhbmZvcm0ueFNjYWxlKCkp
LCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdpZGdldFRvVmlld1RyYW5mb3JtLnlTY2FsZSgpKSk7
Ci0gICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCAtdHJhbnNmb3JtT3JpZ2lu
LngoKSwgLXRyYW5zZm9ybU9yaWdpbi55KCkpOwotCi0gICAgICAgIEludFJlY3QgZGlydHlSZWN0
ID0gcjsKLSAgICAgICAgZGlydHlSZWN0Lm1vdmVCeSgtdHJhbnNmb3JtT3JpZ2luKTsKLSAgICAg
ICAgaWYgKCFbdmlldyBpc0ZsaXBwZWRdKQotICAgICAgICAgICAgZGlydHlSZWN0LnNldFkoW3Zp
ZXcgYm91bmRzXS5zaXplLmhlaWdodCAtIGRpcnR5UmVjdC5tYXhZKCkpOwotCi0gICAgICAgIFt2
aWV3IGRpc3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5OmRpcnR5UmVjdF07Ci0KLSAgICAgICAgQ0dD
b250ZXh0UmVzdG9yZUdTdGF0ZShjb250ZXh0KTsKLQorICAgICAgICBbdmlldyBkaXNwbGF5UmVj
dElnbm9yaW5nT3BhY2l0eTpbdmlldyBjb252ZXJ0UmVjdDpyIGZyb21WaWV3Olt2aWV3IHN1cGVy
dmlld11dXTsKICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKICAgICB9IGVsc2Ug
ewogICAgICAgICAvLyBUaGlzIGlzIHRoZSBjYXNlIG9mIGRyYXdpbmcgaW50byBhIGJpdG1hcCBj
b250ZXh0IG90aGVyIHRoYW4gYSB3aW5kb3cgYmFja2luZyBzdG9yZS4gSXQgZ2V0cyBoaXQgYmVu
ZWF0aApAQCAtMjgwLDEwICsyNDEsNiBAQCB2b2lkIFdpZGdldDo6cGFpbnQoR3JhcGhpY3NDb250
ZXh0KiBwLCBjCiAgICAgICAgIEFTU0VSVChjZ0NvbnRleHQgPT0gW2N1cnJlbnRDb250ZXh0IGdy
YXBoaWNzUG9ydF0pOwogICAgICAgICBDR0NvbnRleHRTYXZlR1N0YXRlKGNnQ29udGV4dCk7CiAK
LSAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgdHJhbnNmb3JtT3JpZ2lu
LngoKSwgdHJhbnNmb3JtT3JpZ2luLnkoKSk7Ci0gICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNn
Q29udGV4dCwgbmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9ybS54U2Nh
bGUoKSksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkZ2V0VG9WaWV3VHJhbmZvcm0ueVNjYWxl
KCkpKTsKLSAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgLXRyYW5zZm9y
bU9yaWdpbi54KCksIC10cmFuc2Zvcm1PcmlnaW4ueSgpKTsKLQogICAgICAgICBOU1JlY3Qgdmll
d0ZyYW1lID0gW3ZpZXcgZnJhbWVdOwogICAgICAgICBOU1JlY3Qgdmlld0JvdW5kcyA9IFt2aWV3
IGJvdW5kc107CiAgICAgICAgIC8vIFNldCB1cCB0aGUgdHJhbnNsYXRpb24gYW5kIChmbGlwcGVk
KSBvcmllbnRhdGlvbiBvZiB0aGUgZ3JhcGhpY3MgY29udGV4dC4gSW4gbm9ybWFsIGRyYXdpbmcs
IEFwcEtpdCBkb2VzIGl0IGFzIGl0IGRlc2NlbmRzIGRvd24KQEAgLTI5MSwxNSArMjQ4LDEwIEBA
IHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGMKICAgICAgICAgQ0dDb250
ZXh0VHJhbnNsYXRlQ1RNKGNnQ29udGV4dCwgdmlld0ZyYW1lLm9yaWdpbi54IC0gdmlld0JvdW5k
cy5vcmlnaW4ueCwgdmlld0ZyYW1lLm9yaWdpbi55ICsgdmlld0ZyYW1lLnNpemUuaGVpZ2h0ICsg
dmlld0JvdW5kcy5vcmlnaW4ueSk7CiAgICAgICAgIENHQ29udGV4dFNjYWxlQ1RNKGNnQ29udGV4
dCwgMSwgLTEpOwogCi0gICAgICAgIEludFJlY3QgZGlydHlSZWN0ID0gcjsKLSAgICAgICAgZGly
dHlSZWN0Lm1vdmVCeSgtdHJhbnNmb3JtT3JpZ2luKTsKLSAgICAgICAgaWYgKCFbdmlldyBpc0Zs
aXBwZWRdKQotICAgICAgICAgICAgZGlydHlSZWN0LnNldFkoW3ZpZXcgYm91bmRzXS5zaXplLmhl
aWdodCAtIGRpcnR5UmVjdC5tYXhZKCkpOwotCiAgICAgICAgIEJFR0lOX0JMT0NLX09CSkNfRVhD
RVBUSU9OUzsKICAgICAgICAgewogICAgICAgICAgICAgTlNHcmFwaGljc0NvbnRleHQgKm5zQ29u
dGV4dCA9IFtOU0dyYXBoaWNzQ29udGV4dCBncmFwaGljc0NvbnRleHRXaXRoR3JhcGhpY3NQb3J0
OmNnQ29udGV4dCBmbGlwcGVkOllFU107Ci0gICAgICAgICAgICBbdmlldyBkaXNwbGF5UmVjdEln
bm9yaW5nT3BhY2l0eTpkaXJ0eVJlY3QgaW5Db250ZXh0Om5zQ29udGV4dF07CisgICAgICAgICAg
ICBbdmlldyBkaXNwbGF5UmVjdElnbm9yaW5nT3BhY2l0eTpbdmlldyBjb252ZXJ0UmVjdDpyIGZy
b21WaWV3Olt2aWV3IHN1cGVydmlld11dIGluQ29udGV4dDpuc0NvbnRleHRdOwogICAgICAgICB9
CiAgICAgICAgIEVORF9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCShyZXZpc2lvbiA5NTU2OSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
NDAsNyArMTQwLDcgQEAgUmVuZGVyV2lkZ2V0Ojp+UmVuZGVyV2lkZ2V0KCkKICAgICBjbGVhcldp
ZGdldCgpOwogfQogCi1ib29sIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29uc3Qg
SW50UmVjdCYgZnJhbWUsIGNvbnN0IEludFNpemUmIGJvdW5kc1NpemUpCitib29sIFJlbmRlcldp
ZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYgZnJhbWUpCiB7CiAgICAgaWYg
KCFub2RlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTE1Nyw4ICsxNTcsNiBAQCBib29s
IFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0R2VvbWV0cnkoY29uCiAgICAgUmVuZGVyV2lkZ2V0UHJv
dGVjdG9yIHByb3RlY3Rvcih0aGlzKTsKICAgICBSZWZQdHI8Tm9kZT4gcHJvdGVjdGVkTm9kZShu
b2RlKCkpOwogICAgIG1fd2lkZ2V0LT5zZXRGcmFtZVJlY3QoZnJhbWUpOwotICAgIGlmIChtX3dp
ZGdldCkgLy8gc2V0RnJhbWVSZWN0IGNhbiBydW4gYXJiaXRyYXJ5IHNjcmlwdCwgd2hpY2ggbWln
aHQgY2xlYXIgbV93aWRnZXQuCi0gICAgICAgIG1fd2lkZ2V0LT5zZXRCb3VuZHNTaXplKGJvdW5k
c1NpemUpOwogICAgIAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKICAgICBpZiAo
aGFzTGF5ZXIoKSAmJiBsYXllcigpLT5pc0NvbXBvc2l0ZWQoKSkKQEAgLTE5MCw5ICsxODgsOSBA
QCB2b2lkIFJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KFBhc3NSZWZQdHI8CiAgICAgICAgICAgICAg
ICAgSW50UmVjdCBhYnNvbHV0ZUNvbnRlbnRCb3ggPSBJbnRSZWN0KGxvY2FsVG9BYnNvbHV0ZVF1
YWQoRmxvYXRRdWFkKGNvbnRlbnRCb3gpKS5ib3VuZGluZ0JveCgpKTsKICAgICAgICAgICAgICAg
ICBpZiAobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY29u
dGVudEJveC5zZXRMb2NhdGlvbihhYnNvbHV0ZUNvbnRlbnRCb3gubG9jYXRpb24oKSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHNldFdpZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gsIGNvbnRlbnRCb3gu
c2l6ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgc2V0V2lkZ2V0R2VvbWV0cnkoY29udGVudEJv
eCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNldFdpZGdl
dEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCwgY29udGVudEJveC5zaXplKCkpOworICAgICAg
ICAgICAgICAgICAgICBzZXRXaWRnZXRHZW9tZXRyeShhYnNvbHV0ZUNvbnRlbnRCb3gpOwogICAg
ICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHN0eWxlKCktPnZpc2liaWxpdHkoKSAhPSBWSVNJ
QkxFKQogICAgICAgICAgICAgICAgIG1fd2lkZ2V0LT5oaWRlKCk7CkBAIC0zMjgsOSArMzI2LDkg
QEAgdm9pZCBSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldFBvc2l0aW9uKAogICAgIGJvb2wgYm91
bmRzQ2hhbmdlZDsKICAgICBpZiAobV93aWRnZXQtPmlzRnJhbWVWaWV3KCkpIHsKICAgICAgICAg
Y29udGVudEJveC5zZXRMb2NhdGlvbihhYnNvbHV0ZUNvbnRlbnRCb3gubG9jYXRpb24oKSk7Ci0g
ICAgICAgIGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRnZXRHZW9tZXRyeShjb250ZW50Qm94LCBjb250
ZW50Qm94LnNpemUoKSk7CisgICAgICAgIGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRnZXRHZW9tZXRy
eShjb250ZW50Qm94KTsKICAgICB9IGVsc2UKLSAgICAgICAgYm91bmRzQ2hhbmdlZCA9IHNldFdp
ZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCwgY29udGVudEJveC5zaXplKCkpOworICAg
ICAgICBib3VuZHNDaGFuZ2VkID0gc2V0V2lkZ2V0R2VvbWV0cnkoYWJzb2x1dGVDb250ZW50Qm94
KTsKICAgICAKICAgICAvLyBpZiB0aGUgZnJhbWUgYm91bmRzIGdvdCBjaGFuZ2VkLCBvciBpZiB2
aWV3IG5lZWRzIGxheW91dCAocG9zc2libHkgaW5kaWNhdGluZwogICAgIC8vIGNvbnRlbnQgc2l6
ZSBpcyB3cm9uZykgd2UgaGF2ZSB0byBkbyBhIGxheW91dCB0byBzZXQgdGhlIHJpZ2h0IHdpZGdl
dCBzaXplCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCShyZXZp
c2lvbiA5NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAko
d29ya2luZyBjb3B5KQpAQCAtNjksNyArNjksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgYm9v
bCBub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYsIEhpdFRlc3RSZXN1bHQmLCBjb25z
dCBMYXlvdXRQb2ludCYgcG9pbnRJbkNvbnRhaW5lciwgY29uc3QgTGF5b3V0UG9pbnQmIGFjY3Vt
dWxhdGVkT2Zmc2V0LCBIaXRUZXN0QWN0aW9uKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3Zlcmxh
cFRlc3RSZXN1bHQoYm9vbCk7CiAKLSAgICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IElu
dFJlY3QmLCBjb25zdCBJbnRTaXplJik7CisgICAgYm9vbCBzZXRXaWRnZXRHZW9tZXRyeShjb25z
dCBJbnRSZWN0Jik7CiAKICAgICBSZWZQdHI8V2lkZ2V0PiBtX3dpZGdldDsKICAgICBGcmFtZVZp
ZXcqIG1fZnJhbWVWaWV3OwpJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gOTU1ODcpCisr
KyBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwx
OCBAQAorMjAxMS0wOS0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CisgICAgICAgIEdldCByaWQgb2YgV2lkZ2V0OjpzZXRCb3VuZHNTaXplCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02ODQ5MQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgYmFzaWNhbGx5IHJldmVydHMg
aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzkxNjcgYW5kIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0Lzc1ODk3CisgICAgICAgIHdoaWNoIHdlcmUgYWRkZWQgdG8gbWFr
ZSB6b29tIGdlc3R1cmVzIHdvcmsgd2l0aCBXZWJLaXQxLCBidXQgc2luY2Ugd2UgZG9uJ3Qgc3Vw
cG9ydCB6b29tIGdlc3R1cmVzIGluIFdlYktpdDEKKyAgICAgICAgYW55bW9yZSwgaXQncyBiZXR0
ZXIgZm9yIGNvZGUgY2xlYW5saW5lc3MgdG8gZ2V0IHJpZCBvZiBXaWRnZXQ6OnNldEJvdW5kc1Np
emUgYW5kIHRoZSBhc3NvY2lhdGVkIGNvZGUuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkhvc3RlZE5ldHNj
YXBlUGx1Z2luVmlldyB1cGRhdGVBbmRTZXRXaW5kb3ddKToKKyAgICAgICAgKiBXZWJWaWV3L1dl
YkZyYW1lVmlldy5tbToKKwogMjAxMS0wOS0yMCAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FA
YXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSBTY3JvbGxWaWV3OjpwbGF0Zm9ybUNvbnRlbnRz
U2l6ZQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdp
bnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQkocmV2aXNpb24gOTU1Njkp
CisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJIb3N0ZWROZXRzY2FwZVBs
dWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSwyMyArMjE1LDYgQEAgLSAodm9pZCl1
cGRhdGVBbmRTZXRXaW5kb3cKICAgICBfcHJldmlvdXNTaXplID0gYm91bmRzSW5XaW5kb3cuc2l6
ZTsKICAgICAKICAgICBfcHJveHktPnJlc2l6ZShib3VuZHNJbldpbmRvdywgdmlzaWJsZVJlY3RJ
bldpbmRvdyk7Ci0KLSAgICBDR1JlY3QgYm91bmRzID0gTlNSZWN0VG9DR1JlY3QoW3NlbGYgYm91
bmRzXSk7Ci0gICAgQ0dSZWN0IGZyYW1lID0gTlNSZWN0VG9DR1JlY3QoW3NlbGYgZnJhbWVdKTsK
LSAgICAKLSAgICAvLyBXZSdyZSBub3Qgc2NhbGVkLCBvciBpbiBhIHN1YmZyYW1lCi0gICAgQ0FU
cmFuc2Zvcm0zRCBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJZGVudGl0eTsKLSAgICBp
ZiAoQ0dTaXplRXF1YWxUb1NpemUoYm91bmRzLnNpemUsIGZyYW1lLnNpemUpKSB7Ci0gICAgICAg
IC8vIFdlJ3JlIGluIGEgc3ViZnJhbWUuIEJhY2tpbmcgc3RvcmUgaXMgYm91bmRzSW5XaW5kb3cu
c2l6ZS4KLSAgICAgICAgaWYgKGJvdW5kc0luV2luZG93LnNpemUud2lkdGggJiYgYm91bmRzSW5X
aW5kb3cuc2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RNYWtlU2NhbGUoZnJhbWUuc2l6ZS53aWR0aCAvIGJvdW5kc0luV2luZG93LnNpemUud2lk
dGgsIGZyYW1lLnNpemUuaGVpZ2h0IC8gYm91bmRzSW5XaW5kb3cuc2l6ZS5oZWlnaHQsIDEpOwot
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFdlJ3JlIGluIHRoZSBtYWluIGZyYW1lIHdpdGggc2Nh
bGluZy4gTmVlZCB0byBtaW1pYyB0aGUgZnJhbWUvYm91bmRzIHNjYWxpbmcgb24gV2lkZ2V0cy4K
LSAgICAgICAgaWYgKGZyYW1lLnNpemUud2lkdGggJiYgZnJhbWUuc2l6ZS5oZWlnaHQpCi0gICAg
ICAgICAgICBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoYm91bmRzLnNp
emUud2lkdGggLyBmcmFtZS5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5oZWlnaHQgLyBmcmFtZS5z
aXplLmhlaWdodCwgMSk7Ci0gICAgfQotCi0gICAgX3BsdWdpbkxheWVyLmdldCgpLnN1YmxheWVy
VHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CiB9CiAKIC0gKHZvaWQpd2luZG93Rm9jdXNDaGFu
Z2VkOihCT09MKWhhc0ZvY3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lVmlldy5tbQkocmV2aXNpb24gOTU1NzApCisrKyBTb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3
L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEwLDEyICs1MTAsNiBAQCAtICh2
b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUKICAgICBbc3VwZXIgc2V0RnJhbWVTaXplOnNp
emVdOwogfQogCi0tICh2b2lkKXNldEJvdW5kc1NpemU6KE5TU2l6ZSlzaXplCi17Ci0gICAgW3N1
cGVyIHNldEJvdW5kc1NpemU6c2l6ZV07Ci0gICAgW1tzZWxmIF9zY3JvbGxWaWV3XSBzZXRGcmFt
ZVNpemU6c2l6ZV07Ci19Ci0KIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dpbmRvdwogewogICAgIC8v
IFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2FkU3RhcnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108090</attachid>
            <date>2011-09-20 17:52:08 -0700</date>
            <delta_ts>2011-09-21 10:33:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68491-20110920175206.patch</filename>
            <type>text/plain</type>
            <size>22064</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NTg3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTEtMDktMjAgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdpZGdl
dDo6c2V0Qm91bmRzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGJhc2ljYWxseSByZXZlcnRzIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0Lzc5MTY3IGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NTg5Nwor
ICAgICAgICB3aGljaCB3ZXJlIGFkZGVkIHRvIG1ha2Ugem9vbSBnZXN0dXJlcyB3b3JrIHdpdGgg
V2ViS2l0MSwgYnV0IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgem9vbSBnZXN0dXJlcyBpbiBXZWJL
aXQxCisgICAgICAgIGFueW1vcmUsIGl0J3MgYmV0dGVyIGZvciBjb2RlIGNsZWFubGluZXNzIHRv
IGdldCByaWQgb2YgV2lkZ2V0OjpzZXRCb3VuZHNTaXplIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2Rl
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vV2lkZ2V0Lmg6CisgICAgICAgIChXZWJDb3JlOjpXaWRnZXQ6OnJlc2l6ZSk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbToKKyAgICAgICAgKFdlYkNvcmU6
OldpZGdldDo6cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJXaWRnZXQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeSk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFdpZGdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJXaWRnZXQ6OnVwZGF0ZVdpZGdldFBvc2l0aW9uKToKKyAgICAgICAgKiByZW5kZXJp
bmcvUmVuZGVyV2lkZ2V0Lmg6CisKIDIwMTEtMDktMTkgIEplciBOb2JsZSAgPGplci5ub2JsZUBh
cHBsZS5jb20+CiAKICAgICAgICAgRml4IGNsYW5nIGNvbXBpbGUgZXJyb3JzIGluIFdlYiBBdWRp
bwpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5leHAuaW4JKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4JKHdvcmtpbmcgY29weSkKQEAgLTgyNSw3ICs4MjUsNiBAQCBf
X1pON1dlYkNvcmU2UmVnaW9uOXRyYW5zbGF0ZUVSS05TXzdJbnRTCiBfX1pON1dlYkNvcmU2UmVn
aW9uQzFFUktOU183SW50UmVjdEUKIF9fWk43V2ViQ29yZTZSZWdpb25DMUV2CiBfX1pON1dlYkNv
cmU2V2lkZ2V0MTJzZXRGcmFtZVJlY3RFUktOU183SW50UmVjdEUKLV9fWk43V2ViQ29yZTZXaWRn
ZXQxM3NldEJvdW5kc1NpemVFUktOU183SW50U2l6ZUUKIF9fWk43V2ViQ29yZTZXaWRnZXQxNnJl
bW92ZUZyb21QYXJlbnRFdgogX19aTjdXZWJDb3JlNldpZGdldDE3ZnJhbWVSZWN0c0NoYW5nZWRF
dgogX19aTjdXZWJDb3JlNldpZGdldDE3c2V0UGxhdGZvcm1XaWRnZXRFUDZOU1ZpZXcKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2aXNpb24gOTU1NjkpCisrKyBT
b3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MDYwLDExICsyMDYwLDggQEAgdm9pZCBGcmFtZUxvYWRlcjo6b3BlbihDYWNoZWRGcmFtZUJhc2Um
IAogICAgIHZpZXctPnNldFdhc1Njcm9sbGVkQnlVc2VyKGZhbHNlKTsKIAogICAgIC8vIFVzZSB0
aGUgY3VycmVudCBTY3JvbGxWaWV3J3MgZnJhbWUgcmVjdC4KLSAgICBpZiAobV9mcmFtZS0+dmll
dygpKSB7Ci0gICAgICAgIEludFJlY3QgcmVjdCA9IG1fZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0
KCk7Ci0gICAgICAgIHZpZXctPnNldEZyYW1lUmVjdChyZWN0KTsKLSAgICAgICAgdmlldy0+c2V0
Qm91bmRzU2l6ZShyZWN0LnNpemUoKSk7Ci0gICAgfQorICAgIGlmIChtX2ZyYW1lLT52aWV3KCkp
CisgICAgICAgIHZpZXctPnNldEZyYW1lUmVjdChtX2ZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgp
KTsKICAgICBtX2ZyYW1lLT5zZXRWaWV3KHZpZXcpOwogICAgIAogICAgIG1fZnJhbWUtPnNldERv
Y3VtZW50KGRvY3VtZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHJldmlz
aW9uIDk1NTY5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xNjIsNyArMTYyLDYgQEAgUGFzc1JlZlB0cjxGcmFtZVZpZXc+IEZyYW1lVmll
dzo6Y3JlYXRlKAogewogICAgIFJlZlB0cjxGcmFtZVZpZXc+IHZpZXcgPSBhZG9wdFJlZihuZXcg
RnJhbWVWaWV3KGZyYW1lKSk7CiAgICAgdmlldy0+V2lkZ2V0OjpzZXRGcmFtZVJlY3QoTGF5b3V0
UmVjdCh2aWV3LT5sb2NhdGlvbigpLCBpbml0aWFsU2l6ZSkpOwotICAgIHZpZXctPnNldEluaXRp
YWxCb3VuZHNTaXplKGluaXRpYWxTaXplKTsKICAgICB2aWV3LT5zaG93KCk7CiAgICAgcmV0dXJu
IHZpZXcucmVsZWFzZSgpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5jcHAJKHJldmlzaW9uIDk1NTcwKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xs
Vmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw4ICsyMzcsOCBAQCBJbnRSZWN0IFNjcm9s
bFZpZXc6OnZpc2libGVDb250ZW50UmVjdChiCiAgICAgICAgICYmICFpbmNsdWRlU2Nyb2xsYmFy
cyA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+aGVpZ2h0KCkgOiAwOwogCiAgICAgcmV0dXJuIElu
dFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwgbV9zY3JvbGxPZmZzZXQuaGVp
Z2h0KCkpLAotICAgICAgICAgICAgICAgICAgIEludFNpemUobWF4KDAsIG1fYm91bmRzU2l6ZS53
aWR0aCgpIC0gdmVydGljYWxTY3JvbGxiYXJXaWR0aCksIAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWF4KDAsIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJI
ZWlnaHQpKSk7CisgICAgICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgd2lkdGgoKSAtIHZl
cnRpY2FsU2Nyb2xsYmFyV2lkdGgpLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heCgw
LCBoZWlnaHQoKSAtIGhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQpKSk7CiB9CiAjZW5kaWYKIApA
QCAtNDcwLDcgKzQ3MCw3IEBAIHZvaWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25z
dCAKICAgICAgICAgYm9vbCBzZW5kQ29udGVudFJlc2l6ZWROb3RpZmljYXRpb24gPSBmYWxzZTsK
ICAgICAgICAgCiAgICAgICAgIEludFNpemUgZG9jU2l6ZSA9IGNvbnRlbnRzU2l6ZSgpOwotICAg
ICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9IG1fYm91bmRzU2l6ZTsKKyAgICAgICAgSW50U2l6ZSBm
cmFtZVNpemUgPSBmcmFtZVJlY3QoKS5zaXplKCk7CiAKICAgICAgICAgaWYgKGhTY3JvbGwgPT0g
U2Nyb2xsYmFyQXV0bykgewogICAgICAgICAgICAgbmV3SGFzSG9yaXpvbnRhbFNjcm9sbGJhciA9
IGRvY1NpemUud2lkdGgoKSA+IHZpc2libGVXaWR0aCgpOwpAQCAtNTMyLDggKzUzMiw4IEBAIHZv
aWQgU2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyhjb25zdCAKICAgICAgICAgaW50IHBhZ2VT
dGVwID0gbWF4KG1heDxpbnQ+KGNsaWVudFdpZHRoICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRv
U3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50V2lkdGggLSBTY3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3
ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBJbnRSZWN0IG9sZFJlY3QobV9ob3Jpem9udGFsU2Ny
b2xsYmFyLT5mcmFtZVJlY3QoKSk7CiAgICAgICAgIEludFJlY3QgaEJhclJlY3QgPSBJbnRSZWN0
KDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS5oZWln
aHQoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS53aWR0aCgpIC0gKG1fdmVydGljYWxTY3Jv
bGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpIDogMCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5o
ZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGgoKSAtICht
X3ZlcnRpY2FsU2Nyb2xsYmFyID8gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSA6IDApLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXIt
PmhlaWdodCgpKTsKICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3Qo
aEJhclJlY3QpOwogICAgICAgICBpZiAoIW1fc2Nyb2xsYmFyc1N1cHByZXNzZWQgJiYgb2xkUmVj
dCAhPSBtX2hvcml6b250YWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKQpAQCAtNTUyLDEwICs1NTIs
MTAgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5zZXRFbmFibGVkKGNvbnRlbnRzSGVpZ2h0KCkgPiBjbGllbnRI
ZWlnaHQpOwogICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgobWF4PGludD4oY2xpZW50SGVpZ2h0
ICogU2Nyb2xsYmFyOjptaW5GcmFjdGlvblRvU3RlcFdoZW5QYWdpbmcoKSwgY2xpZW50SGVpZ2h0
IC0gU2Nyb2xsYmFyOjptYXhPdmVybGFwQmV0d2VlblBhZ2VzKCkpLCAxKTsKICAgICAgICAgSW50
UmVjdCBvbGRSZWN0KG1fdmVydGljYWxTY3JvbGxiYXItPmZyYW1lUmVjdCgpKTsKLSAgICAgICAg
SW50UmVjdCB2QmFyUmVjdCA9IEludFJlY3QobV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT53aWR0aCgpLCAKKyAgICAgICAgSW50UmVjdCB2QmFyUmVjdCA9IEludFJl
Y3Qod2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksIAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtX2JvdW5kc1NpemUuaGVpZ2h0KCkgLSAobV9ob3Jpem9udGFsU2Nyb2xs
YmFyID8gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSA6IDApKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSAobV9ob3Jpem9udGFsU2Nyb2xsYmFy
ID8gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSA6IDApKTsKICAgICAgICAgbV92ZXJ0
aWNhbFNjcm9sbGJhci0+c2V0RnJhbWVSZWN0KHZCYXJSZWN0KTsKICAgICAgICAgaWYgKCFtX3Nj
cm9sbGJhcnNTdXBwcmVzc2VkICYmIG9sZFJlY3QgIT0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJh
bWVSZWN0KCkpCiAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5pbnZhbGlkYXRlKCk7
CkBAIC04MjcsMzAgKzgyNyw2IEBAIHZvaWQgU2Nyb2xsVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0
IEludFIKICAgICBmcmFtZVJlY3RzQ2hhbmdlZCgpOwogfQogCi12b2lkIFNjcm9sbFZpZXc6OnNl
dEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKLXsKLSAgICBpZiAobmV3U2l6ZSA9
PSBtX2JvdW5kc1NpemUpCi0gICAgICAgIHJldHVybjsKLQotICAgIFdpZGdldDo6c2V0Qm91bmRz
U2l6ZShuZXdTaXplKTsKLSAgICBtX2JvdW5kc1NpemUgPSBuZXdTaXplOwotCi0gICAgaWYgKHBs
YXRmb3JtV2lkZ2V0KCkpCi0gICAgICAgIHJldHVybjsKLQotICAgIHVwZGF0ZVNjcm9sbGJhcnMo
bV9zY3JvbGxPZmZzZXQpOwotICAgIGlmICghbV91c2VGaXhlZExheW91dCkKLSAgICAgICAgY29u
dGVudHNSZXNpemVkKCk7Ci0KLSAgICBwb3NpdGlvblNjcm9sbGJhckxheWVycygpOwotfQotCi12
b2lkIFNjcm9sbFZpZXc6OnNldEluaXRpYWxCb3VuZHNTaXplKGNvbnN0IEludFNpemUmIG5ld1Np
emUpCi17Ci0gICAgQVNTRVJUKG1fYm91bmRzU2l6ZS5pc1plcm8oKSk7Ci0gICAgbV9ib3VuZHNT
aXplID0gbmV3U2l6ZTsKLX0KLQogdm9pZCBTY3JvbGxWaWV3OjpmcmFtZVJlY3RzQ2hhbmdlZCgp
CiB7CiAgICAgaWYgKHBsYXRmb3JtV2lkZ2V0KCkpCkBAIC05MjEsMTggKzg5NywxOCBAQCBJbnRS
ZWN0IFNjcm9sbFZpZXc6OnNjcm9sbENvcm5lclJlY3QoKSBjCiAgICAgaWYgKGhhc092ZXJsYXlT
Y3JvbGxiYXJzKCkpCiAgICAgICAgIHJldHVybiBjb3JuZXJSZWN0OwogCi0gICAgaWYgKG1faG9y
aXpvbnRhbFNjcm9sbGJhciAmJiBtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1faG9yaXpvbnRhbFNj
cm9sbGJhci0+d2lkdGgoKSA+IDApIHsKKyAgICBpZiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYm
IHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKSB7CiAgICAgICAg
IGNvcm5lclJlY3QudW5pdGUoSW50UmVjdChtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2JvdW5kc1NpemUuaGVpZ2h0KCkg
LSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXIt
PndpZHRoKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1f
aG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQo
KSkpOwogICAgIH0KIAotICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIG1fYm91bmRzU2l6
ZS5oZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpID4gMCkgewotICAgICAg
ICBjb3JuZXJSZWN0LnVuaXRlKEludFJlY3QobV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX3ZlcnRp
Y2FsU2Nyb2xsYmFyLT53aWR0aCgpLAorICAgIGlmIChtX3ZlcnRpY2FsU2Nyb2xsYmFyICYmIGhl
aWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7CisgICAgICAgIGNv
cm5lclJlY3QudW5pdGUoSW50UmVjdCh3aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lk
dGgoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxi
YXItPmhlaWdodCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNh
bFNjcm9sbGJhci0+d2lkdGgoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1f
Ym91bmRzU2l6ZS5oZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhlaWdodCgpKSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3Jv
bGxiYXItPmhlaWdodCgpKSk7CiAgICAgfQogICAgIAogICAgIHJldHVybiBjb3JuZXJSZWN0OwpA
QCAtMTEzMiw4ICsxMTA4LDggQEAgYm9vbCBTY3JvbGxWaWV3Ojppc1BvaW50SW5TY3JvbGxiYXJD
b3JuZQogCiBib29sIFNjcm9sbFZpZXc6OnNjcm9sbGJhckNvcm5lclByZXNlbnQoKSBjb25zdAog
ewotICAgIHJldHVybiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYmIG1fYm91bmRzU2l6ZS53aWR0
aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpID4gMCkgfHwKLSAgICAgICAgICAg
KG1fdmVydGljYWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLmhlaWdodCgpIC0gbV92ZXJ0aWNh
bFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKTsKKyAgICByZXR1cm4gKG1faG9yaXpvbnRhbFNjcm9s
bGJhciAmJiB3aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53aWR0aCgpID4gMCkKKyAg
ICAgICAgfHwgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgaGVpZ2h0KCkgLSBtX3ZlcnRpY2FsU2Ny
b2xsYmFyLT5oZWlnaHQoKSA+IDApOwogfQogCiBJbnRSZWN0IFNjcm9sbFZpZXc6OmNvbnZlcnRG
cm9tU2Nyb2xsYmFyVG9Db250YWluaW5nVmlldyhjb25zdCBTY3JvbGxiYXIqIHNjcm9sbGJhciwg
Y29uc3QgSW50UmVjdCYgbG9jYWxSZWN0KSBjb25zdApJbmRleDogU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vU2Nyb2xsVmlldy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1Njcm9sbFZpZXcuaAkocmV2aXNpb24gOTU1NzApCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw3ICsyMjcsNiBAQCBwdWJsaWM6
CiAgICAgCiAgICAgLy8gV2lkZ2V0IG92ZXJyaWRlIHRvIHVwZGF0ZSBvdXIgc2Nyb2xsYmFycyBh
bmQgbm90aWZ5IG91ciBjb250ZW50cyBvZiB0aGUgcmVzaXplLgogICAgIHZpcnR1YWwgdm9pZCBz
ZXRGcmFtZVJlY3QoY29uc3QgSW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHNT
aXplKGNvbnN0IEludFNpemUmKTsKIAogICAgIC8vIEZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIHRv
IGhpdCB0ZXN0IHNjcm9sbGJhcnMgZnJvbSB3aXRoaW4gdGhlIGVuZ2luZSdzIGV2ZW50IGhhbmRs
ZXJzIChsaWtlIFdpbjMyKS4KICAgICBTY3JvbGxiYXIqIHNjcm9sbGJhckF0UG9pbnQoY29uc3Qg
SW50UG9pbnQmIHdpbmRvd1BvaW50KTsKQEAgLTMwMiw5ICszMDEsNiBAQCBwcm90ZWN0ZWQ6CiAK
ICAgICBJbnRSZWN0IGZpeGVkVmlzaWJsZUNvbnRlbnRSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9m
aXhlZFZpc2libGVDb250ZW50UmVjdDsgfQogCi0gICAgSW50U2l6ZSBib3VuZHNTaXplKCkgY29u
c3QgeyByZXR1cm4gbV9ib3VuZHNTaXplOyB9Ci0gICAgdm9pZCBzZXRJbml0aWFsQm91bmRzU2l6
ZShjb25zdCBJbnRTaXplJik7Ci0KICAgICAvLyBUaGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgdG8g
Y3JlYXRlL2Rlc3Ryb3kgc2Nyb2xsYmFycy4KICAgICB2b2lkIHNldEhhc0hvcml6b250YWxTY3Jv
bGxiYXIoYm9vbCk7CiAgICAgdm9pZCBzZXRIYXNWZXJ0aWNhbFNjcm9sbGJhcihib29sKTsKQEAg
LTM2Myw4ICszNTksNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBtX2NvbnRhaW5zU2Nyb2xsYWJs
ZUFyZWFXaXRoT3ZlcmxheVNjcm9sbGJhcnM7CiAKLSAgICBJbnRTaXplIG1fYm91bmRzU2l6ZTsK
LQogICAgIHZvaWQgaW5pdCgpOwogICAgIHZvaWQgZGVzdHJveSgpOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9XaWRnZXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL1dpZGdldC5jcHAJKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTA2LDEwICsxMDYsNiBAQCBJ
bnRQb2ludCBXaWRnZXQ6OmNvbnZlcnRUb0NvbnRhaW5pbmdXaW5kCiB9CiAKICNpZiAhUExBVEZP
Uk0oTUFDKQotdm9pZCBXaWRnZXQ6OnNldEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYpCi17Ci19
Ci0KIEludFJlY3QgV2lkZ2V0Ojpjb252ZXJ0RnJvbVJvb3RUb0NvbnRhaW5pbmdXaW5kb3coY29u
c3QgV2lkZ2V0KiwgY29uc3QgSW50UmVjdCYgcmVjdCkKIHsKICAgICByZXR1cm4gcmVjdDsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCShyZXZpc2lvbiA5NTU2OSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1dpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDksMTIgKzE0OSwx
MSBAQCBwdWJsaWM6CiAgICAgSW50UG9pbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBmcmFt
ZVJlY3QoKS5sb2NhdGlvbigpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgc2V0RnJhbWVSZWN0KGNv
bnN0IEludFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0Qm91bmRzU2l6ZShjb25zdCBJbnRT
aXplJik7CiAgICAgdmlydHVhbCBJbnRSZWN0IGZyYW1lUmVjdCgpIGNvbnN0OwogICAgIEludFJl
Y3QgYm91bmRzUmVjdCgpIGNvbnN0IHsgcmV0dXJuIEludFJlY3QoMCwgMCwgd2lkdGgoKSwgIGhl
aWdodCgpKTsgfQogCi0gICAgdm9pZCByZXNpemUoaW50IHcsIGludCBoKSB7IHNldEZyYW1lUmVj
dChJbnRSZWN0KHgoKSwgeSgpLCB3LCBoKSk7IHNldEJvdW5kc1NpemUoSW50U2l6ZSh3LCBoKSk7
IH0KLSAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJiBzKSB7IHNldEZyYW1lUmVjdChJbnRS
ZWN0KGxvY2F0aW9uKCksIHMpKTsgc2V0Qm91bmRzU2l6ZShzKTsgfQorICAgIHZvaWQgcmVzaXpl
KGludCB3LCBpbnQgaCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdCh4KCksIHkoKSwgdywgaCkpOyB9
CisgICAgdm9pZCByZXNpemUoY29uc3QgSW50U2l6ZSYgcykgeyBzZXRGcmFtZVJlY3QoSW50UmVj
dChsb2NhdGlvbigpLCBzKSk7IH0KICAgICB2b2lkIG1vdmUoaW50IHgsIGludCB5KSB7IHNldEZy
YW1lUmVjdChJbnRSZWN0KHgsIHksIHdpZHRoKCksIGhlaWdodCgpKSk7IH0KICAgICB2b2lkIG1v
dmUoY29uc3QgSW50UG9pbnQmIHApIHsgc2V0RnJhbWVSZWN0KEludFJlY3QocCwgc2l6ZSgpKSk7
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZp
c2lvbiA5NTU2OSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0J
KHdvcmtpbmcgY29weSkKQEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkNocm9tZS5oIgogI2lt
cG9ydCAiQ3Vyc29yLmgiCiAjaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRmxvYXRDb252
ZXJzaW9uLmgiCiAjaW1wb3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAi
R3JhcGhpY3NDb250ZXh0LmgiCkBAIC0xODksMjUgKzE4OCw2IEBAIHZvaWQgV2lkZ2V0OjpzZXRG
cmFtZVJlY3QoY29uc3QgSW50UmVjdCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
fQogCi12b2lkIFdpZGdldDo6c2V0Qm91bmRzU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewot
ICAgIE5TU2l6ZSBuc1NpemUgPSBzaXplOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwotICAgIE5TVmlldyAqb3V0ZXJWaWV3ID0gZ2V0T3V0ZXJWaWV3KCk7Ci0gICAgaWYgKCFv
dXRlclZpZXcpCi0gICAgICAgIHJldHVybjsKLQotICAgIC8vIFRha2UgYSByZWZlcmVuY2UgdG8g
dGhpcyBXaWRnZXQsIGJlY2F1c2Ugc2VuZGluZyBtZXNzYWdlcyB0byBvdXRlclZpZXcgY2FuIGlu
dm9rZSBhcmJpdHJhcnkKLSAgICAvLyBjb2RlLCB3aGljaCBjYW4gZGVyZWYgaXQuCi0gICAgUmVm
UHRyPFdpZGdldD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAoIU5TRXF1YWxTaXplcyhu
c1NpemUsIFtvdXRlclZpZXcgYm91bmRzXS5zaXplKSkgewotICAgICAgICBbb3V0ZXJWaWV3IHNl
dEJvdW5kc1NpemU6bnNTaXplXTsKLSAgICAgICAgW291dGVyVmlldyBzZXROZWVkc0Rpc3BsYXk6
Tk9dOwotICAgIH0KLSAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiBOU1ZpZXcg
KldpZGdldDo6Z2V0T3V0ZXJWaWV3KCkgY29uc3QKIHsKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0
Zm9ybVdpZGdldCgpOwpAQCAtMjMyLDMwICsyMTIsMTEgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdy
YXBoaWNzQ29udGV4dCogcCwgYwogICAgIC8vIGNvZGUsIHdoaWNoIGNhbiBkZXJlZiBpdC4KICAg
ICBSZWZQdHI8V2lkZ2V0PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgSW50UG9pbnQgdHJh
bnNmb3JtT3JpZ2luID0gZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKLSAgICBBZmZpbmVUcmFuc2Zv
cm0gd2lkZ2V0VG9WaWV3VHJhbmZvcm0gPSBtYWtlTWFwQmV0d2VlblJlY3RzKEludFJlY3QoSW50
UG9pbnQoKSwgZnJhbWVSZWN0KCkuc2l6ZSgpKSwgW3ZpZXcgYm91bmRzXSk7Ci0KICAgICBOU0dy
YXBoaWNzQ29udGV4dCAqY3VycmVudENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVu
dENvbnRleHRdOwogICAgIGlmIChjdXJyZW50Q29udGV4dCA9PSBbW3ZpZXcgd2luZG93XSBncmFw
aGljc0NvbnRleHRdIHx8ICFbY3VycmVudENvbnRleHQgaXNEcmF3aW5nVG9TY3JlZW5dKSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGNvbW1vbiBjYXNlIG9mIGRyYXdpbmcgaW50byBhIHdpbmRv
dyBvciBwcmludGluZy4KICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAg
ICAgICAKLSAgICAgICAgQ0dDb250ZXh0UmVmIGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtjdXJy
ZW50Q29udGV4dCBncmFwaGljc1BvcnRdOwotCi0gICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUo
Y29udGV4dCk7Ci0gICAgICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCB0cmFuc2Zv
cm1PcmlnaW4ueCgpLCB0cmFuc2Zvcm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2Nh
bGVDVE0oY29udGV4dCwgbmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9y
bS54U2NhbGUoKSksIG5hcnJvd1ByZWNpc2lvblRvRmxvYXQod2lkZ2V0VG9WaWV3VHJhbmZvcm0u
eVNjYWxlKCkpKTsKLSAgICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC10cmFu
c2Zvcm1PcmlnaW4ueCgpLCAtdHJhbnNmb3JtT3JpZ2luLnkoKSk7Ci0KLSAgICAgICAgSW50UmVj
dCBkaXJ0eVJlY3QgPSByOwotICAgICAgICBkaXJ0eVJlY3QubW92ZUJ5KC10cmFuc2Zvcm1Pcmln
aW4pOwotICAgICAgICBpZiAoIVt2aWV3IGlzRmxpcHBlZF0pCi0gICAgICAgICAgICBkaXJ0eVJl
Y3Quc2V0WShbdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0IC0gZGlydHlSZWN0Lm1heFkoKSk7Ci0K
LSAgICAgICAgW3ZpZXcgZGlzcGxheVJlY3RJZ25vcmluZ09wYWNpdHk6ZGlydHlSZWN0XTsKLQot
ICAgICAgICBDR0NvbnRleHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotCisgICAgICAgIFt2aWV3
IGRpc3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZpZXc6
W3ZpZXcgc3VwZXJ2aWV3XV1dOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
ICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugb2YgZHJhd2luZyBpbnRv
IGEgYml0bWFwIGNvbnRleHQgb3RoZXIgdGhhbiBhIHdpbmRvdyBiYWNraW5nIHN0b3JlLiBJdCBn
ZXRzIGhpdCBiZW5lYXRoCkBAIC0yODAsMTAgKzI0MSw2IEBAIHZvaWQgV2lkZ2V0OjpwYWludChH
cmFwaGljc0NvbnRleHQqIHAsIGMKICAgICAgICAgQVNTRVJUKGNnQ29udGV4dCA9PSBbY3VycmVu
dENvbnRleHQgZ3JhcGhpY3NQb3J0XSk7CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dD
b250ZXh0KTsKIAotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCB0cmFu
c2Zvcm1PcmlnaW4ueCgpLCB0cmFuc2Zvcm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0
U2NhbGVDVE0oY2dDb250ZXh0LCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdpZGdldFRvVmlld1Ry
YW5mb3JtLnhTY2FsZSgpKSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFu
Zm9ybS55U2NhbGUoKSkpOwotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0
LCAtdHJhbnNmb3JtT3JpZ2luLngoKSwgLXRyYW5zZm9ybU9yaWdpbi55KCkpOwotCiAgICAgICAg
IE5TUmVjdCB2aWV3RnJhbWUgPSBbdmlldyBmcmFtZV07CiAgICAgICAgIE5TUmVjdCB2aWV3Qm91
bmRzID0gW3ZpZXcgYm91bmRzXTsKICAgICAgICAgLy8gU2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBh
bmQgKGZsaXBwZWQpIG9yaWVudGF0aW9uIG9mIHRoZSBncmFwaGljcyBjb250ZXh0LiBJbiBub3Jt
YWwgZHJhd2luZywgQXBwS2l0IGRvZXMgaXQgYXMgaXQgZGVzY2VuZHMgZG93bgpAQCAtMjkxLDE1
ICsyNDgsMTAgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgYwogICAg
ICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCB2aWV3RnJhbWUub3JpZ2luLngg
LSB2aWV3Qm91bmRzLm9yaWdpbi54LCB2aWV3RnJhbWUub3JpZ2luLnkgKyB2aWV3RnJhbWUuc2l6
ZS5oZWlnaHQgKyB2aWV3Qm91bmRzLm9yaWdpbi55KTsKICAgICAgICAgQ0dDb250ZXh0U2NhbGVD
VE0oY2dDb250ZXh0LCAxLCAtMSk7CiAKLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByOwot
ICAgICAgICBkaXJ0eVJlY3QubW92ZUJ5KC10cmFuc2Zvcm1PcmlnaW4pOwotICAgICAgICBpZiAo
IVt2aWV3IGlzRmxpcHBlZF0pCi0gICAgICAgICAgICBkaXJ0eVJlY3Quc2V0WShbdmlldyBib3Vu
ZHNdLnNpemUuaGVpZ2h0IC0gZGlydHlSZWN0Lm1heFkoKSk7Ci0KICAgICAgICAgQkVHSU5fQkxP
Q0tfT0JKQ19FWENFUFRJT05TOwogICAgICAgICB7CiAgICAgICAgICAgICBOU0dyYXBoaWNzQ29u
dGV4dCAqbnNDb250ZXh0ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhH
cmFwaGljc1BvcnQ6Y2dDb250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICAgICAgICAgIFt2aWV3IGRp
c3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5OmRpcnR5UmVjdCBpbkNvbnRleHQ6bnNDb250ZXh0XTsK
KyAgICAgICAgICAgIFt2aWV3IGRpc3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZl
cnRSZWN0OnIgZnJvbVZpZXc6W3ZpZXcgc3VwZXJ2aWV3XV0gaW5Db250ZXh0Om5zQ29udGV4dF07
CiAgICAgICAgIH0KICAgICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDk1NTY5
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTE0MCw3ICsxNDAsNyBAQCBSZW5kZXJXaWRnZXQ6On5SZW5kZXJXaWRnZXQoKQog
ICAgIGNsZWFyV2lkZ2V0KCk7CiB9CiAKLWJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9t
ZXRyeShjb25zdCBJbnRSZWN0JiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzU2l6ZSkKK2Jv
b2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBmcmFtZSkK
IHsKICAgICBpZiAoIW5vZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3LDggKzE1
Nyw2IEBAIGJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb24KICAgICBSZW5k
ZXJXaWRnZXRQcm90ZWN0b3IgcHJvdGVjdG9yKHRoaXMpOwogICAgIFJlZlB0cjxOb2RlPiBwcm90
ZWN0ZWROb2RlKG5vZGUoKSk7CiAgICAgbV93aWRnZXQtPnNldEZyYW1lUmVjdChmcmFtZSk7Ci0g
ICAgaWYgKG1fd2lkZ2V0KSAvLyBzZXRGcmFtZVJlY3QgY2FuIHJ1biBhcmJpdHJhcnkgc2NyaXB0
LCB3aGljaCBtaWdodCBjbGVhciBtX3dpZGdldC4KLSAgICAgICAgbV93aWRnZXQtPnNldEJvdW5k
c1NpemUoYm91bmRzU2l6ZSk7CiAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5H
KQogICAgIGlmIChoYXNMYXllcigpICYmIGxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQpAQCAtMTkw
LDkgKzE4OCw5IEBAIHZvaWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUGFzc1JlZlB0cjwKICAg
ICAgICAgICAgICAgICBJbnRSZWN0IGFic29sdXRlQ29udGVudEJveCA9IEludFJlY3QobG9jYWxU
b0Fic29sdXRlUXVhZChGbG9hdFF1YWQoY29udGVudEJveCkpLmJvdW5kaW5nQm94KCkpOwogICAg
ICAgICAgICAgICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICAgICAg
ICAgICAgICBjb250ZW50Qm94LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlv
bigpKTsKLSAgICAgICAgICAgICAgICAgICAgc2V0V2lkZ2V0R2VvbWV0cnkoY29udGVudEJveCwg
Y29udGVudEJveC5zaXplKCkpOworICAgICAgICAgICAgICAgICAgICBzZXRXaWRnZXRHZW9tZXRy
eShjb250ZW50Qm94KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAg
ICAgc2V0V2lkZ2V0R2VvbWV0cnkoYWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNpemUo
KSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVu
dEJveCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0
eSgpICE9IFZJU0lCTEUpCiAgICAgICAgICAgICAgICAgbV93aWRnZXQtPmhpZGUoKTsKQEAgLTMy
OCw5ICszMjYsOSBAQCB2b2lkIFJlbmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24oCiAg
ICAgYm9vbCBib3VuZHNDaGFuZ2VkOwogICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkg
ewogICAgICAgICBjb250ZW50Qm94LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2Nh
dGlvbigpKTsKLSAgICAgICAgYm91bmRzQ2hhbmdlZCA9IHNldFdpZGdldEdlb21ldHJ5KGNvbnRl
bnRCb3gsIGNvbnRlbnRCb3guc2l6ZSgpKTsKKyAgICAgICAgYm91bmRzQ2hhbmdlZCA9IHNldFdp
ZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gpOwogICAgIH0gZWxzZQotICAgICAgICBib3VuZHNDaGFu
Z2VkID0gc2V0V2lkZ2V0R2VvbWV0cnkoYWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNp
emUoKSk7CisgICAgICAgIGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRnZXRHZW9tZXRyeShhYnNvbHV0
ZUNvbnRlbnRCb3gpOwogICAgIAogICAgIC8vIGlmIHRoZSBmcmFtZSBib3VuZHMgZ290IGNoYW5n
ZWQsIG9yIGlmIHZpZXcgbmVlZHMgbGF5b3V0IChwb3NzaWJseSBpbmRpY2F0aW5nCiAgICAgLy8g
Y29udGVudCBzaXplIGlzIHdyb25nKSB3ZSBoYXZlIHRvIGRvIGEgbGF5b3V0IHRvIHNldCB0aGUg
cmlnaHQgd2lkZ2V0IHNpemUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJX
aWRnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lk
Z2V0LmgJKHJldmlzaW9uIDk1NTY5KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
cldpZGdldC5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCBib29sIG5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJl
c3VsdCYsIGNvbnN0IExheW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQ
b2ludCYgYWNjdW11bGF0ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRPdmVybGFwVGVzdFJlc3VsdChib29sKTsKIAotICAgIGJvb2wgc2V0V2lkZ2V0R2VvbWV0
cnkoY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBib29sIHNldFdpZGdldEdl
b21ldHJ5KGNvbnN0IEludFJlY3QmKTsKIAogICAgIFJlZlB0cjxXaWRnZXQ+IG1fd2lkZ2V0Owog
ICAgIEZyYW1lVmlldyogbV9mcmFtZVZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lv
biA5NTU4NykKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDExLTA5LTIwICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBh
cHBsZS5jb20+CisKKyAgICAgICAgR2V0IHJpZCBvZiBXaWRnZXQ6OnNldEJvdW5kc1NpemUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDkxCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBiYXNpY2Fs
bHkgcmV2ZXJ0cyBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83OTE2NyBhbmQgaHR0
cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNzU4OTcKKyAgICAgICAgd2hpY2ggd2VyZSBh
ZGRlZCB0byBtYWtlIHpvb20gZ2VzdHVyZXMgd29yayB3aXRoIFdlYktpdDEsIGJ1dCBzaW5jZSB3
ZSBkb24ndCBzdXBwb3J0IHpvb20gZ2VzdHVyZXMgaW4gV2ViS2l0MQorICAgICAgICBhbnltb3Jl
LCBpdCdzIGJldHRlciBmb3IgY29kZSBjbGVhbmxpbmVzcyB0byBnZXQgcmlkIG9mIFdpZGdldDo6
c2V0Qm91bmRzU2l6ZSBhbmQgdGhlIGFzc29jaWF0ZWQgY29kZS4KKworICAgICAgICAqIFBsdWdp
bnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2Vi
SG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3IHVwZGF0ZUFuZFNldFdpbmRvd10pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tOgorCiAyMDExLTA5LTIwICBBbmRlcnMgQ2FybHNzb24g
IDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFNjcm9sbFZpZXc6OnBsYXRm
b3JtQ29udGVudHNTaXplCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9X
ZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCShyZXZp
c2lvbiA5NTU2OSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3Rl
ZE5ldHNjYXBlUGx1Z2luVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjE1LDIzICsyMTUsNiBA
QCAtICh2b2lkKXVwZGF0ZUFuZFNldFdpbmRvdwogICAgIF9wcmV2aW91c1NpemUgPSBib3VuZHNJ
bldpbmRvdy5zaXplOwogICAgIAogICAgIF9wcm94eS0+cmVzaXplKGJvdW5kc0luV2luZG93LCB2
aXNpYmxlUmVjdEluV2luZG93KTsKLQotICAgIENHUmVjdCBib3VuZHMgPSBOU1JlY3RUb0NHUmVj
dChbc2VsZiBib3VuZHNdKTsKLSAgICBDR1JlY3QgZnJhbWUgPSBOU1JlY3RUb0NHUmVjdChbc2Vs
ZiBmcmFtZV0pOwotICAgIAotICAgIC8vIFdlJ3JlIG5vdCBzY2FsZWQsIG9yIGluIGEgc3ViZnJh
bWUKLSAgICBDQVRyYW5zZm9ybTNEIHNjYWxlVHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRElkZW50
aXR5OwotICAgIGlmIChDR1NpemVFcXVhbFRvU2l6ZShib3VuZHMuc2l6ZSwgZnJhbWUuc2l6ZSkp
IHsKLSAgICAgICAgLy8gV2UncmUgaW4gYSBzdWJmcmFtZS4gQmFja2luZyBzdG9yZSBpcyBib3Vu
ZHNJbldpbmRvdy5zaXplLgotICAgICAgICBpZiAoYm91bmRzSW5XaW5kb3cuc2l6ZS53aWR0aCAm
JiBib3VuZHNJbldpbmRvdy5zaXplLmhlaWdodCkKLSAgICAgICAgICAgIHNjYWxlVHJhbnNmb3Jt
ID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2FsZShmcmFtZS5zaXplLndpZHRoIC8gYm91bmRzSW5XaW5k
b3cuc2l6ZS53aWR0aCwgZnJhbWUuc2l6ZS5oZWlnaHQgLyBib3VuZHNJbldpbmRvdy5zaXplLmhl
aWdodCwgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gV2UncmUgaW4gdGhlIG1haW4gZnJh
bWUgd2l0aCBzY2FsaW5nLiBOZWVkIHRvIG1pbWljIHRoZSBmcmFtZS9ib3VuZHMgc2NhbGluZyBv
biBXaWRnZXRzLgotICAgICAgICBpZiAoZnJhbWUuc2l6ZS53aWR0aCAmJiBmcmFtZS5zaXplLmhl
aWdodCkKLSAgICAgICAgICAgIHNjYWxlVHJhbnNmb3JtID0gQ0FUcmFuc2Zvcm0zRE1ha2VTY2Fs
ZShib3VuZHMuc2l6ZS53aWR0aCAvIGZyYW1lLnNpemUud2lkdGgsIGJvdW5kcy5zaXplLmhlaWdo
dCAvIGZyYW1lLnNpemUuaGVpZ2h0LCAxKTsKLSAgICB9Ci0KLSAgICBfcGx1Z2luTGF5ZXIuZ2V0
KCkuc3VibGF5ZXJUcmFuc2Zvcm0gPSBzY2FsZVRyYW5zZm9ybTsKIH0KIAogLSAodm9pZCl3aW5k
b3dGb2N1c0NoYW5nZWQ6KEJPT0wpaGFzRm9jdXMKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViRnJhbWVWaWV3Lm1tCShyZXZpc2lvbiA5NTU3MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWVWaWV3Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01MTAsMTIgKzUx
MCw2IEBAIC0gKHZvaWQpc2V0RnJhbWVTaXplOihOU1NpemUpc2l6ZQogICAgIFtzdXBlciBzZXRG
cmFtZVNpemU6c2l6ZV07CiB9CiAKLS0gKHZvaWQpc2V0Qm91bmRzU2l6ZTooTlNTaXplKXNpemUK
LXsKLSAgICBbc3VwZXIgc2V0Qm91bmRzU2l6ZTpzaXplXTsKLSAgICBbW3NlbGYgX3Njcm9sbFZp
ZXddIHNldEZyYW1lU2l6ZTpzaXplXTsKLX0KLQogLSAodm9pZCl2aWV3RGlkTW92ZVRvV2luZG93
CiB7CiAgICAgLy8gU2VlIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpwcm92aXNpb25hbExvYWRTdGFy
dGVkLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108176</attachid>
            <date>2011-09-21 10:33:04 -0700</date>
            <delta_ts>2011-09-21 12:17:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68491-20110921103304.patch</filename>
            <type>text/plain</type>
            <size>24120</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjQ2KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzkgQEAKKzIwMTEtMDktMjEgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdpZGdl
dDo6c2V0Qm91bmRzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGJhc2ljYWxseSByZXZlcnRzIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0Lzc5MTY3IGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NTg5Nwor
ICAgICAgICB3aGljaCB3ZXJlIGFkZGVkIHRvIG1ha2Ugem9vbSBnZXN0dXJlcyB3b3JrIHdpdGgg
V2ViS2l0MSwgYnV0IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgem9vbSBnZXN0dXJlcyBpbiBXZWJL
aXQxCisgICAgICAgIGFueW1vcmUsIGl0J3MgYmV0dGVyIGZvciBjb2RlIGNsZWFubGluZXNzIHRv
IGdldCByaWQgb2YgV2lkZ2V0OjpzZXRCb3VuZHNTaXplIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2Rl
LgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVuKToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmNyZWF0
ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
b2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3
Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3Lmg6CisgICAgICAg
ICogcGxhdGZvcm0vV2lkZ2V0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9XaWRnZXQuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OldpZGdldDo6cmVzaXplKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJv
bWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQb3B1cENvbnRhaW5l
cjo6cmVmcmVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRSZWN0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6V2lkZ2V0
OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFdpZGdldEdlb21ldHJ5KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
cldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24pOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJXaWRnZXQuaDoKKwogMjAxMS0wOS0yMSAgRGF2aWQgRGVsYXVuZSAgPGRhdmlkLmRlbGF1bmVA
Z29vZ2xlbWFpbC5jb20+CiAKICAgICAgICAgW1dpbkNhaXJvXSBJY29uRGF0YWJhc2U6OmRlZmF1
bHRJY29uIGFsd2F5cyBmYWlscyBmb3Igbm9uLUNBTl9USEVNRV9VUkxfSUNPTiBidWlsZHMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtODI1LDcgKzgyNSw2IEBAIF9fWk43
V2ViQ29yZTZSZWdpb245dHJhbnNsYXRlRVJLTlNfN0ludFMKIF9fWk43V2ViQ29yZTZSZWdpb25D
MUVSS05TXzdJbnRSZWN0RQogX19aTjdXZWJDb3JlNlJlZ2lvbkMxRXYKIF9fWk43V2ViQ29yZTZX
aWRnZXQxMnNldEZyYW1lUmVjdEVSS05TXzdJbnRSZWN0RQotX19aTjdXZWJDb3JlNldpZGdldDEz
c2V0Qm91bmRzU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNldpZGdldDE2cmVtb3Zl
RnJvbVBhcmVudEV2CiBfX1pON1dlYkNvcmU2V2lkZ2V0MTdmcmFtZVJlY3RzQ2hhbmdlZEV2CiBf
X1pON1dlYkNvcmU2V2lkZ2V0MTdzZXRQbGF0Zm9ybVdpZGdldEVQNk5TVmlldwpJbmRleDogU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTY0MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjEs
MTEgKzIwNjEsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYgCiAg
ICAgdmlldy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgLy8gVXNlIHRoZSBj
dXJyZW50IFNjcm9sbFZpZXcncyBmcmFtZSByZWN0LgotICAgIGlmIChtX2ZyYW1lLT52aWV3KCkp
IHsKLSAgICAgICAgSW50UmVjdCByZWN0ID0gbV9mcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKTsK
LSAgICAgICAgdmlldy0+c2V0RnJhbWVSZWN0KHJlY3QpOwotICAgICAgICB2aWV3LT5zZXRCb3Vu
ZHNTaXplKHJlY3Quc2l6ZSgpKTsKLSAgICB9CisgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKKyAg
ICAgICAgdmlldy0+c2V0RnJhbWVSZWN0KG1fZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0KCkpOwog
ICAgIG1fZnJhbWUtPnNldFZpZXcodmlldyk7CiAgICAgCiAgICAgbV9mcmFtZS0+c2V0RG9jdW1l
bnQoZG9jdW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24g
OTU2NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE2Miw3ICsxNjIsNiBAQCBQYXNzUmVmUHRyPEZyYW1lVmlldz4gRnJhbWVWaWV3Ojpj
cmVhdGUoCiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGFkb3B0UmVmKG5ldyBGcmFt
ZVZpZXcoZnJhbWUpKTsKICAgICB2aWV3LT5XaWRnZXQ6OnNldEZyYW1lUmVjdChMYXlvdXRSZWN0
KHZpZXctPmxvY2F0aW9uKCksIGluaXRpYWxTaXplKSk7Ci0gICAgdmlldy0+c2V0SW5pdGlhbEJv
dW5kc1NpemUoaW5pdGlhbFNpemUpOwogICAgIHZpZXctPnNob3coKTsKICAgICByZXR1cm4gdmll
dy5yZWxlYXNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNw
cAkocmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIzNyw4IEBAIEludFJlY3QgU2Nyb2xsVmll
dzo6dmlzaWJsZUNvbnRlbnRSZWN0KGIKICAgICAgICAgJiYgIWluY2x1ZGVTY3JvbGxiYXJzID8g
aG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDA7CiAKICAgICByZXR1cm4gSW50UmVj
dChJbnRQb2ludChtX3Njcm9sbE9mZnNldC53aWR0aCgpLCBtX3Njcm9sbE9mZnNldC5oZWlnaHQo
KSksCi0gICAgICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgbV9ib3VuZHNTaXplLndpZHRo
KCkgLSB2ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYXgoMCwgbV9ib3VuZHNTaXplLmhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdo
dCkpKTsKKyAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gdmVydGlj
YWxTY3JvbGxiYXJXaWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhl
aWdodCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCkpKTsKIH0KICNlbmRpZgogCkBAIC00
NzAsNyArNDcwLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAog
ICAgICAgICBib29sIHNlbmRDb250ZW50UmVzaXplZE5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAg
ICAgICAKICAgICAgICAgSW50U2l6ZSBkb2NTaXplID0gY29udGVudHNTaXplKCk7Ci0gICAgICAg
IEludFNpemUgZnJhbWVTaXplID0gbV9ib3VuZHNTaXplOworICAgICAgICBJbnRTaXplIGZyYW1l
U2l6ZSA9IGZyYW1lUmVjdCgpLnNpemUoKTsKIAogICAgICAgICBpZiAoaFNjcm9sbCA9PSBTY3Jv
bGxiYXJBdXRvKSB7CiAgICAgICAgICAgICBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZG9j
U2l6ZS53aWR0aCgpID4gdmlzaWJsZVdpZHRoKCk7CkBAIC01MzIsOCArNTMyLDggQEAgdm9pZCBT
Y3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBpbnQgcGFnZVN0ZXAg
PSBtYXgobWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVw
V2hlblBhZ2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5Q
YWdlcygpKSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6b250YWxTY3JvbGxi
YXItPmZyYW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdCA9IEludFJlY3QoMCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ib3VuZHNTaXplLmhlaWdodCgp
IC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbV9ib3VuZHNTaXplLndpZHRoKCkgLSAobV92ZXJ0aWNhbFNjcm9sbGJh
ciA/IG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCkgOiAwKSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdo
dCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gKG1fdmVy
dGljYWxTY3JvbGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpIDogMCksCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVp
Z2h0KCkpOwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEZyYW1lUmVjdChoQmFy
UmVjdCk7CiAgICAgICAgIGlmICghbV9zY3JvbGxiYXJzU3VwcHJlc3NlZCAmJiBvbGRSZWN0ICE9
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpCkBAIC01NTIsMTAgKzU1MiwxMCBA
QCB2b2lkIFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNIZWlnaHQoKSA+IGNsaWVudEhlaWdo
dCk7CiAgICAgICAgIGludCBwYWdlU3RlcCA9IG1heChtYXg8aW50PihjbGllbnRIZWlnaHQgKiBT
Y3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRIZWlnaHQgLSBT
Y3JvbGxiYXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBJbnRSZWN0
IG9sZFJlY3QobV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwotICAgICAgICBJbnRS
ZWN0IHZCYXJSZWN0ID0gSW50UmVjdChtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1fdmVydGljYWxT
Y3JvbGxiYXItPndpZHRoKCksIAorICAgICAgICBJbnRSZWN0IHZCYXJSZWN0ID0gSW50UmVjdCh3
aWR0aCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwgCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fdmVydGljYWxTY3JvbGxiYXItPndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIChtX2hvcml6b250YWxTY3JvbGxiYXIg
PyBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpIDogMCkpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBoZWlnaHQoKSAtIChtX2hvcml6b250YWxTY3JvbGxiYXIgPyBt
X2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpIDogMCkpOwogICAgICAgICBtX3ZlcnRpY2Fs
U2Nyb2xsYmFyLT5zZXRGcmFtZVJlY3QodkJhclJlY3QpOwogICAgICAgICBpZiAoIW1fc2Nyb2xs
YmFyc1N1cHByZXNzZWQgJiYgb2xkUmVjdCAhPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJl
Y3QoKSkKICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAg
LTgyNywzMCArODI3LDYgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50
UgogICAgIGZyYW1lUmVjdHNDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0Qm91
bmRzU2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQotewotICAgIGlmIChuZXdTaXplID09IG1f
Ym91bmRzU2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2lkZ2V0OjpzZXRCb3VuZHNTaXpl
KG5ld1NpemUpOwotICAgIG1fYm91bmRzU2l6ZSA9IG5ld1NpemU7Ci0KLSAgICBpZiAocGxhdGZv
cm1XaWRnZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Nj
cm9sbE9mZnNldCk7Ci0gICAgaWYgKCFtX3VzZUZpeGVkTGF5b3V0KQotICAgICAgICBjb250ZW50
c1Jlc2l6ZWQoKTsKLQotICAgIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7Ci19Ci0KLXZvaWQg
U2Nyb2xsVmlldzo6c2V0SW5pdGlhbEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkK
LXsKLSAgICBBU1NFUlQobV9ib3VuZHNTaXplLmlzWmVybygpKTsKLSAgICBtX2JvdW5kc1NpemUg
PSBuZXdTaXplOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKIHsK
ICAgICBpZiAocGxhdGZvcm1XaWRnZXQoKSkKQEAgLTkyMSwxOCArODk3LDE4IEBAIEludFJlY3Qg
U2Nyb2xsVmlldzo6c2Nyb2xsQ29ybmVyUmVjdCgpIGMKICAgICBpZiAoaGFzT3ZlcmxheVNjcm9s
bGJhcnMoKSkKICAgICAgICAgcmV0dXJuIGNvcm5lclJlY3Q7CiAKLSAgICBpZiAobV9ob3Jpem9u
dGFsU2Nyb2xsYmFyICYmIG1fYm91bmRzU2l6ZS53aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xs
YmFyLT53aWR0aCgpID4gMCkgeworICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgd2lk
dGgoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSA+IDApIHsKICAgICAgICAgY29y
bmVyUmVjdC51bml0ZShJbnRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIG1f
aG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lk
dGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jp
em9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKSk7
CiAgICAgfQogCi0gICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLmhl
aWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIGNv
cm5lclJlY3QudW5pdGUoSW50UmVjdChtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1fdmVydGljYWxT
Y3JvbGxiYXItPndpZHRoKCksCisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgaGVpZ2h0
KCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5oZWlnaHQoKSA+IDApIHsKKyAgICAgICAgY29ybmVy
UmVjdC51bml0ZShJbnRSZWN0KHdpZHRoKCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgp
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+
aGVpZ2h0KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Ny
b2xsYmFyLT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ib3Vu
ZHNTaXplLmhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJh
ci0+aGVpZ2h0KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGNvcm5lclJlY3Q7CkBAIC0x
MTMyLDggKzExMDgsOCBAQCBib29sIFNjcm9sbFZpZXc6OmlzUG9pbnRJblNjcm9sbGJhckNvcm5l
CiAKIGJvb2wgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLndpZHRoKCkg
LSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAobV92
ZXJ0aWNhbFNjcm9sbGJhciAmJiBtX2JvdW5kc1NpemUuaGVpZ2h0KCkgLSBtX3ZlcnRpY2FsU2Ny
b2xsYmFyLT5oZWlnaHQoKSA+IDApOworICAgIHJldHVybiAobV9ob3Jpem9udGFsU2Nyb2xsYmFy
ICYmIHdpZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKQorICAgICAg
ICB8fCAobV92ZXJ0aWNhbFNjcm9sbGJhciAmJiBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxi
YXItPmhlaWdodCgpID4gMCk7CiB9CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6Y29udmVydEZyb21T
Y3JvbGxiYXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25z
dCBJbnRSZWN0JiBsb2NhbFJlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9TY3JvbGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Ny
b2xsVmlldy5oCShyZXZpc2lvbiA5NTY0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nj
cm9sbFZpZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw2IEBAIHB1YmxpYzoKICAg
ICAKICAgICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRlIG91ciBzY3JvbGxiYXJzIGFuZCBu
b3RpZnkgb3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAgICAgdmlydHVhbCB2b2lkIHNldEZy
YW1lUmVjdChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJvdW5kc1NpemUo
Y29uc3QgSW50U2l6ZSYpOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gaGl0
IHRlc3Qgc2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxlcnMg
KGxpa2UgV2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQ
b2ludCYgd2luZG93UG9pbnQpOwpAQCAtMzAyLDkgKzMwMSw2IEBAIHByb3RlY3RlZDoKIAogICAg
IEludFJlY3QgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVk
VmlzaWJsZUNvbnRlbnRSZWN0OyB9CiAKLSAgICBJbnRTaXplIGJvdW5kc1NpemUoKSBjb25zdCB7
IHJldHVybiBtX2JvdW5kc1NpemU7IH0KLSAgICB2b2lkIHNldEluaXRpYWxCb3VuZHNTaXplKGNv
bnN0IEludFNpemUmKTsKLQogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBjcmVh
dGUvZGVzdHJveSBzY3JvbGxiYXJzLgogICAgIHZvaWQgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJh
cihib29sKTsKICAgICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwpAQCAtMzYz
LDggKzM1OSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udGFpbnNTY3JvbGxhYmxlQXJl
YVdpdGhPdmVybGF5U2Nyb2xsYmFyczsKIAotICAgIEludFNpemUgbV9ib3VuZHNTaXplOwotCiAg
ICAgdm9pZCBpbml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1dpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmNwcAkocmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9XaWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTAgKzEwNiw2IEBAIEludFBv
aW50IFdpZGdldDo6Y29udmVydFRvQ29udGFpbmluZ1dpbmQKIH0KIAogI2lmICFQTEFURk9STShN
QUMpCi12b2lkIFdpZGdldDo6c2V0Qm91bmRzU2l6ZShjb25zdCBJbnRTaXplJikKLXsKLX0KLQog
SW50UmVjdCBXaWRnZXQ6OmNvbnZlcnRGcm9tUm9vdFRvQ29udGFpbmluZ1dpbmRvdyhjb25zdCBX
aWRnZXQqLCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiByZWN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlzaW9uIDk1NjQzKQorKysgU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMiArMTQ5LDExIEBA
IHB1YmxpYzoKICAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZyYW1lUmVj
dCgpLmxvY2F0aW9uKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3Qg
SW50UmVjdCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHNTaXplKGNvbnN0IEludFNpemUm
KTsKICAgICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3Q7CiAgICAgSW50UmVjdCBi
b3VuZHNSZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgwLCAwLCB3aWR0aCgpLCAgaGVpZ2h0
KCkpOyB9CiAKLSAgICB2b2lkIHJlc2l6ZShpbnQgdywgaW50IGgpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCgpLCB5KCksIHcsIGgpKTsgc2V0Qm91bmRzU2l6ZShJbnRTaXplKHcsIGgpKTsgfQot
ICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmIHMpIHsgc2V0RnJhbWVSZWN0KEludFJlY3Qo
bG9jYXRpb24oKSwgcykpOyBzZXRCb3VuZHNTaXplKHMpOyB9CisgICAgdm9pZCByZXNpemUoaW50
IHcsIGludCBoKSB7IHNldEZyYW1lUmVjdChJbnRSZWN0KHgoKSwgeSgpLCB3LCBoKSk7IH0KKyAg
ICB2b2lkIHJlc2l6ZShjb25zdCBJbnRTaXplJiBzKSB7IHNldEZyYW1lUmVjdChJbnRSZWN0KGxv
Y2F0aW9uKCksIHMpKTsgfQogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVS
ZWN0KEludFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShj
b25zdCBJbnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBD
b250YWluZXIuY3BwCShyZXZpc2lvbiA5NTY0MykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL1BvcHVwQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDcgKzQw
OSw2IEBAIHZvaWQgUG9wdXBDb250YWluZXI6OnJlZnJlc2goY29uc3QgSW50UmUKICAgICBsb2Nh
dGlvbi5tb3ZlKDAsIHRhcmdldENvbnRyb2xSZWN0LmhlaWdodCgpKTsKIAogICAgIGxpc3RCb3go
KS0+c2V0QmFzZVdpZHRoKG1heChtX29yaWdpbmFsRnJhbWVSZWN0LndpZHRoKCkgLSBrQm9yZGVy
U2l6ZSAqIDIsIDApKTsKLSAgICBzZXRCb3VuZHNTaXplKG1fb3JpZ2luYWxGcmFtZVJlY3Quc2l6
ZSgpKTsKIAogICAgIGxpc3RCb3goKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAvLyBTdG9y
ZSB0aGUgb3JpZ2luYWwgc2l6ZSB0byBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlcXVlc3QgdGhlIGxv
Y2F0aW9uLgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3
R3RrLmNwcAkocmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsv
U2Nyb2xsVmlld0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAgSW50UmVj
dCBTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoYgogICAgIC8vIHNjcm9sbGJhciB3aWR0
aCBzaG91bGQgYmUuCiAgICAgaWYgKCFzaG91bGRDcmVhdGVNYWluRnJhbWVTY3JvbGxiYXIodGhp
cykpIHsKICAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQud2lk
dGgoKSwgbV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICBJ
bnRTaXplKG1heCgwLCBtX2JvdW5kc1NpemUud2lkdGgoKSAtICh2ZXJ0aWNhbFNjcm9sbGJhcigp
ICYmICFpbmNsdWRlU2Nyb2xsYmFycyA/IHZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCkgOiAw
KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIG1fYm91bmRzU2l6ZS5o
ZWlnaHQoKSAtIChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIWluY2x1ZGVTY3JvbGxiYXJzID8g
aG9yaXpvbnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDApKSkpOworICAgICAgICAgICAgICAg
ICAgICAgICBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gKHZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYg
IWluY2x1ZGVTY3JvbGxiYXJzID8gdmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKSA6IDApKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgaGVpZ2h0KCkgLSAoaG9yaXpv
bnRhbFNjcm9sbGJhcigpICYmICFpbmNsdWRlU2Nyb2xsYmFycyA/IGhvcml6b250YWxTY3JvbGxi
YXIoKS0+aGVpZ2h0KCkgOiAwKSkpKTsKICAgICB9CiAKICAgICAvLyBXZSBkb24ndCBoYXZlIGEg
cGFyZW50LCBzbyB3ZSBhcmUgdGhlIG1haW4gZnJhbWUgYW5kIHRodXMgaGF2ZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiA5NTY0MykKKysr
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHdvcmtpbmcgY29weSkK
QEAgLTMxLDcgKzMxLDYgQEAKICNpbXBvcnQgIkNocm9tZS5oIgogI2ltcG9ydCAiQ3Vyc29yLmgi
CiAjaW1wb3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1w
b3J0ICJGb250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0
LmgiCkBAIC0xODksMjUgKzE4OCw2IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3Qg
SW50UmVjdCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIFdpZGdl
dDo6c2V0Qm91bmRzU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIE5TU2l6ZSBuc1Np
emUgPSBzaXplOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIE5TVmll
dyAqb3V0ZXJWaWV3ID0gZ2V0T3V0ZXJWaWV3KCk7Ci0gICAgaWYgKCFvdXRlclZpZXcpCi0gICAg
ICAgIHJldHVybjsKLQotICAgIC8vIFRha2UgYSByZWZlcmVuY2UgdG8gdGhpcyBXaWRnZXQsIGJl
Y2F1c2Ugc2VuZGluZyBtZXNzYWdlcyB0byBvdXRlclZpZXcgY2FuIGludm9rZSBhcmJpdHJhcnkK
LSAgICAvLyBjb2RlLCB3aGljaCBjYW4gZGVyZWYgaXQuCi0gICAgUmVmUHRyPFdpZGdldD4gcHJv
dGVjdGVkVGhpcyh0aGlzKTsKLSAgICBpZiAoIU5TRXF1YWxTaXplcyhuc1NpemUsIFtvdXRlclZp
ZXcgYm91bmRzXS5zaXplKSkgewotICAgICAgICBbb3V0ZXJWaWV3IHNldEJvdW5kc1NpemU6bnNT
aXplXTsKLSAgICAgICAgW291dGVyVmlldyBzZXROZWVkc0Rpc3BsYXk6Tk9dOwotICAgIH0KLSAg
ICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0
ZXJWaWV3KCkgY29uc3QKIHsKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0Zm9ybVdpZGdldCgpOwpA
QCAtMjMyLDMwICsyMTIsMTEgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCog
cCwgYwogICAgIC8vIGNvZGUsIHdoaWNoIGNhbiBkZXJlZiBpdC4KICAgICBSZWZQdHI8V2lkZ2V0
PiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgSW50UG9pbnQgdHJhbnNmb3JtT3JpZ2luID0g
ZnJhbWVSZWN0KCkubG9jYXRpb24oKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gd2lkZ2V0VG9WaWV3
VHJhbmZvcm0gPSBtYWtlTWFwQmV0d2VlblJlY3RzKEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWVS
ZWN0KCkuc2l6ZSgpKSwgW3ZpZXcgYm91bmRzXSk7Ci0KICAgICBOU0dyYXBoaWNzQ29udGV4dCAq
Y3VycmVudENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogICAg
IGlmIChjdXJyZW50Q29udGV4dCA9PSBbW3ZpZXcgd2luZG93XSBncmFwaGljc0NvbnRleHRdIHx8
ICFbY3VycmVudENvbnRleHQgaXNEcmF3aW5nVG9TY3JlZW5dKSB7CiAgICAgICAgIC8vIFRoaXMg
aXMgdGhlIGNvbW1vbiBjYXNlIG9mIGRyYXdpbmcgaW50byBhIHdpbmRvdyBvciBwcmludGluZy4K
ICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgICAgICAKLSAgICAgICAg
Q0dDb250ZXh0UmVmIGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtjdXJyZW50Q29udGV4dCBncmFw
aGljc1BvcnRdOwotCi0gICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAg
ICAgIENHQ29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCB0cmFuc2Zvcm1PcmlnaW4ueCgpLCB0
cmFuc2Zvcm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwg
bmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9ybS54U2NhbGUoKSksIG5h
cnJvd1ByZWNpc2lvblRvRmxvYXQod2lkZ2V0VG9WaWV3VHJhbmZvcm0ueVNjYWxlKCkpKTsKLSAg
ICAgICAgQ0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC10cmFuc2Zvcm1PcmlnaW4ueCgp
LCAtdHJhbnNmb3JtT3JpZ2luLnkoKSk7Ci0KLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBy
OwotICAgICAgICBkaXJ0eVJlY3QubW92ZUJ5KC10cmFuc2Zvcm1PcmlnaW4pOwotICAgICAgICBp
ZiAoIVt2aWV3IGlzRmxpcHBlZF0pCi0gICAgICAgICAgICBkaXJ0eVJlY3Quc2V0WShbdmlldyBi
b3VuZHNdLnNpemUuaGVpZ2h0IC0gZGlydHlSZWN0Lm1heFkoKSk7Ci0KLSAgICAgICAgW3ZpZXcg
ZGlzcGxheVJlY3RJZ25vcmluZ09wYWNpdHk6ZGlydHlSZWN0XTsKLQotICAgICAgICBDR0NvbnRl
eHRSZXN0b3JlR1N0YXRlKGNvbnRleHQpOwotCisgICAgICAgIFt2aWV3IGRpc3BsYXlSZWN0SWdu
b3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZpZXc6W3ZpZXcgc3VwZXJ2aWV3
XV1dOwogICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIH0gZWxzZSB7CiAg
ICAgICAgIC8vIFRoaXMgaXMgdGhlIGNhc2Ugb2YgZHJhd2luZyBpbnRvIGEgYml0bWFwIGNvbnRl
eHQgb3RoZXIgdGhhbiBhIHdpbmRvdyBiYWNraW5nIHN0b3JlLiBJdCBnZXRzIGhpdCBiZW5lYXRo
CkBAIC0yODAsMTAgKzI0MSw2IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQq
IHAsIGMKICAgICAgICAgQVNTRVJUKGNnQ29udGV4dCA9PSBbY3VycmVudENvbnRleHQgZ3JhcGhp
Y3NQb3J0XSk7CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKIAotICAg
ICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCB0cmFuc2Zvcm1PcmlnaW4ueCgp
LCB0cmFuc2Zvcm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250
ZXh0LCBuYXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdpZGdldFRvVmlld1RyYW5mb3JtLnhTY2FsZSgp
KSwgbmFycm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9ybS55U2NhbGUoKSkp
OwotICAgICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAtdHJhbnNmb3JtT3Jp
Z2luLngoKSwgLXRyYW5zZm9ybU9yaWdpbi55KCkpOwotCiAgICAgICAgIE5TUmVjdCB2aWV3RnJh
bWUgPSBbdmlldyBmcmFtZV07CiAgICAgICAgIE5TUmVjdCB2aWV3Qm91bmRzID0gW3ZpZXcgYm91
bmRzXTsKICAgICAgICAgLy8gU2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBhbmQgKGZsaXBwZWQpIG9y
aWVudGF0aW9uIG9mIHRoZSBncmFwaGljcyBjb250ZXh0LiBJbiBub3JtYWwgZHJhd2luZywgQXBw
S2l0IGRvZXMgaXQgYXMgaXQgZGVzY2VuZHMgZG93bgpAQCAtMjkxLDE1ICsyNDgsMTAgQEAgdm9p
ZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgYwogICAgICAgICBDR0NvbnRleHRU
cmFuc2xhdGVDVE0oY2dDb250ZXh0LCB2aWV3RnJhbWUub3JpZ2luLnggLSB2aWV3Qm91bmRzLm9y
aWdpbi54LCB2aWV3RnJhbWUub3JpZ2luLnkgKyB2aWV3RnJhbWUuc2l6ZS5oZWlnaHQgKyB2aWV3
Qm91bmRzLm9yaWdpbi55KTsKICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAx
LCAtMSk7CiAKLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByOwotICAgICAgICBkaXJ0eVJl
Y3QubW92ZUJ5KC10cmFuc2Zvcm1PcmlnaW4pOwotICAgICAgICBpZiAoIVt2aWV3IGlzRmxpcHBl
ZF0pCi0gICAgICAgICAgICBkaXJ0eVJlY3Quc2V0WShbdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0
IC0gZGlydHlSZWN0Lm1heFkoKSk7Ci0KICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJ
T05TOwogICAgICAgICB7CiAgICAgICAgICAgICBOU0dyYXBoaWNzQ29udGV4dCAqbnNDb250ZXh0
ID0gW05TR3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y2dD
b250ZXh0IGZsaXBwZWQ6WUVTXTsKLSAgICAgICAgICAgIFt2aWV3IGRpc3BsYXlSZWN0SWdub3Jp
bmdPcGFjaXR5OmRpcnR5UmVjdCBpbkNvbnRleHQ6bnNDb250ZXh0XTsKKyAgICAgICAgICAgIFt2
aWV3IGRpc3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZp
ZXc6W3ZpZXcgc3VwZXJ2aWV3XV0gaW5Db250ZXh0Om5zQ29udGV4dF07CiAgICAgICAgIH0KICAg
ICAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDk1NjQzKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3
ICsxNDAsNyBAQCBSZW5kZXJXaWRnZXQ6On5SZW5kZXJXaWRnZXQoKQogICAgIGNsZWFyV2lkZ2V0
KCk7CiB9CiAKLWJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJbnRS
ZWN0JiBmcmFtZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzU2l6ZSkKK2Jvb2wgUmVuZGVyV2lkZ2V0
OjpzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBmcmFtZSkKIHsKICAgICBpZiAoIW5v
ZGUoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3LDggKzE1Nyw2IEBAIGJvb2wgUmVu
ZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb24KICAgICBSZW5kZXJXaWRnZXRQcm90ZWN0
b3IgcHJvdGVjdG9yKHRoaXMpOwogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUo
KSk7CiAgICAgbV93aWRnZXQtPnNldEZyYW1lUmVjdChmcmFtZSk7Ci0gICAgaWYgKG1fd2lkZ2V0
KSAvLyBzZXRGcmFtZVJlY3QgY2FuIHJ1biBhcmJpdHJhcnkgc2NyaXB0LCB3aGljaCBtaWdodCBj
bGVhciBtX3dpZGdldC4KLSAgICAgICAgbV93aWRnZXQtPnNldEJvdW5kc1NpemUoYm91bmRzU2l6
ZSk7CiAgICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChoYXNM
YXllcigpICYmIGxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQpAQCAtMTkwLDkgKzE4OCw5IEBAIHZv
aWQgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUGFzc1JlZlB0cjwKICAgICAgICAgICAgICAgICBJ
bnRSZWN0IGFic29sdXRlQ29udGVudEJveCA9IEludFJlY3QobG9jYWxUb0Fic29sdXRlUXVhZChG
bG9hdFF1YWQoY29udGVudEJveCkpLmJvdW5kaW5nQm94KCkpOwogICAgICAgICAgICAgICAgIGlm
IChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZW50
Qm94LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKLSAgICAgICAg
ICAgICAgICAgICAgc2V0V2lkZ2V0R2VvbWV0cnkoY29udGVudEJveCwgY29udGVudEJveC5zaXpl
KCkpOworICAgICAgICAgICAgICAgICAgICBzZXRXaWRnZXRHZW9tZXRyeShjb250ZW50Qm94KTsK
ICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2V0V2lkZ2V0R2Vv
bWV0cnkoYWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNpemUoKSk7CisgICAgICAgICAg
ICAgICAgICAgIHNldFdpZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCk7CiAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUp
CiAgICAgICAgICAgICAgICAgbV93aWRnZXQtPmhpZGUoKTsKQEAgLTMyOCw5ICszMjYsOSBAQCB2
b2lkIFJlbmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24oCiAgICAgYm9vbCBib3VuZHND
aGFuZ2VkOwogICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICBjb250
ZW50Qm94LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKLSAgICAg
ICAgYm91bmRzQ2hhbmdlZCA9IHNldFdpZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gsIGNvbnRlbnRC
b3guc2l6ZSgpKTsKKyAgICAgICAgYm91bmRzQ2hhbmdlZCA9IHNldFdpZGdldEdlb21ldHJ5KGNv
bnRlbnRCb3gpOwogICAgIH0gZWxzZQotICAgICAgICBib3VuZHNDaGFuZ2VkID0gc2V0V2lkZ2V0
R2VvbWV0cnkoYWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNpemUoKSk7CisgICAgICAg
IGJvdW5kc0NoYW5nZWQgPSBzZXRXaWRnZXRHZW9tZXRyeShhYnNvbHV0ZUNvbnRlbnRCb3gpOwog
ICAgIAogICAgIC8vIGlmIHRoZSBmcmFtZSBib3VuZHMgZ290IGNoYW5nZWQsIG9yIGlmIHZpZXcg
bmVlZHMgbGF5b3V0IChwb3NzaWJseSBpbmRpY2F0aW5nCiAgICAgLy8gY29udGVudCBzaXplIGlz
IHdyb25nKSB3ZSBoYXZlIHRvIGRvIGEgbGF5b3V0IHRvIHNldCB0aGUgcmlnaHQgd2lkZ2V0IHNp
emUKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHJldmlzaW9u
IDk1NjQzKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExh
eW91dFBvaW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0
ZWRPZmZzZXQsIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGFwVGVz
dFJlc3VsdChib29sKTsKIAotICAgIGJvb2wgc2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVj
dCYsIGNvbnN0IEludFNpemUmKTsKKyAgICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IElu
dFJlY3QmKTsKIAogICAgIFJlZlB0cjxXaWRnZXQ+IG1fd2lkZ2V0OwogICAgIEZyYW1lVmlldyog
bV9mcmFtZVZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTY0MykKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDExLTA5LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAg
ICAgICAgR2V0IHJpZCBvZiBXaWRnZXQ6OnNldEJvdW5kc1NpemUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDkxCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBiYXNpY2FsbHkgcmV2ZXJ0cyBodHRw
Oi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83OTE2NyBhbmQgaHR0cDovL3RyYWMud2Via2l0
Lm9yZy9jaGFuZ2VzZXQvNzU4OTcKKyAgICAgICAgd2hpY2ggd2VyZSBhZGRlZCB0byBtYWtlIHpv
b20gZ2VzdHVyZXMgd29yayB3aXRoIFdlYktpdDEsIGJ1dCBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0
IHpvb20gZ2VzdHVyZXMgaW4gV2ViS2l0MQorICAgICAgICBhbnltb3JlLCBpdCdzIGJldHRlciBm
b3IgY29kZSBjbGVhbmxpbmVzcyB0byBnZXQgcmlkIG9mIFdpZGdldDo6c2V0Qm91bmRzU2l6ZSBh
bmQgdGhlIGFzc29jaWF0ZWQgY29kZS4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVkL1dlYkhv
c3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViSG9zdGVkTmV0c2NhcGVQ
bHVnaW5WaWV3IHVwZGF0ZUFuZFNldFdpbmRvd10pOgorICAgICAgICAqIFdlYlZpZXcvV2ViRnJh
bWVWaWV3Lm1tOgorCiAyMDExLTA5LTIxICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVjc2lAbm9r
aWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVtb3ZlIFF0IHNwZWNpZmljIGNvZGUgZnJvbSBjc3Mv
U2VsZWN0b3JDaGVja2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0
ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbQko
cmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9XZWJI
b3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSwyMyArMjE1
LDYgQEAgLSAodm9pZCl1cGRhdGVBbmRTZXRXaW5kb3cKICAgICBfcHJldmlvdXNTaXplID0gYm91
bmRzSW5XaW5kb3cuc2l6ZTsKICAgICAKICAgICBfcHJveHktPnJlc2l6ZShib3VuZHNJbldpbmRv
dywgdmlzaWJsZVJlY3RJbldpbmRvdyk7Ci0KLSAgICBDR1JlY3QgYm91bmRzID0gTlNSZWN0VG9D
R1JlY3QoW3NlbGYgYm91bmRzXSk7Ci0gICAgQ0dSZWN0IGZyYW1lID0gTlNSZWN0VG9DR1JlY3Qo
W3NlbGYgZnJhbWVdKTsKLSAgICAKLSAgICAvLyBXZSdyZSBub3Qgc2NhbGVkLCBvciBpbiBhIHN1
YmZyYW1lCi0gICAgQ0FUcmFuc2Zvcm0zRCBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RJ
ZGVudGl0eTsKLSAgICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoYm91bmRzLnNpemUsIGZyYW1lLnNp
emUpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGluIGEgc3ViZnJhbWUuIEJhY2tpbmcgc3RvcmUgaXMg
Ym91bmRzSW5XaW5kb3cuc2l6ZS4KLSAgICAgICAgaWYgKGJvdW5kc0luV2luZG93LnNpemUud2lk
dGggJiYgYm91bmRzSW5XaW5kb3cuc2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICBzY2FsZVRyYW5z
Zm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoZnJhbWUuc2l6ZS53aWR0aCAvIGJvdW5kc0lu
V2luZG93LnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0IC8gYm91bmRzSW5XaW5kb3cuc2l6
ZS5oZWlnaHQsIDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFdlJ3JlIGluIHRoZSBtYWlu
IGZyYW1lIHdpdGggc2NhbGluZy4gTmVlZCB0byBtaW1pYyB0aGUgZnJhbWUvYm91bmRzIHNjYWxp
bmcgb24gV2lkZ2V0cy4KLSAgICAgICAgaWYgKGZyYW1lLnNpemUud2lkdGggJiYgZnJhbWUuc2l6
ZS5oZWlnaHQpCi0gICAgICAgICAgICBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtl
U2NhbGUoYm91bmRzLnNpemUud2lkdGggLyBmcmFtZS5zaXplLndpZHRoLCBib3VuZHMuc2l6ZS5o
ZWlnaHQgLyBmcmFtZS5zaXplLmhlaWdodCwgMSk7Ci0gICAgfQotCi0gICAgX3BsdWdpbkxheWVy
LmdldCgpLnN1YmxheWVyVHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CiB9CiAKIC0gKHZvaWQp
d2luZG93Rm9jdXNDaGFuZ2VkOihCT09MKWhhc0ZvY3VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gOTU2NDMpCisrKyBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNTEwLDEy
ICs1MTAsNiBAQCAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUKICAgICBbc3VwZXIg
c2V0RnJhbWVTaXplOnNpemVdOwogfQogCi0tICh2b2lkKXNldEJvdW5kc1NpemU6KE5TU2l6ZSlz
aXplCi17Ci0gICAgW3N1cGVyIHNldEJvdW5kc1NpemU6c2l6ZV07Ci0gICAgW1tzZWxmIF9zY3Jv
bGxWaWV3XSBzZXRGcmFtZVNpemU6c2l6ZV07Ci19Ci0KIC0gKHZvaWQpdmlld0RpZE1vdmVUb1dp
bmRvdwogewogICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9uYWxMb2Fk
U3RhcnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>108204</attachid>
            <date>2011-09-21 12:17:59 -0700</date>
            <delta_ts>2011-09-22 10:08:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-68491-20110921121759.patch</filename>
            <type>text/plain</type>
            <size>24354</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk1NjQ3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDAgQEAKKzIwMTEtMDktMjEgIEFuZGVycyBD
YXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KKworICAgICAgICBHZXQgcmlkIG9mIFdpZGdl
dDo6c2V0Qm91bmRzU2l6ZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9Njg0OTEKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBUaGlzIGJhc2ljYWxseSByZXZlcnRzIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0Lzc5MTY3IGFuZCBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC83NTg5Nwor
ICAgICAgICB3aGljaCB3ZXJlIGFkZGVkIHRvIG1ha2Ugem9vbSBnZXN0dXJlcyB3b3JrIHdpdGgg
V2ViS2l0MSwgYnV0IHNpbmNlIHdlIGRvbid0IHN1cHBvcnQgem9vbSBnZXN0dXJlcyBpbiBXZWJL
aXQxCisgICAgICAgIGFueW1vcmUsIGl0J3MgYmV0dGVyIGZvciBjb2RlIGNsZWFubGluZXNzIHRv
IGdldCByaWQgb2YgV2lkZ2V0OjpzZXRCb3VuZHNTaXplIGFuZCB0aGUgYXNzb2NpYXRlZCBjb2Rl
LiBXaGlsZSB0aGlzCisgICAgICAgIHdpbGwgdW5mb3J0dW5hdGVseSBicmVhayB0cmFuc2Zvcm1l
ZCBpZnJhbWVzIGluIFdlYktpdDEsIGJ1dCBTaW1vbiBzYXlzIHRoYXQgaXQncyBhbiBhY2NlcHRh
YmxlIHRyYWRlb2ZmLgorCisgICAgICAgICogV2ViQ29yZS5leHAuaW46CisgICAgICAgICogbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvcGVu
KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVmlldy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFt
ZVZpZXc6OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vU2Nyb2xsVmlldy5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTY3JvbGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QpOgorICAgICAgICAo
V2ViQ29yZTo6U2Nyb2xsVmlldzo6dXBkYXRlU2Nyb2xsYmFycyk6CisgICAgICAgIChXZWJDb3Jl
OjpTY3JvbGxWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKiBwbGF0Zm9ybS9TY3JvbGxWaWV3
Lmg6CisgICAgICAgICogcGxhdGZvcm0vV2lkZ2V0LmNwcDoKKyAgICAgICAgKiBwbGF0Zm9ybS9X
aWRnZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldpZGdldDo6cmVzaXplKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQ
b3B1cENvbnRhaW5lcjo6cmVmcmVzaCk6CisgICAgICAgICogcGxhdGZvcm0vZ3RrL1Njcm9sbFZp
ZXdHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsVmlldzo6dmlzaWJsZUNvbnRlbnRS
ZWN0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tOgorICAgICAgICAoV2Vi
Q29yZTo6V2lkZ2V0OjpwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlcldpZGdldC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJXaWRnZXQ6OnNldFdpZGdldEdlb21ldHJ5KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlcldpZGdldDo6c2V0V2lkZ2V0KToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24pOgorICAgICAgICAqIHJl
bmRlcmluZy9SZW5kZXJXaWRnZXQuaDoKKwogMjAxMS0wOS0yMSAgWGlhbnpodSBXYW5nICA8d2Fu
Z3hpYW56aHVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEVuc3VyZSBUZXN0V2ViS2l0QVBJIHdv
cmtzIG9uIG1hYywgd2luLCBjaHJvbWl1bS1tYWMgYW5kIGNocm9taXVtLWxpbnV4CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLmV4cC5pbgkocmV2aXNpb24gOTU2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtODI1LDcgKzgyNSw2IEBAIF9fWk43V2ViQ29y
ZTZSZWdpb245dHJhbnNsYXRlRVJLTlNfN0ludFMKIF9fWk43V2ViQ29yZTZSZWdpb25DMUVSS05T
XzdJbnRSZWN0RQogX19aTjdXZWJDb3JlNlJlZ2lvbkMxRXYKIF9fWk43V2ViQ29yZTZXaWRnZXQx
MnNldEZyYW1lUmVjdEVSS05TXzdJbnRSZWN0RQotX19aTjdXZWJDb3JlNldpZGdldDEzc2V0Qm91
bmRzU2l6ZUVSS05TXzdJbnRTaXplRQogX19aTjdXZWJDb3JlNldpZGdldDE2cmVtb3ZlRnJvbVBh
cmVudEV2CiBfX1pON1dlYkNvcmU2V2lkZ2V0MTdmcmFtZVJlY3RzQ2hhbmdlZEV2CiBfX1pON1dl
YkNvcmU2V2lkZ2V0MTdzZXRQbGF0Zm9ybVdpZGdldEVQNk5TVmlldwpJbmRleDogU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA5NTY0NykKKysrIFNvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNjEsMTEgKzIw
NjEsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpvcGVuKENhY2hlZEZyYW1lQmFzZSYgCiAgICAgdmll
dy0+c2V0V2FzU2Nyb2xsZWRCeVVzZXIoZmFsc2UpOwogCiAgICAgLy8gVXNlIHRoZSBjdXJyZW50
IFNjcm9sbFZpZXcncyBmcmFtZSByZWN0LgotICAgIGlmIChtX2ZyYW1lLT52aWV3KCkpIHsKLSAg
ICAgICAgSW50UmVjdCByZWN0ID0gbV9mcmFtZS0+dmlldygpLT5mcmFtZVJlY3QoKTsKLSAgICAg
ICAgdmlldy0+c2V0RnJhbWVSZWN0KHJlY3QpOwotICAgICAgICB2aWV3LT5zZXRCb3VuZHNTaXpl
KHJlY3Quc2l6ZSgpKTsKLSAgICB9CisgICAgaWYgKG1fZnJhbWUtPnZpZXcoKSkKKyAgICAgICAg
dmlldy0+c2V0RnJhbWVSZWN0KG1fZnJhbWUtPnZpZXcoKS0+ZnJhbWVSZWN0KCkpOwogICAgIG1f
ZnJhbWUtPnNldFZpZXcodmlldyk7CiAgICAgCiAgICAgbV9mcmFtZS0+c2V0RG9jdW1lbnQoZG9j
dW1lbnQpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAkocmV2aXNpb24gOTU2NDcp
CisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE2Miw3ICsxNjIsNiBAQCBQYXNzUmVmUHRyPEZyYW1lVmlldz4gRnJhbWVWaWV3OjpjcmVhdGUo
CiB7CiAgICAgUmVmUHRyPEZyYW1lVmlldz4gdmlldyA9IGFkb3B0UmVmKG5ldyBGcmFtZVZpZXco
ZnJhbWUpKTsKICAgICB2aWV3LT5XaWRnZXQ6OnNldEZyYW1lUmVjdChMYXlvdXRSZWN0KHZpZXct
PmxvY2F0aW9uKCksIGluaXRpYWxTaXplKSk7Ci0gICAgdmlldy0+c2V0SW5pdGlhbEJvdW5kc1Np
emUoaW5pdGlhbFNpemUpOwogICAgIHZpZXctPnNob3coKTsKICAgICByZXR1cm4gdmlldy5yZWxl
YXNlKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAkocmV2
aXNpb24gOTU2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3JvbGxWaWV3LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjM3LDggKzIzNyw4IEBAIEludFJlY3QgU2Nyb2xsVmlldzo6dmlz
aWJsZUNvbnRlbnRSZWN0KGIKICAgICAgICAgJiYgIWluY2x1ZGVTY3JvbGxiYXJzID8gaG9yaXpv
bnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDA7CiAKICAgICByZXR1cm4gSW50UmVjdChJbnRQ
b2ludChtX3Njcm9sbE9mZnNldC53aWR0aCgpLCBtX3Njcm9sbE9mZnNldC5oZWlnaHQoKSksCi0g
ICAgICAgICAgICAgICAgICAgSW50U2l6ZShtYXgoMCwgbV9ib3VuZHNTaXplLndpZHRoKCkgLSB2
ZXJ0aWNhbFNjcm9sbGJhcldpZHRoKSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgo
MCwgbV9ib3VuZHNTaXplLmhlaWdodCgpIC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCkpKTsK
KyAgICAgICAgICAgICAgICAgICBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gdmVydGljYWxTY3Jv
bGxiYXJXaWR0aCksIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIGhlaWdodCgp
IC0gaG9yaXpvbnRhbFNjcm9sbGJhckhlaWdodCkpKTsKIH0KICNlbmRpZgogCkBAIC00NzAsNyAr
NDcwLDcgQEAgdm9pZCBTY3JvbGxWaWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAg
ICBib29sIHNlbmRDb250ZW50UmVzaXplZE5vdGlmaWNhdGlvbiA9IGZhbHNlOwogICAgICAgICAK
ICAgICAgICAgSW50U2l6ZSBkb2NTaXplID0gY29udGVudHNTaXplKCk7Ci0gICAgICAgIEludFNp
emUgZnJhbWVTaXplID0gbV9ib3VuZHNTaXplOworICAgICAgICBJbnRTaXplIGZyYW1lU2l6ZSA9
IGZyYW1lUmVjdCgpLnNpemUoKTsKIAogICAgICAgICBpZiAoaFNjcm9sbCA9PSBTY3JvbGxiYXJB
dXRvKSB7CiAgICAgICAgICAgICBuZXdIYXNIb3Jpem9udGFsU2Nyb2xsYmFyID0gZG9jU2l6ZS53
aWR0aCgpID4gdmlzaWJsZVdpZHRoKCk7CkBAIC01MzIsOCArNTMyLDggQEAgdm9pZCBTY3JvbGxW
aWV3Ojp1cGRhdGVTY3JvbGxiYXJzKGNvbnN0IAogICAgICAgICBpbnQgcGFnZVN0ZXAgPSBtYXgo
bWF4PGludD4oY2xpZW50V2lkdGggKiBTY3JvbGxiYXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBh
Z2luZygpLCBjbGllbnRXaWR0aCAtIFNjcm9sbGJhcjo6bWF4T3ZlcmxhcEJldHdlZW5QYWdlcygp
KSwgMSk7CiAgICAgICAgIEludFJlY3Qgb2xkUmVjdChtX2hvcml6b250YWxTY3JvbGxiYXItPmZy
YW1lUmVjdCgpKTsKICAgICAgICAgSW50UmVjdCBoQmFyUmVjdCA9IEludFJlY3QoMCwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ib3VuZHNTaXplLmhlaWdodCgpIC0gbV9o
b3Jpem9udGFsU2Nyb2xsYmFyLT5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbV9ib3VuZHNTaXplLndpZHRoKCkgLSAobV92ZXJ0aWNhbFNjcm9sbGJhciA/IG1f
dmVydGljYWxTY3JvbGxiYXItPndpZHRoKCkgOiAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVpZ2h0KCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aCgpIC0gKG1fdmVydGljYWxT
Y3JvbGxiYXIgPyBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpIDogMCksCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+aGVpZ2h0KCkp
OwogICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPnNldEZyYW1lUmVjdChoQmFyUmVjdCk7
CiAgICAgICAgIGlmICghbV9zY3JvbGxiYXJzU3VwcHJlc3NlZCAmJiBvbGRSZWN0ICE9IG1faG9y
aXpvbnRhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpCkBAIC01NTIsMTAgKzU1MiwxMCBAQCB2b2lk
IFNjcm9sbFZpZXc6OnVwZGF0ZVNjcm9sbGJhcnMoY29uc3QgCiAgICAgICAgIG1fdmVydGljYWxT
Y3JvbGxiYXItPnNldEVuYWJsZWQoY29udGVudHNIZWlnaHQoKSA+IGNsaWVudEhlaWdodCk7CiAg
ICAgICAgIGludCBwYWdlU3RlcCA9IG1heChtYXg8aW50PihjbGllbnRIZWlnaHQgKiBTY3JvbGxi
YXI6Om1pbkZyYWN0aW9uVG9TdGVwV2hlblBhZ2luZygpLCBjbGllbnRIZWlnaHQgLSBTY3JvbGxi
YXI6Om1heE92ZXJsYXBCZXR3ZWVuUGFnZXMoKSksIDEpOwogICAgICAgICBJbnRSZWN0IG9sZFJl
Y3QobV92ZXJ0aWNhbFNjcm9sbGJhci0+ZnJhbWVSZWN0KCkpOwotICAgICAgICBJbnRSZWN0IHZC
YXJSZWN0ID0gSW50UmVjdChtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxi
YXItPndpZHRoKCksIAorICAgICAgICBJbnRSZWN0IHZCYXJSZWN0ID0gSW50UmVjdCh3aWR0aCgp
IC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+d2lkdGgoKSwgCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1fdmVy
dGljYWxTY3JvbGxiYXItPndpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIChtX2hvcml6b250YWxTY3JvbGxiYXIgPyBtX2hv
cml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpIDogMCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWlnaHQoKSAtIChtX2hvcml6b250YWxTY3JvbGxiYXIgPyBtX2hvcml6
b250YWxTY3JvbGxiYXItPmhlaWdodCgpIDogMCkpOwogICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xs
YmFyLT5zZXRGcmFtZVJlY3QodkJhclJlY3QpOwogICAgICAgICBpZiAoIW1fc2Nyb2xsYmFyc1N1
cHByZXNzZWQgJiYgb2xkUmVjdCAhPSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT5mcmFtZVJlY3QoKSkK
ICAgICAgICAgICAgIG1fdmVydGljYWxTY3JvbGxiYXItPmludmFsaWRhdGUoKTsKQEAgLTgyNywz
MCArODI3LDYgQEAgdm9pZCBTY3JvbGxWaWV3OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UgogICAg
IGZyYW1lUmVjdHNDaGFuZ2VkKCk7CiB9CiAKLXZvaWQgU2Nyb2xsVmlldzo6c2V0Qm91bmRzU2l6
ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKQotewotICAgIGlmIChuZXdTaXplID09IG1fYm91bmRz
U2l6ZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2lkZ2V0OjpzZXRCb3VuZHNTaXplKG5ld1Np
emUpOwotICAgIG1fYm91bmRzU2l6ZSA9IG5ld1NpemU7Ci0KLSAgICBpZiAocGxhdGZvcm1XaWRn
ZXQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgdXBkYXRlU2Nyb2xsYmFycyhtX3Njcm9sbE9m
ZnNldCk7Ci0gICAgaWYgKCFtX3VzZUZpeGVkTGF5b3V0KQotICAgICAgICBjb250ZW50c1Jlc2l6
ZWQoKTsKLQotICAgIHBvc2l0aW9uU2Nyb2xsYmFyTGF5ZXJzKCk7Ci19Ci0KLXZvaWQgU2Nyb2xs
Vmlldzo6c2V0SW5pdGlhbEJvdW5kc1NpemUoY29uc3QgSW50U2l6ZSYgbmV3U2l6ZSkKLXsKLSAg
ICBBU1NFUlQobV9ib3VuZHNTaXplLmlzWmVybygpKTsKLSAgICBtX2JvdW5kc1NpemUgPSBuZXdT
aXplOwotfQotCiB2b2lkIFNjcm9sbFZpZXc6OmZyYW1lUmVjdHNDaGFuZ2VkKCkKIHsKICAgICBp
ZiAocGxhdGZvcm1XaWRnZXQoKSkKQEAgLTkyMSwxOCArODk3LDE4IEBAIEludFJlY3QgU2Nyb2xs
Vmlldzo6c2Nyb2xsQ29ybmVyUmVjdCgpIGMKICAgICBpZiAoaGFzT3ZlcmxheVNjcm9sbGJhcnMo
KSkKICAgICAgICAgcmV0dXJuIGNvcm5lclJlY3Q7CiAKLSAgICBpZiAobV9ob3Jpem9udGFsU2Ny
b2xsYmFyICYmIG1fYm91bmRzU2l6ZS53aWR0aCgpIC0gbV9ob3Jpem9udGFsU2Nyb2xsYmFyLT53
aWR0aCgpID4gMCkgeworICAgIGlmIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgd2lkdGgoKSAt
IG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSA+IDApIHsKICAgICAgICAgY29ybmVyUmVj
dC51bml0ZShJbnRSZWN0KG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fYm91bmRzU2l6ZS5oZWlnaHQoKSAtIG1faG9yaXpv
bnRhbFNjcm9sbGJhci0+aGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1faG9yaXpvbnRhbFNjcm9sbGJhci0+d2lkdGgoKSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV9ob3Jpem9udGFs
U2Nyb2xsYmFyLT5oZWlnaHQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdp
ZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCksCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2hvcml6b250YWxTY3JvbGxiYXItPmhlaWdodCgpKSk7CiAgICAg
fQogCi0gICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLmhlaWdodCgp
IC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkgPiAwKSB7Ci0gICAgICAgIGNvcm5lclJl
Y3QudW5pdGUoSW50UmVjdChtX2JvdW5kc1NpemUud2lkdGgoKSAtIG1fdmVydGljYWxTY3JvbGxi
YXItPndpZHRoKCksCisgICAgaWYgKG1fdmVydGljYWxTY3JvbGxiYXIgJiYgaGVpZ2h0KCkgLSBt
X3ZlcnRpY2FsU2Nyb2xsYmFyLT5oZWlnaHQoKSA+IDApIHsKKyAgICAgICAgY29ybmVyUmVjdC51
bml0ZShJbnRSZWN0KHdpZHRoKCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFyLT53aWR0aCgpLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0
KCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT53aWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ib3VuZHNTaXpl
LmhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVpZ2h0KCkpKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCgpIC0gbV92ZXJ0aWNhbFNjcm9sbGJhci0+aGVp
Z2h0KCkpKTsKICAgICB9CiAgICAgCiAgICAgcmV0dXJuIGNvcm5lclJlY3Q7CkBAIC0xMTMyLDgg
KzExMDgsOCBAQCBib29sIFNjcm9sbFZpZXc6OmlzUG9pbnRJblNjcm9sbGJhckNvcm5lCiAKIGJv
b2wgU2Nyb2xsVmlldzo6c2Nyb2xsYmFyQ29ybmVyUHJlc2VudCgpIGNvbnN0CiB7Ci0gICAgcmV0
dXJuIChtX2hvcml6b250YWxTY3JvbGxiYXIgJiYgbV9ib3VuZHNTaXplLndpZHRoKCkgLSBtX2hv
cml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKSB8fAotICAgICAgICAgICAobV92ZXJ0aWNh
bFNjcm9sbGJhciAmJiBtX2JvdW5kc1NpemUuaGVpZ2h0KCkgLSBtX3ZlcnRpY2FsU2Nyb2xsYmFy
LT5oZWlnaHQoKSA+IDApOworICAgIHJldHVybiAobV9ob3Jpem9udGFsU2Nyb2xsYmFyICYmIHdp
ZHRoKCkgLSBtX2hvcml6b250YWxTY3JvbGxiYXItPndpZHRoKCkgPiAwKQorICAgICAgICB8fCAo
bV92ZXJ0aWNhbFNjcm9sbGJhciAmJiBoZWlnaHQoKSAtIG1fdmVydGljYWxTY3JvbGxiYXItPmhl
aWdodCgpID4gMCk7CiB9CiAKIEludFJlY3QgU2Nyb2xsVmlldzo6Y29udmVydEZyb21TY3JvbGxi
YXJUb0NvbnRhaW5pbmdWaWV3KGNvbnN0IFNjcm9sbGJhciogc2Nyb2xsYmFyLCBjb25zdCBJbnRS
ZWN0JiBsb2NhbFJlY3QpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TY3Jv
bGxWaWV3LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Nyb2xsVmll
dy5oCShyZXZpc2lvbiA5NTY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Njcm9sbFZp
ZXcuaAkod29ya2luZyBjb3B5KQpAQCAtMjI3LDcgKzIyNyw2IEBAIHB1YmxpYzoKICAgICAKICAg
ICAvLyBXaWRnZXQgb3ZlcnJpZGUgdG8gdXBkYXRlIG91ciBzY3JvbGxiYXJzIGFuZCBub3RpZnkg
b3VyIGNvbnRlbnRzIG9mIHRoZSByZXNpemUuCiAgICAgdmlydHVhbCB2b2lkIHNldEZyYW1lUmVj
dChjb25zdCBJbnRSZWN0Jik7Ci0gICAgdmlydHVhbCB2b2lkIHNldEJvdW5kc1NpemUoY29uc3Qg
SW50U2l6ZSYpOwogCiAgICAgLy8gRm9yIHBsYXRmb3JtcyB0aGF0IG5lZWQgdG8gaGl0IHRlc3Qg
c2Nyb2xsYmFycyBmcm9tIHdpdGhpbiB0aGUgZW5naW5lJ3MgZXZlbnQgaGFuZGxlcnMgKGxpa2Ug
V2luMzIpLgogICAgIFNjcm9sbGJhciogc2Nyb2xsYmFyQXRQb2ludChjb25zdCBJbnRQb2ludCYg
d2luZG93UG9pbnQpOwpAQCAtMzAyLDkgKzMwMSw2IEBAIHByb3RlY3RlZDoKIAogICAgIEludFJl
Y3QgZml4ZWRWaXNpYmxlQ29udGVudFJlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpeGVkVmlzaWJs
ZUNvbnRlbnRSZWN0OyB9CiAKLSAgICBJbnRTaXplIGJvdW5kc1NpemUoKSBjb25zdCB7IHJldHVy
biBtX2JvdW5kc1NpemU7IH0KLSAgICB2b2lkIHNldEluaXRpYWxCb3VuZHNTaXplKGNvbnN0IElu
dFNpemUmKTsKLQogICAgIC8vIFRoZXNlIGZ1bmN0aW9ucyBhcmUgdXNlZCB0byBjcmVhdGUvZGVz
dHJveSBzY3JvbGxiYXJzLgogICAgIHZvaWQgc2V0SGFzSG9yaXpvbnRhbFNjcm9sbGJhcihib29s
KTsKICAgICB2b2lkIHNldEhhc1ZlcnRpY2FsU2Nyb2xsYmFyKGJvb2wpOwpAQCAtMzYzLDggKzM1
OSw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIG1fY29udGFpbnNTY3JvbGxhYmxlQXJlYVdpdGhP
dmVybGF5U2Nyb2xsYmFyczsKIAotICAgIEludFNpemUgbV9ib3VuZHNTaXplOwotCiAgICAgdm9p
ZCBpbml0KCk7CiAgICAgdm9pZCBkZXN0cm95KCk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL1dpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
V2lkZ2V0LmNwcAkocmV2aXNpb24gOTU2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9X
aWRnZXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDYsMTAgKzEwNiw2IEBAIEludFBvaW50IFdp
ZGdldDo6Y29udmVydFRvQ29udGFpbmluZ1dpbmQKIH0KIAogI2lmICFQTEFURk9STShNQUMpCi12
b2lkIFdpZGdldDo6c2V0Qm91bmRzU2l6ZShjb25zdCBJbnRTaXplJikKLXsKLX0KLQogSW50UmVj
dCBXaWRnZXQ6OmNvbnZlcnRGcm9tUm9vdFRvQ29udGFpbmluZ1dpbmRvdyhjb25zdCBXaWRnZXQq
LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewogICAgIHJldHVybiByZWN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vV2lkZ2V0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vV2lkZ2V0LmgJKHJldmlzaW9uIDk1NjQ3KQorKysgU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vV2lkZ2V0LmgJKHdvcmtpbmcgY29weSkKQEAgLTE0OSwxMiArMTQ5LDExIEBAIHB1Ymxp
YzoKICAgICBJbnRQb2ludCBsb2NhdGlvbigpIGNvbnN0IHsgcmV0dXJuIGZyYW1lUmVjdCgpLmxv
Y2F0aW9uKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYpOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCb3VuZHNTaXplKGNvbnN0IEludFNpemUmKTsKICAg
ICB2aXJ0dWFsIEludFJlY3QgZnJhbWVSZWN0KCkgY29uc3Q7CiAgICAgSW50UmVjdCBib3VuZHNS
ZWN0KCkgY29uc3QgeyByZXR1cm4gSW50UmVjdCgwLCAwLCB3aWR0aCgpLCAgaGVpZ2h0KCkpOyB9
CiAKLSAgICB2b2lkIHJlc2l6ZShpbnQgdywgaW50IGgpIHsgc2V0RnJhbWVSZWN0KEludFJlY3Qo
eCgpLCB5KCksIHcsIGgpKTsgc2V0Qm91bmRzU2l6ZShJbnRTaXplKHcsIGgpKTsgfQotICAgIHZv
aWQgcmVzaXplKGNvbnN0IEludFNpemUmIHMpIHsgc2V0RnJhbWVSZWN0KEludFJlY3QobG9jYXRp
b24oKSwgcykpOyBzZXRCb3VuZHNTaXplKHMpOyB9CisgICAgdm9pZCByZXNpemUoaW50IHcsIGlu
dCBoKSB7IHNldEZyYW1lUmVjdChJbnRSZWN0KHgoKSwgeSgpLCB3LCBoKSk7IH0KKyAgICB2b2lk
IHJlc2l6ZShjb25zdCBJbnRTaXplJiBzKSB7IHNldEZyYW1lUmVjdChJbnRSZWN0KGxvY2F0aW9u
KCksIHMpKTsgfQogICAgIHZvaWQgbW92ZShpbnQgeCwgaW50IHkpIHsgc2V0RnJhbWVSZWN0KElu
dFJlY3QoeCwgeSwgd2lkdGgoKSwgaGVpZ2h0KCkpKTsgfQogICAgIHZvaWQgbW92ZShjb25zdCBJ
bnRQb2ludCYgcCkgeyBzZXRGcmFtZVJlY3QoSW50UmVjdChwLCBzaXplKCkpKTsgfQogCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9Qb3B1cENvbnRhaW5lci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUG9wdXBDb250YWlu
ZXIuY3BwCShyZXZpc2lvbiA5NTY0NykKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BvcHVwQ29udGFpbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDA5LDcgKzQwOSw2IEBA
IHZvaWQgUG9wdXBDb250YWluZXI6OnJlZnJlc2goY29uc3QgSW50UmUKICAgICBsb2NhdGlvbi5t
b3ZlKDAsIHRhcmdldENvbnRyb2xSZWN0LmhlaWdodCgpKTsKIAogICAgIGxpc3RCb3goKS0+c2V0
QmFzZVdpZHRoKG1heChtX29yaWdpbmFsRnJhbWVSZWN0LndpZHRoKCkgLSBrQm9yZGVyU2l6ZSAq
IDIsIDApKTsKLSAgICBzZXRCb3VuZHNTaXplKG1fb3JpZ2luYWxGcmFtZVJlY3Quc2l6ZSgpKTsK
IAogICAgIGxpc3RCb3goKS0+dXBkYXRlRnJvbUVsZW1lbnQoKTsKICAgICAvLyBTdG9yZSB0aGUg
b3JpZ2luYWwgc2l6ZSB0byBjaGVjayBpZiB3ZSBuZWVkIHRvIHJlcXVlc3QgdGhlIGxvY2F0aW9u
LgpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Njcm9sbFZpZXdHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9TY3JvbGxWaWV3R3RrLmNw
cAkocmV2aXNpb24gOTU2NDcpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvU2Nyb2xs
Vmlld0d0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwLDggKzcwLDggQEAgSW50UmVjdCBTY3Jv
bGxWaWV3Ojp2aXNpYmxlQ29udGVudFJlY3QoYgogICAgIC8vIHNjcm9sbGJhciB3aWR0aCBzaG91
bGQgYmUuCiAgICAgaWYgKCFzaG91bGRDcmVhdGVNYWluRnJhbWVTY3JvbGxiYXIodGhpcykpIHsK
ICAgICAgICAgcmV0dXJuIEludFJlY3QoSW50UG9pbnQobV9zY3JvbGxPZmZzZXQud2lkdGgoKSwg
bV9zY3JvbGxPZmZzZXQuaGVpZ2h0KCkpLAotICAgICAgICAgICAgICAgICAgICAgICBJbnRTaXpl
KG1heCgwLCBtX2JvdW5kc1NpemUud2lkdGgoKSAtICh2ZXJ0aWNhbFNjcm9sbGJhcigpICYmICFp
bmNsdWRlU2Nyb2xsYmFycyA/IHZlcnRpY2FsU2Nyb2xsYmFyKCktPndpZHRoKCkgOiAwKSksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4KDAsIG1fYm91bmRzU2l6ZS5oZWlnaHQo
KSAtIChob3Jpem9udGFsU2Nyb2xsYmFyKCkgJiYgIWluY2x1ZGVTY3JvbGxiYXJzID8gaG9yaXpv
bnRhbFNjcm9sbGJhcigpLT5oZWlnaHQoKSA6IDApKSkpOworICAgICAgICAgICAgICAgICAgICAg
ICBJbnRTaXplKG1heCgwLCB3aWR0aCgpIC0gKHZlcnRpY2FsU2Nyb2xsYmFyKCkgJiYgIWluY2x1
ZGVTY3JvbGxiYXJzID8gdmVydGljYWxTY3JvbGxiYXIoKS0+d2lkdGgoKSA6IDApKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtYXgoMCwgaGVpZ2h0KCkgLSAoaG9yaXpvbnRhbFNj
cm9sbGJhcigpICYmICFpbmNsdWRlU2Nyb2xsYmFycyA/IGhvcml6b250YWxTY3JvbGxiYXIoKS0+
aGVpZ2h0KCkgOiAwKSkpKTsKICAgICB9CiAKICAgICAvLyBXZSBkb24ndCBoYXZlIGEgcGFyZW50
LCBzbyB3ZSBhcmUgdGhlIG1haW4gZnJhbWUgYW5kIHRodXMgaGF2ZQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1dpZGdldE1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvV2lkZ2V0TWFjLm1tCShyZXZpc2lvbiA5NTY0NykKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9XaWRnZXRNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTMx
LDcgKzMxLDYgQEAKICNpbXBvcnQgIkNocm9tZS5oIgogI2ltcG9ydCAiQ3Vyc29yLmgiCiAjaW1w
b3J0ICJEb2N1bWVudC5oIgotI2ltcG9ydCAiRmxvYXRDb252ZXJzaW9uLmgiCiAjaW1wb3J0ICJG
b250LmgiCiAjaW1wb3J0ICJGcmFtZS5oIgogI2ltcG9ydCAiR3JhcGhpY3NDb250ZXh0LmgiCkBA
IC0xODksMjUgKzE4OCw2IEBAIHZvaWQgV2lkZ2V0OjpzZXRGcmFtZVJlY3QoY29uc3QgSW50UmVj
dCYKICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogfQogCi12b2lkIFdpZGdldDo6c2V0
Qm91bmRzU2l6ZShjb25zdCBJbnRTaXplJiBzaXplKQotewotICAgIE5TU2l6ZSBuc1NpemUgPSBz
aXplOwotCi0gICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgIE5TVmlldyAqb3V0
ZXJWaWV3ID0gZ2V0T3V0ZXJWaWV3KCk7Ci0gICAgaWYgKCFvdXRlclZpZXcpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIC8vIFRha2UgYSByZWZlcmVuY2UgdG8gdGhpcyBXaWRnZXQsIGJlY2F1c2Ug
c2VuZGluZyBtZXNzYWdlcyB0byBvdXRlclZpZXcgY2FuIGludm9rZSBhcmJpdHJhcnkKLSAgICAv
LyBjb2RlLCB3aGljaCBjYW4gZGVyZWYgaXQuCi0gICAgUmVmUHRyPFdpZGdldD4gcHJvdGVjdGVk
VGhpcyh0aGlzKTsKLSAgICBpZiAoIU5TRXF1YWxTaXplcyhuc1NpemUsIFtvdXRlclZpZXcgYm91
bmRzXS5zaXplKSkgewotICAgICAgICBbb3V0ZXJWaWV3IHNldEJvdW5kc1NpemU6bnNTaXplXTsK
LSAgICAgICAgW291dGVyVmlldyBzZXROZWVkc0Rpc3BsYXk6Tk9dOwotICAgIH0KLSAgICBFTkRf
QkxPQ0tfT0JKQ19FWENFUFRJT05TOwotfQotCiBOU1ZpZXcgKldpZGdldDo6Z2V0T3V0ZXJWaWV3
KCkgY29uc3QKIHsKICAgICBOU1ZpZXcgKnZpZXcgPSBwbGF0Zm9ybVdpZGdldCgpOwpAQCAtMjMy
LDMwICsyMTIsMTEgQEAgdm9pZCBXaWRnZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgYwog
ICAgIC8vIGNvZGUsIHdoaWNoIGNhbiBkZXJlZiBpdC4KICAgICBSZWZQdHI8V2lkZ2V0PiBwcm90
ZWN0ZWRUaGlzKHRoaXMpOwogCi0gICAgSW50UG9pbnQgdHJhbnNmb3JtT3JpZ2luID0gZnJhbWVS
ZWN0KCkubG9jYXRpb24oKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gd2lkZ2V0VG9WaWV3VHJhbmZv
cm0gPSBtYWtlTWFwQmV0d2VlblJlY3RzKEludFJlY3QoSW50UG9pbnQoKSwgZnJhbWVSZWN0KCku
c2l6ZSgpKSwgW3ZpZXcgYm91bmRzXSk7Ci0KICAgICBOU0dyYXBoaWNzQ29udGV4dCAqY3VycmVu
dENvbnRleHQgPSBbTlNHcmFwaGljc0NvbnRleHQgY3VycmVudENvbnRleHRdOwogICAgIGlmIChj
dXJyZW50Q29udGV4dCA9PSBbW3ZpZXcgd2luZG93XSBncmFwaGljc0NvbnRleHRdIHx8ICFbY3Vy
cmVudENvbnRleHQgaXNEcmF3aW5nVG9TY3JlZW5dKSB7CiAgICAgICAgIC8vIFRoaXMgaXMgdGhl
IGNvbW1vbiBjYXNlIG9mIGRyYXdpbmcgaW50byBhIHdpbmRvdyBvciBwcmludGluZy4KICAgICAg
ICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwotICAgICAgICAKLSAgICAgICAgQ0dDb250
ZXh0UmVmIGNvbnRleHQgPSAoQ0dDb250ZXh0UmVmKVtjdXJyZW50Q29udGV4dCBncmFwaGljc1Bv
cnRdOwotCi0gICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY29udGV4dCk7Ci0gICAgICAgIENH
Q29udGV4dFRyYW5zbGF0ZUNUTShjb250ZXh0LCB0cmFuc2Zvcm1PcmlnaW4ueCgpLCB0cmFuc2Zv
cm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY29udGV4dCwgbmFycm93
UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9ybS54U2NhbGUoKSksIG5hcnJvd1By
ZWNpc2lvblRvRmxvYXQod2lkZ2V0VG9WaWV3VHJhbmZvcm0ueVNjYWxlKCkpKTsKLSAgICAgICAg
Q0dDb250ZXh0VHJhbnNsYXRlQ1RNKGNvbnRleHQsIC10cmFuc2Zvcm1PcmlnaW4ueCgpLCAtdHJh
bnNmb3JtT3JpZ2luLnkoKSk7Ci0KLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByOwotICAg
ICAgICBkaXJ0eVJlY3QubW92ZUJ5KC10cmFuc2Zvcm1PcmlnaW4pOwotICAgICAgICBpZiAoIVt2
aWV3IGlzRmxpcHBlZF0pCi0gICAgICAgICAgICBkaXJ0eVJlY3Quc2V0WShbdmlldyBib3VuZHNd
LnNpemUuaGVpZ2h0IC0gZGlydHlSZWN0Lm1heFkoKSk7Ci0KLSAgICAgICAgW3ZpZXcgZGlzcGxh
eVJlY3RJZ25vcmluZ09wYWNpdHk6ZGlydHlSZWN0XTsKLQotICAgICAgICBDR0NvbnRleHRSZXN0
b3JlR1N0YXRlKGNvbnRleHQpOwotCisgICAgICAgIFt2aWV3IGRpc3BsYXlSZWN0SWdub3JpbmdP
cGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZpZXc6W3ZpZXcgc3VwZXJ2aWV3XV1dOwog
ICAgICAgICBFTkRfQkxPQ0tfT0JKQ19FWENFUFRJT05TOwogICAgIH0gZWxzZSB7CiAgICAgICAg
IC8vIFRoaXMgaXMgdGhlIGNhc2Ugb2YgZHJhd2luZyBpbnRvIGEgYml0bWFwIGNvbnRleHQgb3Ro
ZXIgdGhhbiBhIHdpbmRvdyBiYWNraW5nIHN0b3JlLiBJdCBnZXRzIGhpdCBiZW5lYXRoCkBAIC0y
ODAsMTAgKzI0MSw2IEBAIHZvaWQgV2lkZ2V0OjpwYWludChHcmFwaGljc0NvbnRleHQqIHAsIGMK
ICAgICAgICAgQVNTRVJUKGNnQ29udGV4dCA9PSBbY3VycmVudENvbnRleHQgZ3JhcGhpY3NQb3J0
XSk7CiAgICAgICAgIENHQ29udGV4dFNhdmVHU3RhdGUoY2dDb250ZXh0KTsKIAotICAgICAgICBD
R0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCB0cmFuc2Zvcm1PcmlnaW4ueCgpLCB0cmFu
c2Zvcm1PcmlnaW4ueSgpKTsKLSAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCBu
YXJyb3dQcmVjaXNpb25Ub0Zsb2F0KHdpZGdldFRvVmlld1RyYW5mb3JtLnhTY2FsZSgpKSwgbmFy
cm93UHJlY2lzaW9uVG9GbG9hdCh3aWRnZXRUb1ZpZXdUcmFuZm9ybS55U2NhbGUoKSkpOwotICAg
ICAgICBDR0NvbnRleHRUcmFuc2xhdGVDVE0oY2dDb250ZXh0LCAtdHJhbnNmb3JtT3JpZ2luLngo
KSwgLXRyYW5zZm9ybU9yaWdpbi55KCkpOwotCiAgICAgICAgIE5TUmVjdCB2aWV3RnJhbWUgPSBb
dmlldyBmcmFtZV07CiAgICAgICAgIE5TUmVjdCB2aWV3Qm91bmRzID0gW3ZpZXcgYm91bmRzXTsK
ICAgICAgICAgLy8gU2V0IHVwIHRoZSB0cmFuc2xhdGlvbiBhbmQgKGZsaXBwZWQpIG9yaWVudGF0
aW9uIG9mIHRoZSBncmFwaGljcyBjb250ZXh0LiBJbiBub3JtYWwgZHJhd2luZywgQXBwS2l0IGRv
ZXMgaXQgYXMgaXQgZGVzY2VuZHMgZG93bgpAQCAtMjkxLDE1ICsyNDgsMTAgQEAgdm9pZCBXaWRn
ZXQ6OnBhaW50KEdyYXBoaWNzQ29udGV4dCogcCwgYwogICAgICAgICBDR0NvbnRleHRUcmFuc2xh
dGVDVE0oY2dDb250ZXh0LCB2aWV3RnJhbWUub3JpZ2luLnggLSB2aWV3Qm91bmRzLm9yaWdpbi54
LCB2aWV3RnJhbWUub3JpZ2luLnkgKyB2aWV3RnJhbWUuc2l6ZS5oZWlnaHQgKyB2aWV3Qm91bmRz
Lm9yaWdpbi55KTsKICAgICAgICAgQ0dDb250ZXh0U2NhbGVDVE0oY2dDb250ZXh0LCAxLCAtMSk7
CiAKLSAgICAgICAgSW50UmVjdCBkaXJ0eVJlY3QgPSByOwotICAgICAgICBkaXJ0eVJlY3QubW92
ZUJ5KC10cmFuc2Zvcm1PcmlnaW4pOwotICAgICAgICBpZiAoIVt2aWV3IGlzRmxpcHBlZF0pCi0g
ICAgICAgICAgICBkaXJ0eVJlY3Quc2V0WShbdmlldyBib3VuZHNdLnNpemUuaGVpZ2h0IC0gZGly
dHlSZWN0Lm1heFkoKSk7Ci0KICAgICAgICAgQkVHSU5fQkxPQ0tfT0JKQ19FWENFUFRJT05TOwog
ICAgICAgICB7CiAgICAgICAgICAgICBOU0dyYXBoaWNzQ29udGV4dCAqbnNDb250ZXh0ID0gW05T
R3JhcGhpY3NDb250ZXh0IGdyYXBoaWNzQ29udGV4dFdpdGhHcmFwaGljc1BvcnQ6Y2dDb250ZXh0
IGZsaXBwZWQ6WUVTXTsKLSAgICAgICAgICAgIFt2aWV3IGRpc3BsYXlSZWN0SWdub3JpbmdPcGFj
aXR5OmRpcnR5UmVjdCBpbkNvbnRleHQ6bnNDb250ZXh0XTsKKyAgICAgICAgICAgIFt2aWV3IGRp
c3BsYXlSZWN0SWdub3JpbmdPcGFjaXR5Olt2aWV3IGNvbnZlcnRSZWN0OnIgZnJvbVZpZXc6W3Zp
ZXcgc3VwZXJ2aWV3XV0gaW5Db250ZXh0Om5zQ29udGV4dF07CiAgICAgICAgIH0KICAgICAgICAg
RU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlcldpZGdldC5jcHAJKHJldmlzaW9uIDk1NjQ3KQorKysgU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlcldpZGdldC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0MCw3ICsxNDAs
NyBAQCBSZW5kZXJXaWRnZXQ6On5SZW5kZXJXaWRnZXQoKQogICAgIGNsZWFyV2lkZ2V0KCk7CiB9
CiAKLWJvb2wgUmVuZGVyV2lkZ2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBm
cmFtZSwgY29uc3QgSW50U2l6ZSYgYm91bmRzU2l6ZSkKK2Jvb2wgUmVuZGVyV2lkZ2V0OjpzZXRX
aWRnZXRHZW9tZXRyeShjb25zdCBJbnRSZWN0JiBmcmFtZSkKIHsKICAgICBpZiAoIW5vZGUoKSkK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTU3LDggKzE1Nyw2IEBAIGJvb2wgUmVuZGVyV2lk
Z2V0OjpzZXRXaWRnZXRHZW9tZXRyeShjb24KICAgICBSZW5kZXJXaWRnZXRQcm90ZWN0b3IgcHJv
dGVjdG9yKHRoaXMpOwogICAgIFJlZlB0cjxOb2RlPiBwcm90ZWN0ZWROb2RlKG5vZGUoKSk7CiAg
ICAgbV93aWRnZXQtPnNldEZyYW1lUmVjdChmcmFtZSk7Ci0gICAgaWYgKG1fd2lkZ2V0KSAvLyBz
ZXRGcmFtZVJlY3QgY2FuIHJ1biBhcmJpdHJhcnkgc2NyaXB0LCB3aGljaCBtaWdodCBjbGVhciBt
X3dpZGdldC4KLSAgICAgICAgbV93aWRnZXQtPnNldEJvdW5kc1NpemUoYm91bmRzU2l6ZSk7CiAg
ICAgCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogICAgIGlmIChoYXNMYXllcigp
ICYmIGxheWVyKCktPmlzQ29tcG9zaXRlZCgpKQpAQCAtMTkwLDkgKzE4OCw5IEBAIHZvaWQgUmVu
ZGVyV2lkZ2V0OjpzZXRXaWRnZXQoUGFzc1JlZlB0cjwKICAgICAgICAgICAgICAgICBJbnRSZWN0
IGFic29sdXRlQ29udGVudEJveCA9IEludFJlY3QobG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFF1
YWQoY29udGVudEJveCkpLmJvdW5kaW5nQm94KCkpOwogICAgICAgICAgICAgICAgIGlmIChtX3dp
ZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICAgICAgICAgICAgICBjb250ZW50Qm94LnNl
dExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKLSAgICAgICAgICAgICAg
ICAgICAgc2V0V2lkZ2V0R2VvbWV0cnkoY29udGVudEJveCwgY29udGVudEJveC5zaXplKCkpOwor
ICAgICAgICAgICAgICAgICAgICBzZXRXaWRnZXRHZW9tZXRyeShjb250ZW50Qm94KTsKICAgICAg
ICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICAgICAgc2V0V2lkZ2V0R2VvbWV0cnko
YWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNpemUoKSk7CisgICAgICAgICAgICAgICAg
ICAgIHNldFdpZGdldEdlb21ldHJ5KGFic29sdXRlQ29udGVudEJveCk7CiAgICAgICAgICAgICB9
CiAgICAgICAgICAgICBpZiAoc3R5bGUoKS0+dmlzaWJpbGl0eSgpICE9IFZJU0lCTEUpCiAgICAg
ICAgICAgICAgICAgbV93aWRnZXQtPmhpZGUoKTsKQEAgLTMyOCw5ICszMjYsOSBAQCB2b2lkIFJl
bmRlcldpZGdldDo6dXBkYXRlV2lkZ2V0UG9zaXRpb24oCiAgICAgYm9vbCBib3VuZHNDaGFuZ2Vk
OwogICAgIGlmIChtX3dpZGdldC0+aXNGcmFtZVZpZXcoKSkgewogICAgICAgICBjb250ZW50Qm94
LnNldExvY2F0aW9uKGFic29sdXRlQ29udGVudEJveC5sb2NhdGlvbigpKTsKLSAgICAgICAgYm91
bmRzQ2hhbmdlZCA9IHNldFdpZGdldEdlb21ldHJ5KGNvbnRlbnRCb3gsIGNvbnRlbnRCb3guc2l6
ZSgpKTsKKyAgICAgICAgYm91bmRzQ2hhbmdlZCA9IHNldFdpZGdldEdlb21ldHJ5KGNvbnRlbnRC
b3gpOwogICAgIH0gZWxzZQotICAgICAgICBib3VuZHNDaGFuZ2VkID0gc2V0V2lkZ2V0R2VvbWV0
cnkoYWJzb2x1dGVDb250ZW50Qm94LCBjb250ZW50Qm94LnNpemUoKSk7CisgICAgICAgIGJvdW5k
c0NoYW5nZWQgPSBzZXRXaWRnZXRHZW9tZXRyeShhYnNvbHV0ZUNvbnRlbnRCb3gpOwogICAgIAog
ICAgIC8vIGlmIHRoZSBmcmFtZSBib3VuZHMgZ290IGNoYW5nZWQsIG9yIGlmIHZpZXcgbmVlZHMg
bGF5b3V0IChwb3NzaWJseSBpbmRpY2F0aW5nCiAgICAgLy8gY29udGVudCBzaXplIGlzIHdyb25n
KSB3ZSBoYXZlIHRvIGRvIGEgbGF5b3V0IHRvIHNldCB0aGUgcmlnaHQgd2lkZ2V0IHNpemUKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJXaWRnZXQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyV2lkZ2V0LmgJKHJldmlzaW9uIDk1NjQ3
KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlcldpZGdldC5oCSh3b3JraW5nIGNv
cHkpCkBAIC02OSw3ICs2OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCBib29sIG5vZGVBdFBv
aW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiwgSGl0VGVzdFJlc3VsdCYsIGNvbnN0IExheW91dFBv
aW50JiBwb2ludEluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYgYWNjdW11bGF0ZWRPZmZz
ZXQsIEhpdFRlc3RBY3Rpb24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGFwVGVzdFJlc3Vs
dChib29sKTsKIAotICAgIGJvb2wgc2V0V2lkZ2V0R2VvbWV0cnkoY29uc3QgSW50UmVjdCYsIGNv
bnN0IEludFNpemUmKTsKKyAgICBib29sIHNldFdpZGdldEdlb21ldHJ5KGNvbnN0IEludFJlY3Qm
KTsKIAogICAgIFJlZlB0cjxXaWRnZXQ+IG1fd2lkZ2V0OwogICAgIEZyYW1lVmlldyogbV9mcmFt
ZVZpZXc7CkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA5NTY0NykKKysrIFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEx
LTA5LTIxICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CisKKyAgICAgICAg
R2V0IHJpZCBvZiBXaWRnZXQ6OnNldEJvdW5kc1NpemUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY4NDkxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBiYXNpY2FsbHkgcmV2ZXJ0cyBodHRwOi8vdHJh
Yy53ZWJraXQub3JnL2NoYW5nZXNldC83OTE2NyBhbmQgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9j
aGFuZ2VzZXQvNzU4OTcKKyAgICAgICAgd2hpY2ggd2VyZSBhZGRlZCB0byBtYWtlIHpvb20gZ2Vz
dHVyZXMgd29yayB3aXRoIFdlYktpdDEsIGJ1dCBzaW5jZSB3ZSBkb24ndCBzdXBwb3J0IHpvb20g
Z2VzdHVyZXMgaW4gV2ViS2l0MQorICAgICAgICBhbnltb3JlLCBpdCdzIGJldHRlciBmb3IgY29k
ZSBjbGVhbmxpbmVzcyB0byBnZXQgcmlkIG9mIFdpZGdldDo6c2V0Qm91bmRzU2l6ZSBhbmQgdGhl
IGFzc29jaWF0ZWQgY29kZS4gV2hpbGUgdGhpcworICAgICAgICB3aWxsIHVuZm9ydHVuYXRlbHkg
YnJlYWsgdHJhbnNmb3JtZWQgaWZyYW1lcyBpbiBXZWJLaXQxLCBidXQgU2ltb24gc2F5cyB0aGF0
IGl0J3MgYW4gYWNjZXB0YWJsZSB0cmFkZW9mZi4KKworICAgICAgICAqIFBsdWdpbnMvSG9zdGVk
L1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViSG9zdGVkTmV0
c2NhcGVQbHVnaW5WaWV3IHVwZGF0ZUFuZFNldFdpbmRvd10pOgorICAgICAgICAqIFdlYlZpZXcv
V2ViRnJhbWVWaWV3Lm1tOgorCiAyMDExLTA5LTIxICBBbmRyYXMgQmVjc2kgIDxhbmRyYXMuYmVj
c2lAbm9raWEuY29tPgogCiAgICAgICAgIFtRdF0gUmVtb3ZlIFF0IHNwZWNpZmljIGNvZGUgZnJv
bSBjc3MvU2VsZWN0b3JDaGVja2VyLmNwcApJbmRleDogU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9Ib3N0ZWQvV2ViSG9zdGVkTmV0c2NhcGVQbHVnaW5WaWV3Lm1tCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL1dlYkhvc3RlZE5ldHNjYXBlUGx1Z2luVmll
dy5tbQkocmV2aXNpb24gOTU2NDcpCisrKyBTb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3Rl
ZC9XZWJIb3N0ZWROZXRzY2FwZVBsdWdpblZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIxNSwy
MyArMjE1LDYgQEAgLSAodm9pZCl1cGRhdGVBbmRTZXRXaW5kb3cKICAgICBfcHJldmlvdXNTaXpl
ID0gYm91bmRzSW5XaW5kb3cuc2l6ZTsKICAgICAKICAgICBfcHJveHktPnJlc2l6ZShib3VuZHNJ
bldpbmRvdywgdmlzaWJsZVJlY3RJbldpbmRvdyk7Ci0KLSAgICBDR1JlY3QgYm91bmRzID0gTlNS
ZWN0VG9DR1JlY3QoW3NlbGYgYm91bmRzXSk7Ci0gICAgQ0dSZWN0IGZyYW1lID0gTlNSZWN0VG9D
R1JlY3QoW3NlbGYgZnJhbWVdKTsKLSAgICAKLSAgICAvLyBXZSdyZSBub3Qgc2NhbGVkLCBvciBp
biBhIHN1YmZyYW1lCi0gICAgQ0FUcmFuc2Zvcm0zRCBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNm
b3JtM0RJZGVudGl0eTsKLSAgICBpZiAoQ0dTaXplRXF1YWxUb1NpemUoYm91bmRzLnNpemUsIGZy
YW1lLnNpemUpKSB7Ci0gICAgICAgIC8vIFdlJ3JlIGluIGEgc3ViZnJhbWUuIEJhY2tpbmcgc3Rv
cmUgaXMgYm91bmRzSW5XaW5kb3cuc2l6ZS4KLSAgICAgICAgaWYgKGJvdW5kc0luV2luZG93LnNp
emUud2lkdGggJiYgYm91bmRzSW5XaW5kb3cuc2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICBzY2Fs
ZVRyYW5zZm9ybSA9IENBVHJhbnNmb3JtM0RNYWtlU2NhbGUoZnJhbWUuc2l6ZS53aWR0aCAvIGJv
dW5kc0luV2luZG93LnNpemUud2lkdGgsIGZyYW1lLnNpemUuaGVpZ2h0IC8gYm91bmRzSW5XaW5k
b3cuc2l6ZS5oZWlnaHQsIDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFdlJ3JlIGluIHRo
ZSBtYWluIGZyYW1lIHdpdGggc2NhbGluZy4gTmVlZCB0byBtaW1pYyB0aGUgZnJhbWUvYm91bmRz
IHNjYWxpbmcgb24gV2lkZ2V0cy4KLSAgICAgICAgaWYgKGZyYW1lLnNpemUud2lkdGggJiYgZnJh
bWUuc2l6ZS5oZWlnaHQpCi0gICAgICAgICAgICBzY2FsZVRyYW5zZm9ybSA9IENBVHJhbnNmb3Jt
M0RNYWtlU2NhbGUoYm91bmRzLnNpemUud2lkdGggLyBmcmFtZS5zaXplLndpZHRoLCBib3VuZHMu
c2l6ZS5oZWlnaHQgLyBmcmFtZS5zaXplLmhlaWdodCwgMSk7Ci0gICAgfQotCi0gICAgX3BsdWdp
bkxheWVyLmdldCgpLnN1YmxheWVyVHJhbnNmb3JtID0gc2NhbGVUcmFuc2Zvcm07CiB9CiAKIC0g
KHZvaWQpd2luZG93Rm9jdXNDaGFuZ2VkOihCT09MKWhhc0ZvY3VzCkluZGV4OiBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkocmV2aXNpb24gOTU2NDcpCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZyYW1lVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAt
NTEwLDEyICs1MTAsNiBAQCAtICh2b2lkKXNldEZyYW1lU2l6ZTooTlNTaXplKXNpemUKICAgICBb
c3VwZXIgc2V0RnJhbWVTaXplOnNpemVdOwogfQogCi0tICh2b2lkKXNldEJvdW5kc1NpemU6KE5T
U2l6ZSlzaXplCi17Ci0gICAgW3N1cGVyIHNldEJvdW5kc1NpemU6c2l6ZV07Ci0gICAgW1tzZWxm
IF9zY3JvbGxWaWV3XSBzZXRGcmFtZVNpemU6c2l6ZV07Ci19Ci0KIC0gKHZvaWQpdmlld0RpZE1v
dmVUb1dpbmRvdwogewogICAgIC8vIFNlZSBXZWJGcmFtZUxvYWRlckNsaWVudDo6cHJvdmlzaW9u
YWxMb2FkU3RhcnRlZC4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>108509</attachid>
            <date>2011-09-23 12:30:20 -0700</date>
            <delta_ts>2011-09-23 12:30:20 -0700</delta_ts>
            <desc>Chromium failure test case.</desc>
            <filename>abs.html</filename>
            <type>text/html</type>
            <size>112</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">PGh0bWw+CiAgPGJvZHkgc3R5bGU9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2JvdHRvbTowO2xl
ZnQ6MDtyaWdodDowOyBiYWNrZ3JvdW5kLWNvbG9yOnJlZCI+CiAgPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>