<?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>109370</bug_id>
          
          <creation_ts>2013-02-09 21:26:55 -0800</creation_ts>
          <short_desc>[chromium] Apply page scale to all WebInputEvent types</short_desc>
          <delta_ts>2013-02-11 20:24:50 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandre Elias">aelias</reporter>
          <assigned_to name="Alexandre Elias">aelias</assigned_to>
          <cc>abarth</cc>
    
    <cc>aelias</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>rjkroege</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>wjmaclean</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>829191</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-09 21:26:55 -0800</bug_when>
    <thetext>[chromium] Apply page scale to all WebInputEvent types</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829194</commentid>
    <comment_count>1</comment_count>
      <attachid>187461</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-09 21:31:43 -0800</bug_when>
    <thetext>Created attachment 187461
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829195</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-09 21:38:24 -0800</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829222</commentid>
    <comment_count>3</comment_count>
      <attachid>187461</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-09 23:33:14 -0800</bug_when>
    <thetext>Comment on attachment 187461
Patch

What about doing these conversions in WebInputEventConversions.cpp?  It already deals with the general problem of turning a WebInputEvent into something that WebCore understands</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829287</commentid>
    <comment_count>4</comment_count>
      <attachid>187461</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-10 06:28:35 -0800</bug_when>
    <thetext>Comment on attachment 187461
Patch

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

New failing tests:
fast/frames/frame-set-scaling-hit.html
fast/events/touch/gesture/touch-gesture-scroll-div-scaled.html
fast/frames/frame-set-rotation-hit.html
fast/events/page-scaled-mouse-click-iframe.html
fast/events/page-scaled-mouse-click.html
fast/events/touch/page-scaled-touch-gesture-click.html
platform/chromium/plugins/transformed-events.html
fast/events/touch/touch-scaled-scrolled.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829401</commentid>
    <comment_count>5</comment_count>
      <attachid>187504</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-10 19:20:29 -0800</bug_when>
    <thetext>Created attachment 187504
Patch

Move everything to WebInputEventConversions.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829402</commentid>
    <comment_count>6</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-10 19:21:45 -0800</bug_when>
    <thetext>Good idea, it&apos;s much cleaner this way.  I also did the reverse conversion in the PlatformEvent -&gt; WebInputEvent builders.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829404</commentid>
    <comment_count>7</comment_count>
      <attachid>187504</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-10 19:27:42 -0800</bug_when>
    <thetext>Comment on attachment 187504
Patch

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

It seems pretty easy to miss a scale or run a scale backwards through here without noticing.  Can you add some cases to WebInputEventConversionTest.cpp to make sure we don&apos;t accidentally lose or invert any of the scales you&apos;ve added?

Why are webkitMovementX/Y unscaled in WebMouseEventBuilder?

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:436
&gt;      webEvent.globalX = event.screenX();
&gt;      webEvent.globalY = event.screenY();

why are these not scaled?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>829411</commentid>
    <comment_count>8</comment_count>
      <attachid>187504</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-10 20:05:37 -0800</bug_when>
    <thetext>Comment on attachment 187504
Patch

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

New failing tests:
platform/chromium/plugins/transformed-events.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830396</commentid>
    <comment_count>9</comment_count>
      <attachid>187736</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-11 17:52:21 -0800</bug_when>
    <thetext>Created attachment 187736
Patch

Add unit test; add missing reverse-mouse scales; change widget-&gt;parent() to widget-&gt;root() for robustness; fix disambiguation scaling; revert int-&gt;float conversion since plugins reinterpret the bytes as ints</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830400</commentid>
    <comment_count>10</comment_count>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-11 17:55:09 -0800</bug_when>
    <thetext>OK, this should be ready for landing.

&gt; Why are webkitMovementX/Y unscaled in WebMouseEventBuilder?
&gt; 

That was a mistake; I&apos;m now scaling them.

&gt; &gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:436
&gt; &gt;      webEvent.globalX = event.screenX();
&gt; &gt;      webEvent.globalY = event.screenY();
&gt; 
&gt; why are these not scaled?

This one is intentional.  According to comments, these refer to location relative to the top-left corner of the physical screen.  It doesn&apos;t make sense to apply page scale to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830408</commentid>
    <comment_count>11</comment_count>
      <attachid>187736</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 18:00:35 -0800</bug_when>
    <thetext>Comment on attachment 187736
Patch

Attachment 187736 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16497497</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830411</commentid>
    <comment_count>12</comment_count>
      <attachid>187736</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-11 18:04:44 -0800</bug_when>
    <thetext>Comment on attachment 187736
Patch

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

R=me, one question for your consideration

&gt; Source/WebKit/chromium/src/WebInputEventConversion.cpp:178
&gt; +        m_area = IntSize(e.data.tap.width / scale, e.data.tap.height / scale);

