<?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>29348</bug_id>
          
          <creation_ts>2009-09-17 14:51:27 -0700</creation_ts>
          <short_desc>[Gtk] Scrollwheel on horizontal scrollbars should slide horizontally</short_desc>
          <delta_ts>2009-09-24 14:59:53 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Minor</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>29693</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Reinout van Schouwen">reinouts</reporter>
          <assigned_to name="Gustavo Noronha (kov)">gustavo</assigned_to>
          <cc>gustavo</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>147948</commentid>
    <comment_count>0</comment_count>
    <who name="Reinout van Schouwen">reinouts</who>
    <bug_when>2009-09-17 14:51:27 -0700</bug_when>
    <thetext>Prompted by https://bugzilla.gnome.org/show_bug.cgi?id=595493 filed against the Gecko backend, but valid for Webkit as well.
The Gtk scrollbar behaviour should be followed so that using the scroll wheel on horizontal scrollbars slides horizontally, instead of vertically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>147950</commentid>
    <comment_count>1</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-17 14:55:14 -0700</bug_when>
    <thetext>Notice that the wrong behavior only happens with scrollbars created by webcore - if you try scrolling like that with scrollbars handled by GtkScrolledWindow (which you get by making the browser window too small on this bug report, for example) it will work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148054</commentid>
    <comment_count>2</comment_count>
      <attachid>39757</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-18 06:15:10 -0700</bug_when>
    <thetext>Created attachment 39757
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148589</commentid>
    <comment_count>3</comment_count>
      <attachid>39838</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-20 18:18:46 -0700</bug_when>
    <thetext>Created attachment 39838
proposed fix

Patch updated addressing suggestion by olliej - avoiding an #if PLATFORM inside the handler itself, calling a method that can be overriden by the platform instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>148762</commentid>
    <comment_count>4</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-09-21 12:18:48 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Created an attachment (id=39838) [details]
&gt; proposed fix
&gt; 
&gt; Patch updated addressing suggestion by olliej - avoiding an #if PLATFORM inside
&gt; the handler itself, calling a method that can be overriden by the platform
&gt; instead.

Just a small comment, as mentioned in bug #29203 we should be at least using gtk_widget_event here, which at least emits all the signals needed to correctly create events.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149500</commentid>
    <comment_count>5</comment_count>
      <attachid>40017</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-23 14:13:20 -0700</bug_when>
    <thetext>Created attachment 40017
patch using proper signal emission technique</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149529</commentid>
    <comment_count>6</comment_count>
      <attachid>40017</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-23 15:48:08 -0700</bug_when>
    <thetext>Comment on attachment 40017
patch using proper signal emission technique


&gt; +        void turnVerticalTicksIntoHorizontal()
&gt; +        {
&gt; +            m_deltaX += m_deltaY;
&gt; +            m_deltaY = 0;
&gt; +
&gt; +            m_wheelTicksX += m_wheelTicksY;
&gt; +            m_wheelTicksY = 0;
&gt; +        }

I&apos;m unhappy with this function, either it is dropping deltax entirely -- m_deltaX = m_deltaY -- or it is rotating the orientation 90 degrees, in which case x and y delta, etc should be swapped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149537</commentid>
    <comment_count>7</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-23 16:08:08 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 40017 [details])
&gt; 
&gt; &gt; +        void turnVerticalTicksIntoHorizontal()
&gt; &gt; +        {
&gt; &gt; +            m_deltaX += m_deltaY;
&gt; &gt; +            m_deltaY = 0;
&gt; &gt; +
&gt; &gt; +            m_wheelTicksX += m_wheelTicksY;
&gt; &gt; +            m_wheelTicksY = 0;
&gt; &gt; +        }
&gt; 
&gt; I&apos;m unhappy with this function, either it is dropping deltax entirely --
&gt; m_deltaX = m_deltaY -- or it is rotating the orientation 90 degrees, in which
&gt; case x and y delta, etc should be swapped.

I can do any of those, but that will not match what GTK+ does (GTK+ does sum the y ticks into the x ones in my tests), so we need to customize it somehow. What do you suggest in this case? Drop deltax for the default implementation, and make a GTK+-specific implementation that behaves like GTK+?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149569</commentid>
    <comment_count>8</comment_count>
      <attachid>40032</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-23 17:31:02 -0700</bug_when>
    <thetext>Created attachment 40032
losing deltaX in favor of deltaY, this time</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149570</commentid>
    <comment_count>9</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-23 17:31:35 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Created an attachment (id=40032) [details]
&gt; losing deltaX in favor of deltaY, this time

As I commented on IRC:

I did not find the code that handles this, but changing the code to lose deltaX doesn&apos;t really change my feel - GTK+ isn&apos;t really able to represent both directions in the same event, tbh, so maybe the point is moot after all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149839</commentid>
    <comment_count>10</comment_count>
      <attachid>40032</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2009-09-24 14:10:33 -0700</bug_when>
    <thetext>Comment on attachment 40032
losing deltaX in favor of deltaY, this time

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149855</commentid>
    <comment_count>11</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-09-24 14:59:53 -0700</bug_when>
    <thetext>Landed as r48735, thanks!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39757</attachid>
            <date>2009-09-18 06:15:10 -0700</date>
            <delta_ts>2009-09-20 18:18:46 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>0001-Implement-correct-horizontal-scrollbar-behavior-for-.patch</filename>
            <type>text/plain</type>
            <size>15810</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSAxZDA3ZGNlYWU0OTFiMjk4N2YzNDY4YzYzOGJjNGFhYmVkZjE5NGUxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IFRodSwgMTcgU2VwIDIwMDkgMjI6NDE6MDggLTAzMDAK