do we want to use an explicit conversion here so we know what sort of rounding we&apos;re getting?  Maybe go to a FloatSize first and then use enclosing/enclosed/whateverIntSize?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830412</commentid>
    <comment_count>13</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2013-02-11 18:05:00 -0800</bug_when>
    <thetext>(In reply to comment #11)
&gt; (From update of attachment 187736 [details])
&gt; Attachment 187736 [details] did not pass chromium-ews (chromium-xvfb):
&gt; Output: http://queues.webkit.org/results/16497497

Looks like you need some &apos;u&apos; suffixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830414</commentid>
    <comment_count>14</comment_count>
      <attachid>187736</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 18:06:40 -0800</bug_when>
    <thetext>Comment on attachment 187736
Patch

Attachment 187736 did not pass cr-linux-debug-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16501462</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830419</commentid>
    <comment_count>15</comment_count>
      <attachid>187741</attachid>
    <who name="Alexandre Elias">aelias</who>
    <bug_when>2013-02-11 18:11:23 -0800</bug_when>
    <thetext>Created attachment 187741
Patch

Switch to expandedIntSize for size conversions; fix signed/unsigned integer warning</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830501</commentid>
    <comment_count>16</comment_count>
      <attachid>187741</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 20:24:46 -0800</bug_when>
    <thetext>Comment on attachment 187741
Patch

Clearing flags on attachment: 187741

Committed r142571: &lt;http://trac.webkit.org/changeset/142571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>830502</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-11 20:24:50 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187461</attachid>
            <date>2013-02-09 21:31:43 -0800</date>
            <delta_ts>2013-02-10 19:20:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109370-20130209212816.patch</filename>
            <type>text/plain</type>
            <size>9174</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDE4NmQxMjhhNmM0Y2UyYzRiM2RiNTNiOWRlMDM1NDEyZmI4Y2RmNGQuLmU0YmQ0ZjI3NjA1ZmI1
OWM0ZjQ0MDQwMThiNjNiZGU5NDFmMjBkOTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTMtMDItMDkgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBcHBseSBwYWdlIHNjYWxlIHRvIGFsbCBX
ZWJJbnB1dEV2ZW50IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDkzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5IHdlIG9ubHkgYWRqdXN0ZWQgYSBmZXcgY29tbW9uIGlucHV0
IGV2ZW50IHR5cGVzIGJ5IHBhZ2UKKyAgICAgICAgc2NhbGUsIGJ1dCBpbiBmYWN0IGFsbW9zdCBl
dmVyeSBwb3NpdGlvbiBhbmQgc2l6ZSBpbiBXZWJJbnB1dEV2ZW50cworICAgICAgICByZXF1aXJl
cyBpdC4KKworICAgICAgICBJIGFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2hhbmdlIFdl
Ykdlc3R1cmVFdmVudCBtZW1iZXJzIHRvCisgICAgICAgIGZsb2F0cyAod2hpY2ggSSBjaGVja2Vk
IGNhdXNlcyBubyB3YXJuaW5ncyBpbiBDaHJvbWl1bS1zaWRlIGNvZGUgd2l0aAorICAgICAgICBH
Q0Mgb3IgQ2xhbmcpLgorCisgICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
aGFzVG91Y2hFdmVudEhhbmRsZXJzQXQpOgorICAgICAgICAoV2ViS2l0OjpjbG9uZUlucHV0RXZl
bnQpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6c2NhbGVUb3VjaFBvaW50
KToKKyAgICAgICAgKFdlYktpdDo6c2NhbGVJbnB1dEV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6
V2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQpOgorCiAyMDEzLTAyLTA4ICBLZW50IFRhbXVy
YSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIERpc2FibGUgRU5B
QkxFX0lOUFVUX1RZUEVfREFURVRJTUUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYklucHV0RXZlbnQuaAppbmRleCA5OWQzNGFiNzY4YzVkZjIyYzZmYTcxNmYwMzUwYWIyMmI0
ZDFjMDRmLi41ZDZiMzUxOTJlNTZlMDkwZjA0MjQwMDBhOWUzYjBkMzUzODQ3YmIxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCkBAIC0zOTgsMzIg
KzM5OCwzMiBAQCBwdWJsaWM6CiAgICAgICAgIFRvdWNoc2NyZWVuLAogICAgIH07CiAKLSAgICBp
bnQgeDsKLSAgICBpbnQgeTsKLSAgICBpbnQgZ2xvYmFsWDsKLSAgICBpbnQgZ2xvYmFsWTsKKyAg
ICBmbG9hdCB4OworICAgIGZsb2F0IHk7CisgICAgZmxvYXQgZ2xvYmFsWDsKKyAgICBmbG9hdCBn
bG9iYWxZOwogICAgIFNvdXJjZURldmljZSBzb3VyY2VEZXZpY2U7CiAKICAgICB1bmlvbiB7CiAg
ICAgICAgIHN0cnVjdCB7CiAgICAgICAgICAgICBpbnQgdGFwQ291bnQ7Ci0gICAgICAgICAgICBp
bnQgd2lkdGg7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0OworICAgICAgICAgICAgZmxvYXQgd2lk
dGg7CisgICAgICAgICAgICBmbG9hdCBoZWlnaHQ7CiAgICAgICAgIH0gdGFwOwogCiAgICAgICAg
IHN0cnVjdCB7Ci0gICAgICAgICAgICBpbnQgd2lkdGg7Ci0gICAgICAgICAgICBpbnQgaGVpZ2h0
OworICAgICAgICAgICAgZmxvYXQgd2lkdGg7CisgICAgICAgICAgICBmbG9hdCBoZWlnaHQ7CiAg
ICAgICAgIH0gdGFwRG93bjsKIAogICAgICAgICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50IHdp
ZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IHdpZHRoOwor
ICAgICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9IGxvbmdQcmVzczsKIAogICAgICAg
ICBzdHJ1Y3QgewotICAgICAgICAgICAgaW50IGZpcnN0RmluZ2VyV2lkdGg7Ci0gICAgICAgICAg
ICBpbnQgZmlyc3RGaW5nZXJIZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCBmaXJzdEZpbmdlcldp
ZHRoOworICAgICAgICAgICAgZmxvYXQgZmlyc3RGaW5nZXJIZWlnaHQ7CiAgICAgICAgIH0gdHdv
RmluZ2VyVGFwOwogCiAgICAgICAgIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggNzQ0OTU5NzE2MTNhYjgxOGYzNjZlNzYyZTc0Y2FhNzE4
YWU3ODU1NS4uYzM1YmQwNzU4ZGUwNDIzN2Y2NTcyNDJhZmFlMjNkMzNmZmQwNjRkNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTM1NCw2ICsxMzU0
LDcgQEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFzVG91Y2hFdmVudEhhbmRsZXJzKGJvb2wgaGFzVG91
Y2hIYW5kbGVycykKIAogYm9vbCBXZWJWaWV3SW1wbDo6aGFzVG91Y2hFdmVudEhhbmRsZXJzQXQo
Y29uc3QgV2ViUG9pbnQmIHBvaW50KQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4g
Tm90ZSB0aGF0IHRoZSBwb2ludCBtdXN0IGJlIGRpdmlkZWQgYnkgcGFnZVNjYWxlRmFjdG9yLgog
ICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yMDI5LDYgKzIwMzAsOTYgQEAgYm9vbCBXZWJWaWV3
SW1wbDo6aGFzVmVydGljYWxTY3JvbGxiYXIoKQogICAgIHJldHVybiBtYWluRnJhbWVJbXBsKCkt
PmZyYW1lVmlldygpLT52ZXJ0aWNhbFNjcm9sbGJhcigpOwogfQogCitzdGF0aWMgUGFzc093blB0
cjxXZWJJbnB1dEV2ZW50PiBjbG9uZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVudCogaW5w
dXRFdmVudCkKK3sKKyAgICBXZWJJbnB1dEV2ZW50KiBuZXdJbnB1dEV2ZW50ID0gMDsKKyAgICBp
ZiAoV2ViSW5wdXRFdmVudDo6aXNLZXlib2FyZEV2ZW50VHlwZShpbnB1dEV2ZW50LT50eXBlKSkK
KyAgICAgICAgbmV3SW5wdXRFdmVudCA9IG5ldyBXZWJLZXlib2FyZEV2ZW50KCpzdGF0aWNfY2Fz
dDxjb25zdCBXZWJLZXlib2FyZEV2ZW50Kj4oaW5wdXRFdmVudCkpOworICAgIGVsc2UgaWYgKFdl
YklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC0+dHlwZSkpCisgICAgICAg
IG5ld0lucHV0RXZlbnQgPSBuZXcgV2ViTW91c2VFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2Vi
TW91c2VFdmVudCo+KGlucHV0RXZlbnQpKTsKKyAgICBlbHNlIGlmIChpbnB1dEV2ZW50LT50eXBl
ID09IFdlYklucHV0RXZlbnQ6Ok1vdXNlV2hlZWwpCisgICAgICAgIG5ld0lucHV0RXZlbnQgPSBu
ZXcgV2ViTW91c2VXaGVlbEV2ZW50KCpzdGF0aWNfY2FzdDxjb25zdCBXZWJNb3VzZVdoZWVsRXZl
bnQqPihpbnB1dEV2ZW50KSk7CisgICAgZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJl
RXZlbnRUeXBlKGlucHV0RXZlbnQtPnR5cGUpKQorICAgICAgICBuZXdJbnB1dEV2ZW50ID0gbmV3
IFdlYkdlc3R1cmVFdmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oaW5w
dXRFdmVudCkpOworICAgIGVsc2UgaWYgKFdlYklucHV0RXZlbnQ6OmlzVG91Y2hFdmVudFR5cGUo
aW5wdXRFdmVudC0+dHlwZSkpCisgICAgICAgIG5ld0lucHV0RXZlbnQgPSBuZXcgV2ViVG91Y2hF
dmVudCgqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViVG91Y2hFdmVudCo+KGlucHV0RXZlbnQpKTsKKyAg
ICBlbHNlCisgICAgICAgIENSQVNIKCk7CisKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3SW5wdXRF
dmVudCk7Cit9CisKK3N0YXRpYyB2b2lkIHNjYWxlVG91Y2hQb2ludChXZWJUb3VjaFBvaW50KiB0
b3VjaFBvaW50LCBmbG9hdCBzY2FsZSkKK3sKKyAgICB0b3VjaFBvaW50LT5zY3JlZW5Qb3NpdGlv
bi54ICo9IHNjYWxlOworICAgIHRvdWNoUG9pbnQtPnNjcmVlblBvc2l0aW9uLnkgKj0gc2NhbGU7
CisgICAgdG91Y2hQb2ludC0+cG9zaXRpb24ueCAqPSBzY2FsZTsKKyAgICB0b3VjaFBvaW50LT5w
b3NpdGlvbi55ICo9IHNjYWxlOworICAgIHRvdWNoUG9pbnQtPnJhZGl1c1ggKj0gc2NhbGU7Cisg
ICAgdG91Y2hQb2ludC0+cmFkaXVzWSAqPSBzY2FsZTsKK30KKworc3RhdGljIFBhc3NPd25QdHI8
V2ViSW5wdXRFdmVudD4gc2NhbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0
RXZlbnQsIGZsb2F0IHNjYWxlKQoreworICAgIC8vIFRoaXMgc2NhbGVzIGFsbCBzaXplcyBhbmQg
cG9zaXRpb25zIGV4Y2VwdDoKKyAgICAvLyAgIC0gV2hlZWwgZGVsdGFzLCB3aGljaCByZXByZXNl
bnQgZml4ZWQgYW1vdW50cyBvZiBzY3JvbGxpbmcgaXJyZXNwZWN0aXZlIG9mIHBhZ2Ugc2NhbGUu
CisgICAgLy8gICAtIGdsb2JhbFgvZ2xvYmFsWSwgd2hpY2ggcmVwcmVzZW50IHBvc2l0aW9ucyBy
ZWxhdGl2ZSB0byB0aGUgb3JpZ2luIG9mIHRoZSBwaHlzaWNhbCBzY3JlZW4uCisgICAgT3duUHRy
PFdlYklucHV0RXZlbnQ+IG5ld0lucHV0RXZlbnQgPSBjbG9uZUlucHV0RXZlbnQoaW5wdXRFdmVu
dCk7CisgICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVudC0+
dHlwZSkgfHwgaW5wdXRFdmVudC0+dHlwZSA9PSBXZWJJbnB1dEV2ZW50OjpNb3VzZVdoZWVsKSB7
CisgICAgICAgIFdlYk1vdXNlRXZlbnQqIG1vdXNlRXZlbnQgPSBzdGF0aWNfY2FzdDxXZWJNb3Vz
ZUV2ZW50Kj4obmV3SW5wdXRFdmVudC5nZXQoKSk7CisgICAgICAgIG1vdXNlRXZlbnQtPnggKj0g
c2NhbGU7CisgICAgICAgIG1vdXNlRXZlbnQtPnkgKj0gc2NhbGU7CisgICAgICAgIG1vdXNlRXZl
bnQtPndpbmRvd1ggKj0gc2NhbGU7CisgICAgICAgIG1vdXNlRXZlbnQtPndpbmRvd1kgKj0gc2Nh
bGU7CisgICAgICAgIG1vdXNlRXZlbnQtPm1vdmVtZW50WCAqPSBzY2FsZTsKKyAgICAgICAgbW91
c2VFdmVudC0+bW92ZW1lbnRZICo9IHNjYWxlOworICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVu
dDo6aXNHZXN0dXJlRXZlbnRUeXBlKGlucHV0RXZlbnQtPnR5cGUpKSB7CisgICAgICAgIFdlYkdl
c3R1cmVFdmVudCogZ2VzdHVyZUV2ZW50ID0gc3RhdGljX2Nhc3Q8V2ViR2VzdHVyZUV2ZW50Kj4o
bmV3SW5wdXRFdmVudC5nZXQoKSk7CisgICAgICAgIGdlc3R1cmVFdmVudC0+eCAqPSBzY2FsZTsK
KyAgICAgICAgZ2VzdHVyZUV2ZW50LT55ICo9IHNjYWxlOworICAgICAgICBzd2l0Y2ggKGlucHV0
RXZlbnQtPnR5cGUpIHsKKyAgICAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgor
ICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LT5kYXRhLnRhcC53aWR0aCAqPSBzY2FsZTsKKyAgICAg
ICAgICAgIGdlc3R1cmVFdmVudC0+ZGF0YS50YXAuaGVpZ2h0ICo9IHNjYWxlOworICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcERvd246Cisg
ICAgICAgICAgICBnZXN0dXJlRXZlbnQtPmRhdGEudGFwRG93bi53aWR0aCAqPSBzY2FsZTsKKyAg
ICAgICAgICAgIGdlc3R1cmVFdmVudC0+ZGF0YS50YXBEb3duLmhlaWdodCAqPSBzY2FsZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25n
UHJlc3M6CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQtPmRhdGEubG9uZ1ByZXNzLndpZHRoICo9
IHNjYWxlOworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LT5kYXRhLmxvbmdQcmVzcy5oZWlnaHQg
Kj0gc2NhbGU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlVHdvRmluZ2VyVGFwOgorICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LT5kYXRhLnR3
b0ZpbmdlclRhcC5maXJzdEZpbmdlcldpZHRoICo9IHNjYWxlOworICAgICAgICAgICAgZ2VzdHVy
ZUV2ZW50LT5kYXRhLnR3b0ZpbmdlclRhcC5maXJzdEZpbmdlckhlaWdodCAqPSBzY2FsZTsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3Jv
bGxVcGRhdGU6CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQtPmRhdGEuc2Nyb2xsVXBkYXRlLmRl
bHRhWCAqPSBzY2FsZTsKKyAgICAgICAgICAgIGdlc3R1cmVFdmVudC0+ZGF0YS5zY3JvbGxVcGRh
dGUuZGVsdGFZICo9IHNjYWxlOworICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LT5kYXRhLnNjcm9s
bFVwZGF0ZS52ZWxvY2l0eVggKj0gc2NhbGU7CisgICAgICAgICAgICBnZXN0dXJlRXZlbnQtPmRh
dGEuc2Nyb2xsVXBkYXRlLnZlbG9jaXR5WSAqPSBzY2FsZTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVGbGluZ1N0YXJ0OgorICAgICAgICAg
ICAgZ2VzdHVyZUV2ZW50LT5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlYICo9IHNjYWxlOworICAg
ICAgICAgICAgZ2VzdHVyZUV2ZW50LT5kYXRhLmZsaW5nU3RhcnQudmVsb2NpdHlZICo9IHNjYWxl
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNUb3VjaEV2ZW50
VHlwZShpbnB1dEV2ZW50LT50eXBlKSkgeworICAgICAgICBXZWJUb3VjaEV2ZW50KiB0b3VjaEV2
ZW50ID0gc3RhdGljX2Nhc3Q8V2ViVG91Y2hFdmVudCo+KG5ld0lucHV0RXZlbnQuZ2V0KCkpOwor
ICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvdWNoRXZlbnQtPnRvdWNoZXNMZW5ndGg7
IGkrKykKKyAgICAgICAgICAgIHNjYWxlVG91Y2hQb2ludCgmdG91Y2hFdmVudC0+dG91Y2hlc1tp
XSwgc2NhbGUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHRvdWNoRXZlbnQtPmNo
YW5nZWRUb3VjaGVzTGVuZ3RoOyBpKyspCisgICAgICAgICAgICBzY2FsZVRvdWNoUG9pbnQoJnRv
dWNoRXZlbnQtPmNoYW5nZWRUb3VjaGVzW2ldLCBzY2FsZSk7CisgICAgICAgIGZvciAoc2l6ZV90
IGkgPSAwOyBpIDwgdG91Y2hFdmVudC0+dGFyZ2V0VG91Y2hlc0xlbmd0aDsgaSsrKQorICAgICAg
ICAgICAgc2NhbGVUb3VjaFBvaW50KCZ0b3VjaEV2ZW50LT50YXJnZXRUb3VjaGVzW2ldLCBzY2Fs
ZSk7CisgICAgfQorCisgICAgcmV0dXJuIG5ld0lucHV0RXZlbnQucmVsZWFzZSgpOworfQorCiBj
b25zdCBXZWJJbnB1dEV2ZW50KiBXZWJWaWV3SW1wbDo6bV9jdXJyZW50SW5wdXRFdmVudCA9IDA7
CiAKIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVu
dCYgaW5wdXRFdmVudCkKQEAgLTIwODMsMjYgKzIxNzQsOCBAQCBib29sIFdlYlZpZXdJbXBsOjpo
YW5kbGVJbnB1dEV2ZW50KGNvbnN0IFdlYklucHV0RXZlbnQmIGlucHV0RXZlbnQpCiAgICAgICAg
IHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIGNvbnN0IFdlYklucHV0RXZlbnQqIGlucHV0RXZl
bnRUcmFuc2Zvcm1lZCA9ICZpbnB1dEV2ZW50OwotICAgIGlmIChtX3BhZ2UtPnNldHRpbmdzKCkt
PmFwcGx5UGFnZVNjYWxlRmFjdG9ySW5Db21wb3NpdG9yKCkpIHsKLSAgICAgICAgV2ViTW91c2VF
dmVudCBtb3VzZUV2ZW50OwotICAgICAgICBXZWJHZXN0dXJlRXZlbnQgZ2VzdHVyZUV2ZW50Owot
ICAgICAgICBpZiAoV2ViSW5wdXRFdmVudDo6aXNNb3VzZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5
cGUpKSB7Ci0gICAgICAgICAgICBtb3VzZUV2ZW50ID0gKnN0YXRpY19jYXN0PGNvbnN0IFdlYk1v
dXNlRXZlbnQqPigmaW5wdXRFdmVudCk7Ci0gICAgICAgICAgICBtb3VzZUV2ZW50LnggPSBtb3Vz
ZUV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgIG1vdXNlRXZlbnQueSA9
IG1vdXNlRXZlbnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgaW5wdXRFdmVu
dFRyYW5zZm9ybWVkID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZtb3VzZUV2
ZW50KTsKLSAgICAgICAgfSBlbHNlIGlmIChXZWJJbnB1dEV2ZW50Ojppc0dlc3R1cmVFdmVudFR5
cGUoaW5wdXRFdmVudC50eXBlKSkgewotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50ID0gKnN0YXRp
Y19jYXN0PGNvbnN0IFdlYkdlc3R1cmVFdmVudCo+KCZpbnB1dEV2ZW50KTsKLSAgICAgICAgICAg
IGdlc3R1cmVFdmVudC54ID0gZ2VzdHVyZUV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAg
ICAgICAgICAgIGdlc3R1cmVFdmVudC55ID0gZ2VzdHVyZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0
b3IoKTsKLSAgICAgICAgICAgIGdlc3R1cmVFdmVudC5kYXRhLnRhcC53aWR0aCAvPSBwYWdlU2Nh
bGVGYWN0b3IoKTsKLSAgICAgICAgICAgIGdlc3R1cmVFdmVudC5kYXRhLnRhcC5oZWlnaHQgLz0g
cGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBz
dGF0aWNfY2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJmdlc3R1cmVFdmVudCk7Ci0gICAgICAg
IH0KLSAgICB9Ci0KLSAgICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2
ZW50KG1fcGFnZS5nZXQoKSwgKnRoaXMsICppbnB1dEV2ZW50VHJhbnNmb3JtZWQpOworICAgIE93
blB0cjxXZWJJbnB1dEV2ZW50PiBzY2FsZWRJbnB1dEV2ZW50ID0gc2NhbGVJbnB1dEV2ZW50KCZp
bnB1dEV2ZW50LCAxIC8gcGFnZVNjYWxlRmFjdG9yKCkpOworICAgIHJldHVybiBQYWdlV2lkZ2V0
RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKnNjYWxlZElu
cHV0RXZlbnQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZUNhcHR1cmVMb3N0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187504</attachid>
            <date>2013-02-10 19:20:29 -0800</date>
            <delta_ts>2013-02-11 17:52:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109370-20130210191701.patch</filename>
            <type>text/plain</type>
            <size>16399</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMzIzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDE4NmQxMjhhNmM0Y2UyYzRiM2RiNTNiOWRlMDM1NDEyZmI4Y2RmNGQuLmM3NDZiOThhMmQ3OTg1
OTMyMjk5YTQ1NzUyNjA0NzFjODM2YzFkNGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTMtMDItMTAgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBcHBseSBwYWdlIHNjYWxlIHRvIGFsbCBX
ZWJJbnB1dEV2ZW50IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDkzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5IHdlIG9ubHkgYWRqdXN0ZWQgYSBmZXcgY29tbW9uIGlucHV0
IGV2ZW50IHR5cGVzIGJ5IHBhZ2UKKyAgICAgICAgc2NhbGUsIGJ1dCBpbiBmYWN0IGFsbW9zdCBl
dmVyeSBwb3NpdGlvbiBhbmQgc2l6ZSBpbiBXZWJJbnB1dEV2ZW50cworICAgICAgICByZXF1aXJl
cyBpdC4KKworICAgICAgICBJIGFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2hhbmdlIFdl
Ykdlc3R1cmVFdmVudCBtZW1iZXJzIHRvCisgICAgICAgIGZsb2F0cyAod2hpY2ggSSBjaGVja2Vk
IGNhdXNlcyBubyB3YXJuaW5ncyBpbiBDaHJvbWl1bS1zaWRlIGNvZGUgd2l0aAorICAgICAgICBH
Q0Mgb3IgQ2xhbmcpLgorCisgICAgICAgICogcHVibGljL1dlYklucHV0RXZlbnQuaDoKKyAgICAg
ICAgKiBzcmMvV2ViSW5wdXRFdmVudENvbnZlcnNpb24uY3BwOgorICAgICAgICAoV2ViS2l0Ojp3
aWRnZXRTY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKToKKyAg
ICAgICAgKFdlYktpdDo6UGxhdGZvcm1XaGVlbEV2ZW50QnVpbGRlcjo6UGxhdGZvcm1XaGVlbEV2
ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRl
cjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6UGxhdGZv
cm1Ub3VjaFBvaW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcik6CisgICAgICAg
IChXZWJLaXQ6OnVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1vdXNlRXZlbnQpOgorICAg
ICAgICAoV2ViS2l0OjphZGRUb3VjaFBvaW50cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRvdWNo
RXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
Ykdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxkZXIpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYXNU
b3VjaEV2ZW50SGFuZGxlcnNBdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpoYW5k
bGVJbnB1dEV2ZW50KToKKwogMjAxMy0wMi0wOCAgS2VudCBUYW11cmEgIDx0a2VudEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBEaXNhYmxlIEVOQUJMRV9JTlBVVF9UWVBFX0RB
VEVUSU1FCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1
dEV2ZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1dEV2ZW50LmgK
aW5kZXggOTlkMzRhYjc2OGM1ZGYyMmM2ZmE3MTZmMDM1MGFiMjJiNGQxYzA0Zi4uNWQ2YjM1MTky
ZTU2ZTA5MGYwNDI0MDAwYTllM2IwZDM1Mzg0N2JiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaApAQCAtMzk4LDMyICszOTgsMzIgQEAgcHVibGlj
OgogICAgICAgICBUb3VjaHNjcmVlbiwKICAgICB9OwogCi0gICAgaW50IHg7Ci0gICAgaW50IHk7
Ci0gICAgaW50IGdsb2JhbFg7Ci0gICAgaW50IGdsb2JhbFk7CisgICAgZmxvYXQgeDsKKyAgICBm
bG9hdCB5OworICAgIGZsb2F0IGdsb2JhbFg7CisgICAgZmxvYXQgZ2xvYmFsWTsKICAgICBTb3Vy
Y2VEZXZpY2Ugc291cmNlRGV2aWNlOwogCiAgICAgdW5pb24gewogICAgICAgICBzdHJ1Y3Qgewog
ICAgICAgICAgICAgaW50IHRhcENvdW50OwotICAgICAgICAgICAgaW50IHdpZHRoOwotICAgICAg
ICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IHdpZHRoOworICAgICAgICAgICAg
ZmxvYXQgaGVpZ2h0OwogICAgICAgICB9IHRhcDsKIAogICAgICAgICBzdHJ1Y3QgewotICAgICAg
ICAgICAgaW50IHdpZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgICAgIGZs
b2F0IHdpZHRoOworICAgICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9IHRhcERvd247
CiAKICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGludCB3aWR0aDsKLSAgICAgICAgICAg
IGludCBoZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCB3aWR0aDsKKyAgICAgICAgICAgIGZsb2F0
IGhlaWdodDsKICAgICAgICAgfSBsb25nUHJlc3M7CiAKICAgICAgICAgc3RydWN0IHsKLSAgICAg
ICAgICAgIGludCBmaXJzdEZpbmdlcldpZHRoOwotICAgICAgICAgICAgaW50IGZpcnN0RmluZ2Vy
SGVpZ2h0OworICAgICAgICAgICAgZmxvYXQgZmlyc3RGaW5nZXJXaWR0aDsKKyAgICAgICAgICAg
IGZsb2F0IGZpcnN0RmluZ2VySGVpZ2h0OwogICAgICAgICB9IHR3b0ZpbmdlclRhcDsKIAogICAg
ICAgICBzdHJ1Y3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
SW5wdXRFdmVudENvbnZlcnNpb24uY3BwCmluZGV4IGU0MmUxNmUxYTE2N2QxNzE3MWQ2NDgzNzQ3
M2Y3NWNiNzdlMWVlNDguLmYzMTE5OGRiOGZhMjQxZjJmMjY3M2VhY2QxMDRhMTM1NzUwYmVmYmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJbnB1dEV2ZW50
Q29udmVyc2lvbi5jcHAKQEAgLTU0LDE2ICs1NCwyNSBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAog
c3RhdGljIGNvbnN0IGRvdWJsZSBtaWxsaXNQZXJTZWNvbmQgPSAxMDAwLjA7CiAKK3N0YXRpYyBm
bG9hdCB3aWRnZXRTY2FsZUZhY3Rvcihjb25zdCBXaWRnZXQqIHdpZGdldCkKK3sKKyAgICBmbG9h
dCBzY2FsZUZhY3RvciA9IDE7CisgICAgaWYgKFNjcm9sbFZpZXcqIHJvb3RWaWV3ID0gd2lkZ2V0
LT5yb290KCkpCisgICAgICAgIHNjYWxlRmFjdG9yID0gcm9vdFZpZXctPnZpc2libGVDb250ZW50
U2NhbGVGYWN0b3IoKTsKKyAgICByZXR1cm4gc2NhbGVGYWN0b3I7Cit9CisKIC8vIE1ha2VQbGF0
Zm9ybU1vdXNlRXZlbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KIAogUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2
ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViTW91c2VFdmVudCYgZSkKIHsKKyAg
ICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdldCk7CiAgICAgLy8gRklYTUU6
IHdpZGdldCBpcyBhbHdheXMgdG9wbGV2ZWwsIHVubGVzcyBpdCdzIGEgcG9wdXAuICBXZSBtYXkg
YmUgYWJsZQogICAgIC8vIHRvIGdldCByaWQgb2YgdGhpcyBvbmNlIHdlIGFic3RyYWN0IHBvcHVw
cyBpbnRvIGEgV2ViS2l0IEFQSS4KLSAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJv
bUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBtX3Bvc2l0aW9uID0g
d2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54IC8gc2NhbGUs
IGUueSAvIHNjYWxlKSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IEludFBvaW50KGUuZ2xvYmFs
WCwgZS5nbG9iYWxZKTsKICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIG1fbW92ZW1lbnRE
ZWx0YSA9IEludFBvaW50KGUubW92ZW1lbnRYLCBlLm1vdmVtZW50WSk7CisgICAgbV9tb3ZlbWVu
dERlbHRhID0gSW50UG9pbnQoZS5tb3ZlbWVudFggLyBzY2FsZSwgZS5tb3ZlbWVudFkgLyBzY2Fs
ZSk7CiAjZW5kaWYKICAgICBtX2J1dHRvbiA9IHN0YXRpY19jYXN0PE1vdXNlQnV0dG9uPihlLmJ1
dHRvbik7CiAKQEAgLTEwNCw3ICsxMTMsOCBAQCBQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyOjpQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJNbwogCiBQ
bGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdpZGdl
dCogd2lkZ2V0LCBjb25zdCBXZWJNb3VzZVdoZWVsRXZlbnQmIGUpCiB7Ci0gICAgbV9wb3NpdGlv
biA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50KGUueCwgZS55
KSk7CisgICAgZmxvYXQgc2NhbGUgPSB3aWRnZXRTY2FsZUZhY3Rvcih3aWRnZXQpOworICAgIG1f
cG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChl
LnggLyBzY2FsZSwgZS55IC8gc2NhbGUpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9p
bnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOwogICAgIG1fZGVsdGFYID0gZS5kZWx0YVg7CiAgICAg
bV9kZWx0YVkgPSBlLmRlbHRhWTsKQEAgLTE0MSw2ICsxNTEsNyBAQCBQbGF0Zm9ybVdoZWVsRXZl
bnRCdWlsZGVyOjpQbGF0Zm9ybVdoZWVsRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25z
dCBXZWJNbwogI2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIFBsYXRmb3JtR2VzdHVyZUV2ZW50
QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25z
dCBXZWJHZXN0dXJlRXZlbnQmIGUpCiB7CisgICAgZmxvYXQgc2NhbGUgPSB3aWRnZXRTY2FsZUZh
Y3Rvcih3aWRnZXQpOwogICAgIHN3aXRjaCAoZS50eXBlKSB7CiAgICAgY2FzZSBXZWJJbnB1dEV2
ZW50OjpHZXN0dXJlU2Nyb2xsQmVnaW46CiAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6
Okdlc3R1cmVTY3JvbGxCZWdpbjsKQEAgLTE1MCwyMyArMTYxLDIzIEBAIFBsYXRmb3JtR2VzdHVy
ZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0
LCBjb25zdCBXCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVNjcm9sbFVwZGF0ZToKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNj
cm9sbFVwZGF0ZTsKLSAgICAgICAgbV9kZWx0YVggPSBlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRh
WDsKLSAgICAgICAgbV9kZWx0YVkgPSBlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWTsKKyAgICAg
ICAgbV9kZWx0YVggPSBlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCAvIHNjYWxlOworICAgICAg
ICBtX2RlbHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZIC8gc2NhbGU7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZVdpdGhv
dXRQcm9wYWdhdGlvbjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNj
cm9sbFVwZGF0ZVdpdGhvdXRQcm9wYWdhdGlvbjsKLSAgICAgICAgbV9kZWx0YVggPSBlLmRhdGEu
c2Nyb2xsVXBkYXRlLmRlbHRhWDsKLSAgICAgICAgbV9kZWx0YVkgPSBlLmRhdGEuc2Nyb2xsVXBk
YXRlLmRlbHRhWTsKKyAgICAgICAgbV9kZWx0YVggPSBlLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRh
WCAvIHNjYWxlOworICAgICAgICBtX2RlbHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZ
IC8gc2NhbGU7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVRhcDoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcDsKLSAgICAg
ICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEudGFwLndpZHRoLCBlLmRhdGEudGFwLmhlaWdodCk7
CisgICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLnRhcC53aWR0aCAvIHNjYWxlLCBlLmRh
dGEudGFwLmhlaWdodCAvIHNjYWxlKTsKICAgICAgICAgLy8gRklYTUU6IFBsYXRmb3JtR2VzdHVy
ZUV2ZW50IGRlbHRhWCBpcyBvdmVybG9hZGVkIC0gd2tiLnVnLzkzMTIzCiAgICAgICAgIG1fZGVs
dGFYID0gc3RhdGljX2Nhc3Q8aW50PihlLmRhdGEudGFwLnRhcENvdW50KTsKICAgICAgICAgYnJl
YWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgbV90
eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd247Ci0gICAgICAgIG1fYXJlYSA9IElu
dFNpemUoZS5kYXRhLnRhcERvd24ud2lkdGgsIGUuZGF0YS50YXBEb3duLmhlaWdodCk7CisgICAg
ICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLnRhcERvd24ud2lkdGggLyBzY2FsZSwgZS5kYXRh
LnRhcERvd24uaGVpZ2h0IC8gc2NhbGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklu
cHV0RXZlbnQ6Okdlc3R1cmVUYXBDYW5jZWw6CiAgICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZl
bnQ6Okdlc3R1cmVUYXBEb3duQ2FuY2VsOwpAQCAtMTc2LDE1ICsxODcsMTUgQEAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFcKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlVHdvRmluZ2VyVGFwOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0
dXJlVHdvRmluZ2VyVGFwOwotICAgICAgICBtX2FyZWEgPSBJbnRTaXplKGUuZGF0YS50d29GaW5n
ZXJUYXAuZmlyc3RGaW5nZXJXaWR0aCwgZS5kYXRhLnR3b0ZpbmdlclRhcC5maXJzdEZpbmdlckhl
aWdodCk7CisgICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLnR3b0ZpbmdlclRhcC5maXJz
dEZpbmdlcldpZHRoIC8gc2NhbGUsIGUuZGF0YS50d29GaW5nZXJUYXAuZmlyc3RGaW5nZXJIZWln
aHQgLyBzY2FsZSk7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZUxvbmdQcmVzczoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxv
bmdQcmVzczsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEubG9uZ1ByZXNzLndpZHRo
LCBlLmRhdGEubG9uZ1ByZXNzLmhlaWdodCk7CisgICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5k
YXRhLmxvbmdQcmVzcy53aWR0aCAvIHNjYWxlLCBlLmRhdGEubG9uZ1ByZXNzLmhlaWdodCAvIHNj
YWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9u
Z1RhcDoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA7Ci0g
ICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLmxvbmdQcmVzcy53aWR0aCwgZS5kYXRhLmxv
bmdQcmVzcy5oZWlnaHQpOworICAgICAgICBtX2FyZWEgPSBJbnRTaXplKGUuZGF0YS5sb25nUHJl
c3Mud2lkdGggLyBzY2FsZSwgZS5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgLyBzY2FsZSk7CiAgICAg
ICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVBpbmNoQmVnaW46CiAg
ICAgICAgIG1fdHlwZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2luOwpAQCAtMjAw
LDcgKzIxMSw3IEBAIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJl
RXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBXCiAgICAgZGVmYXVsdDoKICAgICAg
ICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfQotICAgIG1fcG9zaXRpb24gPSB3aWRnZXQt
PmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChlLngsIGUueSkpOworICAgIG1f
cG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChl
LnggLyBzY2FsZSwgZS55IC8gc2NhbGUpKTsKICAgICBtX2dsb2JhbFBvc2l0aW9uID0gSW50UG9p
bnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOwogICAgIG1fdGltZXN0YW1wID0gZS50aW1lU3RhbXBT
ZWNvbmRzOwogCkBAIC0zNjIsMTIgKzM3MywxMyBAQCBpbmxpbmUgV2ViVG91Y2hQb2ludDo6U3Rh
dGUgdG9XZWJUb3VjaFBvaW50U3RhdGUoY29uc3QgQXRvbWljU3RyaW5nJiB0eXBlKQogCiBQbGF0
Zm9ybVRvdWNoUG9pbnRCdWlsZGVyOjpQbGF0Zm9ybVRvdWNoUG9pbnRCdWlsZGVyKFdpZGdldCog
d2lkZ2V0LCBjb25zdCBXZWJUb3VjaFBvaW50JiBwb2ludCkKIHsKKyAgICBmbG9hdCBzY2FsZSA9
IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdldCk7CiAgICAgbV9pZCA9IHBvaW50LmlkOwogICAgIG1f
c3RhdGUgPSB0b1BsYXRmb3JtVG91Y2hQb2ludFN0YXRlKHBvaW50LnN0YXRlKTsKLSAgICBtX3Bv
cyA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KHBvaW50LnBvc2l0aW9uKTsK
KyAgICBtX3BvcyA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBvaW50
KHBvaW50LnBvc2l0aW9uLnggLyBzY2FsZSwgcG9pbnQucG9zaXRpb24ueSAvIHNjYWxlKSk7CiAg
ICAgbV9zY3JlZW5Qb3MgPSBwb2ludC5zY3JlZW5Qb3NpdGlvbjsKLSAgICBtX3JhZGl1c1kgPSBw
b2ludC5yYWRpdXNZOwotICAgIG1fcmFkaXVzWCA9IHBvaW50LnJhZGl1c1g7CisgICAgbV9yYWRp
dXNZID0gcG9pbnQucmFkaXVzWSAvIHNjYWxlOworICAgIG1fcmFkaXVzWCA9IHBvaW50LnJhZGl1
c1ggLyBzY2FsZTsKICAgICBtX3JvdGF0aW9uQW5nbGUgPSBwb2ludC5yb3RhdGlvbkFuZ2xlOwog
ICAgIG1fZm9yY2UgPSBwb2ludC5mb3JjZTsKIH0KQEAgLTQxNCw2ICs0MjYsNyBAQCBzdGF0aWMg
SW50UG9pbnQgY29udmVydEFic29sdXRlTG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoY29uc3QgTGF5
b3V0UG9pbnQmIGxvY2F0aQogCiBzdGF0aWMgdm9pZCB1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdl
YkNvcmVNb3VzZUV2ZW50KGNvbnN0IE1vdXNlUmVsYXRlZEV2ZW50JiBldmVudCwgY29uc3QgV2lk
Z2V0JiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCYgcmVuZGVyT2JqZWN0LCBX
ZWJNb3VzZUV2ZW50JiB3ZWJFdmVudCkKIHsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxl
RmFjdG9yKCZ3aWRnZXQpOwogICAgIHdlYkV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50
aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKICAgICB3ZWJFdmVudC5tb2RpZmllcnMgPSBn
ZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CiAKQEAgLTQyMSwxMSArNDM0LDExIEBAIHN0YXRp
YyB2b2lkIHVwZGF0ZVdlYk1vdXNlRXZlbnRGcm9tV2ViQ29yZU1vdXNlRXZlbnQoY29uc3QgTW91
c2VSZWxhdGVkRXZlbnQmIGV2CiAgICAgSW50UG9pbnQgd2luZG93UG9pbnQgPSB2aWV3LT5jb250
ZW50c1RvV2luZG93KEludFBvaW50KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKS54KCksIGV2ZW50
LmFic29sdXRlTG9jYXRpb24oKS55KCkpKTsKICAgICB3ZWJFdmVudC5nbG9iYWxYID0gZXZlbnQu
c2NyZWVuWCgpOwogICAgIHdlYkV2ZW50Lmdsb2JhbFkgPSBldmVudC5zY3JlZW5ZKCk7Ci0gICAg
d2ViRXZlbnQud2luZG93WCA9IHdpbmRvd1BvaW50LngoKTsKLSAgICB3ZWJFdmVudC53aW5kb3dZ
ID0gd2luZG93UG9pbnQueSgpOworICAgIHdlYkV2ZW50LndpbmRvd1ggPSB3aW5kb3dQb2ludC54
KCkgKiBzY2FsZTsKKyAgICB3ZWJFdmVudC53aW5kb3dZID0gd2luZG93UG9pbnQueSgpICogc2Nh
bGU7CiAgICAgSW50UG9pbnQgbG9jYWxQb2ludCA9IGNvbnZlcnRBYnNvbHV0ZUxvY2F0aW9uRm9y
UmVuZGVyT2JqZWN0KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgcmVuZGVyT2JqZWN0KTsKLSAg
ICB3ZWJFdmVudC54ID0gbG9jYWxQb2ludC54KCk7Ci0gICAgd2ViRXZlbnQueSA9IGxvY2FsUG9p
bnQueSgpOworICAgIHdlYkV2ZW50LnggPSBsb2NhbFBvaW50LngoKSAqIHNjYWxlOworICAgIHdl
YkV2ZW50LnkgPSBsb2NhbFBvaW50LnkoKSAqIHNjYWxlOwogfQogCiBXZWJNb3VzZUV2ZW50QnVp
bGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdl
YkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBNb3VzZUV2ZW50JiBldmVu
dCkKQEAgLTU2Miw4ICs1NzUsOSBAQCBXZWJLZXlib2FyZEV2ZW50QnVpbGRlcjo6V2ViS2V5Ym9h
cmRFdmVudEJ1aWxkZXIoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZlbnQpCiAKICNpZiBFTkFCTEUo
VE9VQ0hfRVZFTlRTKQogCi1zdGF0aWMgdm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBBdG9taWNT
dHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBXZWJUb3VjaFBvaW50KiB0b3Vj
aFBvaW50cywgdW5zaWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QqIHJlbmRlck9iamVjdCkKK3N0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKGNvbnN0
IFdpZGdldCogd2lkZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0
KiB0b3VjaGVzLCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5zaWduZWQqIHRvdWNoUG9p
bnRzTGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkKIHsK
KyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdldCk7CiAgICAgdW5zaWdu
ZWQgbnVtYmVyT2ZUb3VjaGVzID0gc3RkOjptaW4odG91Y2hlcy0+bGVuZ3RoKCksIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3RoQ2FwKSk7CiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVG91Y2hlczsgKytpKSB7CiAgICAgICAgIGNv
bnN0IFRvdWNoKiB0b3VjaCA9IHRvdWNoZXMtPml0ZW0oaSk7CkBAIC01NzIsOCArNTg2LDEwIEBA
IHN0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKGNvbnN0IEF0b21pY1N0cmluZyYgdG91Y2hUeXBl
LCBUb3VjaExpc3QqIHRvdWNoZXMsIFdlCiAgICAgICAgIHBvaW50LmlkID0gdG91Y2gtPmlkZW50
aWZpZXIoKTsKICAgICAgICAgcG9pbnQuc2NyZWVuUG9zaXRpb24gPSBXZWJQb2ludCh0b3VjaC0+
c2NyZWVuWCgpLCB0b3VjaC0+c2NyZWVuWSgpKTsKICAgICAgICAgcG9pbnQucG9zaXRpb24gPSBj
b252ZXJ0QWJzb2x1dGVMb2NhdGlvbkZvclJlbmRlck9iamVjdCh0b3VjaC0+YWJzb2x1dGVMb2Nh
dGlvbigpLCAqcmVuZGVyT2JqZWN0KTsKLSAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNoLT53
ZWJraXRSYWRpdXNYKCk7Ci0gICAgICAgIHBvaW50LnJhZGl1c1kgPSB0b3VjaC0+d2Via2l0UmFk
aXVzWSgpOworICAgICAgICBwb2ludC5wb3NpdGlvbi54ICo9IHNjYWxlOworICAgICAgICBwb2lu
dC5wb3NpdGlvbi55ICo9IHNjYWxlOworICAgICAgICBwb2ludC5yYWRpdXNYID0gdG91Y2gtPndl
YmtpdFJhZGl1c1goKSAqIHNjYWxlOworICAgICAgICBwb2ludC5yYWRpdXNZID0gdG91Y2gtPndl
YmtpdFJhZGl1c1koKSAqIHNjYWxlOwogICAgICAgICBwb2ludC5yb3RhdGlvbkFuZ2xlID0gdG91
Y2gtPndlYmtpdFJvdGF0aW9uQW5nbGUoKTsKICAgICAgICAgcG9pbnQuZm9yY2UgPSB0b3VjaC0+
d2Via2l0Rm9yY2UoKTsKICAgICAgICAgcG9pbnQuc3RhdGUgPSB0b1dlYlRvdWNoUG9pbnRTdGF0
ZSh0b3VjaFR5cGUpOwpAQCAtNjAyLDkgKzYxOCw5IEBAIFdlYlRvdWNoRXZlbnRCdWlsZGVyOjpX
ZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6
CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogICAgIHRpbWVT
dGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKIAotICAg
IGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQudG91Y2hlcygpLCB0b3VjaGVzLCAm
dG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKLSAgICBhZGRUb3VjaFBvaW50cyhldmVudC50
eXBlKCksIGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIGNoYW5nZWRUb3VjaGVzLCAmY2hhbmdlZFRv
dWNoZXNMZW5ndGgsIHJlbmRlck9iamVjdCk7Ci0gICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlw
ZSgpLCBldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMsICZ0YXJnZXRUb3VjaGVz
TGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKHdpZGdldCwgZXZlbnQu
dHlwZSgpLCBldmVudC50b3VjaGVzKCksIHRvdWNoZXMsICZ0b3VjaGVzTGVuZ3RoLCByZW5kZXJP
YmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKHdpZGdldCwgZXZlbnQudHlwZSgpLCBldmVudC5j
aGFuZ2VkVG91Y2hlcygpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVzTGVuZ3RoLCBy
ZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKHdpZGdldCwgZXZlbnQudHlwZSgpLCBl
dmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMsICZ0YXJnZXRUb3VjaGVzTGVuZ3Ro
LCByZW5kZXJPYmplY3QpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRPVUNIX0VWRU5UUykKQEAg
LTYxMiw2ICs2MjgsNyBAQCBXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxk
ZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OgogI2lmIEVOQUJMRShHRVNU
VVJFX0VWRU5UUykKIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdlc3R1cmVFdmVudEJ1aWxk
ZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVu
ZGVyT2JqZWN0LCBjb25zdCBHZXN0dXJlRXZlbnQmIGV2ZW50KQogeworICAgIGZsb2F0IHNjYWxl
ID0gd2lkZ2V0U2NhbGVGYWN0b3Iod2lkZ2V0KTsKICAgICBpZiAoZXZlbnQudHlwZSgpID09IGV2
ZW50TmFtZXMoKS5nZXN0dXJldGFwRXZlbnQpCiAgICAgICAgIHR5cGUgPSBHZXN0dXJlVGFwOwog
ICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZ2VzdHVyZXRhcGRvd25F
dmVudCkKQEAgLTYyMiw4ICs2MzksOCBAQCBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0
dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDbwogICAgICAg
ICB0eXBlID0gR2VzdHVyZVNjcm9sbEVuZDsKICAgICBlbHNlIGlmIChldmVudC50eXBlKCkgPT0g
ZXZlbnROYW1lcygpLmdlc3R1cmVzY3JvbGx1cGRhdGVFdmVudCkgewogICAgICAgICB0eXBlID0g
R2VzdHVyZVNjcm9sbFVwZGF0ZTsKLSAgICAgICAgZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYID0g
ZXZlbnQuZGVsdGFYKCk7Ci0gICAgICAgIGRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IGV2ZW50
LmRlbHRhWSgpOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVggPSBldmVudC5kZWx0
YVgoKSAqIHNjYWxlOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSBldmVudC5k
ZWx0YVkoKSAqIHNjYWxlOwogICAgIH0KIAogICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50
aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKQEAgLTYzMiw4ICs2NDksOCBAQCBXZWJHZXN0
dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lk
Z2V0LCBjb25zdCBXZWJDbwogICAgIGdsb2JhbFggPSBldmVudC5zY3JlZW5YKCk7CiAgICAgZ2xv
YmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKICAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29udmVy
dEFic29sdXRlTG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigp
LCAqcmVuZGVyT2JqZWN0KTsKLSAgICB4ID0gbG9jYWxQb2ludC54KCk7Ci0gICAgeSA9IGxvY2Fs
UG9pbnQueSgpOworICAgIHggPSBsb2NhbFBvaW50LngoKSAqIHNjYWxlOworICAgIHkgPSBsb2Nh
bFBvaW50LnkoKSAqIHNjYWxlOwogfQogI2VuZGlmIC8vIEVOQUJMRShHRVNUVVJFX0VWRU5UUykK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDc0NDk1
OTcxNjEzYWI4MThmMzY2ZTc2MmU3NGNhYTcxOGFlNzg1NTUuLmUyNmVkNDE2OWQyNjNlMTE3MWE1
YjdmMWIyMjIxZGJhMmMzMjU3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTEzNTQsNiArMTM1NCw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omhhc1Rv
dWNoRXZlbnRIYW5kbGVycyhib29sIGhhc1RvdWNoSGFuZGxlcnMpCiAKIGJvb2wgV2ViVmlld0lt
cGw6Omhhc1RvdWNoRXZlbnRIYW5kbGVyc0F0KGNvbnN0IFdlYlBvaW50JiBwb2ludCkKIHsKKyAg
ICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuIE5vdGUgdGhhdCB0aGUgcG9pbnQgbXVzdCBiZSBk
aXZpZGVkIGJ5IHBhZ2VTY2FsZUZhY3Rvci4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjA4
MywyNiArMjA4NCw3IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3Qg
V2ViSW5wdXRFdmVudCYgaW5wdXRFdmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQog
Ci0gICAgY29uc3QgV2ViSW5wdXRFdmVudCogaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gJmlucHV0
RXZlbnQ7Ci0gICAgaWYgKG1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJ
bkNvbXBvc2l0b3IoKSkgewotICAgICAgICBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQ7Ci0gICAg
ICAgIFdlYkdlc3R1cmVFdmVudCBnZXN0dXJlRXZlbnQ7Ci0gICAgICAgIGlmIChXZWJJbnB1dEV2
ZW50Ojppc01vdXNlRXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgICAgIG1v
dXNlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50
KTsKLSAgICAgICAgICAgIG1vdXNlRXZlbnQueCA9IG1vdXNlRXZlbnQueCAvIHBhZ2VTY2FsZUZh
Y3RvcigpOwotICAgICAgICAgICAgbW91c2VFdmVudC55ID0gbW91c2VFdmVudC55IC8gcGFnZVNj
YWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBzdGF0aWNf
Y2FzdDxjb25zdCBXZWJJbnB1dEV2ZW50Kj4oJm1vdXNlRXZlbnQpOwotICAgICAgICB9IGVsc2Ug
aWYgKFdlYklucHV0RXZlbnQ6OmlzR2VzdHVyZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7
Ci0gICAgICAgICAgICBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVy
ZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSBnZXN0
dXJlRXZlbnQueCAvIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50
LnkgPSBnZXN0dXJlRXZlbnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgZ2Vz
dHVyZUV2ZW50LmRhdGEudGFwLndpZHRoIC89IHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAg
ICAgZ2VzdHVyZUV2ZW50LmRhdGEudGFwLmhlaWdodCAvPSBwYWdlU2NhbGVGYWN0b3IoKTsKLSAg
ICAgICAgICAgIGlucHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklu
cHV0RXZlbnQqPigmZ2VzdHVyZUV2ZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVy
biBQYWdlV2lkZ2V0RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhp
cywgKmlucHV0RXZlbnRUcmFuc2Zvcm1lZCk7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0
ZTo6aGFuZGxlSW5wdXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKIH0K
IAogdm9pZCBXZWJWaWV3SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187736</attachid>
            <date>2013-02-11 17:52:21 -0800</date>
            <delta_ts>2013-02-11 18:11:20 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109370-20130211174852.patch</filename>
            <type>text/plain</type>
            <size>29255</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlNDg1Mjg1M2M2MTg5MmM5YTUzNmVlNjMzOGM0OTQ4MGNiNDdiOTAuLmM0MTNiNmQ4NzI5NDVl
ODMzYTk1YmJmZWJmYzJjNmYyOWE1MGNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDItMTEgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBcHBseSBwYWdlIHNjYWxlIHRvIGFsbCBX
ZWJJbnB1dEV2ZW50IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDkzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5IHdlIG9ubHkgYWRqdXN0ZWQgYSBmZXcgY29tbW9uIGlucHV0
IGV2ZW50IHR5cGVzIGJ5IHBhZ2UKKyAgICAgICAgc2NhbGUsIGJ1dCBpbiBmYWN0IGFsbW9zdCBl
dmVyeSBwb3NpdGlvbiBhbmQgc2l6ZSBpbiBXZWJJbnB1dEV2ZW50cworICAgICAgICByZXF1aXJl
cyBpdC4KKworICAgICAgICBJIGFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2hhbmdlIHNv
bWUgV2ViR2VzdHVyZUV2ZW50IG1lbWJlcnMgdG8KKyAgICAgICAgZmxvYXRzICh3aGljaCBJIGNo
ZWNrZWQgY2F1c2VzIG5vIHdhcm5pbmdzIGluIENocm9taXVtLXNpZGUgY29kZSB3aXRoCisgICAg
ICAgIEdDQyBvciBDbGFuZykuCisKKyAgICAgICAgTmV3IFdlYklucHV0RXZlbnRDb252ZXJzaW9u
VGVzdDogSW5wdXRFdmVudHNTY2FsaW5nCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQ6OldlYkdlc3R1cmVFdmVudCk6
CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6d2lkZ2V0U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIpOgor
ICAgICAgICAoV2ViS2l0Ojp1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRC
dWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6YWRkVG91Y2hQb2ludHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6Omhhc1RvdWNoRXZlbnRIYW5kbGVyc0F0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHRlc3RzL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNv
cmUpOgorCiAyMDEzLTAyLTA5ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBDaHJvbWl1bSBERVBTIHRvIGxhc3Qt
a25vd24gZ29vZCByZXZpc2lvbi4gUmVhbGx5IHRoaXMgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCA5OWQzNGFiNzY4YzVkZjIyYzZm
YTcxNmYwMzUwYWIyMmI0ZDFjMDRmLi43YTYzYzEyNTFjM2I1MjhlNjRlMmRiYTZmZjdiYTdlOGYx
ODBhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1
dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVu
dC5oCkBAIC00MDcsMjMgKzQwNywyMyBAQCBwdWJsaWM6CiAgICAgdW5pb24gewogICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgaW50IHRhcENvdW50OwotICAgICAgICAgICAgaW50IHdpZHRo
OwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IHdpZHRoOworICAg
ICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9IHRhcDsKIAogICAgICAgICBzdHJ1Y3Qg
ewotICAgICAgICAgICAgaW50IHdpZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAg
ICAgICAgIGZsb2F0IHdpZHRoOworICAgICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9
IHRhcERvd247CiAKICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGludCB3aWR0aDsKLSAg
ICAgICAgICAgIGludCBoZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCB3aWR0aDsKKyAgICAgICAg
ICAgIGZsb2F0IGhlaWdodDsKICAgICAgICAgfSBsb25nUHJlc3M7CiAKICAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIGludCBmaXJzdEZpbmdlcldpZHRoOwotICAgICAgICAgICAgaW50IGZp
cnN0RmluZ2VySGVpZ2h0OworICAgICAgICAgICAgZmxvYXQgZmlyc3RGaW5nZXJXaWR0aDsKKyAg
ICAgICAgICAgIGZsb2F0IGZpcnN0RmluZ2VySGVpZ2h0OwogICAgICAgICB9IHR3b0ZpbmdlclRh
cDsKIAogICAgICAgICBzdHJ1Y3QgewpAQCAtNDQzLDcgKzQ0Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgIGZsb2F0IHNjYWxlOwogICAgICAgICB9IHBpbmNoVXBk
YXRlOwotICAgIH0gZGF0YTsgCisgICAgfSBkYXRhOwogCiAgICAgV2ViR2VzdHVyZUV2ZW50KHVu
c2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQogICAgICAgICA6IFdl
YklucHV0RXZlbnQoc2l6ZVBhcmFtKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBnbG9iYWxYKDApCiAgICAgICAgICwgZ2xvYmFsWSgwKQogICAgIHsKLSAgICAgIG1lbXNl
dCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsgCisgICAgICAgIG1lbXNldCgmZGF0YSwgMCwgc2l6
ZW9mKGRhdGEpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggZTQyZTE2ZTFhMTY3ZDE3
MTcxZDY0ODM3NDczZjc1Y2I3N2UxZWU0OC4uNGRmOTA2YmU4MDBlODkyNTQwZWU5ZDdlMzE4ZTY4
OGM3MjkzZThlOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtNTQsMTYgKzU0LDI5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIG1pbGxpc1BlclNlY29uZCA9IDEwMDAuMDsK
IAorc3RhdGljIGZsb2F0IHdpZGdldFNjYWxlRmFjdG9yKGNvbnN0IFdpZGdldCogd2lkZ2V0KQor
eworICAgIGlmICghd2lkZ2V0KQorICAgICAgICByZXR1cm4gMTsKKworICAgIFNjcm9sbFZpZXcq
IHJvb3RWaWV3ID0gd2lkZ2V0LT5yb290KCk7CisgICAgaWYgKCFyb290VmlldykKKyAgICAgICAg
cmV0dXJuIDE7CisKKyAgICByZXR1cm4gcm9vdFZpZXctPnZpc2libGVDb250ZW50U2NhbGVGYWN0
b3IoKTsKK30KKwogLy8gTWFrZVBsYXRmb3JtTW91c2VFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQbGF0Zm9ybU1vdXNlRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBX
ZWJNb3VzZUV2ZW50JiBlKQogeworICAgIGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Io
d2lkZ2V0KTsKICAgICAvLyBGSVhNRTogd2lkZ2V0IGlzIGFsd2F5cyB0b3BsZXZlbCwgdW5sZXNz
IGl0J3MgYSBwb3B1cC4gIFdlIG1heSBiZSBhYmxlCiAgICAgLy8gdG8gZ2V0IHJpZCBvZiB0aGlz
IG9uY2Ugd2UgYWJzdHJhY3QgcG9wdXBzIGludG8gYSBXZWJLaXQgQVBJLgotICAgIG1fcG9zaXRp
b24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChlLngsIGUu
eSkpOworICAgIG1fcG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhJbnRQb2ludChlLnggLyBzY2FsZSwgZS55IC8gc2NhbGUpKTsKICAgICBtX2dsb2JhbFBvc2l0
aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOwogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgbV9tb3ZlbWVudERlbHRhID0gSW50UG9pbnQoZS5tb3ZlbWVudFgsIGUubW92
ZW1lbnRZKTsKKyAgICBtX21vdmVtZW50RGVsdGEgPSBJbnRQb2ludChlLm1vdmVtZW50WCAvIHNj
YWxlLCBlLm1vdmVtZW50WSAvIHNjYWxlKTsKICNlbmRpZgogICAgIG1fYnV0dG9uID0gc3RhdGlj
X2Nhc3Q8TW91c2VCdXR0b24+KGUuYnV0dG9uKTsKIApAQCAtMTA0LDcgKzExNyw4IEBAIFBsYXRm
b3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFdlYk1vCiAKIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVu
dCYgZSkKIHsKLSAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxl
RmFjdG9yKHdpZGdldCk7CisgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KEludFBvaW50KGUueCAvIHNjYWxlLCBlLnkgLyBzY2FsZSkpOwogICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7CiAgICAgbV9k
ZWx0YVggPSBlLmRlbHRhWDsKICAgICBtX2RlbHRhWSA9IGUuZGVsdGFZOwpAQCAtMTQxLDYgKzE1
NSw3IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQogUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxk
ZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZSkKIHsKKyAgICBmbG9h
dCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdldCk7CiAgICAgc3dpdGNoIChlLnR5cGUp
IHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKICAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwpAQCAtMTUwLDIzICsx
NjUsMjMgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwotICAgICAgICBtX2RlbHRhWCA9IGUu
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYOwotICAgICAgICBtX2RlbHRhWSA9IGUuZGF0YS5zY3Jv
bGxVcGRhdGUuZGVsdGFZOworICAgICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRhdGUu
ZGVsdGFYIC8gc2NhbGU7CisgICAgICAgIG1fZGVsdGFZID0gZS5kYXRhLnNjcm9sbFVwZGF0ZS5k
ZWx0YVkgLyBzY2FsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uOwotICAg
ICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYOwotICAgICAgICBtX2Rl
bHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZOworICAgICAgICBtX2RlbHRhWCA9IGUu
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYIC8gc2NhbGU7CisgICAgICAgIG1fZGVsdGFZID0gZS5k
YXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgLyBzY2FsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVGFwOwotICAgICAgICBtX2FyZWEgPSBJbnRTaXplKGUuZGF0YS50YXAud2lk
dGgsIGUuZGF0YS50YXAuaGVpZ2h0KTsKKyAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEu
dGFwLndpZHRoIC8gc2NhbGUsIGUuZGF0YS50YXAuaGVpZ2h0IC8gc2NhbGUpOwogICAgICAgICAv
LyBGSVhNRTogUGxhdGZvcm1HZXN0dXJlRXZlbnQgZGVsdGFYIGlzIG92ZXJsb2FkZWQgLSB3a2Iu
dWcvOTMxMjMKICAgICAgICAgbV9kZWx0YVggPSBzdGF0aWNfY2FzdDxpbnQ+KGUuZGF0YS50YXAu
dGFwQ291bnQpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1
cmVUYXBEb3duOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlVGFwRG93
bjsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEudGFwRG93bi53aWR0aCwgZS5kYXRh
LnRhcERvd24uaGVpZ2h0KTsKKyAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEudGFwRG93
bi53aWR0aCAvIHNjYWxlLCBlLmRhdGEudGFwRG93bi5oZWlnaHQgLyBzY2FsZSk7CiAgICAgICAg
IGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVudDo6R2VzdHVyZVRhcENhbmNlbDoKICAgICAg
ICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVRhcERvd25DYW5jZWw7CkBAIC0xNzYs
MTUgKzE5MSwxNSBAQCBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVy
ZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgVwogICAgICAgICBicmVhazsKICAg
ICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA6CiAgICAgICAgIG1fdHlw
ZSA9IFBsYXRmb3JtRXZlbnQ6Okdlc3R1cmVUd29GaW5nZXJUYXA7Ci0gICAgICAgIG1fYXJlYSA9
IEludFNpemUoZS5kYXRhLnR3b0ZpbmdlclRhcC5maXJzdEZpbmdlcldpZHRoLCBlLmRhdGEudHdv
RmluZ2VyVGFwLmZpcnN0RmluZ2VySGVpZ2h0KTsKKyAgICAgICAgbV9hcmVhID0gSW50U2l6ZShl
LmRhdGEudHdvRmluZ2VyVGFwLmZpcnN0RmluZ2VyV2lkdGggLyBzY2FsZSwgZS5kYXRhLnR3b0Zp
bmdlclRhcC5maXJzdEZpbmdlckhlaWdodCAvIHNjYWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOwotICAgICAgICBtX2FyZWEgPSBJbnRTaXpl
KGUuZGF0YS5sb25nUHJlc3Mud2lkdGgsIGUuZGF0YS5sb25nUHJlc3MuaGVpZ2h0KTsKKyAgICAg
ICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEubG9uZ1ByZXNzLndpZHRoIC8gc2NhbGUsIGUuZGF0
YS5sb25nUHJlc3MuaGVpZ2h0IC8gc2NhbGUpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIFdl
YklucHV0RXZlbnQ6Okdlc3R1cmVMb25nVGFwOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlTG9uZ1RhcDsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEubG9u
Z1ByZXNzLndpZHRoLCBlLmRhdGEubG9uZ1ByZXNzLmhlaWdodCk7CisgICAgICAgIG1fYXJlYSA9
IEludFNpemUoZS5kYXRhLmxvbmdQcmVzcy53aWR0aCAvIHNjYWxlLCBlLmRhdGEubG9uZ1ByZXNz
LmhlaWdodCAvIHNjYWxlKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50
OjpHZXN0dXJlUGluY2hCZWdpbjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2Vz
dHVyZVBpbmNoQmVnaW47CkBAIC0yMDAsNyArMjE1LDcgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0
IFcKICAgICBkZWZhdWx0OgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9Ci0g
ICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250YWluaW5nV2luZG93KEludFBv
aW50KGUueCwgZS55KSk7CisgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KEludFBvaW50KGUueCAvIHNjYWxlLCBlLnkgLyBzY2FsZSkpOwogICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7CiAgICAgbV90
aW1lc3RhbXAgPSBlLnRpbWVTdGFtcFNlY29uZHM7CiAKQEAgLTM2MiwxMiArMzc3LDEzIEBAIGlu
bGluZSBXZWJUb3VjaFBvaW50OjpTdGF0ZSB0b1dlYlRvdWNoUG9pbnRTdGF0ZShjb25zdCBBdG9t
aWNTdHJpbmcmIHR5cGUpCiAKIFBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXI6OlBsYXRmb3JtVG91
Y2hQb2ludEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYlRvdWNoUG9pbnQmIHBvaW50
KQogeworICAgIGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Iod2lkZ2V0KTsKICAgICBt
X2lkID0gcG9pbnQuaWQ7CiAgICAgbV9zdGF0ZSA9IHRvUGxhdGZvcm1Ub3VjaFBvaW50U3RhdGUo
cG9pbnQuc3RhdGUpOwotICAgIG1fcG9zID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3cocG9pbnQucG9zaXRpb24pOworICAgIG1fcG9zID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNv
bnRhaW5pbmdXaW5kb3coSW50UG9pbnQocG9pbnQucG9zaXRpb24ueCAvIHNjYWxlLCBwb2ludC5w
b3NpdGlvbi55IC8gc2NhbGUpKTsKICAgICBtX3NjcmVlblBvcyA9IHBvaW50LnNjcmVlblBvc2l0
aW9uOwotICAgIG1fcmFkaXVzWSA9IHBvaW50LnJhZGl1c1k7Ci0gICAgbV9yYWRpdXNYID0gcG9p
bnQucmFkaXVzWDsKKyAgICBtX3JhZGl1c1kgPSBwb2ludC5yYWRpdXNZIC8gc2NhbGU7CisgICAg
bV9yYWRpdXNYID0gcG9pbnQucmFkaXVzWCAvIHNjYWxlOwogICAgIG1fcm90YXRpb25BbmdsZSA9
IHBvaW50LnJvdGF0aW9uQW5nbGU7CiAgICAgbV9mb3JjZSA9IHBvaW50LmZvcmNlOwogfQpAQCAt
NDE0LDE4ICs0MzAsMTkgQEAgc3RhdGljIEludFBvaW50IGNvbnZlcnRBYnNvbHV0ZUxvY2F0aW9u
Rm9yUmVuZGVyT2JqZWN0KGNvbnN0IExheW91dFBvaW50JiBsb2NhdGkKIAogc3RhdGljIHZvaWQg
dXBkYXRlV2ViTW91c2VFdmVudEZyb21XZWJDb3JlTW91c2VFdmVudChjb25zdCBNb3VzZVJlbGF0
ZWRFdmVudCYgZXZlbnQsIGNvbnN0IFdpZGdldCYgd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5k
ZXJPYmplY3QmIHJlbmRlck9iamVjdCwgV2ViTW91c2VFdmVudCYgd2ViRXZlbnQpCiB7CisgICAg
ZmxvYXQgc2NhbGUgPSB3aWRnZXRTY2FsZUZhY3Rvcigmd2lkZ2V0KTsKICAgICB3ZWJFdmVudC50
aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7CiAg
ICAgd2ViRXZlbnQubW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZlbnQpOwogCi0g
ICAgU2Nyb2xsVmlldyogdmlldyA9IHdpZGdldC5wYXJlbnQoKTsKKyAgICBTY3JvbGxWaWV3KiB2
aWV3ID0gd2lkZ2V0LnJvb3QoKTsKICAgICBJbnRQb2ludCB3aW5kb3dQb2ludCA9IHZpZXctPmNv
bnRlbnRzVG9XaW5kb3coSW50UG9pbnQoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLngoKSwgZXZl
bnQuYWJzb2x1dGVMb2NhdGlvbigpLnkoKSkpOwogICAgIHdlYkV2ZW50Lmdsb2JhbFggPSBldmVu
dC5zY3JlZW5YKCk7CiAgICAgd2ViRXZlbnQuZ2xvYmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKLSAg
ICB3ZWJFdmVudC53aW5kb3dYID0gd2luZG93UG9pbnQueCgpOwotICAgIHdlYkV2ZW50LndpbmRv
d1kgPSB3aW5kb3dQb2ludC55KCk7CisgICAgd2ViRXZlbnQud2luZG93WCA9IHdpbmRvd1BvaW50
LngoKSAqIHNjYWxlOworICAgIHdlYkV2ZW50LndpbmRvd1kgPSB3aW5kb3dQb2ludC55KCkgKiBz
Y2FsZTsKICAgICBJbnRQb2ludCBsb2NhbFBvaW50ID0gY29udmVydEFic29sdXRlTG9jYXRpb25G
b3JSZW5kZXJPYmplY3QoZXZlbnQuYWJzb2x1dGVMb2NhdGlvbigpLCByZW5kZXJPYmplY3QpOwot
ICAgIHdlYkV2ZW50LnggPSBsb2NhbFBvaW50LngoKTsKLSAgICB3ZWJFdmVudC55ID0gbG9jYWxQ
b2ludC55KCk7CisgICAgd2ViRXZlbnQueCA9IGxvY2FsUG9pbnQueCgpICogc2NhbGU7CisgICAg
d2ViRXZlbnQueSA9IGxvY2FsUG9pbnQueSgpICogc2NhbGU7CiB9CiAKIFdlYk1vdXNlRXZlbnRC
dWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
V2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IE1vdXNlRXZlbnQmIGV2
ZW50KQpAQCAtNDcyLDE0ICs0ODksMTYgQEAgV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNl
RXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjoKICAgICAg
ICAgfQogICAgIH0KICNpZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQotICAgIG1vdmVtZW50WCA9IGV2
ZW50LndlYmtpdE1vdmVtZW50WCgpOwotICAgIG1vdmVtZW50WSA9IGV2ZW50LndlYmtpdE1vdmVt
ZW50WSgpOworICAgIGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Iod2lkZ2V0KTsKKyAg
ICBtb3ZlbWVudFggPSBldmVudC53ZWJraXRNb3ZlbWVudFgoKSAqIHNjYWxlOworICAgIG1vdmVt
ZW50WSA9IGV2ZW50LndlYmtpdE1vdmVtZW50WSgpICogc2NhbGU7CiAjZW5kaWYKICAgICBjbGlj
a0NvdW50ID0gZXZlbnQuZGV0YWlsKCk7CiB9CiAKIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJN
b3VzZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6UmVu
ZGVyT2JqZWN0KiByZW5kZXJPYmplY3QsIGNvbnN0IFRvdWNoRXZlbnQmIGV2ZW50KQogeworICAg
IGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Iod2lkZ2V0KTsKICAgICBpZiAoIWV2ZW50
LnRvdWNoZXMoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGlmIChldmVudC50b3VjaGVzKCktPmxl
bmd0aCgpICE9IDEpIHsKQEAgLTUwNyw4ICs1MjYsOCBAQCBXZWJNb3VzZUV2ZW50QnVpbGRlcjo6
V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6
OgogICAgIGNsaWNrQ291bnQgPSAodHlwZSA9PSBNb3VzZURvd24gfHwgdHlwZSA9PSBNb3VzZVVw
KTsKIAogICAgIEludFBvaW50IGxvY2FsUG9pbnQgPSBjb252ZXJ0QWJzb2x1dGVMb2NhdGlvbkZv
clJlbmRlck9iamVjdCh0b3VjaC0+YWJzb2x1dGVMb2NhdGlvbigpLCAqcmVuZGVyT2JqZWN0KTsK
LSAgICB4ID0gbG9jYWxQb2ludC54KCk7Ci0gICAgeSA9IGxvY2FsUG9pbnQueSgpOworICAgIHgg
PSBsb2NhbFBvaW50LngoKSAqIHNjYWxlOworICAgIHkgPSBsb2NhbFBvaW50LnkoKSAqIHNjYWxl
OwogfQogCiBXZWJNb3VzZVdoZWVsRXZlbnRCdWlsZGVyOjpXZWJNb3VzZVdoZWVsRXZlbnRCdWls
ZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCwgY29uc3QgV2hlZWxFdmVudCYgZXZlbnQpCkBAIC01NjIsOCArNTgxLDkgQEAg
V2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXI6OldlYktleWJvYXJkRXZlbnRCdWlsZGVyKGNvbnN0IEtl
eWJvYXJkRXZlbnQmIGV2ZW50KQogCiAjaWYgRU5BQkxFKFRPVUNIX0VWRU5UUykKIAotc3RhdGlj
IHZvaWQgYWRkVG91Y2hQb2ludHMoY29uc3QgQXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRvdWNo
TGlzdCogdG91Y2hlcywgV2ViVG91Y2hQb2ludCogdG91Y2hQb2ludHMsIHVuc2lnbmVkKiB0b3Vj
aFBvaW50c0xlbmd0aCwgY29uc3QgV2ViQ29yZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3Qp
CitzdGF0aWMgdm9pZCBhZGRUb3VjaFBvaW50cyhjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3Qg
QXRvbWljU3RyaW5nJiB0b3VjaFR5cGUsIFRvdWNoTGlzdCogdG91Y2hlcywgV2ViVG91Y2hQb2lu
dCogdG91Y2hQb2ludHMsIHVuc2lnbmVkKiB0b3VjaFBvaW50c0xlbmd0aCwgY29uc3QgV2ViQ29y
ZTo6UmVuZGVyT2JqZWN0KiByZW5kZXJPYmplY3QpCiB7CisgICAgZmxvYXQgc2NhbGUgPSB3aWRn
ZXRTY2FsZUZhY3Rvcih3aWRnZXQpOwogICAgIHVuc2lnbmVkIG51bWJlck9mVG91Y2hlcyA9IHN0
ZDo6bWluKHRvdWNoZXMtPmxlbmd0aCgpLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oV2ViVG91Y2hF
dmVudDo6dG91Y2hlc0xlbmd0aENhcCkpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
dW1iZXJPZlRvdWNoZXM7ICsraSkgewogICAgICAgICBjb25zdCBUb3VjaCogdG91Y2ggPSB0b3Vj
aGVzLT5pdGVtKGkpOwpAQCAtNTcyLDggKzU5MiwxMCBAQCBzdGF0aWMgdm9pZCBhZGRUb3VjaFBv
aW50cyhjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBX
ZQogICAgICAgICBwb2ludC5pZCA9IHRvdWNoLT5pZGVudGlmaWVyKCk7CiAgICAgICAgIHBvaW50
LnNjcmVlblBvc2l0aW9uID0gV2ViUG9pbnQodG91Y2gtPnNjcmVlblgoKSwgdG91Y2gtPnNjcmVl
blkoKSk7CiAgICAgICAgIHBvaW50LnBvc2l0aW9uID0gY29udmVydEFic29sdXRlTG9jYXRpb25G
b3JSZW5kZXJPYmplY3QodG91Y2gtPmFic29sdXRlTG9jYXRpb24oKSwgKnJlbmRlck9iamVjdCk7
Ci0gICAgICAgIHBvaW50LnJhZGl1c1ggPSB0b3VjaC0+d2Via2l0UmFkaXVzWCgpOwotICAgICAg
ICBwb2ludC5yYWRpdXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1koKTsKKyAgICAgICAgcG9pbnQu
cG9zaXRpb24ueCAqPSBzY2FsZTsKKyAgICAgICAgcG9pbnQucG9zaXRpb24ueSAqPSBzY2FsZTsK
KyAgICAgICAgcG9pbnQucmFkaXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNYKCkgKiBzY2FsZTsK
KyAgICAgICAgcG9pbnQucmFkaXVzWSA9IHRvdWNoLT53ZWJraXRSYWRpdXNZKCkgKiBzY2FsZTsK
ICAgICAgICAgcG9pbnQucm90YXRpb25BbmdsZSA9IHRvdWNoLT53ZWJraXRSb3RhdGlvbkFuZ2xl
KCk7CiAgICAgICAgIHBvaW50LmZvcmNlID0gdG91Y2gtPndlYmtpdEZvcmNlKCk7CiAgICAgICAg
IHBvaW50LnN0YXRlID0gdG9XZWJUb3VjaFBvaW50U3RhdGUodG91Y2hUeXBlKTsKQEAgLTYwMiw5
ICs2MjQsOSBAQCBXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIoY29u
c3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OgogICAgIG1vZGlmaWVycyA9IGdldFdl
YklucHV0TW9kaWZpZXJzKGV2ZW50KTsKICAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGlt
ZVN0YW1wKCkgLyBtaWxsaXNQZXJTZWNvbmQ7CiAKLSAgICBhZGRUb3VjaFBvaW50cyhldmVudC50
eXBlKCksIGV2ZW50LnRvdWNoZXMoKSwgdG91Y2hlcywgJnRvdWNoZXNMZW5ndGgsIHJlbmRlck9i
amVjdCk7Ci0gICAgYWRkVG91Y2hQb2ludHMoZXZlbnQudHlwZSgpLCBldmVudC5jaGFuZ2VkVG91
Y2hlcygpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRUb3VjaGVzTGVuZ3RoLCByZW5kZXJPYmpl
Y3QpOwotICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQudGFyZ2V0VG91Y2hl
cygpLCB0YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsK
KyAgICBhZGRUb3VjaFBvaW50cyh3aWRnZXQsIGV2ZW50LnR5cGUoKSwgZXZlbnQudG91Y2hlcygp
LCB0b3VjaGVzLCAmdG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKKyAgICBhZGRUb3VjaFBv
aW50cyh3aWRnZXQsIGV2ZW50LnR5cGUoKSwgZXZlbnQuY2hhbmdlZFRvdWNoZXMoKSwgY2hhbmdl
ZFRvdWNoZXMsICZjaGFuZ2VkVG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKKyAgICBhZGRU
b3VjaFBvaW50cyh3aWRnZXQsIGV2ZW50LnR5cGUoKSwgZXZlbnQudGFyZ2V0VG91Y2hlcygpLCB0
YXJnZXRUb3VjaGVzLCAmdGFyZ2V0VG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShUT1VDSF9FVkVOVFMpCkBAIC02MTIsNiArNjM0LDcgQEAgV2ViVG91
Y2hFdmVudEJ1aWxkZXI6OldlYlRvdWNoRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0
LCBjb25zdCBXZWJDb3JlOjoKICNpZiBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiBXZWJHZXN0dXJl
RXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0
LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCwgY29uc3QgR2VzdHVy
ZUV2ZW50JiBldmVudCkKIHsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdp
ZGdldCk7CiAgICAgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCkuZ2VzdHVyZXRhcEV2
ZW50KQogICAgICAgICB0eXBlID0gR2VzdHVyZVRhcDsKICAgICBlbHNlIGlmIChldmVudC50eXBl
KCkgPT0gZXZlbnROYW1lcygpLmdlc3R1cmV0YXBkb3duRXZlbnQpCkBAIC02MjIsOCArNjQ1LDgg
QEAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlcjo6V2ViR2VzdHVyZUV2ZW50QnVpbGRlcihjb25zdCBX
aWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ28KICAgICAgICAgdHlwZSA9IEdlc3R1cmVTY3JvbGxF
bmQ7CiAgICAgZWxzZSBpZiAoZXZlbnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5nZXN0dXJlc2Ny
b2xsdXBkYXRlRXZlbnQpIHsKICAgICAgICAgdHlwZSA9IEdlc3R1cmVTY3JvbGxVcGRhdGU7Ci0g
ICAgICAgIGRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCA9IGV2ZW50LmRlbHRhWCgpOwotICAgICAg
ICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgPSBldmVudC5kZWx0YVkoKTsKKyAgICAgICAgZGF0
YS5zY3JvbGxVcGRhdGUuZGVsdGFYID0gZXZlbnQuZGVsdGFYKCkgKiBzY2FsZTsKKyAgICAgICAg
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gZXZlbnQuZGVsdGFZKCkgKiBzY2FsZTsKICAgICB9
CiAKICAgICB0aW1lU3RhbXBTZWNvbmRzID0gZXZlbnQudGltZVN0YW1wKCkgLyBtaWxsaXNQZXJT
ZWNvbmQ7CkBAIC02MzIsOCArNjU1LDggQEAgV2ViR2VzdHVyZUV2ZW50QnVpbGRlcjo6V2ViR2Vz
dHVyZUV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ28KICAgICBn
bG9iYWxYID0gZXZlbnQuc2NyZWVuWCgpOwogICAgIGdsb2JhbFkgPSBldmVudC5zY3JlZW5ZKCk7
CiAgICAgSW50UG9pbnQgbG9jYWxQb2ludCA9IGNvbnZlcnRBYnNvbHV0ZUxvY2F0aW9uRm9yUmVu
ZGVyT2JqZWN0KGV2ZW50LmFic29sdXRlTG9jYXRpb24oKSwgKnJlbmRlck9iamVjdCk7Ci0gICAg
eCA9IGxvY2FsUG9pbnQueCgpOwotICAgIHkgPSBsb2NhbFBvaW50LnkoKTsKKyAgICB4ID0gbG9j
YWxQb2ludC54KCkgKiBzY2FsZTsKKyAgICB5ID0gbG9jYWxQb2ludC55KCkgKiBzY2FsZTsKIH0K
ICNlbmRpZiAvLyBFTkFCTEUoR0VTVFVSRV9FVkVOVFMpCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA3NDQ5NTk3MTYxM2FiODE4ZjM2NmU3NjJlNzRj
YWE3MThhZTc4NTU1Li4wNTQxZjMzYTZmNTg0OWFmYTg4ZjdmODU5MjJiYzdiY2M3MjYyNzg3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC03NTUsMTIg
Kzc1NSwxOSBAQCBib29sIFdlYlZpZXdJbXBsOjpoYW5kbGVHZXN0dXJlRXZlbnQoY29uc3QgV2Vi
R2VzdHVyZUV2ZW50JiBldmVudCkKICAgICAgICAgLy8gRG9uJ3QgdHJpZ2dlciBhIGRpc2FtYmln
dWF0aW9uIHBvcHVwIG9uIHNpdGVzIGRlc2lnbmVkIGZvciBtb2JpbGUgZGV2aWNlcy4KICAgICAg
ICAgLy8gSW5zdGVhZCwgYXNzdW1lIHRoYXQgdGhlIHBhZ2UgaGFzIGJlZW4gZGVzaWduZWQgd2l0
aCBiaWcgZW5vdWdoIGJ1dHRvbnMgYW5kIGxpbmtzLgogICAgICAgICBpZiAoZXZlbnQuZGF0YS50
YXAud2lkdGggPiAwICYmICFzaG91bGREaXNhYmxlRGVza3RvcFdvcmthcm91bmRzKCkpIHsKLSAg
ICAgICAgICAgIEludFJlY3QgYm91bmRpbmdCb3goZXZlbnQueCAtIGV2ZW50LmRhdGEudGFwLndp
ZHRoIC8gMiwgZXZlbnQueSAtIGV2ZW50LmRhdGEudGFwLmhlaWdodCAvIDIsIGV2ZW50LmRhdGEu
dGFwLndpZHRoLCBldmVudC5kYXRhLnRhcC5oZWlnaHQpOworICAgICAgICAgICAgLy8gRklYTUU6
IGRpZFRhcE11bHRpcGxlVGFyZ2V0cyBzaG91bGQganVzdCB0YWtlIGEgcmVjdCBpbnN0ZWFkIG9m
CisgICAgICAgICAgICAvLyBhbiBldmVudC4KKyAgICAgICAgICAgIFdlYkdlc3R1cmVFdmVudCBz
Y2FsZWRFdmVudDsKKyAgICAgICAgICAgIHNjYWxlZEV2ZW50LnggPSBldmVudC54IC8gcGFnZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICBzY2FsZWRFdmVudC55ID0gZXZlbnQueSAvIHBhZ2VT
Y2FsZUZhY3RvcigpOworICAgICAgICAgICAgc2NhbGVkRXZlbnQuZGF0YS50YXAud2lkdGggPSBl
dmVudC5kYXRhLnRhcC53aWR0aCAvIHBhZ2VTY2FsZUZhY3RvcigpOworICAgICAgICAgICAgc2Nh
bGVkRXZlbnQuZGF0YS50YXAuaGVpZ2h0ID0gZXZlbnQuZGF0YS50YXAuaGVpZ2h0IC8gcGFnZVNj
YWxlRmFjdG9yKCk7CisgICAgICAgICAgICBJbnRSZWN0IGJvdW5kaW5nQm94KHNjYWxlZEV2ZW50
LnggLSBzY2FsZWRFdmVudC5kYXRhLnRhcC53aWR0aCAvIDIsIHNjYWxlZEV2ZW50LnkgLSBzY2Fs
ZWRFdmVudC5kYXRhLnRhcC5oZWlnaHQgLyAyLCBzY2FsZWRFdmVudC5kYXRhLnRhcC53aWR0aCwg
c2NhbGVkRXZlbnQuZGF0YS50YXAuaGVpZ2h0KTsKICAgICAgICAgICAgIFZlY3RvcjxJbnRSZWN0
PiBnb29kVGFyZ2V0czsKICAgICAgICAgICAgIGZpbmRHb29kVG91Y2hUYXJnZXRzKGJvdW5kaW5n
Qm94LCBtYWluRnJhbWVJbXBsKCktPmZyYW1lKCksIGdvb2RUYXJnZXRzKTsKICAgICAgICAgICAg
IC8vIEZJWE1FOiByZXBsYWNlIHRvdWNoIGFkanVzdG1lbnQgY29kZSB3aGVuIG51bWJlck9mR29v
ZFRhcmdldHMgPT0gMT8KICAgICAgICAgICAgIC8vIFNpbmdsZSBjYW5kaWRhdGUgY2FzZSBpcyBj
dXJyZW50bHkgaGFuZGxlZCBieTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTg1MTAxCi0gICAgICAgICAgICBpZiAoZ29vZFRhcmdldHMuc2l6ZSgpID49IDIgJiYgbV9j
bGllbnQgJiYgbV9jbGllbnQtPmRpZFRhcE11bHRpcGxlVGFyZ2V0cyhldmVudCwgZ29vZFRhcmdl
dHMpKSB7CisgICAgICAgICAgICBpZiAoZ29vZFRhcmdldHMuc2l6ZSgpID49IDIgJiYgbV9jbGll
bnQgJiYgbV9jbGllbnQtPmRpZFRhcE11bHRpcGxlVGFyZ2V0cyhzY2FsZWRFdmVudCwgZ29vZFRh
cmdldHMpKSB7CiAgICAgICAgICAgICAgICAgZXZlbnRTd2FsbG93ZWQgPSB0cnVlOwogICAgICAg
ICAgICAgICAgIGV2ZW50Q2FuY2VsbGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsK
QEAgLTEzNTQsNiArMTM2MSw3IEBAIHZvaWQgV2ViVmlld0ltcGw6Omhhc1RvdWNoRXZlbnRIYW5k
bGVycyhib29sIGhhc1RvdWNoSGFuZGxlcnMpCiAKIGJvb2wgV2ViVmlld0ltcGw6Omhhc1RvdWNo
RXZlbnRIYW5kbGVyc0F0KGNvbnN0IFdlYlBvaW50JiBwb2ludCkKIHsKKyAgICAvLyBGSVhNRTog
SW1wbGVtZW50IHRoaXMuIE5vdGUgdGhhdCB0aGUgcG9pbnQgbXVzdCBiZSBkaXZpZGVkIGJ5IHBh
Z2VTY2FsZUZhY3Rvci4KICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjA4MywyNiArMjA5MSw3
IEBAIGJvb2wgV2ViVmlld0ltcGw6OmhhbmRsZUlucHV0RXZlbnQoY29uc3QgV2ViSW5wdXRFdmVu
dCYgaW5wdXRFdmVudCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgY29uc3Qg
V2ViSW5wdXRFdmVudCogaW5wdXRFdmVudFRyYW5zZm9ybWVkID0gJmlucHV0RXZlbnQ7Ci0gICAg
aWYgKG1fcGFnZS0+c2V0dGluZ3MoKS0+YXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3Io
KSkgewotICAgICAgICBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQ7Ci0gICAgICAgIFdlYkdlc3R1
cmVFdmVudCBnZXN0dXJlRXZlbnQ7Ci0gICAgICAgIGlmIChXZWJJbnB1dEV2ZW50Ojppc01vdXNl
RXZlbnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgICAgIG1vdXNlRXZlbnQgPSAq
c3RhdGljX2Nhc3Q8Y29uc3QgV2ViTW91c2VFdmVudCo+KCZpbnB1dEV2ZW50KTsKLSAgICAgICAg
ICAgIG1vdXNlRXZlbnQueCA9IG1vdXNlRXZlbnQueCAvIHBhZ2VTY2FsZUZhY3RvcigpOwotICAg
ICAgICAgICAgbW91c2VFdmVudC55ID0gbW91c2VFdmVudC55IC8gcGFnZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgICAgICBpbnB1dEV2ZW50VHJhbnNmb3JtZWQgPSBzdGF0aWNfY2FzdDxjb25zdCBX
ZWJJbnB1dEV2ZW50Kj4oJm1vdXNlRXZlbnQpOwotICAgICAgICB9IGVsc2UgaWYgKFdlYklucHV0
RXZlbnQ6OmlzR2VzdHVyZUV2ZW50VHlwZShpbnB1dEV2ZW50LnR5cGUpKSB7Ci0gICAgICAgICAg
ICBnZXN0dXJlRXZlbnQgPSAqc3RhdGljX2Nhc3Q8Y29uc3QgV2ViR2VzdHVyZUV2ZW50Kj4oJmlu
cHV0RXZlbnQpOwotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LnggPSBnZXN0dXJlRXZlbnQueCAv
IHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LnkgPSBnZXN0dXJl
RXZlbnQueSAvIHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgZ2VzdHVyZUV2ZW50LmRh
dGEudGFwLndpZHRoIC89IHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgZ2VzdHVyZUV2
ZW50LmRhdGEudGFwLmhlaWdodCAvPSBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgIGlu
cHV0RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigm
Z2VzdHVyZUV2ZW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBQYWdlV2lkZ2V0
RGVsZWdhdGU6OmhhbmRsZUlucHV0RXZlbnQobV9wYWdlLmdldCgpLCAqdGhpcywgKmlucHV0RXZl
bnRUcmFuc2Zvcm1lZCk7CisgICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5w
dXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCBpbnB1dEV2ZW50KTsKIH0KIAogdm9pZCBXZWJW
aWV3SW1wbDo6bW91c2VDYXB0dXJlTG9zdCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3Rlc3RzL1dlYklucHV0RXZlbnRDb252ZXJzaW9uVGVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3Rlc3RzL1dlYklucHV0RXZlbnRDb252ZXJzaW9uVGVzdC5jcHAKaW5kZXgg
NTAzNWEyNzBmYjZlNDk3OWU3NDZiMGQyZjA2MjcyYTIwOTgxNDk3Yy4uNDY5NzMxOWQ5NWM0ZjM3
ZDE5MGEzNWZkNmJhYTlhN2NhMzRmODY1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvblRlc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViSW5wdXRFdmVudENvbnZlcnNpb25UZXN0LmNwcApAQCAt
MzIsMTQgKzMyLDIzIEBACiAKICNpbmNsdWRlICJXZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5oIgog
CisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5j
bHVkZSAiRnJhbWVWaWV3LmgiCisjaW5jbHVkZSAiR2VzdHVyZUV2ZW50LmgiCiAjaW5jbHVkZSAi
S2V5Ym9hcmRFdmVudC5oIgorI2luY2x1ZGUgIk1vdXNlRXZlbnQuaCIKKyNpbmNsdWRlICJUb3Vj
aC5oIgogI2luY2x1ZGUgIlRvdWNoRXZlbnQuaCIKKyNpbmNsdWRlICJUb3VjaExpc3QuaCIKKyNp
bmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIldlYkZyYW1lLmgiCisjaW5jbHVk
ZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgPGd0
ZXN0L2d0ZXN0Lmg+CiAKLXVzaW5nIFdlYktpdDo6V2ViSW5wdXRFdmVudDsKLXVzaW5nIFdlYktp
dDo6V2ViS2V5Ym9hcmRFdmVudDsKLXVzaW5nIFdlYktpdDo6V2ViS2V5Ym9hcmRFdmVudEJ1aWxk
ZXI7Ci11c2luZyBXZWJLaXQ6OldlYk1vdXNlRXZlbnRCdWlsZGVyOwordXNpbmcgbmFtZXNwYWNl
IFdlYktpdDsKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgewogCkBAIC04
MSw0ICs5MCwxNzcgQEAgVEVTVChXZWJJbnB1dEV2ZW50Q29udmVyc2lvblRlc3QsIFdlYlRvdWNo
RXZlbnRCdWlsZGVyKQogICAgIEVYUEVDVF9FUShXZWJJbnB1dEV2ZW50OjpVbmRlZmluZWQsIG1v
dXNlLnR5cGUpOwogfQogCitURVNUKFdlYklucHV0RXZlbnRDb252ZXJzaW9uVGVzdCwgSW5wdXRF
dmVudHNTY2FsaW5nKQoreworICAgIGNvbnN0IHN0ZDo6c3RyaW5nIGJhc2VVUkwoImh0dHA6Ly93
d3cudGVzdC5jb20vIik7CisgICAgY29uc3Qgc3RkOjpzdHJpbmcgZmlsZU5hbWUoImZpeGVkX2xh
eW91dC5odG1sIik7CisKKyAgICBVUkxUZXN0SGVscGVyczo6cmVnaXN0ZXJNb2NrZWRVUkxGcm9t
QmFzZVVSTChXZWJTdHJpbmc6OmZyb21VVEY4KGJhc2VVUkwuY19zdHIoKSksIFdlYlN0cmluZzo6
ZnJvbVVURjgoImZpeGVkX2xheW91dC5odG1sIikpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3
SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oRnJhbWVUZXN0SGVscGVyczo6Y3JlYXRl
V2ViVmlld0FuZExvYWQoYmFzZVVSTCArIGZpbGVOYW1lLCB0cnVlKSk7CisgICAgd2ViVmlld0lt
cGwtPnNldHRpbmdzKCktPnNldEFwcGx5RGV2aWNlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1
ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFwcGx5UGFnZVNjYWxlRmFjdG9y
SW5Db21wb3NpdG9yKHRydWUpOworICAgIHdlYlZpZXdJbXBsLT5lbmFibGVGaXhlZExheW91dE1v
ZGUodHJ1ZSk7CisgICAgd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldFZpZXdwb3J0RW5hYmxl
ZCh0cnVlKTsKKyAgICBpbnQgcGFnZVdpZHRoID0gNjQwOworICAgIGludCBwYWdlSGVpZ2h0ID0g
NDgwOworICAgIHdlYlZpZXdJbXBsLT5yZXNpemUoV2ViU2l6ZShwYWdlV2lkdGgsIHBhZ2VIZWln
aHQpKTsKKyAgICB3ZWJWaWV3SW1wbC0+bGF5b3V0KCk7CisKKyAgICB3ZWJWaWV3SW1wbC0+c2V0
UGFnZVNjYWxlRmFjdG9yKDIsIFdlYlBvaW50KCkpOworCisgICAgRnJhbWVWaWV3KiB2aWV3ID0g
d2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPnZpZXcoKTsKKyAgICBSZWZQdHI8RG9j
dW1lbnQ+IGRvY3VtZW50ID0gd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3Vt
ZW50KCk7CisgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSB3ZWJWaWV3SW1wbC0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKTsKKyAgICBSZW5kZXJPYmplY3Qq
IGRvY1JlbmRlcmVyID0gd2ViVmlld0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCktPmRvY3VtZW50
KCktPnJlbmRlcmVyKCk7CisKKyAgICB7CisgICAgICAgIFdlYk1vdXNlRXZlbnQgd2ViTW91c2VF
dmVudDsKKyAgICAgICAgd2ViTW91c2VFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VN
b3ZlOworICAgICAgICB3ZWJNb3VzZUV2ZW50LnggPSAxMDsKKyAgICAgICAgd2ViTW91c2VFdmVu
dC55ID0gMTA7CisgICAgICAgIHdlYk1vdXNlRXZlbnQud2luZG93WCA9IDEwOworICAgICAgICB3
ZWJNb3VzZUV2ZW50LndpbmRvd1kgPSAxMDsKKyAgICAgICAgd2ViTW91c2VFdmVudC5nbG9iYWxY
ID0gMTA7CisgICAgICAgIHdlYk1vdXNlRXZlbnQuZ2xvYmFsWSA9IDEwOworICAgICAgICB3ZWJN
b3VzZUV2ZW50Lm1vdmVtZW50WCA9IDEwOworICAgICAgICB3ZWJNb3VzZUV2ZW50Lm1vdmVtZW50
WSA9IDEwOworCisgICAgICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgcGxhdGZvcm1Nb3Vz
ZUJ1aWxkZXIodmlldywgd2ViTW91c2VFdmVudCk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0
Zm9ybU1vdXNlQnVpbGRlci5wb3NpdGlvbigpLngoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBw
bGF0Zm9ybU1vdXNlQnVpbGRlci5wb3NpdGlvbigpLnkoKSk7CisgICAgICAgIEVYUEVDVF9FUSgx
MCwgcGxhdGZvcm1Nb3VzZUJ1aWxkZXIuZ2xvYmFsUG9zaXRpb24oKS54KCkpOworICAgICAgICBF
WFBFQ1RfRVEoMTAsIHBsYXRmb3JtTW91c2VCdWlsZGVyLmdsb2JhbFBvc2l0aW9uKCkueSgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtTW91c2VCdWlsZGVyLm1vdmVtZW50RGVsdGEo
KS54KCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1Nb3VzZUJ1aWxkZXIubW92ZW1l
bnREZWx0YSgpLnkoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBXZWJHZXN0dXJlRXZlbnQg
d2ViR2VzdHVyZUV2ZW50OworICAgICAgICB3ZWJHZXN0dXJlRXZlbnQudHlwZSA9IFdlYklucHV0
RXZlbnQ6Okdlc3R1cmVTY3JvbGxVcGRhdGU7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC54ID0g
MTA7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC55ID0gMTA7CisgICAgICAgIHdlYkdlc3R1cmVF
dmVudC5nbG9iYWxYID0gMTA7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC5nbG9iYWxZID0gMTA7
CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVggPSAxMDsK
KyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWSA9IDEwOwor
CisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUdlc3R1cmVCdWls
ZGVyKHZpZXcsIHdlYkdlc3R1cmVFdmVudCk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9y
bUdlc3R1cmVCdWlsZGVyLnBvc2l0aW9uKCkueCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIHBs
YXRmb3JtR2VzdHVyZUJ1aWxkZXIucG9zaXRpb24oKS55KCkpOworICAgICAgICBFWFBFQ1RfRVEo
MTAsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuZ2xvYmFsUG9zaXRpb24oKS54KCkpOworICAgICAg
ICBFWFBFQ1RfRVEoMTAsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuZ2xvYmFsUG9zaXRpb24oKS55
KCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVpbGRlci5kZWx0YVgo
KSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybUdlc3R1cmVCdWlsZGVyLmRlbHRhWSgp
KTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFdlYkdlc3R1cmVFdmVudCB3ZWJHZXN0dXJlRXZl
bnQ7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVy
ZVRhcDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEudGFwLndpZHRoID0gMTA7CisgICAg
ICAgIHdlYkdlc3R1cmVFdmVudC5kYXRhLnRhcC5oZWlnaHQgPSAxMDsKKworICAgICAgICBQbGF0
Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1HZXN0dXJlQnVpbGRlcih2aWV3LCB3ZWJH
ZXN0dXJlRXZlbnQpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVpbGRl
ci5hcmVhKCkud2lkdGgoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybUdlc3R1cmVC
dWlsZGVyLmFyZWEoKS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgeworICAgICAgICBXZWJHZXN0
dXJlRXZlbnQgd2ViR2VzdHVyZUV2ZW50OworICAgICAgICB3ZWJHZXN0dXJlRXZlbnQudHlwZSA9
IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVUYXBEb3duOworICAgICAgICB3ZWJHZXN0dXJlRXZlbnQu
ZGF0YS50YXBEb3duLndpZHRoID0gMTA7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC5kYXRhLnRh
cERvd24uaGVpZ2h0ID0gMTA7CisKKyAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVy
IHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIodmlldywgd2ViR2VzdHVyZUV2ZW50KTsKKyAgICAgICAg
RVhQRUNUX0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuYXJlYSgpLndpZHRoKCkpOworICAg
ICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVpbGRlci5hcmVhKCkuaGVpZ2h0KCkp
OworICAgIH0KKworICAgIHsKKyAgICAgICAgV2ViR2VzdHVyZUV2ZW50IHdlYkdlc3R1cmVFdmVu
dDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJl
TG9uZ1ByZXNzOworICAgICAgICB3ZWJHZXN0dXJlRXZlbnQuZGF0YS5sb25nUHJlc3Mud2lkdGgg
PSAxMDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEubG9uZ1ByZXNzLmhlaWdodCA9IDEw
OworCisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUdlc3R1cmVC
dWlsZGVyKHZpZXcsIHdlYkdlc3R1cmVFdmVudCk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0
Zm9ybUdlc3R1cmVCdWlsZGVyLmFyZWEoKS53aWR0aCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDUs
IHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuYXJlYSgpLmhlaWdodCgpKTsKKyAgICB9CisKKyAgICB7
CisgICAgICAgIFdlYkdlc3R1cmVFdmVudCB3ZWJHZXN0dXJlRXZlbnQ7CisgICAgICAgIHdlYkdl
c3R1cmVFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVR3b0ZpbmdlclRhcDsKKyAg
ICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEudHdvRmluZ2VyVGFwLmZpcnN0RmluZ2VyV2lkdGgg
PSAxMDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEudHdvRmluZ2VyVGFwLmZpcnN0Rmlu
Z2VySGVpZ2h0ID0gMTA7CisKKyAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBs
YXRmb3JtR2VzdHVyZUJ1aWxkZXIodmlldywgd2ViR2VzdHVyZUV2ZW50KTsKKyAgICAgICAgRVhQ
RUNUX0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuYXJlYSgpLndpZHRoKCkpOworICAgICAg
ICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVpbGRlci5hcmVhKCkuaGVpZ2h0KCkpOwor
ICAgIH0KKworICAgIHsKKyAgICAgICAgV2ViVG91Y2hFdmVudCB3ZWJUb3VjaEV2ZW50OworICAg
ICAgICB3ZWJUb3VjaEV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpUb3VjaE1vdmU7CisgICAg
ICAgIHdlYlRvdWNoRXZlbnQudG91Y2hlc0xlbmd0aCA9IDE7CisgICAgICAgIHdlYlRvdWNoRXZl
bnQudG91Y2hlc1swXS5zdGF0ZSA9IFdlYlRvdWNoUG9pbnQ6OlN0YXRlTW92ZWQ7CisgICAgICAg
IHdlYlRvdWNoRXZlbnQudG91Y2hlc1swXS5zY3JlZW5Qb3NpdGlvbi54ID0gMTA7CisgICAgICAg
IHdlYlRvdWNoRXZlbnQudG91Y2hlc1swXS5zY3JlZW5Qb3NpdGlvbi55ID0gMTA7CisgICAgICAg
IHdlYlRvdWNoRXZlbnQudG91Y2hlc1swXS5wb3NpdGlvbi54ID0gMTA7CisgICAgICAgIHdlYlRv
dWNoRXZlbnQudG91Y2hlc1swXS5wb3NpdGlvbi55ID0gMTA7CisgICAgICAgIHdlYlRvdWNoRXZl
bnQudG91Y2hlc1swXS5yYWRpdXNYID0gMTA7CisgICAgICAgIHdlYlRvdWNoRXZlbnQudG91Y2hl
c1swXS5yYWRpdXNZID0gMTA7CisKKyAgICAgICAgUGxhdGZvcm1Ub3VjaEV2ZW50QnVpbGRlciBw
bGF0Zm9ybVRvdWNoQnVpbGRlcih2aWV3LCB3ZWJUb3VjaEV2ZW50KTsKKyAgICAgICAgRVhQRUNU
X0VRKDEwLCBwbGF0Zm9ybVRvdWNoQnVpbGRlci50b3VjaFBvaW50cygpWzBdLnNjcmVlblBvcygp
LngoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgcGxhdGZvcm1Ub3VjaEJ1aWxkZXIudG91Y2hQ
b2ludHMoKVswXS5zY3JlZW5Qb3MoKS55KCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZv
cm1Ub3VjaEJ1aWxkZXIudG91Y2hQb2ludHMoKVswXS5wb3MoKS54KCkpOworICAgICAgICBFWFBF
Q1RfRVEoNSwgcGxhdGZvcm1Ub3VjaEJ1aWxkZXIudG91Y2hQb2ludHMoKVswXS5wb3MoKS55KCkp
OworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1Ub3VjaEJ1aWxkZXIudG91Y2hQb2ludHMo
KVswXS5yYWRpdXNYKCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1Ub3VjaEJ1aWxk
ZXIudG91Y2hQb2ludHMoKVswXS5yYWRpdXNZKCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IHBsYXRmb3JtTW91c2VFdmVudChJbnRQb2ludCgxMCwgMTApLCBJ
bnRQb2ludCgxMCwgMTApLCBMZWZ0QnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAx
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCk7CisgICAgICAgIFJlZlB0cjxNb3VzZUV2
ZW50PiBtb3VzZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKFdlYkNvcmU6OmV2ZW50TmFtZXMo
KS5tb3VzZW1vdmVFdmVudCwgZG9tV2luZG93LCBwbGF0Zm9ybU1vdXNlRXZlbnQsIDAsIGRvY3Vt
ZW50KTsKKyAgICAgICAgV2ViTW91c2VFdmVudEJ1aWxkZXIgd2ViTW91c2VCdWlsZGVyKHZpZXcs
IGRvY1JlbmRlcmVyLCAqbW91c2VFdmVudCk7CisKKyAgICAgICAgRVhQRUNUX0VRKDIwLCB3ZWJN
b3VzZUJ1aWxkZXIueCk7CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViTW91c2VCdWlsZGVyLnkp
OworICAgICAgICBFWFBFQ1RfRVEoMTAsIHdlYk1vdXNlQnVpbGRlci5nbG9iYWxYKTsKKyAgICAg
ICAgRVhQRUNUX0VRKDEwLCB3ZWJNb3VzZUJ1aWxkZXIuZ2xvYmFsWSk7CisgICAgICAgIEVYUEVD
VF9FUSgyMCwgd2ViTW91c2VCdWlsZGVyLndpbmRvd1gpOworICAgICAgICBFWFBFQ1RfRVEoMjAs
IHdlYk1vdXNlQnVpbGRlci53aW5kb3dZKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFBsYXRm
b3JtR2VzdHVyZUV2ZW50IHBsYXRmb3JtR2VzdHVyZUV2ZW50KFBsYXRmb3JtRXZlbnQ6Okdlc3R1
cmVTY3JvbGxVcGRhdGUsIEludFBvaW50KDEwLCAxMCksIEludFBvaW50KDEwLCAxMCksIDAsIElu
dFNpemUoMTAsIDEwKSwgRmxvYXRQb2ludCgxMCwgMTApLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBm
YWxzZSk7CisgICAgICAgIFJlZlB0cjxHZXN0dXJlRXZlbnQ+IGdlc3R1cmVFdmVudCA9IEdlc3R1
cmVFdmVudDo6Y3JlYXRlKGRvbVdpbmRvdywgcGxhdGZvcm1HZXN0dXJlRXZlbnQpOworICAgICAg
ICBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyIHdlYkdlc3R1cmVCdWlsZGVyKHZpZXcsIGRvY1JlbmRl
cmVyLCAqZ2VzdHVyZUV2ZW50KTsKKworICAgICAgICBFWFBFQ1RfRVEoMjAsIHdlYkdlc3R1cmVC
dWlsZGVyLngpOworICAgICAgICBFWFBFQ1RfRVEoMjAsIHdlYkdlc3R1cmVCdWlsZGVyLnkpOwor
ICAgICAgICBFWFBFQ1RfRVEoMTAsIHdlYkdlc3R1cmVCdWlsZGVyLmdsb2JhbFgpOworICAgICAg
ICBFWFBFQ1RfRVEoMTAsIHdlYkdlc3R1cmVCdWlsZGVyLmdsb2JhbFkpOworICAgICAgICBFWFBF
Q1RfRVEoMjAsIHdlYkdlc3R1cmVCdWlsZGVyLmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCk7Cisg
ICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViR2VzdHVyZUJ1aWxkZXIuZGF0YS5zY3JvbGxVcGRhdGUu
ZGVsdGFZKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFJlZlB0cjxUb3VjaD4gdG91Y2ggPSBU
b3VjaDo6Y3JlYXRlKHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLCBkb2N1bWVudC5n
ZXQoKSwgMCwgMTAsIDEwLCAxMCwgMTAsIDEwLCAxMCwgMCwgMCk7CisgICAgICAgIFJlZlB0cjxU
b3VjaExpc3Q+IHRvdWNoTGlzdCA9IFRvdWNoTGlzdDo6Y3JlYXRlKCk7CisgICAgICAgIHRvdWNo
TGlzdC0+YXBwZW5kKHRvdWNoKTsKKyAgICAgICAgUmVmUHRyPFRvdWNoRXZlbnQ+IHRvdWNoRXZl
bnQgPSBUb3VjaEV2ZW50OjpjcmVhdGUodG91Y2hMaXN0LmdldCgpLCB0b3VjaExpc3QuZ2V0KCks
IHRvdWNoTGlzdC5nZXQoKSwgV2ViQ29yZTo6ZXZlbnROYW1lcygpLnRvdWNobW92ZUV2ZW50LCBk
b21XaW5kb3csIDEwLCAxMCwgMTAsIDEwLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSk7CisK
KyAgICAgICAgV2ViVG91Y2hFdmVudEJ1aWxkZXIgd2ViVG91Y2hCdWlsZGVyKHZpZXcsIGRvY1Jl
bmRlcmVyLCAqdG91Y2hFdmVudCk7CisgICAgICAgIEFTU0VSVF9FUSgxLCB3ZWJUb3VjaEJ1aWxk
ZXIudG91Y2hlc0xlbmd0aCk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgd2ViVG91Y2hCdWlsZGVy
LnRvdWNoZXNbMF0uc2NyZWVuUG9zaXRpb24ueCk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgd2Vi
VG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0uc2NyZWVuUG9zaXRpb24ueSk7CisgICAgICAgIEVYUEVD
VF9FUSgyMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucG9zaXRpb24ueCk7CisgICAgICAg
IEVYUEVDVF9FUSgyMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucG9zaXRpb24ueSk7Cisg
ICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucmFkaXVzWCk7
CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucmFkaXVz
WSk7CisgICAgfQorCisgICAgd2ViVmlld0ltcGwtPmNsb3NlKCk7Cit9CisKIH0gLy8gYW5vbnlt
b3VzIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187741</attachid>
            <date>2013-02-11 18:11:23 -0800</date>
            <delta_ts>2013-02-11 20:24:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109370-20130211180753.patch</filename>
            <type>text/plain</type>
            <size>29351</size>
            <attacher name="Alexandre Elias">aelias</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyNDAzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDVlNDg1Mjg1M2M2MTg5MmM5YTUzNmVlNjMzOGM0OTQ4MGNiNDdiOTAuLmM0MTNiNmQ4NzI5NDVl
ODMzYTk1YmJmZWJmYzJjNmYyOWE1MGNjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsNDIgQEAKKzIwMTMtMDItMTEgIEFsZXhhbmRyZSBFbGlhcyAgPGFlbGlhc0BjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBcHBseSBwYWdlIHNjYWxlIHRvIGFsbCBX
ZWJJbnB1dEV2ZW50IHR5cGVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMDkzNzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBQcmV2aW91c2x5IHdlIG9ubHkgYWRqdXN0ZWQgYSBmZXcgY29tbW9uIGlucHV0
IGV2ZW50IHR5cGVzIGJ5IHBhZ2UKKyAgICAgICAgc2NhbGUsIGJ1dCBpbiBmYWN0IGFsbW9zdCBl
dmVyeSBwb3NpdGlvbiBhbmQgc2l6ZSBpbiBXZWJJbnB1dEV2ZW50cworICAgICAgICByZXF1aXJl
cyBpdC4KKworICAgICAgICBJIGFsc28gdG9vayB0aGUgb3Bwb3J0dW5pdHkgdG8gY2hhbmdlIHNv
bWUgV2ViR2VzdHVyZUV2ZW50IG1lbWJlcnMgdG8KKyAgICAgICAgZmxvYXRzICh3aGljaCBJIGNo
ZWNrZWQgY2F1c2VzIG5vIHdhcm5pbmdzIGluIENocm9taXVtLXNpZGUgY29kZSB3aXRoCisgICAg
ICAgIEdDQyBvciBDbGFuZykuCisKKyAgICAgICAgTmV3IFdlYklucHV0RXZlbnRDb252ZXJzaW9u
VGVzdDogSW5wdXRFdmVudHNTY2FsaW5nCisKKyAgICAgICAgKiBwdWJsaWMvV2ViSW5wdXRFdmVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnQ6OldlYkdlc3R1cmVFdmVudCk6
CisgICAgICAgICogc3JjL1dlYklucHV0RXZlbnRDb252ZXJzaW9uLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6d2lkZ2V0U2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdl
YktpdDo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRl
cik6CisgICAgICAgIChXZWJLaXQ6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIpOgorICAgICAgICAoV2ViS2l0OjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXI6OlBsYXRmb3JtR2VzdHVyZUV2ZW50QnVpbGRlcik6CisgICAgICAgIChXZWJLaXQ6
OlBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXI6OlBsYXRmb3JtVG91Y2hQb2ludEJ1aWxkZXIpOgor
ICAgICAgICAoV2ViS2l0Ojp1cGRhdGVXZWJNb3VzZUV2ZW50RnJvbVdlYkNvcmVNb3VzZUV2ZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRC
dWlsZGVyKToKKyAgICAgICAgKFdlYktpdDo6YWRkVG91Y2hQb2ludHMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2ViVG91Y2hFdmVudEJ1aWxkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6aGFuZGxlR2VzdHVyZUV2ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6Omhhc1RvdWNoRXZlbnRIYW5kbGVyc0F0KToKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0lt
cGw6OmhhbmRsZUlucHV0RXZlbnQpOgorICAgICAgICAqIHRlc3RzL1dlYklucHV0RXZlbnRDb252
ZXJzaW9uVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKyAgICAgICAgKFdlYkNv
cmUpOgorCiAyMDEzLTAyLTA5ICBTdGVwaGVuIENoZW5uZXkgIDxzY2hlbm5leUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gIFJvbGxlZCBDaHJvbWl1bSBERVBTIHRvIGxhc3Qt
a25vd24gZ29vZCByZXZpc2lvbi4gUmVhbGx5IHRoaXMgdGltZS4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklucHV0RXZlbnQuaAppbmRleCA5OWQzNGFiNzY4YzVkZjIyYzZm
YTcxNmYwMzUwYWIyMmI0ZDFjMDRmLi43YTYzYzEyNTFjM2I1MjhlNjRlMmRiYTZmZjdiYTdlOGYx
ODBhMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJbnB1
dEV2ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSW5wdXRFdmVu
dC5oCkBAIC00MDcsMjMgKzQwNywyMyBAQCBwdWJsaWM6CiAgICAgdW5pb24gewogICAgICAgICBz
dHJ1Y3QgewogICAgICAgICAgICAgaW50IHRhcENvdW50OwotICAgICAgICAgICAgaW50IHdpZHRo
OwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAgICAgICAgIGZsb2F0IHdpZHRoOworICAg
ICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9IHRhcDsKIAogICAgICAgICBzdHJ1Y3Qg
ewotICAgICAgICAgICAgaW50IHdpZHRoOwotICAgICAgICAgICAgaW50IGhlaWdodDsKKyAgICAg
ICAgICAgIGZsb2F0IHdpZHRoOworICAgICAgICAgICAgZmxvYXQgaGVpZ2h0OwogICAgICAgICB9
IHRhcERvd247CiAKICAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGludCB3aWR0aDsKLSAg
ICAgICAgICAgIGludCBoZWlnaHQ7CisgICAgICAgICAgICBmbG9hdCB3aWR0aDsKKyAgICAgICAg
ICAgIGZsb2F0IGhlaWdodDsKICAgICAgICAgfSBsb25nUHJlc3M7CiAKICAgICAgICAgc3RydWN0
IHsKLSAgICAgICAgICAgIGludCBmaXJzdEZpbmdlcldpZHRoOwotICAgICAgICAgICAgaW50IGZp
cnN0RmluZ2VySGVpZ2h0OworICAgICAgICAgICAgZmxvYXQgZmlyc3RGaW5nZXJXaWR0aDsKKyAg
ICAgICAgICAgIGZsb2F0IGZpcnN0RmluZ2VySGVpZ2h0OwogICAgICAgICB9IHR3b0ZpbmdlclRh
cDsKIAogICAgICAgICBzdHJ1Y3QgewpAQCAtNDQzLDcgKzQ0Myw3IEBAIHB1YmxpYzoKICAgICAg
ICAgc3RydWN0IHsKICAgICAgICAgICAgIGZsb2F0IHNjYWxlOwogICAgICAgICB9IHBpbmNoVXBk
YXRlOwotICAgIH0gZGF0YTsgCisgICAgfSBkYXRhOwogCiAgICAgV2ViR2VzdHVyZUV2ZW50KHVu
c2lnbmVkIHNpemVQYXJhbSA9IHNpemVvZihXZWJHZXN0dXJlRXZlbnQpKQogICAgICAgICA6IFdl
YklucHV0RXZlbnQoc2l6ZVBhcmFtKQpAQCAtNDUyLDcgKzQ1Miw3IEBAIHB1YmxpYzoKICAgICAg
ICAgLCBnbG9iYWxYKDApCiAgICAgICAgICwgZ2xvYmFsWSgwKQogICAgIHsKLSAgICAgIG1lbXNl
dCgmZGF0YSwgMCwgc2l6ZW9mKGRhdGEpKTsgCisgICAgICAgIG1lbXNldCgmZGF0YSwgMCwgc2l6
ZW9mKGRhdGEpKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvbi5jcHAKaW5kZXggZTQyZTE2ZTFhMTY3ZDE3
MTcxZDY0ODM3NDczZjc1Y2I3N2UxZWU0OC4uZTRmN2NhOWE4MWE1Y2QzYTVmYjE4YmIyNmNlZDU1
NDhkMTBlMzg3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YklucHV0RXZlbnRDb252ZXJzaW9uLmNwcApAQCAtNTQsMTYgKzU0LDI5IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBzdGF0aWMgY29uc3QgZG91YmxlIG1pbGxpc1BlclNlY29uZCA9IDEwMDAuMDsK
IAorc3RhdGljIGZsb2F0IHdpZGdldFNjYWxlRmFjdG9yKGNvbnN0IFdpZGdldCogd2lkZ2V0KQor
eworICAgIGlmICghd2lkZ2V0KQorICAgICAgICByZXR1cm4gMTsKKworICAgIFNjcm9sbFZpZXcq
IHJvb3RWaWV3ID0gd2lkZ2V0LT5yb290KCk7CisgICAgaWYgKCFyb290VmlldykKKyAgICAgICAg
cmV0dXJuIDE7CisKKyAgICByZXR1cm4gcm9vdFZpZXctPnZpc2libGVDb250ZW50U2NhbGVGYWN0
b3IoKTsKK30KKwogLy8gTWFrZVBsYXRmb3JtTW91c2VFdmVudCAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBQbGF0Zm9ybU1vdXNlRXZlbnRC
dWlsZGVyOjpQbGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyKFdpZGdldCogd2lkZ2V0LCBjb25zdCBX
ZWJNb3VzZUV2ZW50JiBlKQogeworICAgIGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Io
d2lkZ2V0KTsKICAgICAvLyBGSVhNRTogd2lkZ2V0IGlzIGFsd2F5cyB0b3BsZXZlbCwgdW5sZXNz
IGl0J3MgYSBwb3B1cC4gIFdlIG1heSBiZSBhYmxlCiAgICAgLy8gdG8gZ2V0IHJpZCBvZiB0aGlz
IG9uY2Ugd2UgYWJzdHJhY3QgcG9wdXBzIGludG8gYSBXZWJLaXQgQVBJLgotICAgIG1fcG9zaXRp
b24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQb2ludChlLngsIGUu
eSkpOworICAgIG1fcG9zaXRpb24gPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRv
dyhJbnRQb2ludChlLnggLyBzY2FsZSwgZS55IC8gc2NhbGUpKTsKICAgICBtX2dsb2JhbFBvc2l0
aW9uID0gSW50UG9pbnQoZS5nbG9iYWxYLCBlLmdsb2JhbFkpOwogI2lmIEVOQUJMRShQT0lOVEVS
X0xPQ0spCi0gICAgbV9tb3ZlbWVudERlbHRhID0gSW50UG9pbnQoZS5tb3ZlbWVudFgsIGUubW92
ZW1lbnRZKTsKKyAgICBtX21vdmVtZW50RGVsdGEgPSBJbnRQb2ludChlLm1vdmVtZW50WCAvIHNj
YWxlLCBlLm1vdmVtZW50WSAvIHNjYWxlKTsKICNlbmRpZgogICAgIG1fYnV0dG9uID0gc3RhdGlj
X2Nhc3Q8TW91c2VCdXR0b24+KGUuYnV0dG9uKTsKIApAQCAtMTA0LDcgKzExNyw4IEBAIFBsYXRm
b3JtTW91c2VFdmVudEJ1aWxkZXI6OlBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFdlYk1vCiAKIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3Jt
V2hlZWxFdmVudEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vdXNlV2hlZWxFdmVu
dCYgZSkKIHsKLSAgICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdX
aW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxl
RmFjdG9yKHdpZGdldCk7CisgICAgbV9wb3NpdGlvbiA9IHdpZGdldC0+Y29udmVydEZyb21Db250
YWluaW5nV2luZG93KEludFBvaW50KGUueCAvIHNjYWxlLCBlLnkgLyBzY2FsZSkpOwogICAgIG1f
Z2xvYmFsUG9zaXRpb24gPSBJbnRQb2ludChlLmdsb2JhbFgsIGUuZ2xvYmFsWSk7CiAgICAgbV9k
ZWx0YVggPSBlLmRlbHRhWDsKICAgICBtX2RlbHRhWSA9IGUuZGVsdGFZOwpAQCAtMTQxLDYgKzE1
NSw3IEBAIFBsYXRmb3JtV2hlZWxFdmVudEJ1aWxkZXI6OlBsYXRmb3JtV2hlZWxFdmVudEJ1aWxk
ZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYk1vCiAjaWYgRU5BQkxFKEdFU1RVUkVfRVZFTlRT
KQogUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxk
ZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkdlc3R1cmVFdmVudCYgZSkKIHsKKyAgICBmbG9h
dCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdldCk7CiAgICAgc3dpdGNoIChlLnR5cGUp
IHsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVTY3JvbGxCZWdpbjoKICAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbEJlZ2luOwpAQCAtMTUwLDIzICsx
NjUsMjMgQEAgUGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyOjpQbGF0Zm9ybUdlc3R1cmVFdmVu
dEJ1aWxkZXIoV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFcKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlOwotICAgICAgICBtX2RlbHRhWCA9IGUu
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYOwotICAgICAgICBtX2RlbHRhWSA9IGUuZGF0YS5zY3Jv
bGxVcGRhdGUuZGVsdGFZOworICAgICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRhdGUu
ZGVsdGFYIC8gc2NhbGU7CisgICAgICAgIG1fZGVsdGFZID0gZS5kYXRhLnNjcm9sbFVwZGF0ZS5k
ZWx0YVkgLyBzY2FsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpH
ZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlU2Nyb2xsVXBkYXRlV2l0aG91dFByb3BhZ2F0aW9uOwotICAg
ICAgICBtX2RlbHRhWCA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYOwotICAgICAgICBtX2Rl
bHRhWSA9IGUuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZOworICAgICAgICBtX2RlbHRhWCA9IGUu
ZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYIC8gc2NhbGU7CisgICAgICAgIG1fZGVsdGFZID0gZS5k
YXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkgLyBzY2FsZTsKICAgICAgICAgYnJlYWs7CiAgICAgY2Fz
ZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2
ZW50OjpHZXN0dXJlVGFwOwotICAgICAgICBtX2FyZWEgPSBJbnRTaXplKGUuZGF0YS50YXAud2lk
dGgsIGUuZGF0YS50YXAuaGVpZ2h0KTsKKyAgICAgICAgbV9hcmVhID0gZXhwYW5kZWRJbnRTaXpl
KEZsb2F0U2l6ZShlLmRhdGEudGFwLndpZHRoIC8gc2NhbGUsIGUuZGF0YS50YXAuaGVpZ2h0IC8g
c2NhbGUpKTsKICAgICAgICAgLy8gRklYTUU6IFBsYXRmb3JtR2VzdHVyZUV2ZW50IGRlbHRhWCBp
cyBvdmVybG9hZGVkIC0gd2tiLnVnLzkzMTIzCiAgICAgICAgIG1fZGVsdGFYID0gc3RhdGljX2Nh
c3Q8aW50PihlLmRhdGEudGFwLnRhcENvdW50KTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwRG93bjoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1F
dmVudDo6R2VzdHVyZVRhcERvd247Ci0gICAgICAgIG1fYXJlYSA9IEludFNpemUoZS5kYXRhLnRh
cERvd24ud2lkdGgsIGUuZGF0YS50YXBEb3duLmhlaWdodCk7CisgICAgICAgIG1fYXJlYSA9IGV4
cGFuZGVkSW50U2l6ZShGbG9hdFNpemUoZS5kYXRhLnRhcERvd24ud2lkdGggLyBzY2FsZSwgZS5k
YXRhLnRhcERvd24uaGVpZ2h0IC8gc2NhbGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwQ2FuY2VsOgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9y
bUV2ZW50OjpHZXN0dXJlVGFwRG93bkNhbmNlbDsKQEAgLTE3NiwxNSArMTkxLDE1IEBAIFBsYXRm
b3JtR2VzdHVyZUV2ZW50QnVpbGRlcjo6UGxhdGZvcm1HZXN0dXJlRXZlbnRCdWlsZGVyKFdpZGdl
dCogd2lkZ2V0LCBjb25zdCBXCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgV2ViSW5wdXRFdmVu
dDo6R2VzdHVyZVR3b0ZpbmdlclRhcDoKICAgICAgICAgbV90eXBlID0gUGxhdGZvcm1FdmVudDo6
R2VzdHVyZVR3b0ZpbmdlclRhcDsKLSAgICAgICAgbV9hcmVhID0gSW50U2l6ZShlLmRhdGEudHdv
RmluZ2VyVGFwLmZpcnN0RmluZ2VyV2lkdGgsIGUuZGF0YS50d29GaW5nZXJUYXAuZmlyc3RGaW5n
ZXJIZWlnaHQpOworICAgICAgICBtX2FyZWEgPSBleHBhbmRlZEludFNpemUoRmxvYXRTaXplKGUu
ZGF0YS50d29GaW5nZXJUYXAuZmlyc3RGaW5nZXJXaWR0aCAvIHNjYWxlLCBlLmRhdGEudHdvRmlu
Z2VyVGFwLmZpcnN0RmluZ2VySGVpZ2h0IC8gc2NhbGUpKTsKICAgICAgICAgYnJlYWs7CiAgICAg
Y2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOgogICAgICAgICBtX3R5cGUgPSBQ
bGF0Zm9ybUV2ZW50OjpHZXN0dXJlTG9uZ1ByZXNzOwotICAgICAgICBtX2FyZWEgPSBJbnRTaXpl
KGUuZGF0YS5sb25nUHJlc3Mud2lkdGgsIGUuZGF0YS5sb25nUHJlc3MuaGVpZ2h0KTsKKyAgICAg
ICAgbV9hcmVhID0gZXhwYW5kZWRJbnRTaXplKEZsb2F0U2l6ZShlLmRhdGEubG9uZ1ByZXNzLndp
ZHRoIC8gc2NhbGUsIGUuZGF0YS5sb25nUHJlc3MuaGVpZ2h0IC8gc2NhbGUpKTsKICAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlTG9uZ1RhcDoKICAgICAgICAg
bV90eXBlID0gUGxhdGZvcm1FdmVudDo6R2VzdHVyZUxvbmdUYXA7Ci0gICAgICAgIG1fYXJlYSA9
IEludFNpemUoZS5kYXRhLmxvbmdQcmVzcy53aWR0aCwgZS5kYXRhLmxvbmdQcmVzcy5oZWlnaHQp
OworICAgICAgICBtX2FyZWEgPSBleHBhbmRlZEludFNpemUoRmxvYXRTaXplKGUuZGF0YS5sb25n
UHJlc3Mud2lkdGggLyBzY2FsZSwgZS5kYXRhLmxvbmdQcmVzcy5oZWlnaHQgLyBzY2FsZSkpOwog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFdlYklucHV0RXZlbnQ6Okdlc3R1cmVQaW5jaEJlZ2lu
OgogICAgICAgICBtX3R5cGUgPSBQbGF0Zm9ybUV2ZW50OjpHZXN0dXJlUGluY2hCZWdpbjsKQEAg
LTIwMCw3ICsyMTUsNyBAQCBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXI6OlBsYXRmb3JtR2Vz
dHVyZUV2ZW50QnVpbGRlcihXaWRnZXQqIHdpZGdldCwgY29uc3QgVwogICAgIGRlZmF1bHQ6CiAg
ICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH0KLSAgICBtX3Bvc2l0aW9uID0gd2lk
Z2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9pbnQoZS54LCBlLnkpKTsKKyAg
ICBtX3Bvc2l0aW9uID0gd2lkZ2V0LT5jb252ZXJ0RnJvbUNvbnRhaW5pbmdXaW5kb3coSW50UG9p
bnQoZS54IC8gc2NhbGUsIGUueSAvIHNjYWxlKSk7CiAgICAgbV9nbG9iYWxQb3NpdGlvbiA9IElu
dFBvaW50KGUuZ2xvYmFsWCwgZS5nbG9iYWxZKTsKICAgICBtX3RpbWVzdGFtcCA9IGUudGltZVN0
YW1wU2Vjb25kczsKIApAQCAtMzYyLDEyICszNzcsMTMgQEAgaW5saW5lIFdlYlRvdWNoUG9pbnQ6
OlN0YXRlIHRvV2ViVG91Y2hQb2ludFN0YXRlKGNvbnN0IEF0b21pY1N0cmluZyYgdHlwZSkKIAog
UGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcjo6UGxhdGZvcm1Ub3VjaFBvaW50QnVpbGRlcihXaWRn
ZXQqIHdpZGdldCwgY29uc3QgV2ViVG91Y2hQb2ludCYgcG9pbnQpCiB7CisgICAgZmxvYXQgc2Nh
bGUgPSB3aWRnZXRTY2FsZUZhY3Rvcih3aWRnZXQpOwogICAgIG1faWQgPSBwb2ludC5pZDsKICAg
ICBtX3N0YXRlID0gdG9QbGF0Zm9ybVRvdWNoUG9pbnRTdGF0ZShwb2ludC5zdGF0ZSk7Ci0gICAg
bV9wb3MgPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhwb2ludC5wb3NpdGlv
bik7CisgICAgbV9wb3MgPSB3aWRnZXQtPmNvbnZlcnRGcm9tQ29udGFpbmluZ1dpbmRvdyhJbnRQ
b2ludChwb2ludC5wb3NpdGlvbi54IC8gc2NhbGUsIHBvaW50LnBvc2l0aW9uLnkgLyBzY2FsZSkp
OwogICAgIG1fc2NyZWVuUG9zID0gcG9pbnQuc2NyZWVuUG9zaXRpb247Ci0gICAgbV9yYWRpdXNZ
ID0gcG9pbnQucmFkaXVzWTsKLSAgICBtX3JhZGl1c1ggPSBwb2ludC5yYWRpdXNYOworICAgIG1f
cmFkaXVzWSA9IHBvaW50LnJhZGl1c1kgLyBzY2FsZTsKKyAgICBtX3JhZGl1c1ggPSBwb2ludC5y
YWRpdXNYIC8gc2NhbGU7CiAgICAgbV9yb3RhdGlvbkFuZ2xlID0gcG9pbnQucm90YXRpb25Bbmds
ZTsKICAgICBtX2ZvcmNlID0gcG9pbnQuZm9yY2U7CiB9CkBAIC00MTQsMTggKzQzMCwxOSBAQCBz
dGF0aWMgSW50UG9pbnQgY29udmVydEFic29sdXRlTG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoY29u
c3QgTGF5b3V0UG9pbnQmIGxvY2F0aQogCiBzdGF0aWMgdm9pZCB1cGRhdGVXZWJNb3VzZUV2ZW50
RnJvbVdlYkNvcmVNb3VzZUV2ZW50KGNvbnN0IE1vdXNlUmVsYXRlZEV2ZW50JiBldmVudCwgY29u
c3QgV2lkZ2V0JiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCYgcmVuZGVyT2Jq
ZWN0LCBXZWJNb3VzZUV2ZW50JiB3ZWJFdmVudCkKIHsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdl
dFNjYWxlRmFjdG9yKCZ3aWRnZXQpOwogICAgIHdlYkV2ZW50LnRpbWVTdGFtcFNlY29uZHMgPSBl
dmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKICAgICB3ZWJFdmVudC5tb2RpZmll
cnMgPSBnZXRXZWJJbnB1dE1vZGlmaWVycyhldmVudCk7CiAKLSAgICBTY3JvbGxWaWV3KiB2aWV3
ID0gd2lkZ2V0LnBhcmVudCgpOworICAgIFNjcm9sbFZpZXcqIHZpZXcgPSB3aWRnZXQucm9vdCgp
OwogICAgIEludFBvaW50IHdpbmRvd1BvaW50ID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhJbnRQ
b2ludChldmVudC5hYnNvbHV0ZUxvY2F0aW9uKCkueCgpLCBldmVudC5hYnNvbHV0ZUxvY2F0aW9u
KCkueSgpKSk7CiAgICAgd2ViRXZlbnQuZ2xvYmFsWCA9IGV2ZW50LnNjcmVlblgoKTsKICAgICB3
ZWJFdmVudC5nbG9iYWxZID0gZXZlbnQuc2NyZWVuWSgpOwotICAgIHdlYkV2ZW50LndpbmRvd1gg
PSB3aW5kb3dQb2ludC54KCk7Ci0gICAgd2ViRXZlbnQud2luZG93WSA9IHdpbmRvd1BvaW50Lnko
KTsKKyAgICB3ZWJFdmVudC53aW5kb3dYID0gd2luZG93UG9pbnQueCgpICogc2NhbGU7CisgICAg
d2ViRXZlbnQud2luZG93WSA9IHdpbmRvd1BvaW50LnkoKSAqIHNjYWxlOwogICAgIEludFBvaW50
IGxvY2FsUG9pbnQgPSBjb252ZXJ0QWJzb2x1dGVMb2NhdGlvbkZvclJlbmRlck9iamVjdChldmVu
dC5hYnNvbHV0ZUxvY2F0aW9uKCksIHJlbmRlck9iamVjdCk7Ci0gICAgd2ViRXZlbnQueCA9IGxv
Y2FsUG9pbnQueCgpOwotICAgIHdlYkV2ZW50LnkgPSBsb2NhbFBvaW50LnkoKTsKKyAgICB3ZWJF
dmVudC54ID0gbG9jYWxQb2ludC54KCkgKiBzY2FsZTsKKyAgICB3ZWJFdmVudC55ID0gbG9jYWxQ
b2ludC55KCkgKiBzY2FsZTsKIH0KIAogV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZl
bnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmpl
Y3QqIHJlbmRlck9iamVjdCwgY29uc3QgTW91c2VFdmVudCYgZXZlbnQpCkBAIC00NzIsMTQgKzQ4
OSwxNiBAQCBXZWJNb3VzZUV2ZW50QnVpbGRlcjo6V2ViTW91c2VFdmVudEJ1aWxkZXIoY29uc3Qg
V2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OgogICAgICAgICB9CiAgICAgfQogI2lmIEVO
QUJMRShQT0lOVEVSX0xPQ0spCi0gICAgbW92ZW1lbnRYID0gZXZlbnQud2Via2l0TW92ZW1lbnRY
KCk7Ci0gICAgbW92ZW1lbnRZID0gZXZlbnQud2Via2l0TW92ZW1lbnRZKCk7CisgICAgZmxvYXQg
c2NhbGUgPSB3aWRnZXRTY2FsZUZhY3Rvcih3aWRnZXQpOworICAgIG1vdmVtZW50WCA9IGV2ZW50
LndlYmtpdE1vdmVtZW50WCgpICogc2NhbGU7CisgICAgbW92ZW1lbnRZID0gZXZlbnQud2Via2l0
TW92ZW1lbnRZKCkgKiBzY2FsZTsKICNlbmRpZgogICAgIGNsaWNrQ291bnQgPSBldmVudC5kZXRh
aWwoKTsKIH0KIAogV2ViTW91c2VFdmVudEJ1aWxkZXI6OldlYk1vdXNlRXZlbnRCdWlsZGVyKGNv
bnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9i
amVjdCwgY29uc3QgVG91Y2hFdmVudCYgZXZlbnQpCiB7CisgICAgZmxvYXQgc2NhbGUgPSB3aWRn
ZXRTY2FsZUZhY3Rvcih3aWRnZXQpOwogICAgIGlmICghZXZlbnQudG91Y2hlcygpKQogICAgICAg
ICByZXR1cm47CiAgICAgaWYgKGV2ZW50LnRvdWNoZXMoKS0+bGVuZ3RoKCkgIT0gMSkgewpAQCAt
NTA3LDggKzUyNiw4IEBAIFdlYk1vdXNlRXZlbnRCdWlsZGVyOjpXZWJNb3VzZUV2ZW50QnVpbGRl
cihjb25zdCBXaWRnZXQqIHdpZGdldCwgY29uc3QgV2ViQ29yZTo6CiAgICAgY2xpY2tDb3VudCA9
ICh0eXBlID09IE1vdXNlRG93biB8fCB0eXBlID09IE1vdXNlVXApOwogCiAgICAgSW50UG9pbnQg
bG9jYWxQb2ludCA9IGNvbnZlcnRBYnNvbHV0ZUxvY2F0aW9uRm9yUmVuZGVyT2JqZWN0KHRvdWNo
LT5hYnNvbHV0ZUxvY2F0aW9uKCksICpyZW5kZXJPYmplY3QpOwotICAgIHggPSBsb2NhbFBvaW50
LngoKTsKLSAgICB5ID0gbG9jYWxQb2ludC55KCk7CisgICAgeCA9IGxvY2FsUG9pbnQueCgpICog
c2NhbGU7CisgICAgeSA9IGxvY2FsUG9pbnQueSgpICogc2NhbGU7CiB9CiAKIFdlYk1vdXNlV2hl
ZWxFdmVudEJ1aWxkZXI6OldlYk1vdXNlV2hlZWxFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3
aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJlbmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBX
aGVlbEV2ZW50JiBldmVudCkKQEAgLTU2Miw4ICs1ODEsOSBAQCBXZWJLZXlib2FyZEV2ZW50QnVp
bGRlcjo6V2ViS2V5Ym9hcmRFdmVudEJ1aWxkZXIoY29uc3QgS2V5Ym9hcmRFdmVudCYgZXZlbnQp
CiAKICNpZiBFTkFCTEUoVE9VQ0hfRVZFTlRTKQogCi1zdGF0aWMgdm9pZCBhZGRUb3VjaFBvaW50
cyhjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNoVHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBXZWJU
b3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5zaWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBjb25z
dCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJlbmRlck9iamVjdCkKK3N0YXRpYyB2b2lkIGFkZFRv
dWNoUG9pbnRzKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBBdG9taWNTdHJpbmcmIHRvdWNo
VHlwZSwgVG91Y2hMaXN0KiB0b3VjaGVzLCBXZWJUb3VjaFBvaW50KiB0b3VjaFBvaW50cywgdW5z
aWduZWQqIHRvdWNoUG9pbnRzTGVuZ3RoLCBjb25zdCBXZWJDb3JlOjpSZW5kZXJPYmplY3QqIHJl
bmRlck9iamVjdCkKIHsKKyAgICBmbG9hdCBzY2FsZSA9IHdpZGdldFNjYWxlRmFjdG9yKHdpZGdl
dCk7CiAgICAgdW5zaWduZWQgbnVtYmVyT2ZUb3VjaGVzID0gc3RkOjptaW4odG91Y2hlcy0+bGVu
Z3RoKCksIHN0YXRpY19jYXN0PHVuc2lnbmVkPihXZWJUb3VjaEV2ZW50Ojp0b3VjaGVzTGVuZ3Ro
Q2FwKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bWJlck9mVG91Y2hlczsgKytp
KSB7CiAgICAgICAgIGNvbnN0IFRvdWNoKiB0b3VjaCA9IHRvdWNoZXMtPml0ZW0oaSk7CkBAIC01
NzIsOCArNTkyLDEwIEBAIHN0YXRpYyB2b2lkIGFkZFRvdWNoUG9pbnRzKGNvbnN0IEF0b21pY1N0
cmluZyYgdG91Y2hUeXBlLCBUb3VjaExpc3QqIHRvdWNoZXMsIFdlCiAgICAgICAgIHBvaW50Lmlk
ID0gdG91Y2gtPmlkZW50aWZpZXIoKTsKICAgICAgICAgcG9pbnQuc2NyZWVuUG9zaXRpb24gPSBX
ZWJQb2ludCh0b3VjaC0+c2NyZWVuWCgpLCB0b3VjaC0+c2NyZWVuWSgpKTsKICAgICAgICAgcG9p
bnQucG9zaXRpb24gPSBjb252ZXJ0QWJzb2x1dGVMb2NhdGlvbkZvclJlbmRlck9iamVjdCh0b3Vj
aC0+YWJzb2x1dGVMb2NhdGlvbigpLCAqcmVuZGVyT2JqZWN0KTsKLSAgICAgICAgcG9pbnQucmFk
aXVzWCA9IHRvdWNoLT53ZWJraXRSYWRpdXNYKCk7Ci0gICAgICAgIHBvaW50LnJhZGl1c1kgPSB0
b3VjaC0+d2Via2l0UmFkaXVzWSgpOworICAgICAgICBwb2ludC5wb3NpdGlvbi54ICo9IHNjYWxl
OworICAgICAgICBwb2ludC5wb3NpdGlvbi55ICo9IHNjYWxlOworICAgICAgICBwb2ludC5yYWRp
dXNYID0gdG91Y2gtPndlYmtpdFJhZGl1c1goKSAqIHNjYWxlOworICAgICAgICBwb2ludC5yYWRp
dXNZID0gdG91Y2gtPndlYmtpdFJhZGl1c1koKSAqIHNjYWxlOwogICAgICAgICBwb2ludC5yb3Rh
dGlvbkFuZ2xlID0gdG91Y2gtPndlYmtpdFJvdGF0aW9uQW5nbGUoKTsKICAgICAgICAgcG9pbnQu
Zm9yY2UgPSB0b3VjaC0+d2Via2l0Rm9yY2UoKTsKICAgICAgICAgcG9pbnQuc3RhdGUgPSB0b1dl
YlRvdWNoUG9pbnRTdGF0ZSh0b3VjaFR5cGUpOwpAQCAtNjAyLDkgKzYyNCw5IEBAIFdlYlRvdWNo
RXZlbnRCdWlsZGVyOjpXZWJUb3VjaEV2ZW50QnVpbGRlcihjb25zdCBXaWRnZXQqIHdpZGdldCwg
Y29uc3QgV2ViQ29yZTo6CiAgICAgbW9kaWZpZXJzID0gZ2V0V2ViSW5wdXRNb2RpZmllcnMoZXZl
bnQpOwogICAgIHRpbWVTdGFtcFNlY29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1Bl
clNlY29uZDsKIAotICAgIGFkZFRvdWNoUG9pbnRzKGV2ZW50LnR5cGUoKSwgZXZlbnQudG91Y2hl
cygpLCB0b3VjaGVzLCAmdG91Y2hlc0xlbmd0aCwgcmVuZGVyT2JqZWN0KTsKLSAgICBhZGRUb3Vj
aFBvaW50cyhldmVudC50eXBlKCksIGV2ZW50LmNoYW5nZWRUb3VjaGVzKCksIGNoYW5nZWRUb3Vj
aGVzLCAmY2hhbmdlZFRvdWNoZXNMZW5ndGgsIHJlbmRlck9iamVjdCk7Ci0gICAgYWRkVG91Y2hQ
b2ludHMoZXZlbnQudHlwZSgpLCBldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMs
ICZ0YXJnZXRUb3VjaGVzTGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRz
KHdpZGdldCwgZXZlbnQudHlwZSgpLCBldmVudC50b3VjaGVzKCksIHRvdWNoZXMsICZ0b3VjaGVz
TGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKHdpZGdldCwgZXZlbnQu
dHlwZSgpLCBldmVudC5jaGFuZ2VkVG91Y2hlcygpLCBjaGFuZ2VkVG91Y2hlcywgJmNoYW5nZWRU
b3VjaGVzTGVuZ3RoLCByZW5kZXJPYmplY3QpOworICAgIGFkZFRvdWNoUG9pbnRzKHdpZGdldCwg
ZXZlbnQudHlwZSgpLCBldmVudC50YXJnZXRUb3VjaGVzKCksIHRhcmdldFRvdWNoZXMsICZ0YXJn
ZXRUb3VjaGVzTGVuZ3RoLCByZW5kZXJPYmplY3QpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFRP
VUNIX0VWRU5UUykKQEAgLTYxMiw2ICs2MzQsNyBAQCBXZWJUb3VjaEV2ZW50QnVpbGRlcjo6V2Vi
VG91Y2hFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6Ogog
I2lmIEVOQUJMRShHRVNUVVJFX0VWRU5UUykKIFdlYkdlc3R1cmVFdmVudEJ1aWxkZXI6OldlYkdl
c3R1cmVFdmVudEJ1aWxkZXIoY29uc3QgV2lkZ2V0KiB3aWRnZXQsIGNvbnN0IFdlYkNvcmU6OlJl
bmRlck9iamVjdCogcmVuZGVyT2JqZWN0LCBjb25zdCBHZXN0dXJlRXZlbnQmIGV2ZW50KQogewor
ICAgIGZsb2F0IHNjYWxlID0gd2lkZ2V0U2NhbGVGYWN0b3Iod2lkZ2V0KTsKICAgICBpZiAoZXZl
bnQudHlwZSgpID09IGV2ZW50TmFtZXMoKS5nZXN0dXJldGFwRXZlbnQpCiAgICAgICAgIHR5cGUg
PSBHZXN0dXJlVGFwOwogICAgIGVsc2UgaWYgKGV2ZW50LnR5cGUoKSA9PSBldmVudE5hbWVzKCku
Z2VzdHVyZXRhcGRvd25FdmVudCkKQEAgLTYyMiw4ICs2NDUsOCBAQCBXZWJHZXN0dXJlRXZlbnRC
dWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKGNvbnN0IFdpZGdldCogd2lkZ2V0LCBjb25z
dCBXZWJDbwogICAgICAgICB0eXBlID0gR2VzdHVyZVNjcm9sbEVuZDsKICAgICBlbHNlIGlmIChl
dmVudC50eXBlKCkgPT0gZXZlbnROYW1lcygpLmdlc3R1cmVzY3JvbGx1cGRhdGVFdmVudCkgewog
ICAgICAgICB0eXBlID0gR2VzdHVyZVNjcm9sbFVwZGF0ZTsKLSAgICAgICAgZGF0YS5zY3JvbGxV
cGRhdGUuZGVsdGFYID0gZXZlbnQuZGVsdGFYKCk7Ci0gICAgICAgIGRhdGEuc2Nyb2xsVXBkYXRl
LmRlbHRhWSA9IGV2ZW50LmRlbHRhWSgpOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5kZWx0
YVggPSBldmVudC5kZWx0YVgoKSAqIHNjYWxlOworICAgICAgICBkYXRhLnNjcm9sbFVwZGF0ZS5k
ZWx0YVkgPSBldmVudC5kZWx0YVkoKSAqIHNjYWxlOwogICAgIH0KIAogICAgIHRpbWVTdGFtcFNl
Y29uZHMgPSBldmVudC50aW1lU3RhbXAoKSAvIG1pbGxpc1BlclNlY29uZDsKQEAgLTYzMiw4ICs2
NTUsOCBAQCBXZWJHZXN0dXJlRXZlbnRCdWlsZGVyOjpXZWJHZXN0dXJlRXZlbnRCdWlsZGVyKGNv
bnN0IFdpZGdldCogd2lkZ2V0LCBjb25zdCBXZWJDbwogICAgIGdsb2JhbFggPSBldmVudC5zY3Jl
ZW5YKCk7CiAgICAgZ2xvYmFsWSA9IGV2ZW50LnNjcmVlblkoKTsKICAgICBJbnRQb2ludCBsb2Nh
bFBvaW50ID0gY29udmVydEFic29sdXRlTG9jYXRpb25Gb3JSZW5kZXJPYmplY3QoZXZlbnQuYWJz
b2x1dGVMb2NhdGlvbigpLCAqcmVuZGVyT2JqZWN0KTsKLSAgICB4ID0gbG9jYWxQb2ludC54KCk7
Ci0gICAgeSA9IGxvY2FsUG9pbnQueSgpOworICAgIHggPSBsb2NhbFBvaW50LngoKSAqIHNjYWxl
OworICAgIHkgPSBsb2NhbFBvaW50LnkoKSAqIHNjYWxlOwogfQogI2VuZGlmIC8vIEVOQUJMRShH
RVNUVVJFX0VWRU5UUykKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwu
Y3BwCmluZGV4IDc0NDk1OTcxNjEzYWI4MThmMzY2ZTc2MmU3NGNhYTcxOGFlNzg1NTUuLjA1NDFm
MzNhNmY1ODQ5YWZhODhmN2Y4NTkyMmJjN2JjYzcyNjI3ODcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTc1NSwxMiArNzU1LDE5IEBAIGJvb2wgV2Vi
Vmlld0ltcGw6OmhhbmRsZUdlc3R1cmVFdmVudChjb25zdCBXZWJHZXN0dXJlRXZlbnQmIGV2ZW50
KQogICAgICAgICAvLyBEb24ndCB0cmlnZ2VyIGEgZGlzYW1iaWd1YXRpb24gcG9wdXAgb24gc2l0
ZXMgZGVzaWduZWQgZm9yIG1vYmlsZSBkZXZpY2VzLgogICAgICAgICAvLyBJbnN0ZWFkLCBhc3N1
bWUgdGhhdCB0aGUgcGFnZSBoYXMgYmVlbiBkZXNpZ25lZCB3aXRoIGJpZyBlbm91Z2ggYnV0dG9u
cyBhbmQgbGlua3MuCiAgICAgICAgIGlmIChldmVudC5kYXRhLnRhcC53aWR0aCA+IDAgJiYgIXNo
b3VsZERpc2FibGVEZXNrdG9wV29ya2Fyb3VuZHMoKSkgewotICAgICAgICAgICAgSW50UmVjdCBi
b3VuZGluZ0JveChldmVudC54IC0gZXZlbnQuZGF0YS50YXAud2lkdGggLyAyLCBldmVudC55IC0g
ZXZlbnQuZGF0YS50YXAuaGVpZ2h0IC8gMiwgZXZlbnQuZGF0YS50YXAud2lkdGgsIGV2ZW50LmRh
dGEudGFwLmhlaWdodCk7CisgICAgICAgICAgICAvLyBGSVhNRTogZGlkVGFwTXVsdGlwbGVUYXJn
ZXRzIHNob3VsZCBqdXN0IHRha2UgYSByZWN0IGluc3RlYWQgb2YKKyAgICAgICAgICAgIC8vIGFu
IGV2ZW50LgorICAgICAgICAgICAgV2ViR2VzdHVyZUV2ZW50IHNjYWxlZEV2ZW50OworICAgICAg
ICAgICAgc2NhbGVkRXZlbnQueCA9IGV2ZW50LnggLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIHNjYWxlZEV2ZW50LnkgPSBldmVudC55IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAg
ICAgICAgICBzY2FsZWRFdmVudC5kYXRhLnRhcC53aWR0aCA9IGV2ZW50LmRhdGEudGFwLndpZHRo
IC8gcGFnZVNjYWxlRmFjdG9yKCk7CisgICAgICAgICAgICBzY2FsZWRFdmVudC5kYXRhLnRhcC5o
ZWlnaHQgPSBldmVudC5kYXRhLnRhcC5oZWlnaHQgLyBwYWdlU2NhbGVGYWN0b3IoKTsKKyAgICAg
ICAgICAgIEludFJlY3QgYm91bmRpbmdCb3goc2NhbGVkRXZlbnQueCAtIHNjYWxlZEV2ZW50LmRh
dGEudGFwLndpZHRoIC8gMiwgc2NhbGVkRXZlbnQueSAtIHNjYWxlZEV2ZW50LmRhdGEudGFwLmhl
aWdodCAvIDIsIHNjYWxlZEV2ZW50LmRhdGEudGFwLndpZHRoLCBzY2FsZWRFdmVudC5kYXRhLnRh
cC5oZWlnaHQpOwogICAgICAgICAgICAgVmVjdG9yPEludFJlY3Q+IGdvb2RUYXJnZXRzOwogICAg
ICAgICAgICAgZmluZEdvb2RUb3VjaFRhcmdldHMoYm91bmRpbmdCb3gsIG1haW5GcmFtZUltcGwo
KS0+ZnJhbWUoKSwgZ29vZFRhcmdldHMpOwogICAgICAgICAgICAgLy8gRklYTUU6IHJlcGxhY2Ug
dG91Y2ggYWRqdXN0bWVudCBjb2RlIHdoZW4gbnVtYmVyT2ZHb29kVGFyZ2V0cyA9PSAxPwogICAg
ICAgICAgICAgLy8gU2luZ2xlIGNhbmRpZGF0ZSBjYXNlIGlzIGN1cnJlbnRseSBoYW5kbGVkIGJ5
OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODUxMDEKLSAgICAgICAg
ICAgIGlmIChnb29kVGFyZ2V0cy5zaXplKCkgPj0gMiAmJiBtX2NsaWVudCAmJiBtX2NsaWVudC0+
ZGlkVGFwTXVsdGlwbGVUYXJnZXRzKGV2ZW50LCBnb29kVGFyZ2V0cykpIHsKKyAgICAgICAgICAg
IGlmIChnb29kVGFyZ2V0cy5zaXplKCkgPj0gMiAmJiBtX2NsaWVudCAmJiBtX2NsaWVudC0+ZGlk
VGFwTXVsdGlwbGVUYXJnZXRzKHNjYWxlZEV2ZW50LCBnb29kVGFyZ2V0cykpIHsKICAgICAgICAg
ICAgICAgICBldmVudFN3YWxsb3dlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgZXZlbnRDYW5j
ZWxsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM1NCw2ICsxMzYxLDcg
QEAgdm9pZCBXZWJWaWV3SW1wbDo6aGFzVG91Y2hFdmVudEhhbmRsZXJzKGJvb2wgaGFzVG91Y2hI
YW5kbGVycykKIAogYm9vbCBXZWJWaWV3SW1wbDo6aGFzVG91Y2hFdmVudEhhbmRsZXJzQXQoY29u
c3QgV2ViUG9pbnQmIHBvaW50KQogeworICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4gTm90
ZSB0aGF0IHRoZSBwb2ludCBtdXN0IGJlIGRpdmlkZWQgYnkgcGFnZVNjYWxlRmFjdG9yLgogICAg
IHJldHVybiB0cnVlOwogfQogCkBAIC0yMDgzLDI2ICsyMDkxLDcgQEAgYm9vbCBXZWJWaWV3SW1w
bDo6aGFuZGxlSW5wdXRFdmVudChjb25zdCBXZWJJbnB1dEV2ZW50JiBpbnB1dEV2ZW50KQogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBjb25zdCBXZWJJbnB1dEV2ZW50KiBpbnB1
dEV2ZW50VHJhbnNmb3JtZWQgPSAmaW5wdXRFdmVudDsKLSAgICBpZiAobV9wYWdlLT5zZXR0aW5n
cygpLT5hcHBseVBhZ2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcigpKSB7Ci0gICAgICAgIFdlYk1v
dXNlRXZlbnQgbW91c2VFdmVudDsKLSAgICAgICAgV2ViR2VzdHVyZUV2ZW50IGdlc3R1cmVFdmVu
dDsKLSAgICAgICAgaWYgKFdlYklucHV0RXZlbnQ6OmlzTW91c2VFdmVudFR5cGUoaW5wdXRFdmVu
dC50eXBlKSkgewotICAgICAgICAgICAgbW91c2VFdmVudCA9ICpzdGF0aWNfY2FzdDxjb25zdCBX
ZWJNb3VzZUV2ZW50Kj4oJmlucHV0RXZlbnQpOwotICAgICAgICAgICAgbW91c2VFdmVudC54ID0g
bW91c2VFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICBtb3VzZUV2ZW50
LnkgPSBtb3VzZUV2ZW50LnkgLyBwYWdlU2NhbGVGYWN0b3IoKTsKLSAgICAgICAgICAgIGlucHV0
RXZlbnRUcmFuc2Zvcm1lZCA9IHN0YXRpY19jYXN0PGNvbnN0IFdlYklucHV0RXZlbnQqPigmbW91
c2VFdmVudCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoV2ViSW5wdXRFdmVudDo6aXNHZXN0dXJlRXZl
bnRUeXBlKGlucHV0RXZlbnQudHlwZSkpIHsKLSAgICAgICAgICAgIGdlc3R1cmVFdmVudCA9ICpz
dGF0aWNfY2FzdDxjb25zdCBXZWJHZXN0dXJlRXZlbnQqPigmaW5wdXRFdmVudCk7Ci0gICAgICAg
ICAgICBnZXN0dXJlRXZlbnQueCA9IGdlc3R1cmVFdmVudC54IC8gcGFnZVNjYWxlRmFjdG9yKCk7
Ci0gICAgICAgICAgICBnZXN0dXJlRXZlbnQueSA9IGdlc3R1cmVFdmVudC55IC8gcGFnZVNjYWxl
RmFjdG9yKCk7Ci0gICAgICAgICAgICBnZXN0dXJlRXZlbnQuZGF0YS50YXAud2lkdGggLz0gcGFn
ZVNjYWxlRmFjdG9yKCk7Ci0gICAgICAgICAgICBnZXN0dXJlRXZlbnQuZGF0YS50YXAuaGVpZ2h0
IC89IHBhZ2VTY2FsZUZhY3RvcigpOwotICAgICAgICAgICAgaW5wdXRFdmVudFRyYW5zZm9ybWVk
ID0gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViSW5wdXRFdmVudCo+KCZnZXN0dXJlRXZlbnQpOwotICAg
ICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIFBhZ2VXaWRnZXREZWxlZ2F0ZTo6aGFuZGxlSW5w
dXRFdmVudChtX3BhZ2UuZ2V0KCksICp0aGlzLCAqaW5wdXRFdmVudFRyYW5zZm9ybWVkKTsKKyAg
ICByZXR1cm4gUGFnZVdpZGdldERlbGVnYXRlOjpoYW5kbGVJbnB1dEV2ZW50KG1fcGFnZS5nZXQo
KSwgKnRoaXMsIGlucHV0RXZlbnQpOwogfQogCiB2b2lkIFdlYlZpZXdJbXBsOjptb3VzZUNhcHR1
cmVMb3N0KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvV2ViSW5w
dXRFdmVudENvbnZlcnNpb25UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
V2ViSW5wdXRFdmVudENvbnZlcnNpb25UZXN0LmNwcAppbmRleCA1MDM1YTI3MGZiNmU0OTc5ZTc0
NmIwZDJmMDYyNzJhMjA5ODE0OTdjLi4xODQzNGE0NjcyYjI0NGVjNjc0NDY1NDk1YjFlODg2Yjgw
MDI3ZGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1dlYklucHV0
RXZlbnRDb252ZXJzaW9uVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9XZWJJbnB1dEV2ZW50Q29udmVyc2lvblRlc3QuY3BwCkBAIC0zMiwxNCArMzIsMjMgQEAKIAog
I2luY2x1ZGUgIldlYklucHV0RXZlbnRDb252ZXJzaW9uLmgiCiAKKyNpbmNsdWRlICJGcmFtZS5o
IgorI2luY2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJGcmFtZVZpZXcuaCIK
KyNpbmNsdWRlICJHZXN0dXJlRXZlbnQuaCIKICNpbmNsdWRlICJLZXlib2FyZEV2ZW50LmgiCisj
aW5jbHVkZSAiTW91c2VFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoLmgiCiAjaW5jbHVkZSAiVG91
Y2hFdmVudC5oIgorI2luY2x1ZGUgIlRvdWNoTGlzdC5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxw
ZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgor
I2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KIAotdXNp
bmcgV2ViS2l0OjpXZWJJbnB1dEV2ZW50OwotdXNpbmcgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50
OwotdXNpbmcgV2ViS2l0OjpXZWJLZXlib2FyZEV2ZW50QnVpbGRlcjsKLXVzaW5nIFdlYktpdDo6
V2ViTW91c2VFdmVudEJ1aWxkZXI7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwordXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSB7CiAKQEAgLTgxLDQgKzkwLDE3NyBAQCBURVNU
KFdlYklucHV0RXZlbnRDb252ZXJzaW9uVGVzdCwgV2ViVG91Y2hFdmVudEJ1aWxkZXIpCiAgICAg
RVhQRUNUX0VRKFdlYklucHV0RXZlbnQ6OlVuZGVmaW5lZCwgbW91c2UudHlwZSk7CiB9CiAKK1RF
U1QoV2ViSW5wdXRFdmVudENvbnZlcnNpb25UZXN0LCBJbnB1dEV2ZW50c1NjYWxpbmcpCit7Cisg
ICAgY29uc3Qgc3RkOjpzdHJpbmcgYmFzZVVSTCgiaHR0cDovL3d3dy50ZXN0LmNvbS8iKTsKKyAg
ICBjb25zdCBzdGQ6OnN0cmluZyBmaWxlTmFtZSgiZml4ZWRfbGF5b3V0Lmh0bWwiKTsKKworICAg
IFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6
ZnJvbVVURjgoYmFzZVVSTC5jX3N0cigpKSwgV2ViU3RyaW5nOjpmcm9tVVRGOCgiZml4ZWRfbGF5
b3V0Lmh0bWwiKSk7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gc3RhdGljX2Nhc3Q8
V2ViVmlld0ltcGwqPihGcmFtZVRlc3RIZWxwZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZChiYXNl
VVJMICsgZmlsZU5hbWUsIHRydWUpKTsKKyAgICB3ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0
QXBwbHlEZXZpY2VTY2FsZUZhY3RvckluQ29tcG9zaXRvcih0cnVlKTsKKyAgICB3ZWJWaWV3SW1w
bC0+c2V0dGluZ3MoKS0+c2V0QXBwbHlQYWdlU2NhbGVGYWN0b3JJbkNvbXBvc2l0b3IodHJ1ZSk7
CisgICAgd2ViVmlld0ltcGwtPmVuYWJsZUZpeGVkTGF5b3V0TW9kZSh0cnVlKTsKKyAgICB3ZWJW
aWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Vmlld3BvcnRFbmFibGVkKHRydWUpOworICAgIGludCBw
YWdlV2lkdGggPSA2NDA7CisgICAgaW50IHBhZ2VIZWlnaHQgPSA0ODA7CisgICAgd2ViVmlld0lt
cGwtPnJlc2l6ZShXZWJTaXplKHBhZ2VXaWR0aCwgcGFnZUhlaWdodCkpOworICAgIHdlYlZpZXdJ
bXBsLT5sYXlvdXQoKTsKKworICAgIHdlYlZpZXdJbXBsLT5zZXRQYWdlU2NhbGVGYWN0b3IoMiwg
V2ViUG9pbnQoKSk7CisKKyAgICBGcmFtZVZpZXcqIHZpZXcgPSB3ZWJWaWV3SW1wbC0+cGFnZSgp
LT5tYWluRnJhbWUoKS0+dmlldygpOworICAgIFJlZlB0cjxEb2N1bWVudD4gZG9jdW1lbnQgPSB3
ZWJWaWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBET01XaW5k
b3cqIGRvbVdpbmRvdyA9IHdlYlZpZXdJbXBsLT5wYWdlKCktPm1haW5GcmFtZSgpLT5kb2N1bWVu
dCgpLT5kZWZhdWx0VmlldygpOworICAgIFJlbmRlck9iamVjdCogZG9jUmVuZGVyZXIgPSB3ZWJW
aWV3SW1wbC0+cGFnZSgpLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS0+cmVuZGVyZXIoKTsKKwor
ICAgIHsKKyAgICAgICAgV2ViTW91c2VFdmVudCB3ZWJNb3VzZUV2ZW50OworICAgICAgICB3ZWJN
b3VzZUV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpNb3VzZU1vdmU7CisgICAgICAgIHdlYk1v
dXNlRXZlbnQueCA9IDEwOworICAgICAgICB3ZWJNb3VzZUV2ZW50LnkgPSAxMDsKKyAgICAgICAg
d2ViTW91c2VFdmVudC53aW5kb3dYID0gMTA7CisgICAgICAgIHdlYk1vdXNlRXZlbnQud2luZG93
WSA9IDEwOworICAgICAgICB3ZWJNb3VzZUV2ZW50Lmdsb2JhbFggPSAxMDsKKyAgICAgICAgd2Vi
TW91c2VFdmVudC5nbG9iYWxZID0gMTA7CisgICAgICAgIHdlYk1vdXNlRXZlbnQubW92ZW1lbnRY
ID0gMTA7CisgICAgICAgIHdlYk1vdXNlRXZlbnQubW92ZW1lbnRZID0gMTA7CisKKyAgICAgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciBwbGF0Zm9ybU1vdXNlQnVpbGRlcih2aWV3LCB3ZWJN
b3VzZUV2ZW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtTW91c2VCdWlsZGVyLnBv
c2l0aW9uKCkueCgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtTW91c2VCdWlsZGVy
LnBvc2l0aW9uKCkueSgpKTsKKyAgICAgICAgRVhQRUNUX0VRKDEwLCBwbGF0Zm9ybU1vdXNlQnVp
bGRlci5nbG9iYWxQb3NpdGlvbigpLngoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgcGxhdGZv
cm1Nb3VzZUJ1aWxkZXIuZ2xvYmFsUG9zaXRpb24oKS55KCkpOworICAgICAgICBFWFBFQ1RfRVEo
NSwgcGxhdGZvcm1Nb3VzZUJ1aWxkZXIubW92ZW1lbnREZWx0YSgpLngoKSk7CisgICAgICAgIEVY
UEVDVF9FUSg1LCBwbGF0Zm9ybU1vdXNlQnVpbGRlci5tb3ZlbWVudERlbHRhKCkueSgpKTsKKyAg
ICB9CisKKyAgICB7CisgICAgICAgIFdlYkdlc3R1cmVFdmVudCB3ZWJHZXN0dXJlRXZlbnQ7Cisg
ICAgICAgIHdlYkdlc3R1cmVFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2VzdHVyZVNjcm9s
bFVwZGF0ZTsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LnggPSAxMDsKKyAgICAgICAgd2ViR2Vz
dHVyZUV2ZW50LnkgPSAxMDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50Lmdsb2JhbFggPSAxMDsK
KyAgICAgICAgd2ViR2VzdHVyZUV2ZW50Lmdsb2JhbFkgPSAxMDsKKyAgICAgICAgd2ViR2VzdHVy
ZUV2ZW50LmRhdGEuc2Nyb2xsVXBkYXRlLmRlbHRhWCA9IDEwOworICAgICAgICB3ZWJHZXN0dXJl
RXZlbnQuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFZID0gMTA7CisKKyAgICAgICAgUGxhdGZvcm1H
ZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIodmlldywgd2ViR2VzdHVy
ZUV2ZW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIucG9z
aXRpb24oKS54KCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVpbGRl
ci5wb3NpdGlvbigpLnkoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgcGxhdGZvcm1HZXN0dXJl
QnVpbGRlci5nbG9iYWxQb3NpdGlvbigpLngoKSk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgcGxh
dGZvcm1HZXN0dXJlQnVpbGRlci5nbG9iYWxQb3NpdGlvbigpLnkoKSk7CisgICAgICAgIEVYUEVD
VF9FUSg1LCBwbGF0Zm9ybUdlc3R1cmVCdWlsZGVyLmRlbHRhWCgpKTsKKyAgICAgICAgRVhQRUNU
X0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuZGVsdGFZKCkpOworICAgIH0KKworICAgIHsK
KyAgICAgICAgV2ViR2VzdHVyZUV2ZW50IHdlYkdlc3R1cmVFdmVudDsKKyAgICAgICAgd2ViR2Vz
dHVyZUV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50OjpHZXN0dXJlVGFwOworICAgICAgICB3ZWJH
ZXN0dXJlRXZlbnQuZGF0YS50YXAud2lkdGggPSAxMDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50
LmRhdGEudGFwLmhlaWdodCA9IDEwOworCisgICAgICAgIFBsYXRmb3JtR2VzdHVyZUV2ZW50QnVp
bGRlciBwbGF0Zm9ybUdlc3R1cmVCdWlsZGVyKHZpZXcsIHdlYkdlc3R1cmVFdmVudCk7CisgICAg
ICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybUdlc3R1cmVCdWlsZGVyLmFyZWEoKS53aWR0aCgpKTsK
KyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIuYXJlYSgpLmhlaWdo
dCgpKTsKKyAgICB9CisKKyAgICB7CisgICAgICAgIFdlYkdlc3R1cmVFdmVudCB3ZWJHZXN0dXJl
RXZlbnQ7CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6R2Vz
dHVyZVRhcERvd247CisgICAgICAgIHdlYkdlc3R1cmVFdmVudC5kYXRhLnRhcERvd24ud2lkdGgg
PSAxMDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LmRhdGEudGFwRG93bi5oZWlnaHQgPSAxMDsK
KworICAgICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1HZXN0dXJlQnVp
bGRlcih2aWV3LCB3ZWJHZXN0dXJlRXZlbnQpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZv
cm1HZXN0dXJlQnVpbGRlci5hcmVhKCkud2lkdGgoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBw
bGF0Zm9ybUdlc3R1cmVCdWlsZGVyLmFyZWEoKS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgewor
ICAgICAgICBXZWJHZXN0dXJlRXZlbnQgd2ViR2VzdHVyZUV2ZW50OworICAgICAgICB3ZWJHZXN0
dXJlRXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Okdlc3R1cmVMb25nUHJlc3M7CisgICAgICAg
IHdlYkdlc3R1cmVFdmVudC5kYXRhLmxvbmdQcmVzcy53aWR0aCA9IDEwOworICAgICAgICB3ZWJH
ZXN0dXJlRXZlbnQuZGF0YS5sb25nUHJlc3MuaGVpZ2h0ID0gMTA7CisKKyAgICAgICAgUGxhdGZv
cm1HZXN0dXJlRXZlbnRCdWlsZGVyIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIodmlldywgd2ViR2Vz
dHVyZUV2ZW50KTsKKyAgICAgICAgRVhQRUNUX0VRKDUsIHBsYXRmb3JtR2VzdHVyZUJ1aWxkZXIu
YXJlYSgpLndpZHRoKCkpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1HZXN0dXJlQnVp
bGRlci5hcmVhKCkuaGVpZ2h0KCkpOworICAgIH0KKworICAgIHsKKyAgICAgICAgV2ViR2VzdHVy
ZUV2ZW50IHdlYkdlc3R1cmVFdmVudDsKKyAgICAgICAgd2ViR2VzdHVyZUV2ZW50LnR5cGUgPSBX
ZWJJbnB1dEV2ZW50OjpHZXN0dXJlVHdvRmluZ2VyVGFwOworICAgICAgICB3ZWJHZXN0dXJlRXZl
bnQuZGF0YS50d29GaW5nZXJUYXAuZmlyc3RGaW5nZXJXaWR0aCA9IDEwOworICAgICAgICB3ZWJH
ZXN0dXJlRXZlbnQuZGF0YS50d29GaW5nZXJUYXAuZmlyc3RGaW5nZXJIZWlnaHQgPSAxMDsKKwor
ICAgICAgICBQbGF0Zm9ybUdlc3R1cmVFdmVudEJ1aWxkZXIgcGxhdGZvcm1HZXN0dXJlQnVpbGRl
cih2aWV3LCB3ZWJHZXN0dXJlRXZlbnQpOworICAgICAgICBFWFBFQ1RfRVEoNSwgcGxhdGZvcm1H
ZXN0dXJlQnVpbGRlci5hcmVhKCkud2lkdGgoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0
Zm9ybUdlc3R1cmVCdWlsZGVyLmFyZWEoKS5oZWlnaHQoKSk7CisgICAgfQorCisgICAgeworICAg
ICAgICBXZWJUb3VjaEV2ZW50IHdlYlRvdWNoRXZlbnQ7CisgICAgICAgIHdlYlRvdWNoRXZlbnQu
dHlwZSA9IFdlYklucHV0RXZlbnQ6OlRvdWNoTW92ZTsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50
b3VjaGVzTGVuZ3RoID0gMTsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3VjaGVzWzBdLnN0YXRl
ID0gV2ViVG91Y2hQb2ludDo6U3RhdGVNb3ZlZDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3Vj
aGVzWzBdLnNjcmVlblBvc2l0aW9uLnggPSAxMDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3Vj
aGVzWzBdLnNjcmVlblBvc2l0aW9uLnkgPSAxMDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3Vj
aGVzWzBdLnBvc2l0aW9uLnggPSAxMDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3VjaGVzWzBd
LnBvc2l0aW9uLnkgPSAxMDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3VjaGVzWzBdLnJhZGl1
c1ggPSAxMDsKKyAgICAgICAgd2ViVG91Y2hFdmVudC50b3VjaGVzWzBdLnJhZGl1c1kgPSAxMDsK
KworICAgICAgICBQbGF0Zm9ybVRvdWNoRXZlbnRCdWlsZGVyIHBsYXRmb3JtVG91Y2hCdWlsZGVy
KHZpZXcsIHdlYlRvdWNoRXZlbnQpOworICAgICAgICBFWFBFQ1RfRVEoMTAsIHBsYXRmb3JtVG91
Y2hCdWlsZGVyLnRvdWNoUG9pbnRzKClbMF0uc2NyZWVuUG9zKCkueCgpKTsKKyAgICAgICAgRVhQ
RUNUX0VRKDEwLCBwbGF0Zm9ybVRvdWNoQnVpbGRlci50b3VjaFBvaW50cygpWzBdLnNjcmVlblBv
cygpLnkoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybVRvdWNoQnVpbGRlci50b3Vj
aFBvaW50cygpWzBdLnBvcygpLngoKSk7CisgICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybVRv
dWNoQnVpbGRlci50b3VjaFBvaW50cygpWzBdLnBvcygpLnkoKSk7CisgICAgICAgIEVYUEVDVF9F
USg1LCBwbGF0Zm9ybVRvdWNoQnVpbGRlci50b3VjaFBvaW50cygpWzBdLnJhZGl1c1goKSk7Cisg
ICAgICAgIEVYUEVDVF9FUSg1LCBwbGF0Zm9ybVRvdWNoQnVpbGRlci50b3VjaFBvaW50cygpWzBd
LnJhZGl1c1koKSk7CisgICAgfQorCisgICAgeworICAgICAgICBQbGF0Zm9ybU1vdXNlRXZlbnQg
cGxhdGZvcm1Nb3VzZUV2ZW50KEludFBvaW50KDEwLCAxMCksIEludFBvaW50KDEwLCAxMCksIExl
ZnRCdXR0b24sIFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDEsIGZhbHNlLCBmYWxzZSwgZmFs
c2UsIGZhbHNlLCAwKTsKKyAgICAgICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1vdXNlRXZlbnQgPSBN
b3VzZUV2ZW50OjpjcmVhdGUoV2ViQ29yZTo6ZXZlbnROYW1lcygpLm1vdXNlbW92ZUV2ZW50LCBk
b21XaW5kb3csIHBsYXRmb3JtTW91c2VFdmVudCwgMCwgZG9jdW1lbnQpOworICAgICAgICBXZWJN
b3VzZUV2ZW50QnVpbGRlciB3ZWJNb3VzZUJ1aWxkZXIodmlldywgZG9jUmVuZGVyZXIsICptb3Vz
ZUV2ZW50KTsKKworICAgICAgICBFWFBFQ1RfRVEoMjAsIHdlYk1vdXNlQnVpbGRlci54KTsKKyAg
ICAgICAgRVhQRUNUX0VRKDIwLCB3ZWJNb3VzZUJ1aWxkZXIueSk7CisgICAgICAgIEVYUEVDVF9F
USgxMCwgd2ViTW91c2VCdWlsZGVyLmdsb2JhbFgpOworICAgICAgICBFWFBFQ1RfRVEoMTAsIHdl
Yk1vdXNlQnVpbGRlci5nbG9iYWxZKTsKKyAgICAgICAgRVhQRUNUX0VRKDIwLCB3ZWJNb3VzZUJ1
aWxkZXIud2luZG93WCk7CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViTW91c2VCdWlsZGVyLndp
bmRvd1kpOworICAgIH0KKworICAgIHsKKyAgICAgICAgUGxhdGZvcm1HZXN0dXJlRXZlbnQgcGxh
dGZvcm1HZXN0dXJlRXZlbnQoUGxhdGZvcm1FdmVudDo6R2VzdHVyZVNjcm9sbFVwZGF0ZSwgSW50
UG9pbnQoMTAsIDEwKSwgSW50UG9pbnQoMTAsIDEwKSwgMCwgSW50U2l6ZSgxMCwgMTApLCBGbG9h
dFBvaW50KDEwLCAxMCksIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgUmVm
UHRyPEdlc3R1cmVFdmVudD4gZ2VzdHVyZUV2ZW50ID0gR2VzdHVyZUV2ZW50OjpjcmVhdGUoZG9t
V2luZG93LCBwbGF0Zm9ybUdlc3R1cmVFdmVudCk7CisgICAgICAgIFdlYkdlc3R1cmVFdmVudEJ1
aWxkZXIgd2ViR2VzdHVyZUJ1aWxkZXIodmlldywgZG9jUmVuZGVyZXIsICpnZXN0dXJlRXZlbnQp
OworCisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViR2VzdHVyZUJ1aWxkZXIueCk7CisgICAgICAg
IEVYUEVDVF9FUSgyMCwgd2ViR2VzdHVyZUJ1aWxkZXIueSk7CisgICAgICAgIEVYUEVDVF9FUSgx
MCwgd2ViR2VzdHVyZUJ1aWxkZXIuZ2xvYmFsWCk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgd2Vi
R2VzdHVyZUJ1aWxkZXIuZ2xvYmFsWSk7CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViR2VzdHVy
ZUJ1aWxkZXIuZGF0YS5zY3JvbGxVcGRhdGUuZGVsdGFYKTsKKyAgICAgICAgRVhQRUNUX0VRKDIw
LCB3ZWJHZXN0dXJlQnVpbGRlci5kYXRhLnNjcm9sbFVwZGF0ZS5kZWx0YVkpOworICAgIH0KKwor
ICAgIHsKKyAgICAgICAgUmVmUHRyPFRvdWNoPiB0b3VjaCA9IFRvdWNoOjpjcmVhdGUod2ViVmll
d0ltcGwtPnBhZ2UoKS0+bWFpbkZyYW1lKCksIGRvY3VtZW50LmdldCgpLCAwLCAxMCwgMTAsIDEw
LCAxMCwgMTAsIDEwLCAwLCAwKTsKKyAgICAgICAgUmVmUHRyPFRvdWNoTGlzdD4gdG91Y2hMaXN0
ID0gVG91Y2hMaXN0OjpjcmVhdGUoKTsKKyAgICAgICAgdG91Y2hMaXN0LT5hcHBlbmQodG91Y2gp
OworICAgICAgICBSZWZQdHI8VG91Y2hFdmVudD4gdG91Y2hFdmVudCA9IFRvdWNoRXZlbnQ6OmNy
ZWF0ZSh0b3VjaExpc3QuZ2V0KCksIHRvdWNoTGlzdC5nZXQoKSwgdG91Y2hMaXN0LmdldCgpLCBX
ZWJDb3JlOjpldmVudE5hbWVzKCkudG91Y2htb3ZlRXZlbnQsIGRvbVdpbmRvdywgMTAsIDEwLCAx
MCwgMTAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlKTsKKworICAgICAgICBXZWJUb3VjaEV2
ZW50QnVpbGRlciB3ZWJUb3VjaEJ1aWxkZXIodmlldywgZG9jUmVuZGVyZXIsICp0b3VjaEV2ZW50
KTsKKyAgICAgICAgQVNTRVJUX0VRKDF1LCB3ZWJUb3VjaEJ1aWxkZXIudG91Y2hlc0xlbmd0aCk7
CisgICAgICAgIEVYUEVDVF9FUSgxMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0uc2NyZWVu
UG9zaXRpb24ueCk7CisgICAgICAgIEVYUEVDVF9FUSgxMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNo
ZXNbMF0uc2NyZWVuUG9zaXRpb24ueSk7CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2ViVG91Y2hC
dWlsZGVyLnRvdWNoZXNbMF0ucG9zaXRpb24ueCk7CisgICAgICAgIEVYUEVDVF9FUSgyMCwgd2Vi
VG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucG9zaXRpb24ueSk7CisgICAgICAgIEVYUEVDVF9FUSgy
MCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucmFkaXVzWCk7CisgICAgICAgIEVYUEVDVF9F
USgyMCwgd2ViVG91Y2hCdWlsZGVyLnRvdWNoZXNbMF0ucmFkaXVzWSk7CisgICAgfQorCisgICAg
d2ViVmlld0ltcGwtPmNsb3NlKCk7Cit9CisKIH0gLy8gYW5vbnltb3VzIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>