U3ViamVjdDogW1BBVENIXSBJbXBsZW1lbnQgY29ycmVjdCBob3Jpem9udGFsIHNjcm9sbGJhciBi
ZWhhdmlvciBmb3IgR1RLKwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIC4uLi1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVl
bC1zY3JvbGwtZXhwZWN0ZWQudHh0IHwgICAgNCArCiAuLi5vdmVyZmxvdy1zY3JvbGxiYXItaG9y
aXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbCB8ICAxNjIgKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSAr
KysKIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMCArKy0KIFdlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggICAgICAgICAg
ICAgIHwgICAgMSArCiBXZWJDb3JlL3BsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcCAgICAg
ICAgICAgICB8ICAgMTIgKysKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2
ZW50U2VuZGVyLmNwcCAgICAgfCAgIDQ5ICsrKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAyODcgaW5z
ZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRhbC13
aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0CiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hl
ZWwtc2Nyb2xsLmh0bWwKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYjgwMjBmNS4uZGI5ZWRiZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE1IEBACisyMDA5LTA5LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9u
aGFAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3QgZm9yIGNvcnJlY3Qgd2hlZWwgc2Nyb2xsaW5nIGJlaGF2aW9yLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTM0OAor
ICAgICAgICBbR3RrXSBTY3JvbGx3aGVlbCBvbiBob3Jpem9udGFsIHNjcm9sbGJhcnMgc2hvdWxk
IHNsaWRlIGhvcml6b250YWxseQorCisgICAgICAgICogcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMv
b3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jp
em9udGFsLXdoZWVsLXNjcm9sbC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDA5LTA5LTE3ICBH
dXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgog
CiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jp
em9udGFsLXdoZWVsLXNjcm9sbC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9n
dGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVlbC1zY3JvbGwt
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMjkyNzIK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9v
dmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVnIDI5MzQ4OiBUaGlzIHRlc3RzIHRoYXQgdXNpbmcg
dGhlIG1vdXNlIHdoZWVsIHdoaWxlIGhhdmluZyB0aGUgcG9pbnRlciBpbiBhIGhvcml6b250YWwg
c2Nyb2xsYmFyIG1ha2VzIGl0IHNjcm9sbCBob3Jpem9udGFsbHksIGFsc28gd2l0aCBzdHlsZWQg
c2Nyb2xsYmFycy4gT24gc3VjY2VzcywgdGhlIHZlcnRpY2FsIG9mZnNldCBmb3IgYm90aCBkaXZz
IHNob3VsZCBiZSA4MCwgYW5kIHRoZSBob3Jpem9udGEgNDAuCisKK1Njcm9sbCBvZmZzZXQgZm9y
ICdvdmVyZmxvdycgaXMgODAgYW5kIDQwCitTY3JvbGwgb2Zmc2V0IGZvciAnc3R5bGVkJyBpcyA4
MCBhbmQgNDAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJz
L292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sIGIvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250
YWwtd2hlZWwtc2Nyb2xsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4u
NzUyMmZkZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3Jv
bGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sCkBA
IC0wLDAgKzEsMTYyIEBACis8aHRtbD4KKzxzdHlsZT4KK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Ny
b2xsYmFyIHsKKyAgd2lkdGg6MTdweDsKKyAgaGVpZ2h0OjE3cHg7Cit9CisKK2RpdiNzdHlsZWQ6
Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7CisgIGRpc3BsYXk6YmxvY2s7CisgIHdpZHRoOiAx
N3B4OworICBoZWlnaHQ6IDE3cHg7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFy
LWJ1dHRvbjp2ZXJ0aWNhbCB7CisgIGJhY2tncm91bmQtY29sb3I6bGlnaHRibHVlOworICBib3Jk
ZXI6MnB4IHNvbGlkIGJsYWNrOworfQorCitkaXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci1i
dXR0b246aG9yaXpvbnRhbCB7CisgIGJhY2tncm91bmQtY29sb3I6IzIwODAyMDsKKyAgYm9yZGVy
OjJweCBzb2xpZCBibGFjazsKK30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1
bWIgeworICBtaW4td2lkdGg6MjBweDsKKyAgbWluLWhlaWdodDoyMHB4OworICBiYWNrZ3JvdW5k
LWNvbG9yOiBuYXZ5OworICBib3JkZXI6MnB4IHNvbGlkICNjY2NjY2M7Cit9CisKK2RpdiNzdHls
ZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1iOmhvcml6b250YWwgeworICBiYWNrZ3JvdW5kLWNv
bG9yOiAjMDA0MDAwOworfQorCitkaXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b246
ZGlzYWJsZWQgeworICBkaXNwbGF5Om5vbmUKK30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3Jv
bGxiYXItdHJhY2sgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMjA2MGEwOworfQorCitkaXYjc3R5
bGVkOjotd2Via2l0LXNjcm9sbGJhci10cmFjazpob3Jpem9udGFsIHsKKyAgYmFja2dyb3VuZC1j
b2xvcjogIzQwYTA0MDsKK30KKzwvc3R5bGU+Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPHNj
cmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0
Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVu
dGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8ZGl2IGlkPSJvdmVyZmxvdyIgc3R5bGU9ImJvcmRl
cjoycHggc29saWQgYmxhY2s7b3ZlcmZsb3c6YXV0bztoZWlnaHQ6MjAwcHg7d2lkdGg6MjAwcHg7
IGxlZnQ6IDBweDsgdG9wOiAxMDBweDsgcG9zaXRpb246IGFic29sdXRlOyI+Cis8ZGl2IHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO3dpZHRoOjEwMDBweDtoZWlnaHQ6MTAwMHB4OyI+PC9k
aXY+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOnJlZDt3aWR0aDoxMDAwcHg7aGVpZ2h0
OjEwMDBweDsiPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGlkPSJzdHlsZWQiIHN0eWxlPSJ3aWR0aDoy
MDBweDsgaGVpZ2h0OjIwMHB4OyBvdmVyZmxvdy15OnNjcm9sbDsgb3ZlcmZsb3cteDpzY3JvbGw7
IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogNDUwcHg7IHRvcDogMTAwcHg7Ij4KK0hlbGxvPGJy
PgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+
SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJy
PkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgorPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOm5v
d3JhcCI+SGVsbG8gd29ybGQgdGhpcyBpcyBhIGxvbmcgc3RyaW5nIGFuZCB3aWxsIG5vdCB3cmFw
Ljwvc3Bhbj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgorSGVsbG88YnI+
SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5I
ZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhl
bGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVs
bG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4KKzwvZGl2PgorPHA+VGVzdAorZm9y
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTM0OCI+
YnVnCisyOTM0ODwvYT46IFRoaXMgdGVzdHMgdGhhdCB1c2luZyB0aGUgbW91c2Ugd2hlZWwgd2hp
bGUgaGF2aW5nIHRoZQorcG9pbnRlciBpbiBhIGhvcml6b250YWwgc2Nyb2xsYmFyIG1ha2VzIGl0
IHNjcm9sbCBob3Jpem9udGFsbHksIGFsc28KK3dpdGggc3R5bGVkIHNjcm9sbGJhcnMuIE9uIHN1
Y2Nlc3MsIHRoZSB2ZXJ0aWNhbCBvZmZzZXQgZm9yIGJvdGggZGl2cworc2hvdWxkIGJlIDgwLCBh
bmQgdGhlIGhvcml6b250YSA0MC48cC8+Cis8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBmYWlsZWQoKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
bnNvbGUnKS5pbm5lckhUTUwgPSAiRkFJTEVEIjsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIubm90aWZ5RG9uZSgpOworfQorCitpZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAg
dmFyIG92ZXJmbG93ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisKKyAg
ICAvLyBTY3JvbGwgaW5zaWRlIHRoZSBkaXYKKyAgICB2YXIgeCA9IG92ZXJmbG93Lm9mZnNldExl
ZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAtIDUwOworICAgIHZhciB5ID0gb3ZlcmZsb3cub2Zm
c2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNTA7CisgICAgZXZlbnRTZW5kZXIubW91
c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisg
ICAgaWYgKG92ZXJmbG93LnNjcm9sbFRvcCAhPSA0MCB8fCBvdmVyZmxvdy5zY3JvbGxMZWZ0ICE9
IDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9y
aXpvbnRhbCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IG92ZXJmbG93Lm9mZnNldExlZnQgKyBvdmVy
Zmxvdy5vZmZzZXRXaWR0aCAtIDUwOworICAgIHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsg
b3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNjsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4
LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVdoZWVsVG8oMCwgMSk7CisKKyAgICBpZiAob3Zl
cmZsb3cuc2Nyb2xsVG9wICE9IDQwIHx8IG92ZXJmbG93LnNjcm9sbExlZnQgIT0gNDApCisgICAg
ICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgdmVydGljYWwgc2Ny
b2xsYmFyCisgICAgdmFyIHggPSBvdmVyZmxvdy5vZmZzZXRMZWZ0ICsgb3ZlcmZsb3cub2Zmc2V0
V2lkdGggLSA2OworICAgIHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zm
c2V0SGVpZ2h0IC0gNTA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKG92ZXJmbG93LnNjcm9s
bFRvcCAhPSA4MCB8fCBvdmVyZmxvdy5zY3JvbGxMZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQo
KTsKKworICAgIHZhciBzdHlsZWQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJyk7
CisKKyAgICAvLyBTY3JvbGwgaW5zaWRlIHRoZSBkaXYKKyAgICB2YXIgeCA9IHN0eWxlZC5vZmZz
ZXRMZWZ0ICsgc3R5bGVkLm9mZnNldFdpZHRoIC0gNTA7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zm
c2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdodCAtIDUwOworICAgIGV2ZW50U2VuZGVyLm1vdXNl
TW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlV2hlZWxUbygwLCAxKTsKKworICAg
IGlmIChzdHlsZWQuc2Nyb2xsVG9wICE9IDQwIHx8IHN0eWxlZC5zY3JvbGxMZWZ0ICE9IDApCisg
ICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9yaXpvbnRh
bCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IHN0eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9mZnNl
dFdpZHRoIC0gNTA7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNl
dEhlaWdodCAtIDY7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZl
bnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKHN0eWxlZC5zY3JvbGxUb3Ag
IT0gNDAgfHwgc3R5bGVkLnNjcm9sbExlZnQgIT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisg
ICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyCisgICAgdmFyIHgg
PSBzdHlsZWQub2Zmc2V0TGVmdCArIHN0eWxlZC5vZmZzZXRXaWR0aCAtIDY7CisgICAgdmFyIHkg
PSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdodCAtIDUwOworICAgIGV2ZW50
U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlV2hlZWxUbygw
LCAxKTsKKworICAgIGlmIChzdHlsZWQuc2Nyb2xsVG9wICE9IDgwIHx8IHN0eWxlZC5zY3JvbGxM
ZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQoKTsKKworICAgIHNldFRpbWVvdXQoZmluaXNoZWQs
IDUwMCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlzaGVkKCkKK3sKKyAgICB2YXIgbXNnID0gIlNjcm9s
bCBvZmZzZXQgZm9yICdvdmVyZmxvdycgaXMgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdv
dmVyZmxvdycpLnNjcm9sbFRvcCArICIgYW5kICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
b3ZlcmZsb3cnKS5zY3JvbGxMZWZ0OworICAgIG1zZyArPSAiPGJyLz4iOworICAgIG1zZyArPSAi
U2Nyb2xsIG9mZnNldCBmb3IgJ3N0eWxlZCcgaXMgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdzdHlsZWQnKS5zY3JvbGxUb3AgKyAiIGFuZCAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J3N0eWxlZCcpLnNjcm9sbExlZnQ7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29u
c29sZScpLmlubmVySFRNTCA9IG1zZzsKKworICAgIC8vIEp1c3QgdG8gY2xlYW51cCB0aGUgdGVz
dCByZXN1bHRzIHBhZ2UKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJykuc3R5
bGUuZGlzcGxheSA9ICdub25lJzsKKworICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5u
b3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA3ZDExY2M1Li43
YjAzMWY5IDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5LTA5LTE4ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEg
IDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEltcGxlbWVudCBjb3JyZWN0IGhvcml6b250YWwg
c2Nyb2xsYmFyIGJlaGF2aW9yIGZvciBHVEsrIGFsc28gb24KKyAgICAgICAgc3R5bGVkIHNjcm9s
bGJhcnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTI5MzQ4CisgICAgICAgIFtHdGtdIFNjcm9sbHdoZWVsIG9uIGhvcml6b250YWwgc2Nyb2xsYmFy
cyBzaG91bGQgc2xpZGUgaG9yaXpvbnRhbGx5CisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vZ3Rr
L3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0
bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudCk6IG9uIEdUSyssIHdoZW4gdXNpbmcgdGhl
CisgICAgICAgIHdoZWVsIHdpdGggdGhlIHBvaW50ZXIgb24gdGhlIGhvcml6b250YWwgc2Nyb2xs
YmFyLCBzY3JvbGwKKyAgICAgICAgaG9yaXpvbnRhbGx5OworICAgICAgICAqIHBsYXRmb3JtL1Bs
YXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3Rr
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtV2hlZWxFdmVudDo6c3dhcE9yaWVudGF0
aW9uKTogYWxsb3cgYWRkaW5nIGEKKyAgICAgICAgdmVydGljYWwgc2Nyb2xsIHRvIHRoZSBob3Jp
em9udGFsIG9uZTsKKwogMjAwOS0wOS0xNyAgQWRhbSBCYXJ0aCAgPGFiYXJ0aEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29y
ZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApp
bmRleCBhYmU0MGM3Li5jOTBhMzUzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTc3NSwxMSAr
MTc3NSwxMiBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdo
ZWVsRXZlbnQmIGUpCiAgICAgYm9vbCBpc092ZXJXaWRnZXQ7CiAgICAgYm9vbCBkaWRTZXRMYXRj
aGVkTm9kZSA9IGZhbHNlOwogICAgIAorICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2UG9pbnQpOwor
ICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7
CisKICAgICBpZiAobV91c2VMYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKICAgICAgICAgaWYgKCFt
X2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSkgewotICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3QgcmVx
dWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwotICAgICAgICAgICAgSGl0VGVzdFJlc3Vs
dCByZXN1bHQodlBvaW50KTsKLSAgICAgICAgICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2xhdGNoZWRXaGVlbEV2
ZW50Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgICAgIG1fd2lkZ2V0SXNMYXRj
aGVkID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgICAgICAgICAgZGlkU2V0TGF0Y2hlZE5v
ZGUgPSB0cnVlOwpAQCAtMTc5MSwxMyArMTc5MiwyMCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFu
ZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIGlmIChtX2xhdGNo
ZWRXaGVlbEV2ZW50Tm9kZSkKICAgICAgICAgICAgIG1fbGF0Y2hlZFdoZWVsRXZlbnROb2RlID0g
MDsKICAgICAgICAgCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVl
c3Q6OlJlYWRPbmx5KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodlBvaW50KTsKLSAg
ICAgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
KTsKICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaXNPdmVyV2lk
Z2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgIH0KICAgICAKKy8vIEdUSysgbXVzdCBz
Y3JvbGwgaG9yaXpvbnRhbGx5IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUK
Ky8vIGhvcml6b250YWwgc2Nyb2xsYmFyIHdoaWxlIHNjcm9sbGluZyB3aXRoIHRoZSB3aGVlbDsg
d2UgbmVlZCB0bworLy8gc3dhcCB0aGUgZGVsdGFzIGFuZCB0aWNrcyBoZXJlIHNvIHRoYXQgdGhp
cyBiZWhhdmlvciBpcyBjb25zaXN0ZW50CisvLyBmb3Igc3R5bGVkIHNjcm9sbGJhcnMuCisjaWYg
UExBVEZPUk0oR1RLKQorICAgIGlmIChyZXN1bHQuc2Nyb2xsYmFyKCkgJiYgcmVzdWx0LnNjcm9s
bGJhcigpLT5vcmllbnRhdGlvbigpID09IEhvcml6b250YWxTY3JvbGxiYXIpIHsKKyAgICAgICAg
ZS5zd2FwT3JpZW50YXRpb24oKTsKKyAgICB9CisjZW5kaWYKKwogICAgIGlmIChub2RlKSB7CiAg
ICAgICAgIC8vIEZpZ3VyZSBvdXQgd2hpY2ggdmlldyB0byBzZW5kIHRoZSBldmVudCB0by4KICAg
ICAgICAgUmVuZGVyT2JqZWN0KiB0YXJnZXQgPSBub2RlLT5yZW5kZXJlcigpOwpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCBiL1dlYkNvcmUvcGxhdGZv
cm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKaW5kZXggNTM3ZGVhYy4uNzJlMzEzZiAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oCkBAIC05NSw2ICs5NSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgUGxhdGZvcm1XaGVlbEV2ZW50
KEdka0V2ZW50U2Nyb2xsKik7CisgICAgICAgIHZvaWQgc3dhcE9yaWVudGF0aW9uKCk7CiAjZW5k
aWYKIAogI2lmIFBMQVRGT1JNKE1BQykgJiYgZGVmaW5lZChfX09CSkNfXykKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwIGIvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKaW5kZXggNDA0YmYyOS4uMTk4ZjQ5OCAxMDA2NDQKLS0t
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS9ndGsvV2hlZWxFdmVudEd0ay5jcHAKQEAgLTczLDQgKzczLDE2IEBAIFBsYXRmb3Jt
V2hlZWxFdmVudDo6UGxhdGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKiBldmVudCkKICAg
ICBtX2RlbHRhWSAqPSBzdGF0aWNfY2FzdDxmbG9hdD4oY1Njcm9sbGJhclBpeGVsc1BlckxpbmVT
dGVwKTsKIH0KIAordm9pZCBQbGF0Zm9ybVdoZWVsRXZlbnQ6OnN3YXBPcmllbnRhdGlvbigpCit7
CisgICAgLy8gSG9yaXpvbnRhbCBzY3JvbGxpbmcgc2hvdWxkIGJlIGtlcHQsIEdUSysncyBiZWhh
dmlvciBpcyB0byBhZGQKKyAgICAvLyB0aGUgdmVydGljYWwgc2Nyb2xsaW5nIHRoYXQgaXMgZG9u
ZSBvbiB0b3Agb2YgYSBob3Jpem9udGFsCisgICAgLy8gc2Nyb2xsYmFyIHRvIHRoZSBob3Jpem9u
dGFsIG9uZS4KKyAgICBtX2RlbHRhWCArPSBtX2RlbHRhWTsKKyAgICBtX2RlbHRhWSA9IDA7CisK
KyAgICBtX3doZWVsVGlja3NYICs9IG1fd2hlZWxUaWNrc1k7CisgICAgbV93aGVlbFRpY2tzWSA9
IDA7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRv
b2xzL0NoYW5nZUxvZwppbmRleCA5NmQxZDJjLi5iZTcxOTkxIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUg
QEAKKzIwMDktMDktMTggIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBj
b2xsYWJvcmEuY28udWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIERSVCB0byBzZW5kIG1vdXNlIHdoZWVsIGV2ZW50cy4K
KworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkzNDgK
KyAgICAgICAgW0d0a10gU2Nyb2xsd2hlZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNob3Vs
ZCBzbGlkZSBob3Jpem9udGFsbHkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVu
dFNlbmRlci5jcHA6CisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFjayk6CisKIDIwMDktMDkt
MTcgIEtldmluIE9sbGl2aWVyICA8a2V2aW5vQHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAg
d3ggYnVpbGQgZml4LCBhZGQgbWlzc2luZyBkZXBlbmRlbmN5LgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXggNDU4M2UxMi4uYjhjN2I3MCAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBA
IC0yMzIsNiArMjMyLDU0IEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpT
VmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBtb3Vz
ZVdoZWVsVG9DYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rp
b24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBK
U1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgV2Vi
S2l0V2ViVmlldyogdmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFt
ZSk7CisgICAgaWYgKCF2aWV3KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQo
Y29udGV4dCk7CisKKyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAgICAgIHJldHVybiBK
U1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBob3Jpem9udGFsID0gKGlu
dClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOworICAgIGludCB2ZXJ0aWNhbCA9IChpbnQpSlNWYWx1
ZVRvTnVtYmVyKGNvbnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpKTsKKworICAgIC8vIEdUSysgZG9lc24ndCBzdXBwb3J0IG11bHRpcGxl
IGRpcmVjdGlvbiBzY3JvbGxzIGluIHRoZSBzYW1lIGV2ZW50IQorICAgIGdfcmV0dXJuX3ZhbF9p
Zl9mYWlsKCghdmVydGljYWwgfHwgIWhvcml6b250YWwpLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChj
b250ZXh0KSk7CisKKyAgICBHZGtFdmVudCBldmVudDsKKyAgICBldmVudC50eXBlID0gR0RLX1ND
Uk9MTDsKKyAgICBldmVudC5zY3JvbGwueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKKyAgICBldmVu
dC5zY3JvbGwueSA9IGxhc3RNb3VzZVBvc2l0aW9uWTsKKyAgICBldmVudC5zY3JvbGwudGltZSA9
IEdES19DVVJSRU5UX1RJTUU7CisgICAgZXZlbnQuc2Nyb2xsLndpbmRvdyA9IEdUS19XSURHRVQo
dmlldyktPndpbmRvdzsKKworICAgIGlmIChob3Jpem9udGFsIDwgMCkKKyAgICAgICAgZXZlbnQu
c2Nyb2xsLmRpcmVjdGlvbiA9IEdES19TQ1JPTExfTEVGVDsKKyAgICBlbHNlIGlmIChob3Jpem9u
dGFsID4gMCkKKyAgICAgICAgZXZlbnQuc2Nyb2xsLmRpcmVjdGlvbiA9IEdES19TQ1JPTExfUklH
SFQ7CisgICAgZWxzZSBpZiAodmVydGljYWwgPCAwKQorICAgICAgICBldmVudC5zY3JvbGwuZGly
ZWN0aW9uID0gR0RLX1NDUk9MTF9VUDsKKyAgICBlbHNlIGlmICh2ZXJ0aWNhbCA+IDApCisgICAg
ICAgIGV2ZW50LnNjcm9sbC5kaXJlY3Rpb24gPSBHREtfU0NST0xMX0RPV047CisgICAgZWxzZQor
ICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgpOworCisgICAgaWYgKGRyYWdNb2RlICYmIGRv
d24gJiYgIXJlcGxheWluZ1NhdmVkRXZlbnRzKSB7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVl
dWVdLmV2ZW50ID0gZXZlbnQ7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFn
RXZlbnQgPSB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5
b3V0KG1haW5GcmFtZSk7CisKKyAgICAgICAgZ2Jvb2xlYW4gcmV0dXJuX3ZhbDsKKyAgICAgICAg
Z19zaWduYWxfZW1pdF9ieV9uYW1lKHZpZXcsICJzY3JvbGxfZXZlbnQiLCAmZXZlbnQsICZyZXR1
cm5fdmFsKTsKKyAgICB9CisKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEp
CkBAIC00NDMsNiArNDkxLDcgQEAgc3RhdGljIEpTVmFsdWVSZWYgem9vbVBhZ2VPdXRDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KIH0KIAogc3RhdGlj
IEpTU3RhdGljRnVuY3Rpb24gc3RhdGljRnVuY3Rpb25zW10gPSB7CisgICAgeyAibW91c2VXaGVl
bFRvIiwgbW91c2VXaGVlbFRvQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJjb250ZXh0Q2xpY2si
LCBjb250ZXh0Q2xpY2tDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgIm1vdXNlRG93biIsIG1vdXNl
RG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91c2VVcCIsIG1vdXNlVXBDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAotLSAKMS42LjMuMwoK
</data>
<flag name="commit-queue"
          id="20880"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39838</attachid>
            <date>2009-09-20 18:18:46 -0700</date>
            <delta_ts>2009-09-23 14:13:20 -0700</delta_ts>
            <desc>proposed fix</desc>
            <filename>0001-Implement-correct-horizontal-scrollbar-behavior-for-.patch</filename>
            <type>text/plain</type>
            <size>16787</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSAxN2U5ZTYzNGZmNGE1ZjM2YmEzMjg4ZTliYzIyYzQ5MjhkM2Q5MjU0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IFRodSwgMTcgU2VwIDIwMDkgMjI6NDE6MDggLTAzMDAK
U3ViamVjdDogW1BBVENIXSBJbXBsZW1lbnQgY29ycmVjdCBob3Jpem9udGFsIHNjcm9sbGJhciBi
ZWhhdmlvciBmb3IgR1RLKwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIC4uLi1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVl
bC1zY3JvbGwtZXhwZWN0ZWQudHh0IHwgICAgNCArCiAuLi5vdmVyZmxvdy1zY3JvbGxiYXItaG9y
aXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbCB8ICAxNjIgKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSAr
KysKIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMCArKy0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgICAgICAg
ICAgICAgICB8ICAgIDkgKwogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCAg
ICAgICAgICAgICAgfCAgICA5ICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0V2ZW50U2VuZGVyLmNwcCAgICAgfCAgIDQ5ICsrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjk0
IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250
YWwtd2hlZWwtc2Nyb2xsLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFs
LXdoZWVsLXNjcm9sbC5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDRkMjAwOTUuLjNmOWZiM2IgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAwOS0wOS0xOCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0IGZvciBjb3JyZWN0IHdoZWVsIHNjcm9sbGluZyBiZWhhdmlv
ci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjkz
NDgKKyAgICAgICAgW0d0a10gU2Nyb2xsd2hlZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNo
b3VsZCBzbGlkZSBob3Jpem9udGFsbHkKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9zY3JvbGxi
YXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXIt
aG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0wOS0x
OSAgU2FtIFdlaW5pZyAgPHNhbUB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE9s
aXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJh
cnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJh
ci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uY2UyOTI3MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdo
ZWVsLXNjcm9sbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACitUZXN0IGZvciBidWcgMjkz
NDg6IFRoaXMgdGVzdHMgdGhhdCB1c2luZyB0aGUgbW91c2Ugd2hlZWwgd2hpbGUgaGF2aW5nIHRo
ZSBwb2ludGVyIGluIGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIgbWFrZXMgaXQgc2Nyb2xsIGhvcml6
b250YWxseSwgYWxzbyB3aXRoIHN0eWxlZCBzY3JvbGxiYXJzLiBPbiBzdWNjZXNzLCB0aGUgdmVy
dGljYWwgb2Zmc2V0IGZvciBib3RoIGRpdnMgc2hvdWxkIGJlIDgwLCBhbmQgdGhlIGhvcml6b250
YSA0MC4KKworU2Nyb2xsIG9mZnNldCBmb3IgJ292ZXJmbG93JyBpcyA4MCBhbmQgNDAKK1Njcm9s
bCBvZmZzZXQgZm9yICdzdHlsZWQnIGlzIDgwIGFuZCA0MApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwt
d2hlZWwtc2Nyb2xsLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9v
dmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTIyZmRkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6
b250YWwtd2hlZWwtc2Nyb2xsLmh0bWwKQEAgLTAsMCArMSwxNjIgQEAKKzxodG1sPgorPHN0eWxl
PgorZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXIgeworICB3aWR0aDoxN3B4OworICBoZWln
aHQ6MTdweDsKK30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uIHsKKyAg
ZGlzcGxheTpibG9jazsKKyAgd2lkdGg6IDE3cHg7CisgIGhlaWdodDogMTdweDsKK30KKworZGl2
I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItYnV0dG9uOnZlcnRpY2FsIHsKKyAgYmFja2dyb3Vu
ZC1jb2xvcjpsaWdodGJsdWU7CisgIGJvcmRlcjoycHggc29saWQgYmxhY2s7Cit9CisKK2RpdiNz
dHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbjpob3Jpem9udGFsIHsKKyAgYmFja2dyb3Vu
ZC1jb2xvcjojMjA4MDIwOworICBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOworfQorCitkaXYjc3R5
bGVkOjotd2Via2l0LXNjcm9sbGJhci10aHVtYiB7CisgIG1pbi13aWR0aDoyMHB4OworICBtaW4t
aGVpZ2h0OjIwcHg7CisgIGJhY2tncm91bmQtY29sb3I6IG5hdnk7CisgIGJvcmRlcjoycHggc29s
aWQgI2NjY2NjYzsKK30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWI6aG9y
aXpvbnRhbCB7CisgIGJhY2tncm91bmQtY29sb3I6ICMwMDQwMDA7Cit9CisKK2RpdiNzdHlsZWQ6
Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbjpkaXNhYmxlZCB7CisgIGRpc3BsYXk6bm9uZQorfQor
CitkaXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci10cmFjayB7CisgIGJhY2tncm91bmQtY29s
b3I6ICMyMDYwYTA7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRyYWNrOmhv
cml6b250YWwgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjNDBhMDQwOworfQorPC9zdHlsZT4KKzxi
b2R5IHN0eWxlPSJtYXJnaW46MCI+Cis8c2NyaXB0PgoraWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29u
dHJvbGxlcikgeworICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICBs
YXlvdXRUZXN0Q29udHJvbGxlci53YWl0VW50aWxEb25lKCk7Cit9Cis8L3NjcmlwdD4KKzxkaXYg
aWQ9Im92ZXJmbG93IiBzdHlsZT0iYm9yZGVyOjJweCBzb2xpZCBibGFjaztvdmVyZmxvdzphdXRv
O2hlaWdodDoyMDBweDt3aWR0aDoyMDBweDsgbGVmdDogMHB4OyB0b3A6IDEwMHB4OyBwb3NpdGlv
bjogYWJzb2x1dGU7Ij4KKzxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6Z3JlZW47d2lkdGg6
MTAwMHB4O2hlaWdodDoxMDAwcHg7Ij48L2Rpdj4KKzxkaXYgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6cmVkO3dpZHRoOjEwMDBweDtoZWlnaHQ6MTAwMHB4OyI+PC9kaXY+Cis8L2Rpdj4KKzxkaXYg
aWQ9InN0eWxlZCIgc3R5bGU9IndpZHRoOjIwMHB4OyBoZWlnaHQ6MjAwcHg7IG92ZXJmbG93LXk6
c2Nyb2xsOyBvdmVyZmxvdy14OnNjcm9sbDsgcG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiA0NTBw
eDsgdG9wOiAxMDBweDsiPgorSGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5I
ZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhl
bGxvPGJyPkhlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+Cis8
c3BhbiBzdHlsZT0id2hpdGUtc3BhY2U6bm93cmFwIj5IZWxsbyB3b3JsZCB0aGlzIGlzIGEgbG9u
ZyBzdHJpbmcgYW5kIHdpbGwgbm90IHdyYXAuPC9zcGFuPgorSGVsbG88YnI+SGVsbG88YnI+SGVs
bG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxs
bzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgorSGVs
bG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxs
bzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxv
PGJyPgorPC9kaXY+Cis8cD5UZXN0Citmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI5MzQ4Ij5idWcKKzI5MzQ4PC9hPjogVGhpcyB0ZXN0cyB0aGF0
IHVzaW5nIHRoZSBtb3VzZSB3aGVlbCB3aGlsZSBoYXZpbmcgdGhlCitwb2ludGVyIGluIGEgaG9y
aXpvbnRhbCBzY3JvbGxiYXIgbWFrZXMgaXQgc2Nyb2xsIGhvcml6b250YWxseSwgYWxzbword2l0
aCBzdHlsZWQgc2Nyb2xsYmFycy4gT24gc3VjY2VzcywgdGhlIHZlcnRpY2FsIG9mZnNldCBmb3Ig
Ym90aCBkaXZzCitzaG91bGQgYmUgODAsIGFuZCB0aGUgaG9yaXpvbnRhIDQwLjxwLz4KKzxkaXYg
aWQ9ImNvbnNvbGUiPjwvZGl2PgorPHNjcmlwdD4KK2Z1bmN0aW9uIGZhaWxlZCgpIHsKKyAgICBk
b2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9ICJGQUlMRUQiOwor
ICAgIHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKK2lmICh3
aW5kb3cuZXZlbnRTZW5kZXIpIHsKKyAgICB2YXIgb3ZlcmZsb3cgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnb3ZlcmZsb3cnKTsKKworICAgIC8vIFNjcm9sbCBpbnNpZGUgdGhlIGRpdgorICAg
IHZhciB4ID0gb3ZlcmZsb3cub2Zmc2V0TGVmdCArIG92ZXJmbG93Lm9mZnNldFdpZHRoIC0gNTA7
CisgICAgdmFyIHkgPSBvdmVyZmxvdy5vZmZzZXRUb3AgKyBvdmVyZmxvdy5vZmZzZXRIZWlnaHQg
LSA1MDsKKyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRl
ci5tb3VzZVdoZWVsVG8oMCwgMSk7CisKKyAgICBpZiAob3ZlcmZsb3cuc2Nyb2xsVG9wICE9IDQw
IHx8IG92ZXJmbG93LnNjcm9sbExlZnQgIT0gMCkKKyAgICAgICAgZmFpbGVkKCk7CisKKyAgICAv
LyBTY3JvbGwgb24gdG9wIG9mIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIHZhciB4ID0g
b3ZlcmZsb3cub2Zmc2V0TGVmdCArIG92ZXJmbG93Lm9mZnNldFdpZHRoIC0gNTA7CisgICAgdmFy
IHkgPSBvdmVyZmxvdy5vZmZzZXRUb3AgKyBvdmVyZmxvdy5vZmZzZXRIZWlnaHQgLSA2OworICAg
IGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2VuZGVyLm1vdXNlV2hl
ZWxUbygwLCAxKTsKKworICAgIGlmIChvdmVyZmxvdy5zY3JvbGxUb3AgIT0gNDAgfHwgb3ZlcmZs
b3cuc2Nyb2xsTGVmdCAhPSA0MCkKKyAgICAgICAgZmFpbGVkKCk7CisKKyAgICAvLyBTY3JvbGwg
b24gdG9wIG9mIHRoZSB2ZXJ0aWNhbCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IG92ZXJmbG93Lm9m
ZnNldExlZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAtIDY7CisgICAgdmFyIHkgPSBvdmVyZmxv
dy5vZmZzZXRUb3AgKyBvdmVyZmxvdy5vZmZzZXRIZWlnaHQgLSA1MDsKKyAgICBldmVudFNlbmRl
ci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVdoZWVsVG8oMCwgMSk7
CisKKyAgICBpZiAob3ZlcmZsb3cuc2Nyb2xsVG9wICE9IDgwIHx8IG92ZXJmbG93LnNjcm9sbExl
ZnQgIT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgdmFyIHN0eWxlZCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdzdHlsZWQnKTsKKworICAgIC8vIFNjcm9sbCBpbnNpZGUgdGhlIGRp
dgorICAgIHZhciB4ID0gc3R5bGVkLm9mZnNldExlZnQgKyBzdHlsZWQub2Zmc2V0V2lkdGggLSA1
MDsKKyAgICB2YXIgeSA9IHN0eWxlZC5vZmZzZXRUb3AgKyBzdHlsZWQub2Zmc2V0SGVpZ2h0IC0g
NTA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIu
bW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKHN0eWxlZC5zY3JvbGxUb3AgIT0gNDAgfHwg
c3R5bGVkLnNjcm9sbExlZnQgIT0gMCkKKyAgICAgICAgZmFpbGVkKCk7CisKKyAgICAvLyBTY3Jv
bGwgb24gdG9wIG9mIHRoZSBob3Jpem9udGFsIHNjcm9sbGJhcgorICAgIHZhciB4ID0gc3R5bGVk
Lm9mZnNldExlZnQgKyBzdHlsZWQub2Zmc2V0V2lkdGggLSA1MDsKKyAgICB2YXIgeSA9IHN0eWxl
ZC5vZmZzZXRUb3AgKyBzdHlsZWQub2Zmc2V0SGVpZ2h0IC0gNjsKKyAgICBldmVudFNlbmRlci5t
b3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3VzZVdoZWVsVG8oMCwgMSk7CisK
KyAgICBpZiAoc3R5bGVkLnNjcm9sbFRvcCAhPSA0MCB8fCBzdHlsZWQuc2Nyb2xsTGVmdCAhPSA0
MCkKKyAgICAgICAgZmFpbGVkKCk7CisKKyAgICAvLyBTY3JvbGwgb24gdG9wIG9mIHRoZSB2ZXJ0
aWNhbCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IHN0eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9m
ZnNldFdpZHRoIC0gNjsKKyAgICB2YXIgeSA9IHN0eWxlZC5vZmZzZXRUb3AgKyBzdHlsZWQub2Zm
c2V0SGVpZ2h0IC0gNTA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAg
ZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKHN0eWxlZC5zY3JvbGxU
b3AgIT0gODAgfHwgc3R5bGVkLnNjcm9sbExlZnQgIT0gNDApCisgICAgICAgIGZhaWxlZCgpOwor
CisgICAgc2V0VGltZW91dChmaW5pc2hlZCwgNTAwKTsKK30KKworZnVuY3Rpb24gZmluaXNoZWQo
KQoreworICAgIHZhciBtc2cgPSAiU2Nyb2xsIG9mZnNldCBmb3IgJ292ZXJmbG93JyBpcyAiICsg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ292ZXJmbG93Jykuc2Nyb2xsVG9wICsgIiBhbmQgIiAr
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbExlZnQ7CisgICAgbXNn
ICs9ICI8YnIvPiI7CisgICAgbXNnICs9ICJTY3JvbGwgb2Zmc2V0IGZvciAnc3R5bGVkJyBpcyAi
ICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZCcpLnNjcm9sbFRvcCArICIgYW5kICIg
KyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJykuc2Nyb2xsTGVmdDsKKworICAgIGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdjb25zb2xlJykuaW5uZXJIVE1MID0gbXNnOworCisgICAg
Ly8gSnVzdCB0byBjbGVhbnVwIHRoZSB0ZXN0IHJlc3VsdHMgcGFnZQorICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdzdHlsZWQnKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCisgICAgd2lu
ZG93LmxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKK30KKworPC9zY3JpcHQ+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUv
Q2hhbmdlTG9nCmluZGV4IGE1ZWNkOGIuLmY3NTZiMDggMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMDktMDkt
MTggIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28u
dWs+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1w
bGVtZW50IGNvcnJlY3QgaG9yaXpvbnRhbCBzY3JvbGxiYXIgYmVoYXZpb3IgZm9yIEdUSysgYWxz
byBvbgorICAgICAgICBzdHlsZWQgc2Nyb2xsYmFycy4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkzNDgKKyAgICAgICAgW0d0a10gU2Nyb2xsd2hl
ZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNob3VsZCBzbGlkZSBob3Jpem9udGFsbHkKKwor
ICAgICAgICBUZXN0OiBwbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXIt
aG9yaXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbAorCisgICAgICAgICogcGFnZS9FdmVudEhhbmRs
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
KTogb24gR1RLKywgd2hlbiB1c2luZyB0aGUKKyAgICAgICAgd2hlZWwgd2l0aCB0aGUgcG9pbnRl
ciBvbiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIsIHNjcm9sbAorICAgICAgICBob3Jpem9udGFs
bHk7CisgICAgICAgICogcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50Lmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3RrL1doZWVsRXZlbnRHdGsuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZv
cm1XaGVlbEV2ZW50Ojpzd2FwT3JpZW50YXRpb24pOiBhbGxvdyBhZGRpbmcgYQorICAgICAgICB2
ZXJ0aWNhbCBzY3JvbGwgdG8gdGhlIGhvcml6b250YWwgb25lOworCiAyMDA5LTA5LTE5ICBHdXN0
YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGZvciBHVEsrIGFuZCBhIGJsaW5kIG9uZSBmb3Ig
UXQgYWZ0ZXIgcjQ4NTY2LgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBhYmU0MGM3Li4wNzczMTMx
IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcApAQCAtMTc1Niw2ICsxNzU2LDEzIEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUs
IE5vZGUqIHRhcmdlCiAgICAgcmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAorI2lmICFQTEFURk9S
TShHVEspCitib29sIEV2ZW50SGFuZGxlcjo6c2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9y
aXpvbnRhbChjb25zdCBIaXRUZXN0UmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJu
IGZhbHNlOworfQorI2VuZGlmCisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50
KFBsYXRmb3JtV2hlZWxFdmVudCYgZSkKIHsKICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKTsKQEAgLTE3NzUsMTEgKzE3ODIsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6Omhh
bmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogICAgIGJvb2wgaXNPdmVyV2lk
Z2V0OwogICAgIGJvb2wgZGlkU2V0TGF0Y2hlZE5vZGUgPSBmYWxzZTsKICAgICAKKyAgICBIaXRU
ZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7CisgICAgSGl0VGVz
dFJlc3VsdCByZXN1bHQodlBvaW50KTsKKyAgICBkb2MtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+
aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOworCiAgICAgaWYgKG1fdXNlTGF0Y2hlZFdoZWVsRXZl
bnROb2RlKSB7CiAgICAgICAgIGlmICghbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKLSAgICAg
ICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsK
LSAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZQb2ludCk7Ci0gICAgICAgICAgICBk
b2MtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwogICAg
ICAgICAgICAgbV9sYXRjaGVkV2hlZWxFdmVudE5vZGUgPSByZXN1bHQuaW5uZXJOb2RlKCk7CiAg
ICAgICAgICAgICBtX3dpZGdldElzTGF0Y2hlZCA9IHJlc3VsdC5pc092ZXJXaWRnZXQoKTsKICAg
ICAgICAgICAgIGRpZFNldExhdGNoZWROb2RlID0gdHJ1ZTsKQEAgLTE3OTEsMTMgKzE3OTksMTMg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxhdGZvcm1XaGVlbEV2ZW50
JiBlKQogICAgICAgICBpZiAobV9sYXRjaGVkV2hlZWxFdmVudE5vZGUpCiAgICAgICAgICAgICBt
X2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSA9IDA7CiAgICAgICAgIAotICAgICAgICBIaXRUZXN0UmVx
dWVzdCByZXF1ZXN0KEhpdFRlc3RSZXF1ZXN0OjpSZWFkT25seSk7Ci0gICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHZQb2ludCk7Ci0gICAgICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigp
LT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgIG5vZGUgPSByZXN1bHQuaW5uZXJO
b2RlKCk7CiAgICAgICAgIGlzT3ZlcldpZGdldCA9IHJlc3VsdC5pc092ZXJXaWRnZXQoKTsKICAg
ICB9CiAgICAgCisgICAgaWYgKHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwo
cmVzdWx0KSkKKyAgICAgICAgZS50dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKCk7CisK
ICAgICBpZiAobm9kZSkgewogICAgICAgICAvLyBGaWd1cmUgb3V0IHdoaWNoIHZpZXcgdG8gc2Vu
ZCB0aGUgZXZlbnQgdG8uCiAgICAgICAgIFJlbmRlck9iamVjdCogdGFyZ2V0ID0gbm9kZS0+cmVu
ZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCBiL1dlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuaAppbmRleCBiMzkwNDU3Li4yZThjNTM4IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKKysrIGIvV2ViQ29yZS9wYWdlL0V2ZW50SGFu
ZGxlci5oCkBAIC0xMjUsNiArMTI1LDggQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkRHJhZ0F1
dG9Ob2RlKE5vZGUqLCBjb25zdCBJbnRQb2ludCYpIGNvbnN0OyAvLyAtd2Via2l0LXVzZXItZHJh
ZyA9PSBhdXRvCiAjZW5kaWYKIAorICAgIGJvb2wgc2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRv
SG9yaXpvbnRhbChjb25zdCBIaXRUZXN0UmVzdWx0JikgY29uc3Q7CisKICAgICBib29sIHRhYnNU
b0xpbmtzKEtleWJvYXJkRXZlbnQqKSBjb25zdDsKICAgICBib29sIHRhYnNUb0FsbENvbnRyb2xz
KEtleWJvYXJkRXZlbnQqKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL2d0ay9F
dmVudEhhbmRsZXJHdGsuY3BwIGIvV2ViQ29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3Bw
CmluZGV4IGQxMmNkY2MuLjcwNTEzOTEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGFnZS9ndGsvRXZl
bnRIYW5kbGVyR3RrLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5j
cHAKQEAgLTEyMiw0ICsxMjIsMTMgQEAgdW5zaWduZWQgRXZlbnRIYW5kbGVyOjphY2Nlc3NLZXlN
b2RpZmllcnMoKQogICAgIHJldHVybiBQbGF0Zm9ybUtleWJvYXJkRXZlbnQ6OkFsdEtleTsKIH0K
IAorLy8gR1RLKyBtdXN0IHNjcm9sbCBob3Jpem9udGFsbHkgaWYgdGhlIG1vdXNlIHBvaW50ZXIg
aXMgb24gdG9wIG9mIHRoZQorLy8gaG9yaXpvbnRhbCBzY3JvbGxiYXIgd2hpbGUgc2Nyb2xsaW5n
IHdpdGggdGhlIHdoZWVsOyB3ZSBuZWVkIHRvCisvLyBhZGQgdGhlIGRlbHRhcyBhbmQgdGlja3Mg
aGVyZSBzbyB0aGF0IHRoaXMgYmVoYXZpb3IgaXMgY29uc2lzdGVudAorLy8gZm9yIHN0eWxlZCBz
Y3JvbGxiYXJzLgorYm9vbCBFdmVudEhhbmRsZXI6OnNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50
b0hvcml6b250YWwoY29uc3QgSGl0VGVzdFJlc3VsdCYgcmVzdWx0KSBjb25zdAoreworICAgIHJl
dHVybiByZXN1bHQuc2Nyb2xsYmFyKCkgJiYgcmVzdWx0LnNjcm9sbGJhcigpLT5vcmllbnRhdGlv
bigpID09IEhvcml6b250YWxTY3JvbGxiYXI7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmggYi9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3Jt
V2hlZWxFdmVudC5oCmluZGV4IDUzN2RlYWMuLjEwMmQ2MWEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
cGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0
Zm9ybVdoZWVsRXZlbnQuaApAQCAtOTMsNiArOTMsMTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2b2lkIGFjY2VwdCgpIHsgbV9pc0FjY2VwdGVkID0gdHJ1ZTsgfQogICAgICAgICB2
b2lkIGlnbm9yZSgpIHsgbV9pc0FjY2VwdGVkID0gZmFsc2U7IH0KIAorICAgICAgICB2b2lkIHR1
cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2RlbHRhWCArPSBtX2RlbHRhWTsKKyAgICAgICAgICAgIG1fZGVsdGFZID0gMDsKKworICAgICAg
ICAgICAgbV93aGVlbFRpY2tzWCArPSBtX3doZWVsVGlja3NZOworICAgICAgICAgICAgbV93aGVl
bFRpY2tzWSA9IDA7CisgICAgICAgIH0KKwogI2lmIFBMQVRGT1JNKEdUSykKICAgICAgICAgUGxh
dGZvcm1XaGVlbEV2ZW50KEdka0V2ZW50U2Nyb2xsKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAzNjkyZDY5
Li42Y2MwNmZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMDktMDktMTggIEd1c3Rhdm8gTm9y
b25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIERS
VCB0byBzZW5kIG1vdXNlIHdoZWVsIGV2ZW50cy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkzNDgKKyAgICAgICAgW0d0a10gU2Nyb2xsd2hlZWwg
b24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNob3VsZCBzbGlkZSBob3Jpem9udGFsbHkKKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHA6CisgICAgICAgIChtb3Vz
ZVdoZWVsVG9DYWxsYmFjayk6CisKIDIwMDktMDktMTggIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgd3ggYnVpbGQgZml4ZXMuIEZpeCB0aGUgY29u
ZmlnIG5hbWUgdW5kZXIgZ2l0IGFuZCBhbGxvdyB1c2VycyB0byBzcGVjaWZ5CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRleCA0NTgzZTEyLi5i
OGM3YjcwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRT
ZW5kZXIuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRl
ci5jcHAKQEAgLTIzMiw2ICsyMzIsNTQgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9D
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVl
UmVmIG1vdXNlV2hlZWxUb0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJl
ZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQs
IGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sK
KyAgICBXZWJLaXRXZWJWaWV3KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXco
bWFpbkZyYW1lKTsKKyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKKyAgICAgICAg
cmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGhvcml6b250
YWwgPSAoaW50KUpTVmFsdWVUb051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlv
bik7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24p
LCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CisgICAgaW50IHZlcnRpY2FsID0gKGlu
dClKU1ZhbHVlVG9OdW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pOworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1
ZU1ha2VVbmRlZmluZWQoY29udGV4dCkpOworCisgICAgLy8gR1RLKyBkb2Vzbid0IHN1cHBvcnQg
bXVsdGlwbGUgZGlyZWN0aW9uIHNjcm9sbHMgaW4gdGhlIHNhbWUgZXZlbnQhCisgICAgZ19yZXR1
cm5fdmFsX2lmX2ZhaWwoKCF2ZXJ0aWNhbCB8fCAhaG9yaXpvbnRhbCksIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpKTsKKworICAgIEdka0V2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUg
PSBHREtfU0NST0xMOworICAgIGV2ZW50LnNjcm9sbC54ID0gbGFzdE1vdXNlUG9zaXRpb25YOwor
ICAgIGV2ZW50LnNjcm9sbC55ID0gbGFzdE1vdXNlUG9zaXRpb25ZOworICAgIGV2ZW50LnNjcm9s
bC50aW1lID0gR0RLX0NVUlJFTlRfVElNRTsKKyAgICBldmVudC5zY3JvbGwud2luZG93ID0gR1RL
X1dJREdFVCh2aWV3KS0+d2luZG93OworCisgICAgaWYgKGhvcml6b250YWwgPCAwKQorICAgICAg
ICBldmVudC5zY3JvbGwuZGlyZWN0aW9uID0gR0RLX1NDUk9MTF9MRUZUOworICAgIGVsc2UgaWYg
KGhvcml6b250YWwgPiAwKQorICAgICAgICBldmVudC5zY3JvbGwuZGlyZWN0aW9uID0gR0RLX1ND
Uk9MTF9SSUdIVDsKKyAgICBlbHNlIGlmICh2ZXJ0aWNhbCA8IDApCisgICAgICAgIGV2ZW50LnNj
cm9sbC5kaXJlY3Rpb24gPSBHREtfU0NST0xMX1VQOworICAgIGVsc2UgaWYgKHZlcnRpY2FsID4g
MCkKKyAgICAgICAgZXZlbnQuc2Nyb2xsLmRpcmVjdGlvbiA9IEdES19TQ1JPTExfRE9XTjsKKyAg
ICBlbHNlCisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCk7CisKKyAgICBpZiAoZHJhZ01v
ZGUgJiYgZG93biAmJiAhcmVwbGF5aW5nU2F2ZWRFdmVudHMpIHsKKyAgICAgICAgbXNnUXVldWVb
ZW5kT2ZRdWV1ZV0uZXZlbnQgPSBldmVudDsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsr
XS5pc0RyYWdFdmVudCA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2Via2l0X3dlYl9m
cmFtZV9sYXlvdXQobWFpbkZyYW1lKTsKKworICAgICAgICBnYm9vbGVhbiByZXR1cm5fdmFsOwor
ICAgICAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUodmlldywgInNjcm9sbF9ldmVudCIsICZldmVu
dCwgJnJldHVybl92YWwpOworICAgIH0KKworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5l
ZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgYmVnaW5EcmFnV2l0aEZpbGVzQ2Fs
bGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIGlmIChhcmd1bWVudENv
dW50IDwgMSkKQEAgLTQ0Myw2ICs0OTEsNyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiB6b29tUGFnZU91
dENhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbgogfQog
CiBzdGF0aWMgSlNTdGF0aWNGdW5jdGlvbiBzdGF0aWNGdW5jdGlvbnNbXSA9IHsKKyAgICB7ICJt
b3VzZVdoZWVsVG8iLCBtb3VzZVdoZWVsVG9DYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgIHsgImNvbnRl
eHRDbGljayIsIGNvbnRleHRDbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgeyAibW91c2VEb3du
IiwgbW91c2VEb3duQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICB7ICJtb3VzZVVwIiwgbW91c2VVcENh
bGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1
dGVEb250RGVsZXRlIH0sCi0tIAoxLjYuMy4zCgo=
</data>
<flag name="commit-queue"
          id="20973"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40017</attachid>
            <date>2009-09-23 14:13:20 -0700</date>
            <delta_ts>2009-09-23 17:31:02 -0700</delta_ts>
            <desc>patch using proper signal emission technique</desc>
            <filename>0001-Implement-correct-horizontal-scrollbar-behavior-for-.patch</filename>
            <type>text/plain</type>
            <size>16755</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBmZmJkOWM1ZDZlYmY4N2Y5NGUzNWY1NGE0NTMyNWUxYmZlYzQ5ZjFhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IFRodSwgMTcgU2VwIDIwMDkgMjI6NDE6MDggLTAzMDAK
U3ViamVjdDogW1BBVENIXSBJbXBsZW1lbnQgY29ycmVjdCBob3Jpem9udGFsIHNjcm9sbGJhciBi
ZWhhdmlvciBmb3IgR1RLKwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIC4uLi1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVl
bC1zY3JvbGwtZXhwZWN0ZWQudHh0IHwgICAgNCArCiAuLi5vdmVyZmxvdy1zY3JvbGxiYXItaG9y
aXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbCB8ICAxNjIgKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSAr
KysKIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMCArKy0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgICAgICAg
ICAgICAgICB8ICAgIDkgKwogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCAg
ICAgICAgICAgICAgfCAgICA5ICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0V2ZW50U2VuZGVyLmNwcCAgICAgfCAgIDQ3ICsrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjky
IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250
YWwtd2hlZWwtc2Nyb2xsLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFs
LXdoZWVsLXNjcm9sbC5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1ODc5YzAuLmI5NTdjZmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAwOS0wOS0yMyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0IGZvciBjb3JyZWN0IHdoZWVsIHNjcm9sbGluZyBiZWhhdmlv
ci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjkz
NDgKKyAgICAgICAgW0d0a10gU2Nyb2xsd2hlZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNo
b3VsZCBzbGlkZSBob3Jpem9udGFsbHkKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9zY3JvbGxi
YXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXIt
aG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0wOS0y
MyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3Jv
bGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3Jv
bGxiYXItaG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMjkyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRh
bC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVn
IDI5MzQ4OiBUaGlzIHRlc3RzIHRoYXQgdXNpbmcgdGhlIG1vdXNlIHdoZWVsIHdoaWxlIGhhdmlu
ZyB0aGUgcG9pbnRlciBpbiBhIGhvcml6b250YWwgc2Nyb2xsYmFyIG1ha2VzIGl0IHNjcm9sbCBo
b3Jpem9udGFsbHksIGFsc28gd2l0aCBzdHlsZWQgc2Nyb2xsYmFycy4gT24gc3VjY2VzcywgdGhl
IHZlcnRpY2FsIG9mZnNldCBmb3IgYm90aCBkaXZzIHNob3VsZCBiZSA4MCwgYW5kIHRoZSBob3Jp
em9udGEgNDAuCisKK1Njcm9sbCBvZmZzZXQgZm9yICdvdmVyZmxvdycgaXMgODAgYW5kIDQwCitT
Y3JvbGwgb2Zmc2V0IGZvciAnc3R5bGVkJyBpcyA4MCBhbmQgNDAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9u
dGFsLXdoZWVsLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJh
cnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUyMmZkZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1o
b3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sCkBAIC0wLDAgKzEsMTYyIEBACis8aHRtbD4KKzxz
dHlsZT4KK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgd2lkdGg6MTdweDsKKyAg
aGVpZ2h0OjE3cHg7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7
CisgIGRpc3BsYXk6YmxvY2s7CisgIHdpZHRoOiAxN3B4OworICBoZWlnaHQ6IDE3cHg7Cit9CisK
K2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbjp2ZXJ0aWNhbCB7CisgIGJhY2tn
cm91bmQtY29sb3I6bGlnaHRibHVlOworICBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOworfQorCitk
aXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b246aG9yaXpvbnRhbCB7CisgIGJhY2tn
cm91bmQtY29sb3I6IzIwODAyMDsKKyAgYm9yZGVyOjJweCBzb2xpZCBibGFjazsKK30KKworZGl2
I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgeworICBtaW4td2lkdGg6MjBweDsKKyAg
bWluLWhlaWdodDoyMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiBuYXZ5OworICBib3JkZXI6MnB4
IHNvbGlkICNjY2NjY2M7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
Omhvcml6b250YWwgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0MDAwOworfQorCitkaXYjc3R5
bGVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b246ZGlzYWJsZWQgeworICBkaXNwbGF5Om5vbmUK
K30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeworICBiYWNrZ3JvdW5k
LWNvbG9yOiAjMjA2MGEwOworfQorCitkaXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci10cmFj
azpob3Jpem9udGFsIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzQwYTA0MDsKK30KKzwvc3R5bGU+
Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8
ZGl2IGlkPSJvdmVyZmxvdyIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgYmxhY2s7b3ZlcmZsb3c6
YXV0bztoZWlnaHQ6MjAwcHg7d2lkdGg6MjAwcHg7IGxlZnQ6IDBweDsgdG9wOiAxMDBweDsgcG9z
aXRpb246IGFic29sdXRlOyI+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO3dp
ZHRoOjEwMDBweDtoZWlnaHQ6MTAwMHB4OyI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOnJlZDt3aWR0aDoxMDAwcHg7aGVpZ2h0OjEwMDBweDsiPjwvZGl2PgorPC9kaXY+Cis8
ZGl2IGlkPSJzdHlsZWQiIHN0eWxlPSJ3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyBvdmVyZmxv
dy15OnNjcm9sbDsgb3ZlcmZsb3cteDpzY3JvbGw7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDog
NDUwcHg7IHRvcDogMTAwcHg7Ij4KK0hlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88
YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxi
cj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJy
PgorPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+SGVsbG8gd29ybGQgdGhpcyBpcyBh
IGxvbmcgc3RyaW5nIGFuZCB3aWxsIG5vdCB3cmFwLjwvc3Bhbj4KK0hlbGxvPGJyPkhlbGxvPGJy
PkhlbGxvPGJyPkhlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+
SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4K
K0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgor
SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5I
ZWxsbzxicj4KKzwvZGl2PgorPHA+VGVzdAorZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTM0OCI+YnVnCisyOTM0ODwvYT46IFRoaXMgdGVzdHMg
dGhhdCB1c2luZyB0aGUgbW91c2Ugd2hlZWwgd2hpbGUgaGF2aW5nIHRoZQorcG9pbnRlciBpbiBh
IGhvcml6b250YWwgc2Nyb2xsYmFyIG1ha2VzIGl0IHNjcm9sbCBob3Jpem9udGFsbHksIGFsc28K
K3dpdGggc3R5bGVkIHNjcm9sbGJhcnMuIE9uIHN1Y2Nlc3MsIHRoZSB2ZXJ0aWNhbCBvZmZzZXQg
Zm9yIGJvdGggZGl2cworc2hvdWxkIGJlIDgwLCBhbmQgdGhlIGhvcml6b250YSA0MC48cC8+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBmYWlsZWQoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAiRkFJTEVE
IjsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdmFyIG92ZXJmbG93ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisKKyAgICAvLyBTY3JvbGwgaW5zaWRlIHRoZSBkaXYK
KyAgICB2YXIgeCA9IG92ZXJmbG93Lm9mZnNldExlZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAt
IDUwOworICAgIHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVp
Z2h0IC0gNTA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKG92ZXJmbG93LnNjcm9sbFRvcCAh
PSA0MCB8fCBvdmVyZmxvdy5zY3JvbGxMZWZ0ICE9IDApCisgICAgICAgIGZhaWxlZCgpOworCisg
ICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICB2YXIg
eCA9IG92ZXJmbG93Lm9mZnNldExlZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAtIDUwOworICAg
IHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNjsK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVdoZWVsVG8oMCwgMSk7CisKKyAgICBpZiAob3ZlcmZsb3cuc2Nyb2xsVG9wICE9IDQwIHx8IG92
ZXJmbG93LnNjcm9sbExlZnQgIT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Ny
b2xsIG9uIHRvcCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyCisgICAgdmFyIHggPSBvdmVyZmxv
dy5vZmZzZXRMZWZ0ICsgb3ZlcmZsb3cub2Zmc2V0V2lkdGggLSA2OworICAgIHZhciB5ID0gb3Zl
cmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNTA7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAs
IDEpOworCisgICAgaWYgKG92ZXJmbG93LnNjcm9sbFRvcCAhPSA4MCB8fCBvdmVyZmxvdy5zY3Jv
bGxMZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQoKTsKKworICAgIHZhciBzdHlsZWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJyk7CisKKyAgICAvLyBTY3JvbGwgaW5zaWRlIHRo
ZSBkaXYKKyAgICB2YXIgeCA9IHN0eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9mZnNldFdpZHRo
IC0gNTA7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdo
dCAtIDUwOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlV2hlZWxUbygwLCAxKTsKKworICAgIGlmIChzdHlsZWQuc2Nyb2xsVG9wICE9IDQw
IHx8IHN0eWxlZC5zY3JvbGxMZWZ0ICE9IDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8g
U2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IHN0
eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9mZnNldFdpZHRoIC0gNTA7CisgICAgdmFyIHkgPSBz
dHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdodCAtIDY7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEp
OworCisgICAgaWYgKHN0eWxlZC5zY3JvbGxUb3AgIT0gNDAgfHwgc3R5bGVkLnNjcm9sbExlZnQg
IT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUg
dmVydGljYWwgc2Nyb2xsYmFyCisgICAgdmFyIHggPSBzdHlsZWQub2Zmc2V0TGVmdCArIHN0eWxl
ZC5vZmZzZXRXaWR0aCAtIDY7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVk
Lm9mZnNldEhlaWdodCAtIDUwOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlV2hlZWxUbygwLCAxKTsKKworICAgIGlmIChzdHlsZWQuc2Ny
b2xsVG9wICE9IDgwIHx8IHN0eWxlZC5zY3JvbGxMZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQo
KTsKKworICAgIHNldFRpbWVvdXQoZmluaXNoZWQsIDUwMCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlz
aGVkKCkKK3sKKyAgICB2YXIgbXNnID0gIlNjcm9sbCBvZmZzZXQgZm9yICdvdmVyZmxvdycgaXMg
IiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbFRvcCArICIgYW5k
ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKS5zY3JvbGxMZWZ0OworICAg
IG1zZyArPSAiPGJyLz4iOworICAgIG1zZyArPSAiU2Nyb2xsIG9mZnNldCBmb3IgJ3N0eWxlZCcg
aXMgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHlsZWQnKS5zY3JvbGxUb3AgKyAiIGFu
ZCAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZCcpLnNjcm9sbExlZnQ7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IG1zZzsKKwor
ICAgIC8vIEp1c3QgdG8gY2xlYW51cCB0aGUgdGVzdCByZXN1bHRzIHBhZ2UKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAyYzZlZjNlLi4xZWUwYTg1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5
LTA5LTIzICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3Jh
LmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBjb3JyZWN0IGhvcml6b250YWwgc2Nyb2xsYmFyIGJlaGF2aW9yIGZvciBHVEsr
IGFsc28gb24KKyAgICAgICAgc3R5bGVkIHNjcm9sbGJhcnMuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MzQ4CisgICAgICAgIFtHdGtdIFNjcm9s
bHdoZWVsIG9uIGhvcml6b250YWwgc2Nyb2xsYmFycyBzaG91bGQgc2xpZGUgaG9yaXpvbnRhbGx5
CisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xs
YmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxF
dmVudCk6IG9uIEdUSyssIHdoZW4gdXNpbmcgdGhlCisgICAgICAgIHdoZWVsIHdpdGggdGhlIHBv
aW50ZXIgb24gdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyLCBzY3JvbGwKKyAgICAgICAgaG9yaXpv
bnRhbGx5OworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudDo6c3dhcE9yaWVudGF0aW9uKTogYWxsb3cgYWRkaW5nIGEKKyAgICAg
ICAgdmVydGljYWwgc2Nyb2xsIHRvIHRoZSBob3Jpem9udGFsIG9uZTsKKwogMjAwOS0wOS0yMiAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVudCBz
Y3JvbGxpbmcgbXVsdGlwbGUgZWxlbWVudHMgZHVyaW5nIGxhdGNoZWQgd2hlZWwgZXZlbnRzLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCAxZmUwMWI5Li5mYTgyOTRiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcApAQCAtMTc1OCw2ICsxNzU4LDEzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1v
dXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAg
cmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAorI2lmICFQTEFURk9STShHVEspCitib29sIEV2ZW50
SGFuZGxlcjo6c2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbChjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVu
dCYgZSkKIHsKICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTE3
NzcsMTEgKzE3ODQsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxh
dGZvcm1XaGVlbEV2ZW50JiBlKQogICAgIGJvb2wgaXNPdmVyV2lkZ2V0OwogICAgIGJvb2wgZGlk
U2V0TGF0Y2hlZE5vZGUgPSBmYWxzZTsKIAorICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2UG9pbnQp
OworICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CisKICAgICBpZiAobV91c2VMYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKICAgICAgICAgaWYg
KCFtX2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSkgewotICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwotICAgICAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQodlBvaW50KTsKLSAgICAgICAgICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXll
cigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2xhdGNoZWRXaGVl
bEV2ZW50Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgICAgIG1fd2lkZ2V0SXNM
YXRjaGVkID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgICAgICAgICAgZGlkU2V0TGF0Y2hl
ZE5vZGUgPSB0cnVlOwpAQCAtMTc5NSwxMyArMTgwMywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIGlmIChtX3By
ZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUpCiAgICAgICAgICAgICBtX3ByZXZpb3VzV2hlZWxTY3Jv
bGxlZE5vZGUgPSAwOwogCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodlBvaW50KTsK
LSAgICAgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgIH0KIAorICAgIGlmIChzaG91bGRU
dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKHJlc3VsdCkpCisgICAgICAgIGUudHVyblZl
cnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbCgpOworCiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAg
Ly8gRmlndXJlIG91dCB3aGljaCB2aWV3IHRvIHNlbmQgdGhlIGV2ZW50IHRvLgogICAgICAgICBS
ZW5kZXJPYmplY3QqIHRhcmdldCA9IG5vZGUtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5k
ZXggNzA2NjI1Mi4uZTFhMDJkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMTI1LDYgKzEyNSw4IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZERyYWdBdXRvTm9kZShOb2RlKiwgY29uc3QgSW50UG9p
bnQmKSBjb25zdDsgLy8gLXdlYmtpdC11c2VyLWRyYWcgPT0gYXV0bwogI2VuZGlmCiAKKyAgICBi
b29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwoY29uc3QgSGl0VGVzdFJl
c3VsdCYpIGNvbnN0OworCiAgICAgYm9vbCB0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KikgY29u
c3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxDb250cm9scyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAppbmRleCBkMTJjZGNjLi43MDUxMzkxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCkBAIC0xMjIsNCArMTIyLDEzIEBAIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKICAgICByZXR1cm4gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CiB9CiAKKy8vIEdUSysgbXVzdCBzY3JvbGwgaG9y
aXpvbnRhbGx5IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUKKy8vIGhvcml6
b250YWwgc2Nyb2xsYmFyIHdoaWxlIHNjcm9sbGluZyB3aXRoIHRoZSB3aGVlbDsgd2UgbmVlZCB0
bworLy8gYWRkIHRoZSBkZWx0YXMgYW5kIHRpY2tzIGhlcmUgc28gdGhhdCB0aGlzIGJlaGF2aW9y
IGlzIGNvbnNpc3RlbnQKKy8vIGZvciBzdHlsZWQgc2Nyb2xsYmFycy4KK2Jvb2wgRXZlbnRIYW5k
bGVyOjpzaG91bGRUdXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVzdWx0LnNjcm9sbGJhcigpICYm
IHJlc3VsdC5zY3JvbGxiYXIoKS0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
OworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA1MzdkZWFj
Li4xMDJkNjFhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTkzLDYg
KzkzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhY2NlcHQoKSB7IG1f
aXNBY2NlcHRlZCA9IHRydWU7IH0KICAgICAgICAgdm9pZCBpZ25vcmUoKSB7IG1faXNBY2NlcHRl
ZCA9IGZhbHNlOyB9CiAKKyAgICAgICAgdm9pZCB0dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9u
dGFsKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9kZWx0YVggKz0gbV9kZWx0YVk7CisgICAg
ICAgICAgICBtX2RlbHRhWSA9IDA7CisKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1ggKz0gbV93
aGVlbFRpY2tzWTsKKyAgICAgICAgICAgIG1fd2hlZWxUaWNrc1kgPSAwOworICAgICAgICB9CisK
ICNpZiBQTEFURk9STShHVEspCiAgICAgICAgIFBsYXRmb3JtV2hlZWxFdmVudChHZGtFdmVudFNj
cm9sbCopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJL
aXRUb29scy9DaGFuZ2VMb2cKaW5kZXggMzJiZDhhNi4uNGQ2NDVkMiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMiw2ICsy
LDE4IEBACiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCiAKKyAgICAgICAg
QWRkIHN1cHBvcnQgZm9yIERSVCB0byBzZW5kIG1vdXNlIHdoZWVsIGV2ZW50cy4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjkzNDgKKyAgICAgICAg
W0d0a10gU2Nyb2xsd2hlZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNob3VsZCBzbGlkZSBo
b3Jpem9udGFsbHkKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5j
cHA6CisgICAgICAgIChtb3VzZVdoZWVsVG9DYWxsYmFjayk6CisKKzIwMDktMDktMjMgIEd1c3Rh
dm8gTm9yb25oYSBTaWx2YSAgPGd1c3Rhdm8ubm9yb25oYUBjb2xsYWJvcmEuY28udWs+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKICAgICAgICAgW0dUS10gRFJUIG11
c3QgZGlzcGxheSB3aW5kb3cgaW5zdGVhZCBvZiBqdXN0IHJlYWxpemluZywgdG8gZW5hYmxlIHN5
bnRoZXNpemluZyBldmVudHMgY29ycmVjdGx5CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yOTY5MwogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAppbmRleCA0NTgzZTEyLi44ZWU3NGM4IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCisrKyBiL1dl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2d0ay9FdmVudFNlbmRlci5jcHAKQEAgLTIzMiw2ICsy
MzIsNTIgQEAgc3RhdGljIEpTVmFsdWVSZWYgbW91c2VNb3ZlVG9DYWxsYmFjayhKU0NvbnRleHRS
ZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlV2hlZWxUb0Nh
bGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmpl
Y3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYg
YXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBXZWJLaXRXZWJWaWV3
KiB2aWV3ID0gd2Via2l0X3dlYl9mcmFtZV9nZXRfd2ViX3ZpZXcobWFpbkZyYW1lKTsKKyAgICBp
ZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
KworICAgIGlmIChhcmd1bWVudENvdW50IDwgMikKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtl
VW5kZWZpbmVkKGNvbnRleHQpOworCisgICAgaW50IGhvcml6b250YWwgPSAoaW50KUpTVmFsdWVU
b051bWJlcihjb250ZXh0LCBhcmd1bWVudHNbMF0sIGV4Y2VwdGlvbik7CisgICAgZ19yZXR1cm5f
dmFsX2lmX2ZhaWwoKCFleGNlcHRpb24gfHwgISpleGNlcHRpb24pLCBKU1ZhbHVlTWFrZVVuZGVm
aW5lZChjb250ZXh0KSk7CisgICAgaW50IHZlcnRpY2FsID0gKGludClKU1ZhbHVlVG9OdW1iZXIo
Y29udGV4dCwgYXJndW1lbnRzWzFdLCBleGNlcHRpb24pOworICAgIGdfcmV0dXJuX3ZhbF9pZl9m
YWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29u
dGV4dCkpOworCisgICAgLy8gR1RLKyBkb2Vzbid0IHN1cHBvcnQgbXVsdGlwbGUgZGlyZWN0aW9u
IHNjcm9sbHMgaW4gdGhlIHNhbWUgZXZlbnQhCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoKCF2
ZXJ0aWNhbCB8fCAhaG9yaXpvbnRhbCksIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpKTsK
KworICAgIEdka0V2ZW50IGV2ZW50OworICAgIGV2ZW50LnR5cGUgPSBHREtfU0NST0xMOworICAg
IGV2ZW50LnNjcm9sbC54ID0gbGFzdE1vdXNlUG9zaXRpb25YOworICAgIGV2ZW50LnNjcm9sbC55
ID0gbGFzdE1vdXNlUG9zaXRpb25ZOworICAgIGV2ZW50LnNjcm9sbC50aW1lID0gR0RLX0NVUlJF
TlRfVElNRTsKKyAgICBldmVudC5zY3JvbGwud2luZG93ID0gR1RLX1dJREdFVCh2aWV3KS0+d2lu
ZG93OworCisgICAgaWYgKGhvcml6b250YWwgPCAwKQorICAgICAgICBldmVudC5zY3JvbGwuZGly
ZWN0aW9uID0gR0RLX1NDUk9MTF9MRUZUOworICAgIGVsc2UgaWYgKGhvcml6b250YWwgPiAwKQor
ICAgICAgICBldmVudC5zY3JvbGwuZGlyZWN0aW9uID0gR0RLX1NDUk9MTF9SSUdIVDsKKyAgICBl
bHNlIGlmICh2ZXJ0aWNhbCA8IDApCisgICAgICAgIGV2ZW50LnNjcm9sbC5kaXJlY3Rpb24gPSBH
REtfU0NST0xMX1VQOworICAgIGVsc2UgaWYgKHZlcnRpY2FsID4gMCkKKyAgICAgICAgZXZlbnQu
c2Nyb2xsLmRpcmVjdGlvbiA9IEdES19TQ1JPTExfRE9XTjsKKyAgICBlbHNlCisgICAgICAgIGdf
YXNzZXJ0X25vdF9yZWFjaGVkKCk7CisKKyAgICBpZiAoZHJhZ01vZGUgJiYgZG93biAmJiAhcmVw
bGF5aW5nU2F2ZWRFdmVudHMpIHsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZV0uZXZlbnQg
PSBldmVudDsKKyAgICAgICAgbXNnUXVldWVbZW5kT2ZRdWV1ZSsrXS5pc0RyYWdFdmVudCA9IHRy
dWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd2Via2l0X3dlYl9mcmFtZV9sYXlvdXQobWFpbkZy
YW1lKTsKKyAgICAgICAgZ3RrX21haW5fZG9fZXZlbnQoJmV2ZW50KTsKKyAgICB9CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVl
UmVmIGJlZ2luRHJhZ1dpdGhGaWxlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09i
amVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50
Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlv
bikKIHsKICAgICBpZiAoYXJndW1lbnRDb3VudCA8IDEpCkBAIC00NDMsNiArNDg5LDcgQEAgc3Rh
dGljIEpTVmFsdWVSZWYgem9vbVBhZ2VPdXRDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwg
SlNPYmplY3RSZWYgZnVuY3Rpb24KIH0KIAogc3RhdGljIEpTU3RhdGljRnVuY3Rpb24gc3RhdGlj
RnVuY3Rpb25zW10gPSB7CisgICAgeyAibW91c2VXaGVlbFRvIiwgbW91c2VXaGVlbFRvQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICB7ICJjb250ZXh0Q2xpY2siLCBjb250ZXh0Q2xpY2tDYWxsYmFjaywg
a0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERl
bGV0ZSB9LAogICAgIHsgIm1vdXNlRG93biIsIG1vdXNlRG93bkNhbGxiYWNrLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgeyAibW91c2VVcCIsIG1vdXNlVXBDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAotLSAKMS42LjQuMwoK
</data>
<flag name="review"
          id="21174"
          type_id="1"
          status="-"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="21175"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>40032</attachid>
            <date>2009-09-23 17:31:02 -0700</date>
            <delta_ts>2009-09-24 14:10:32 -0700</delta_ts>
            <desc>losing deltaX in favor of deltaY, this time</desc>
            <filename>0001-Implement-correct-horizontal-scrollbar-behavior-for-.patch</filename>
            <type>text/plain</type>
            <size>16753</size>
            <attacher name="Gustavo Noronha (kov)">gustavo</attacher>
            
              <data encoding="base64">RnJvbSBjNTc4YjdhMzUzZmFmNzRiM2UxYTFkYTU5NDg0OTVjNGZlNTM5NDZiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgPGd1c3Rhdm8ubm9yb25o
YUBjb2xsYWJvcmEuY28udWs+CkRhdGU6IFRodSwgMTcgU2VwIDIwMDkgMjI6NDE6MDggLTAzMDAK
U3ViamVjdDogW1BBVENIXSBJbXBsZW1lbnQgY29ycmVjdCBob3Jpem9udGFsIHNjcm9sbGJhciBi
ZWhhdmlvciBmb3IgR1RLKwoKLS0tCiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTIgKysKIC4uLi1zY3JvbGxiYXItaG9yaXpvbnRhbC13aGVl
bC1zY3JvbGwtZXhwZWN0ZWQudHh0IHwgICAgNCArCiAuLi5vdmVyZmxvdy1zY3JvbGxiYXItaG9y
aXpvbnRhbC13aGVlbC1zY3JvbGwuaHRtbCB8ICAxNjIgKysrKysrKysrKysrKysrKysrKysKIFdl
YkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyMSAr
KysKIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwICAgICAgICAgICAgICAgICAgICAgIHwg
ICAyMCArKy0KIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaCAgICAgICAgICAgICAgICAgICAg
ICAgIHwgICAgMiArCiBXZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAgICAgICAg
ICAgICAgICB8ICAgIDkgKwogV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaCAg
ICAgICAgICAgICAgfCAgICA5ICsKIFdlYktpdFRvb2xzL0NoYW5nZUxvZyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgICAxMiArKwogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3Rr
L0V2ZW50U2VuZGVyLmNwcCAgICAgfCAgIDQ3ICsrKysrKwogMTAgZmlsZXMgY2hhbmdlZCwgMjky
IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250
YWwtd2hlZWwtc2Nyb2xsLWV4cGVjdGVkLnR4dAogY3JlYXRlIG1vZGUgMTAwNjQ0IExheW91dFRl
c3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFs
LXdoZWVsLXNjcm9sbC5odG1sCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI1ODc5YzAuLmI5NTdjZmIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAwOS0wOS0yMyAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5u
b3JvbmhhQGNvbGxhYm9yYS5jby51az4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBUZXN0IGZvciBjb3JyZWN0IHdoZWVsIHNjcm9sbGluZyBiZWhhdmlv
ci4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjkz
NDgKKyAgICAgICAgW0d0a10gU2Nyb2xsd2hlZWwgb24gaG9yaXpvbnRhbCBzY3JvbGxiYXJzIHNo
b3VsZCBzbGlkZSBob3Jpem9udGFsbHkKKworICAgICAgICAqIHBsYXRmb3JtL2d0ay9zY3JvbGxi
YXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXIt
aG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAwOS0wOS0y
MyAgRGFuaWVsIEJhdGVzICA8ZGJhdGVzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQg
YnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3Jv
bGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9udGFsLXdoZWVsLXNjcm9sbC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3Jv
bGxiYXItaG9yaXpvbnRhbC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlMjkyNzIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9ndGsvc2Nyb2xsYmFycy9vdmVyZmxvdy1zY3JvbGxiYXItaG9yaXpvbnRh
bC13aGVlbC1zY3JvbGwtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorVGVzdCBmb3IgYnVn
IDI5MzQ4OiBUaGlzIHRlc3RzIHRoYXQgdXNpbmcgdGhlIG1vdXNlIHdoZWVsIHdoaWxlIGhhdmlu
ZyB0aGUgcG9pbnRlciBpbiBhIGhvcml6b250YWwgc2Nyb2xsYmFyIG1ha2VzIGl0IHNjcm9sbCBo
b3Jpem9udGFsbHksIGFsc28gd2l0aCBzdHlsZWQgc2Nyb2xsYmFycy4gT24gc3VjY2VzcywgdGhl
IHZlcnRpY2FsIG9mZnNldCBmb3IgYm90aCBkaXZzIHNob3VsZCBiZSA4MCwgYW5kIHRoZSBob3Jp
em9udGEgNDAuCisKK1Njcm9sbCBvZmZzZXQgZm9yICdvdmVyZmxvdycgaXMgODAgYW5kIDQwCitT
Y3JvbGwgb2Zmc2V0IGZvciAnc3R5bGVkJyBpcyA4MCBhbmQgNDAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1ob3Jpem9u
dGFsLXdoZWVsLXNjcm9sbC5odG1sIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL3Njcm9sbGJh
cnMvb3ZlcmZsb3ctc2Nyb2xsYmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzUyMmZkZAotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9zY3JvbGxiYXJzL292ZXJmbG93LXNjcm9sbGJhci1o
b3Jpem9udGFsLXdoZWVsLXNjcm9sbC5odG1sCkBAIC0wLDAgKzEsMTYyIEBACis8aHRtbD4KKzxz
dHlsZT4KK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyIHsKKyAgd2lkdGg6MTdweDsKKyAg
aGVpZ2h0OjE3cHg7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbiB7
CisgIGRpc3BsYXk6YmxvY2s7CisgIHdpZHRoOiAxN3B4OworICBoZWlnaHQ6IDE3cHg7Cit9CisK
K2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLWJ1dHRvbjp2ZXJ0aWNhbCB7CisgIGJhY2tn
cm91bmQtY29sb3I6bGlnaHRibHVlOworICBib3JkZXI6MnB4IHNvbGlkIGJsYWNrOworfQorCitk
aXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b246aG9yaXpvbnRhbCB7CisgIGJhY2tn
cm91bmQtY29sb3I6IzIwODAyMDsKKyAgYm9yZGVyOjJweCBzb2xpZCBibGFjazsKK30KKworZGl2
I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdGh1bWIgeworICBtaW4td2lkdGg6MjBweDsKKyAg
bWluLWhlaWdodDoyMHB4OworICBiYWNrZ3JvdW5kLWNvbG9yOiBuYXZ5OworICBib3JkZXI6MnB4
IHNvbGlkICNjY2NjY2M7Cit9CisKK2RpdiNzdHlsZWQ6Oi13ZWJraXQtc2Nyb2xsYmFyLXRodW1i
Omhvcml6b250YWwgeworICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDA0MDAwOworfQorCitkaXYjc3R5
bGVkOjotd2Via2l0LXNjcm9sbGJhci1idXR0b246ZGlzYWJsZWQgeworICBkaXNwbGF5Om5vbmUK
K30KKworZGl2I3N0eWxlZDo6LXdlYmtpdC1zY3JvbGxiYXItdHJhY2sgeworICBiYWNrZ3JvdW5k
LWNvbG9yOiAjMjA2MGEwOworfQorCitkaXYjc3R5bGVkOjotd2Via2l0LXNjcm9sbGJhci10cmFj
azpob3Jpem9udGFsIHsKKyAgYmFja2dyb3VuZC1jb2xvcjogIzQwYTA0MDsKK30KKzwvc3R5bGU+
Cis8Ym9keSBzdHlsZT0ibWFyZ2luOjAiPgorPHNjcmlwdD4KK2lmICh3aW5kb3cubGF5b3V0VGVz
dENvbnRyb2xsZXIpIHsKKyAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7Cisg
ICAgbGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworfQorPC9zY3JpcHQ+Cis8
ZGl2IGlkPSJvdmVyZmxvdyIgc3R5bGU9ImJvcmRlcjoycHggc29saWQgYmxhY2s7b3ZlcmZsb3c6
YXV0bztoZWlnaHQ6MjAwcHg7d2lkdGg6MjAwcHg7IGxlZnQ6IDBweDsgdG9wOiAxMDBweDsgcG9z
aXRpb246IGFic29sdXRlOyI+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOmdyZWVuO3dp
ZHRoOjEwMDBweDtoZWlnaHQ6MTAwMHB4OyI+PC9kaXY+Cis8ZGl2IHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOnJlZDt3aWR0aDoxMDAwcHg7aGVpZ2h0OjEwMDBweDsiPjwvZGl2PgorPC9kaXY+Cis8
ZGl2IGlkPSJzdHlsZWQiIHN0eWxlPSJ3aWR0aDoyMDBweDsgaGVpZ2h0OjIwMHB4OyBvdmVyZmxv
dy15OnNjcm9sbDsgb3ZlcmZsb3cteDpzY3JvbGw7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDog
NDUwcHg7IHRvcDogMTAwcHg7Ij4KK0hlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88
YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxi
cj5IZWxsbzxicj5IZWxsbzxicj4KK0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJy
PgorPHNwYW4gc3R5bGU9IndoaXRlLXNwYWNlOm5vd3JhcCI+SGVsbG8gd29ybGQgdGhpcyBpcyBh
IGxvbmcgc3RyaW5nIGFuZCB3aWxsIG5vdCB3cmFwLjwvc3Bhbj4KK0hlbGxvPGJyPkhlbGxvPGJy
PkhlbGxvPGJyPkhlbGxvPGJyPgorSGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+
SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj5IZWxsbzxicj4K
K0hlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPkhlbGxvPGJyPgor
SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+SGVsbG88YnI+CitIZWxsbzxicj5IZWxsbzxicj5I
ZWxsbzxicj4KKzwvZGl2PgorPHA+VGVzdAorZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yOTM0OCI+YnVnCisyOTM0ODwvYT46IFRoaXMgdGVzdHMg
dGhhdCB1c2luZyB0aGUgbW91c2Ugd2hlZWwgd2hpbGUgaGF2aW5nIHRoZQorcG9pbnRlciBpbiBh
IGhvcml6b250YWwgc2Nyb2xsYmFyIG1ha2VzIGl0IHNjcm9sbCBob3Jpem9udGFsbHksIGFsc28K
K3dpdGggc3R5bGVkIHNjcm9sbGJhcnMuIE9uIHN1Y2Nlc3MsIHRoZSB2ZXJ0aWNhbCBvZmZzZXQg
Zm9yIGJvdGggZGl2cworc2hvdWxkIGJlIDgwLCBhbmQgdGhlIGhvcml6b250YSA0MC48cC8+Cis8
ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4KKzxzY3JpcHQ+CitmdW5jdGlvbiBmYWlsZWQoKSB7Cisg
ICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NvbnNvbGUnKS5pbm5lckhUTUwgPSAiRkFJTEVE
IjsKKyAgICB3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworfQorCitp
ZiAod2luZG93LmV2ZW50U2VuZGVyKSB7CisgICAgdmFyIG92ZXJmbG93ID0gZG9jdW1lbnQuZ2V0
RWxlbWVudEJ5SWQoJ292ZXJmbG93Jyk7CisKKyAgICAvLyBTY3JvbGwgaW5zaWRlIHRoZSBkaXYK
KyAgICB2YXIgeCA9IG92ZXJmbG93Lm9mZnNldExlZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAt
IDUwOworICAgIHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVp
Z2h0IC0gNTA7CisgICAgZXZlbnRTZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VXaGVlbFRvKDAsIDEpOworCisgICAgaWYgKG92ZXJmbG93LnNjcm9sbFRvcCAh
PSA0MCB8fCBvdmVyZmxvdy5zY3JvbGxMZWZ0ICE9IDApCisgICAgICAgIGZhaWxlZCgpOworCisg
ICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICB2YXIg
eCA9IG92ZXJmbG93Lm9mZnNldExlZnQgKyBvdmVyZmxvdy5vZmZzZXRXaWR0aCAtIDUwOworICAg
IHZhciB5ID0gb3ZlcmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNjsK
KyAgICBldmVudFNlbmRlci5tb3VzZU1vdmVUbyh4LCB5KTsKKyAgICBldmVudFNlbmRlci5tb3Vz
ZVdoZWVsVG8oMCwgMSk7CisKKyAgICBpZiAob3ZlcmZsb3cuc2Nyb2xsVG9wICE9IDQwIHx8IG92
ZXJmbG93LnNjcm9sbExlZnQgIT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Ny
b2xsIG9uIHRvcCBvZiB0aGUgdmVydGljYWwgc2Nyb2xsYmFyCisgICAgdmFyIHggPSBvdmVyZmxv
dy5vZmZzZXRMZWZ0ICsgb3ZlcmZsb3cub2Zmc2V0V2lkdGggLSA2OworICAgIHZhciB5ID0gb3Zl
cmZsb3cub2Zmc2V0VG9wICsgb3ZlcmZsb3cub2Zmc2V0SGVpZ2h0IC0gNTA7CisgICAgZXZlbnRT
ZW5kZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAs
IDEpOworCisgICAgaWYgKG92ZXJmbG93LnNjcm9sbFRvcCAhPSA4MCB8fCBvdmVyZmxvdy5zY3Jv
bGxMZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQoKTsKKworICAgIHZhciBzdHlsZWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJyk7CisKKyAgICAvLyBTY3JvbGwgaW5zaWRlIHRo
ZSBkaXYKKyAgICB2YXIgeCA9IHN0eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9mZnNldFdpZHRo
IC0gNTA7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdo
dCAtIDUwOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOworICAgIGV2ZW50U2Vu
ZGVyLm1vdXNlV2hlZWxUbygwLCAxKTsKKworICAgIGlmIChzdHlsZWQuc2Nyb2xsVG9wICE9IDQw
IHx8IHN0eWxlZC5zY3JvbGxMZWZ0ICE9IDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8g
U2Nyb2xsIG9uIHRvcCBvZiB0aGUgaG9yaXpvbnRhbCBzY3JvbGxiYXIKKyAgICB2YXIgeCA9IHN0
eWxlZC5vZmZzZXRMZWZ0ICsgc3R5bGVkLm9mZnNldFdpZHRoIC0gNTA7CisgICAgdmFyIHkgPSBz
dHlsZWQub2Zmc2V0VG9wICsgc3R5bGVkLm9mZnNldEhlaWdodCAtIDY7CisgICAgZXZlbnRTZW5k
ZXIubW91c2VNb3ZlVG8oeCwgeSk7CisgICAgZXZlbnRTZW5kZXIubW91c2VXaGVlbFRvKDAsIDEp
OworCisgICAgaWYgKHN0eWxlZC5zY3JvbGxUb3AgIT0gNDAgfHwgc3R5bGVkLnNjcm9sbExlZnQg
IT0gNDApCisgICAgICAgIGZhaWxlZCgpOworCisgICAgLy8gU2Nyb2xsIG9uIHRvcCBvZiB0aGUg
dmVydGljYWwgc2Nyb2xsYmFyCisgICAgdmFyIHggPSBzdHlsZWQub2Zmc2V0TGVmdCArIHN0eWxl
ZC5vZmZzZXRXaWR0aCAtIDY7CisgICAgdmFyIHkgPSBzdHlsZWQub2Zmc2V0VG9wICsgc3R5bGVk
Lm9mZnNldEhlaWdodCAtIDUwOworICAgIGV2ZW50U2VuZGVyLm1vdXNlTW92ZVRvKHgsIHkpOwor
ICAgIGV2ZW50U2VuZGVyLm1vdXNlV2hlZWxUbygwLCAxKTsKKworICAgIGlmIChzdHlsZWQuc2Ny
b2xsVG9wICE9IDgwIHx8IHN0eWxlZC5zY3JvbGxMZWZ0ICE9IDQwKQorICAgICAgICBmYWlsZWQo
KTsKKworICAgIHNldFRpbWVvdXQoZmluaXNoZWQsIDUwMCk7Cit9CisKK2Z1bmN0aW9uIGZpbmlz
aGVkKCkKK3sKKyAgICB2YXIgbXNnID0gIlNjcm9sbCBvZmZzZXQgZm9yICdvdmVyZmxvdycgaXMg
IiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdvdmVyZmxvdycpLnNjcm9sbFRvcCArICIgYW5k
ICIgKyBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnb3ZlcmZsb3cnKS5zY3JvbGxMZWZ0OworICAg
IG1zZyArPSAiPGJyLz4iOworICAgIG1zZyArPSAiU2Nyb2xsIG9mZnNldCBmb3IgJ3N0eWxlZCcg
aXMgIiArIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdHlsZWQnKS5zY3JvbGxUb3AgKyAiIGFu
ZCAiICsgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3N0eWxlZCcpLnNjcm9sbExlZnQ7CisKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnY29uc29sZScpLmlubmVySFRNTCA9IG1zZzsKKwor
ICAgIC8vIEp1c3QgdG8gY2xlYW51cCB0aGUgdGVzdCByZXN1bHRzIHBhZ2UKKyAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnc3R5bGVkJykuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKworICAg
IHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7Cit9CisKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJD
b3JlL0NoYW5nZUxvZwppbmRleCAyYzZlZjNlLi4xZWUwYTg1IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDA5
LTA5LTIzICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3Jh
LmNvLnVrPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEltcGxlbWVudCBjb3JyZWN0IGhvcml6b250YWwgc2Nyb2xsYmFyIGJlaGF2aW9yIGZvciBHVEsr
IGFsc28gb24KKyAgICAgICAgc3R5bGVkIHNjcm9sbGJhcnMuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MzQ4CisgICAgICAgIFtHdGtdIFNjcm9s
bHdoZWVsIG9uIGhvcml6b250YWwgc2Nyb2xsYmFycyBzaG91bGQgc2xpZGUgaG9yaXpvbnRhbGx5
CisKKyAgICAgICAgVGVzdDogcGxhdGZvcm0vZ3RrL3Njcm9sbGJhcnMvb3ZlcmZsb3ctc2Nyb2xs
YmFyLWhvcml6b250YWwtd2hlZWwtc2Nyb2xsLmh0bWwKKworICAgICAgICAqIHBhZ2UvRXZlbnRI
YW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlV2hlZWxF
dmVudCk6IG9uIEdUSyssIHdoZW4gdXNpbmcgdGhlCisgICAgICAgIHdoZWVsIHdpdGggdGhlIHBv
aW50ZXIgb24gdGhlIGhvcml6b250YWwgc2Nyb2xsYmFyLCBzY3JvbGwKKyAgICAgICAgaG9yaXpv
bnRhbGx5OworICAgICAgICAqIHBsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVudC5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2d0ay9XaGVlbEV2ZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtV2hlZWxFdmVudDo6c3dhcE9yaWVudGF0aW9uKTogYWxsb3cgYWRkaW5nIGEKKyAgICAg
ICAgdmVydGljYWwgc2Nyb2xsIHRvIHRoZSBob3Jpem9udGFsIG9uZTsKKwogMjAwOS0wOS0yMiAg
VGltb3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgUHJldmVudCBz
Y3JvbGxpbmcgbXVsdGlwbGUgZWxlbWVudHMgZHVyaW5nIGxhdGNoZWQgd2hlZWwgZXZlbnRzLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAgYi9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCAxZmUwMWI5Li5mYTgyOTRiIDEwMDY0NAotLS0gYS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcApAQCAtMTc1OCw2ICsxNzU4LDEzIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1v
dXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAg
cmV0dXJuIHN3YWxsb3dFdmVudDsKIH0KIAorI2lmICFQTEFURk9STShHVEspCitib29sIEV2ZW50
SGFuZGxlcjo6c2hvdWxkVHVyblZlcnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbChjb25zdCBIaXRU
ZXN0UmVzdWx0JiByZXN1bHQpIGNvbnN0Cit7CisgICAgcmV0dXJuIGZhbHNlOworfQorI2VuZGlm
CisKIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVXaGVlbEV2ZW50KFBsYXRmb3JtV2hlZWxFdmVu
dCYgZSkKIHsKICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKQEAgLTE3
NzcsMTEgKzE3ODQsMTIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdoZWVsRXZlbnQoUGxh
dGZvcm1XaGVlbEV2ZW50JiBlKQogICAgIGJvb2wgaXNPdmVyV2lkZ2V0OwogICAgIGJvb2wgZGlk
U2V0TGF0Y2hlZE5vZGUgPSBmYWxzZTsKIAorICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0
VGVzdFJlcXVlc3Q6OlJlYWRPbmx5KTsKKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2UG9pbnQp
OworICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3Vs
dCk7CisKICAgICBpZiAobV91c2VMYXRjaGVkV2hlZWxFdmVudE5vZGUpIHsKICAgICAgICAgaWYg
KCFtX2xhdGNoZWRXaGVlbEV2ZW50Tm9kZSkgewotICAgICAgICAgICAgSGl0VGVzdFJlcXVlc3Qg
cmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwotICAgICAgICAgICAgSGl0VGVzdFJl
c3VsdCByZXN1bHQodlBvaW50KTsKLSAgICAgICAgICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXll
cigpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgICAgICAgICBtX2xhdGNoZWRXaGVl
bEV2ZW50Tm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgICAgIG1fd2lkZ2V0SXNM
YXRjaGVkID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgICAgICAgICAgZGlkU2V0TGF0Y2hl
ZE5vZGUgPSB0cnVlOwpAQCAtMTc5NSwxMyArMTgwMywxMyBAQCBib29sIEV2ZW50SGFuZGxlcjo6
aGFuZGxlV2hlZWxFdmVudChQbGF0Zm9ybVdoZWVsRXZlbnQmIGUpCiAgICAgICAgIGlmIChtX3By
ZXZpb3VzV2hlZWxTY3JvbGxlZE5vZGUpCiAgICAgICAgICAgICBtX3ByZXZpb3VzV2hlZWxTY3Jv
bGxlZE5vZGUgPSAwOwogCi0gICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJl
cXVlc3Q6OlJlYWRPbmx5KTsKLSAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQodlBvaW50KTsK
LSAgICAgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPmhpdFRlc3QocmVxdWVzdCwgcmVz
dWx0KTsKICAgICAgICAgbm9kZSA9IHJlc3VsdC5pbm5lck5vZGUoKTsKICAgICAgICAgaXNPdmVy
V2lkZ2V0ID0gcmVzdWx0LmlzT3ZlcldpZGdldCgpOwogICAgIH0KIAorICAgIGlmIChzaG91bGRU
dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKHJlc3VsdCkpCisgICAgICAgIGUudHVyblZl
cnRpY2FsVGlja3NJbnRvSG9yaXpvbnRhbCgpOworCiAgICAgaWYgKG5vZGUpIHsKICAgICAgICAg
Ly8gRmlndXJlIG91dCB3aGljaCB2aWV3IHRvIHNlbmQgdGhlIGV2ZW50IHRvLgogICAgICAgICBS
ZW5kZXJPYmplY3QqIHRhcmdldCA9IG5vZGUtPnJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmggYi9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgKaW5k
ZXggNzA2NjI1Mi4uZTFhMDJkYiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxl
ci5oCisrKyBiL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaApAQCAtMTI1LDYgKzEyNSw4IEBA
IHB1YmxpYzoKICAgICBib29sIHNob3VsZERyYWdBdXRvTm9kZShOb2RlKiwgY29uc3QgSW50UG9p
bnQmKSBjb25zdDsgLy8gLXdlYmtpdC11c2VyLWRyYWcgPT0gYXV0bwogI2VuZGlmCiAKKyAgICBi
b29sIHNob3VsZFR1cm5WZXJ0aWNhbFRpY2tzSW50b0hvcml6b250YWwoY29uc3QgSGl0VGVzdFJl
c3VsdCYpIGNvbnN0OworCiAgICAgYm9vbCB0YWJzVG9MaW5rcyhLZXlib2FyZEV2ZW50KikgY29u
c3Q7CiAgICAgYm9vbCB0YWJzVG9BbGxDb250cm9scyhLZXlib2FyZEV2ZW50KikgY29uc3Q7CiAK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcCBiL1dlYkNv
cmUvcGFnZS9ndGsvRXZlbnRIYW5kbGVyR3RrLmNwcAppbmRleCBkMTJjZGNjLi43MDUxMzkxIDEw
MDY0NAotLS0gYS9XZWJDb3JlL3BhZ2UvZ3RrL0V2ZW50SGFuZGxlckd0ay5jcHAKKysrIGIvV2Vi
Q29yZS9wYWdlL2d0ay9FdmVudEhhbmRsZXJHdGsuY3BwCkBAIC0xMjIsNCArMTIyLDEzIEBAIHVu
c2lnbmVkIEV2ZW50SGFuZGxlcjo6YWNjZXNzS2V5TW9kaWZpZXJzKCkKICAgICByZXR1cm4gUGxh
dGZvcm1LZXlib2FyZEV2ZW50OjpBbHRLZXk7CiB9CiAKKy8vIEdUSysgbXVzdCBzY3JvbGwgaG9y
aXpvbnRhbGx5IGlmIHRoZSBtb3VzZSBwb2ludGVyIGlzIG9uIHRvcCBvZiB0aGUKKy8vIGhvcml6
b250YWwgc2Nyb2xsYmFyIHdoaWxlIHNjcm9sbGluZyB3aXRoIHRoZSB3aGVlbDsgd2UgbmVlZCB0
bworLy8gYWRkIHRoZSBkZWx0YXMgYW5kIHRpY2tzIGhlcmUgc28gdGhhdCB0aGlzIGJlaGF2aW9y
IGlzIGNvbnNpc3RlbnQKKy8vIGZvciBzdHlsZWQgc2Nyb2xsYmFycy4KK2Jvb2wgRXZlbnRIYW5k
bGVyOjpzaG91bGRUdXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9udGFsKGNvbnN0IEhpdFRlc3RS
ZXN1bHQmIHJlc3VsdCkgY29uc3QKK3sKKyAgICByZXR1cm4gcmVzdWx0LnNjcm9sbGJhcigpICYm
IHJlc3VsdC5zY3JvbGxiYXIoKS0+b3JpZW50YXRpb24oKSA9PSBIb3Jpem9udGFsU2Nyb2xsYmFy
OworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oIGIvV2ViQ29yZS9wbGF0Zm9ybS9QbGF0Zm9ybVdoZWVsRXZlbnQuaAppbmRleCA1MzdkZWFj
Li45YTRhMGNiIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL1BsYXRmb3JtV2hlZWxFdmVu
dC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vUGxhdGZvcm1XaGVlbEV2ZW50LmgKQEAgLTkzLDYg
KzkzLDE1IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCBhY2NlcHQoKSB7IG1f
aXNBY2NlcHRlZCA9IHRydWU7IH0KICAgICAgICAgdm9pZCBpZ25vcmUoKSB7IG1faXNBY2NlcHRl
ZCA9IGZhbHNlOyB9CiAKKyAgICAgICAgdm9pZCB0dXJuVmVydGljYWxUaWNrc0ludG9Ib3Jpem9u
dGFsKCkKKyAgICAgICAgeworICAgICAgICAgICAgbV9kZWx0YVggPSBtX2RlbHRhWTsKKyAgICAg
ICAgICAgIG1fZGVsdGFZID0gMDsKKworICAgICAgICAgICAgbV93aGVlbFRpY2tzWCA9IG1fd2hl
ZWxUaWNrc1k7CisgICAgICAgICAgICBtX3doZWVsVGlja3NZID0gMDsKKyAgICAgICAgfQorCiAj
aWYgUExBVEZPUk0oR1RLKQogICAgICAgICBQbGF0Zm9ybVdoZWVsRXZlbnQoR2RrRXZlbnRTY3Jv
bGwqKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0
VG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMyYmQ4YTYuLjRkNjQ1ZDIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL0NoYW5nZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTIsNiArMiwx
OCBAQAogCiAgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgogCisgICAgICAgIEFk
ZCBzdXBwb3J0IGZvciBEUlQgdG8gc2VuZCBtb3VzZSB3aGVlbCBldmVudHMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI5MzQ4CisgICAgICAgIFtH
dGtdIFNjcm9sbHdoZWVsIG9uIGhvcml6b250YWwgc2Nyb2xsYmFycyBzaG91bGQgc2xpZGUgaG9y
aXpvbnRhbGx5CisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3Bw
OgorICAgICAgICAobW91c2VXaGVlbFRvQ2FsbGJhY2spOgorCisyMDA5LTA5LTIzICBHdXN0YXZv
IE5vcm9uaGEgU2lsdmEgIDxndXN0YXZvLm5vcm9uaGFAY29sbGFib3JhLmNvLnVrPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCiAgICAgICAgIFtHVEtdIERSVCBtdXN0
IGRpc3BsYXkgd2luZG93IGluc3RlYWQgb2YganVzdCByZWFsaXppbmcsIHRvIGVuYWJsZSBzeW50
aGVzaXppbmcgZXZlbnRzIGNvcnJlY3RseQogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9Mjk2OTMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2d0ay9FdmVudFNlbmRlci5jcHAKaW5kZXggNDU4M2UxMi4uOGVlNzRjOCAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvZ3RrL0V2ZW50U2VuZGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9ndGsvRXZlbnRTZW5kZXIuY3BwCkBAIC0yMzIsNiArMjMy
LDUyIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIG1vdXNlTW92ZVRvQ2FsbGJhY2soSlNDb250ZXh0UmVm
IGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5k
ZWZpbmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBtb3VzZVdoZWVsVG9DYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgV2ViS2l0V2ViVmlldyog
dmlldyA9IHdlYmtpdF93ZWJfZnJhbWVfZ2V0X3dlYl92aWV3KG1haW5GcmFtZSk7CisgICAgaWYg
KCF2aWV3KQorICAgICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisK
KyAgICBpZiAoYXJndW1lbnRDb3VudCA8IDIpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKKworICAgIGludCBob3Jpem9udGFsID0gKGludClKU1ZhbHVlVG9O
dW1iZXIoY29udGV4dCwgYXJndW1lbnRzWzBdLCBleGNlcHRpb24pOworICAgIGdfcmV0dXJuX3Zh
bF9pZl9mYWlsKCghZXhjZXB0aW9uIHx8ICEqZXhjZXB0aW9uKSwgSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCkpOworICAgIGludCB2ZXJ0aWNhbCA9IChpbnQpSlNWYWx1ZVRvTnVtYmVyKGNv
bnRleHQsIGFyZ3VtZW50c1sxXSwgZXhjZXB0aW9uKTsKKyAgICBnX3JldHVybl92YWxfaWZfZmFp
bCgoIWV4Y2VwdGlvbiB8fCAhKmV4Y2VwdGlvbiksIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpKTsKKworICAgIC8vIEdUSysgZG9lc24ndCBzdXBwb3J0IG11bHRpcGxlIGRpcmVjdGlvbiBz
Y3JvbGxzIGluIHRoZSBzYW1lIGV2ZW50IQorICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKCghdmVy
dGljYWwgfHwgIWhvcml6b250YWwpLCBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KSk7CisK
KyAgICBHZGtFdmVudCBldmVudDsKKyAgICBldmVudC50eXBlID0gR0RLX1NDUk9MTDsKKyAgICBl
dmVudC5zY3JvbGwueCA9IGxhc3RNb3VzZVBvc2l0aW9uWDsKKyAgICBldmVudC5zY3JvbGwueSA9
IGxhc3RNb3VzZVBvc2l0aW9uWTsKKyAgICBldmVudC5zY3JvbGwudGltZSA9IEdES19DVVJSRU5U
X1RJTUU7CisgICAgZXZlbnQuc2Nyb2xsLndpbmRvdyA9IEdUS19XSURHRVQodmlldyktPndpbmRv
dzsKKworICAgIGlmIChob3Jpem9udGFsIDwgMCkKKyAgICAgICAgZXZlbnQuc2Nyb2xsLmRpcmVj
dGlvbiA9IEdES19TQ1JPTExfTEVGVDsKKyAgICBlbHNlIGlmIChob3Jpem9udGFsID4gMCkKKyAg
ICAgICAgZXZlbnQuc2Nyb2xsLmRpcmVjdGlvbiA9IEdES19TQ1JPTExfUklHSFQ7CisgICAgZWxz
ZSBpZiAodmVydGljYWwgPCAwKQorICAgICAgICBldmVudC5zY3JvbGwuZGlyZWN0aW9uID0gR0RL
X1NDUk9MTF9VUDsKKyAgICBlbHNlIGlmICh2ZXJ0aWNhbCA+IDApCisgICAgICAgIGV2ZW50LnNj
cm9sbC5kaXJlY3Rpb24gPSBHREtfU0NST0xMX0RPV047CisgICAgZWxzZQorICAgICAgICBnX2Fz
c2VydF9ub3RfcmVhY2hlZCgpOworCisgICAgaWYgKGRyYWdNb2RlICYmIGRvd24gJiYgIXJlcGxh
eWluZ1NhdmVkRXZlbnRzKSB7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWVdLmV2ZW50ID0g
ZXZlbnQ7CisgICAgICAgIG1zZ1F1ZXVlW2VuZE9mUXVldWUrK10uaXNEcmFnRXZlbnQgPSB0cnVl
OworICAgIH0gZWxzZSB7CisgICAgICAgIHdlYmtpdF93ZWJfZnJhbWVfbGF5b3V0KG1haW5GcmFt
ZSk7CisgICAgICAgIGd0a19tYWluX2RvX2V2ZW50KCZldmVudCk7CisgICAgfQorCisgICAgcmV0
dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJl
ZiBiZWdpbkRyYWdXaXRoRmlsZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmpl
Y3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENv
dW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24p
CiB7CiAgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQpAQCAtNDQzLDYgKzQ4OSw3IEBAIHN0YXRp
YyBKU1ZhbHVlUmVmIHpvb21QYWdlT3V0Q2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpT
T2JqZWN0UmVmIGZ1bmN0aW9uCiB9CiAKIHN0YXRpYyBKU1N0YXRpY0Z1bmN0aW9uIHN0YXRpY0Z1
bmN0aW9uc1tdID0geworICAgIHsgIm1vdXNlV2hlZWxUbyIsIG1vdXNlV2hlZWxUb0NhbGxiYWNr
LCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250
RGVsZXRlIH0sCiAgICAgeyAiY29udGV4dENsaWNrIiwgY29udGV4dENsaWNrQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICB7ICJtb3VzZURvd24iLCBtb3VzZURvd25DYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAg
IHsgIm1vdXNlVXAiLCBtb3VzZVVwQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKLS0gCjEuNi40LjMKCg==
</data>
<flag name="review"
          id="21194"
          type_id="1"
          status="+"
          setter="oliver"
    />
    <flag name="commit-queue"
          id="21195"
          type_id="3"
          status="-"
          setter="gustavo"
    />
          </attachment>
      

    </bug>

</bugzilla>