<?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>96657</bug_id>
          
          <creation_ts>2012-09-13 08:56:36 -0700</creation_ts>
          <short_desc>[chromium] Add test for ScrollingCoordinatorChromium</short_desc>
          <delta_ts>2012-09-21 07:11:10 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sami Kyöstilä">skyostil</reporter>
          <assigned_to name="Sami Kyöstilä">skyostil</assigned_to>
          <cc>abarth</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>peter+ews</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719559</commentid>
    <comment_count>0</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-13 08:56:36 -0700</bug_when>
    <thetext>[chromium] Add test for ScrollingCoordinatorChromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>719567</commentid>
    <comment_count>1</comment_count>
      <attachid>163887</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-13 09:06:36 -0700</bug_when>
    <thetext>Created attachment 163887
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720097</commentid>
    <comment_count>2</comment_count>
      <attachid>163887</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-13 16:34:17 -0700</bug_when>
    <thetext>Comment on attachment 163887
Patch

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

I really like the idea but this won&apos;t quite build as is - gonna need to do some more plumbing or expose this at a different level.

&gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:32
&gt; +#include &quot;LayerChromium.h&quot;

you can&apos;t make a test that depends on WebCore stuff and LayerChromium any more.  You gotta plumb what you want through the public Web*Layer* headers if you want to access it from a webkit_unit_test

&gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:38
&gt; +#include &quot;WebLayerImpl.h&quot;

Can&apos;t see this either - now that WebLayerImpl is implemented in chromium the WebLayer type is completely opaque even to this unit test.  You can either write the whole test on the chromium side or plumb it through the WebKit API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720695</commentid>
    <comment_count>3</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-14 06:47:28 -0700</bug_when>
    <thetext>Ah, foiled by GTFO it seems :) I think I&apos;ll extend the WebLayer API to return the bits I need since ScrollingCoordinator isn&apos;t exposed to chromium at all. If I understood right I need to land the implementation on the chromium side first and only then expand WebLayer here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720718</commentid>
    <comment_count>4</comment_count>
      <attachid>164138</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-14 07:07:30 -0700</bug_when>
    <thetext>Created attachment 164138
Patch

No more peeking into WebLayerImpl/LayerChromium. Requires https://codereview.chromium.org/10909233.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720725</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 07:12:20 -0700</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>720728</commentid>
    <comment_count>6</comment_count>
      <attachid>164138</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-14 07:13:17 -0700</bug_when>
    <thetext>Comment on attachment 164138
Patch

Attachment 164138 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13859181</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720734</commentid>
    <comment_count>7</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-14 07:17:50 -0700</bug_when>
    <thetext>FYI the cq build failures are because https://codereview.chromium.org/10909233 isn&apos;t in place yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720775</commentid>
    <comment_count>8</comment_count>
      <attachid>164138</attachid>
    <who name="Peter Beverloo (cr-android ews)">peter+ews</who>
    <bug_when>2012-09-14 08:09:07 -0700</bug_when>
    <thetext>Comment on attachment 164138
Patch

Attachment 164138 did not pass cr-android-ews (chromium-android):
Output: http://queues.webkit.org/results/13859205</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723409</commentid>
    <comment_count>9</comment_count>
      <attachid>164697</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-19 02:38:41 -0700</bug_when>
    <thetext>Created attachment 164697
Patch

Rebased.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>723638</commentid>
    <comment_count>10</comment_count>
      <attachid>164697</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-09-19 10:22:25 -0700</bug_when>
    <thetext>Comment on attachment 164697
Patch

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

Looks great!  Have a few nits

&gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:71
&gt; +    WebViewImpl* createCompositedWebViewImpl(const std::string&amp; url)

I think this signature is pretty weird - it&apos;s called create..() and it returns a pointer, but it doesn&apos;t transfer ownership. could you instead create the view in the fixture&apos;s constructor and rename this something like navigate()?  you can access protected member variables directly in the test instances.  a new instance of the fixture is created + destroyed for each unit test

&gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:74
&gt; +        WebKit::Platform::current()-&gt;compositorSupport()-&gt;initialize(0);

there&apos;s a WebCompositorInitializer in namespace WebKitTests that can help with this - make it a member var of the fixture

&gt; Source/WebKit/chromium/tests/data/fixed_position.html:1
&gt; +&lt;!DOCTYPE html&gt;

supernit: I think layout tests typically use dashes instead of underscores, so fixed-position.html

&gt; Source/WebKit/chromium/tests/data/fixed_position.html:7
&gt; +      /* Use a stacking context to enable composition. */

if you want you can also setFixedPositionCreatesStackingContext(true) in the test setup - that&apos;s what we are actually shipping these days in chromium so it makes sense to test

&gt; Source/WebKit/chromium/tests/data/fixed_position_non_composited.html:5
&gt; +    .fixed {

this isn&apos;t so useful of a test now that we ship setFixedPositionCreatesStackingContext(true)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725475</commentid>
    <comment_count>11</comment_count>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-21 06:33:23 -0700</bug_when>
    <thetext>Thanks, I&apos;ll clean up the nits.

(In reply to comment #10)
&gt; &gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:71
&gt; &gt; +    WebViewImpl* createCompositedWebViewImpl(const std::string&amp; url)
&gt; 
&gt; I think this signature is pretty weird - it&apos;s called create..() and it returns a pointer, but it doesn&apos;t transfer ownership. could you instead create the view in the fixture&apos;s constructor and rename this something like navigate()?  you can access protected member variables directly in the test instances.  a new instance of the fixture is created + destroyed for each unit test

Agreed. This ended up a little odd as I was trying to figure out what bits are needed to make the WebView tick. Setting things up in the constructor is definitely cleaner.
 
&gt; &gt; Source/WebKit/chromium/tests/ScrollingCoordinatorChromiumTest.cpp:74
&gt; &gt; +        WebKit::Platform::current()-&gt;compositorSupport()-&gt;initialize(0);
&gt; 
&gt; there&apos;s a WebCompositorInitializer in namespace WebKitTests that can help with this - make it a member var of the fixture

Thanks for the tip.

&gt; &gt; Source/WebKit/chromium/tests/data/fixed_position.html:1
&gt; &gt; +&lt;!DOCTYPE html&gt;
&gt; 
&gt; supernit: I think layout tests typically use dashes instead of underscores, so fixed-position.html

Done.
 
&gt; &gt; Source/WebKit/chromium/tests/data/fixed_position.html:7
&gt; &gt; +      /* Use a stacking context to enable composition. */
&gt; 
&gt; if you want you can also setFixedPositionCreatesStackingContext(true) in the test setup - that&apos;s what we are actually shipping these days in chromium so it makes sense to test

Good idea, done.

&gt; &gt; Source/WebKit/chromium/tests/data/fixed_position_non_composited.html:5
&gt; &gt; +    .fixed {
&gt; 
&gt; this isn&apos;t so useful of a test now that we ship setFixedPositionCreatesStackingContext(true)

True.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725482</commentid>
    <comment_count>12</comment_count>
      <attachid>165127</attachid>
    <who name="Sami Kyöstilä">skyostil</who>
    <bug_when>2012-09-21 06:41:28 -0700</bug_when>
    <thetext>Created attachment 165127
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725493</commentid>
    <comment_count>13</comment_count>
      <attachid>165127</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 07:11:06 -0700</bug_when>
    <thetext>Comment on attachment 165127
Patch

Clearing flags on attachment: 165127

Committed r129225: &lt;http://trac.webkit.org/changeset/129225&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725494</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-21 07:11:10 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>163887</attachid>
            <date>2012-09-13 09:06:36 -0700</date>
            <delta_ts>2012-09-14 07:07:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96657-20120913170607.patch</filename>
            <type>text/plain</type>
            <size>18565</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NDMyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWYxN2M3OGIzYTEzZjI5
YzBlMDIxNzNiMjM0ZGM1YzIzNzYxYzcwYy4uYTBkZjE0NzFiMTQzM2ZiMzlkZmYwNDRhN2M5MTkz
MWFjMDEzZWE1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEyLTA5LTEzICBTYW1p
IEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
QWRkIHRlc3QgZm9yIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjU3CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHR3byBMYXllckNocm9taXVtIHBy
b3BlcnR5IGFjY2Vzc29ycyBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKworICAgICAgICBUZXN0czog
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuZmFzdFNjcm9sbGluZ0J5RGVmYXVsdAor
ICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuZmFzdFNjcm9s
bGluZ0ZvckZpeGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9y
Q2hyb21pdW1UZXN0LnNsb3dTY3JvbGxpbmdGb3JOb25Db21wb3NpdGVkRml4ZWRQb3NpdGlvbgor
ICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Qubm9uRmFzdFNj
cm9sbGFibGVSZWdpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW1UZXN0LndoZWVsRXZlbnRIYW5kbGVyCisgICAgICAgICAgICAgICBTY3JvbGxpbmdDb29yZGlu
YXRvckNocm9taXVtVGVzdC50b3VjaE92ZXJmbG93U2Nyb2xsaW5nCisKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmg6CisgICAgICAgIChMYXllckNo
cm9taXVtKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyQ2hyb21pdW06OnNob3VsZFNjcm9sbE9u
TWFpblRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpMYXllckNocm9taXVtOjpoYXZlV2hlZWxF
dmVudEhhbmRsZXJzKToKKwogMjAxMi0wOS0xMyAgTWlraGFpbCBQb3pkbnlha292ICA8bWlraGFp
bC5wb3pkbnlha292QGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSBSRUdSRVNTSU9OIChyMTI4
Mjc0KTogZmFzdC9vdmVyZmxvdy9vdmVyZmxvdy1oZWlnaHQtZmxvYXQtbm90LXJlbW92ZWQtY3Jh
c2guaHRtbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAxYWY1ODViYjFkZDEyZmE4MjUz
OTJkN2Q1ZjQwZDQ1Y2Q2OWRjN2E5Li4xZjY4NmU4MmZlMjM2OTQxNTE4ZmIzOTc1MmM4NjhiZDRj
N2Q2MTYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDEy
LTA5LTEzICBTYW1pIEt5b3N0aWxhICA8c2t5b3N0aWxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtjaHJvbWl1bV0gQWRkIHRlc3QgZm9yIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjU3CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3RzIGZv
ciBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtLiBUaGVzZSB0ZXN0cyBtYWlubHkgdmVyaWZ5
IHRoYXQKKyAgICAgICAgZmFzdCAobm9uLW1haW4gdGhyZWFkKSBzY3JvbGxpbmcgaXMgZW5hYmxl
ZCB3aGVuIG5lY2Vzc2FyeSBhbmQgdGhhdCBhIHByb3BlcgorICAgICAgICBjb21wb3NpdGluZyBs
YXllciBzdHJ1Y3R1cmUgaXMgY3JlYXRlZCBmb3IgZml4ZWQgcG9zaXRpb24gYW5kIGFjY2VsZXJh
dGVkCisgICAgICAgIHNjcm9sbGluZyBsYXllcnMuCisKKyAgICAgICAgVGVzdHM6IFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmZhc3RTY3JvbGxpbmdCeURlZmF1bHQKKyAgICAgICAg
ICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmZhc3RTY3JvbGxpbmdGb3JG
aXhlZFBvc2l0aW9uCisgICAgICAgICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
VGVzdC5zbG93U2Nyb2xsaW5nRm9yTm9uQ29tcG9zaXRlZEZpeGVkUG9zaXRpb24KKyAgICAgICAg
ICAgICAgIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0Lm5vbkZhc3RTY3JvbGxhYmxl
UmVnaW9uCisgICAgICAgICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC53
aGVlbEV2ZW50SGFuZGxlcgorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJv
bWl1bVRlc3QudG91Y2hPdmVyZmxvd1Njcm9sbGluZworCisgICAgICAgICogV2ViS2l0Lmd5cGk6
CisgICAgICAgICogdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChNb2NrV2ViVmlld0NsaWVudCk6Cisg
ICAgICAgIChTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCk6CisgICAgICAgIChXZWJL
aXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0OjpTY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW1UZXN0OjpjcmVhdGVDb21wb3NpdGVkV2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0
OjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdDo6cmVnaXN0ZXJNb2NrZWRIdHRwVVJM
TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0
OjpnZXRSb290U2Nyb2xsTGF5ZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKyAg
ICAgICAgKiB0ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0aW9uLmh0bWw6IEFkZGVkLgorICAgICAgICAq
IHRlc3RzL2RhdGEvZml4ZWRfcG9zaXRpb25fbm9uX2NvbXBvc2l0ZWQuaHRtbDogQWRkZWQuCisg
ICAgICAgICogdGVzdHMvZGF0YS9ub25fZmFzdF9zY3JvbGxhYmxlLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIHRlc3RzL2RhdGEvdG91Y2hfb3ZlcmZsb3dfc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHRlc3RzL2RhdGEvd2hlZWxfZXZlbnRfaGFuZGxlci5odG1sOiBBZGRlZC4KKwog
MjAxMi0wOS0xMyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAK
ICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODQwOS4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0uaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyQ2hyb21pdW0u
aAppbmRleCBlZTBlYTc3NTZhNWVmMzg3NWNjYTE0NmVjMTFiMTEwNzA2ZjU4NDJjLi4wZDJhMzMw
MTBhMzVlZTBjYzAyMWZkNTlkODkxOWQ2ZTQ4ZWQ5MGU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJDaHJvbWl1bS5oCkBA
IC0xNjIsOCArMTYyLDEzIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0U2Nyb2xsYWJsZShib29s
KTsKICAgICBib29sIHNjcm9sbGFibGUoKSBjb25zdCB7IHJldHVybiBtX3Njcm9sbGFibGU7IH0K
KwogICAgIHZvaWQgc2V0U2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKGJvb2wpOworICAgIGJvb2wg
c2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRTY3JvbGxP
bk1haW5UaHJlYWQ7IH0KKwogICAgIHZvaWQgc2V0SGF2ZVdoZWVsRXZlbnRIYW5kbGVycyhib29s
KTsKKyAgICBib29sIGhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSBjb25zdCB7IHJldHVybiBtX2hh
dmVXaGVlbEV2ZW50SGFuZGxlcnM7IH0KKwogICAgIGNvbnN0IFJlZ2lvbiYgbm9uRmFzdFNjcm9s
bGFibGVSZWdpb24oKSB7IHJldHVybiBtX25vbkZhc3RTY3JvbGxhYmxlUmVnaW9uOyB9CiAgICAg
dm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBSZWdpb24mKTsKICAgICB2b2lk
IHNldE5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uQ2hhbmdlZCgpIHsgbV9ub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvbkNoYW5nZWQgPSB0cnVlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRl
eCA1ZDNmODUwZDVhMWViMzViN2Q3NmI2MWFhMWUxOWRmM2U1ZjllZDQxLi40MmYxMDdmYWIyYjhm
ZTZiY2UzODljNTMyMTY5NGNhYWJhNWY1YmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cGkKQEAgLTkzLDYgKzkzLDcgQEAKICAgICAgICAgICAgICd0ZXN0cy9SZWdpb25UZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAogICAgICAgICAg
ICAgJ3Rlc3RzL1JlbmRlclRhYmxlUm93VGVzdC5jcHAnLAorICAgICAgICAgICAgJ3Rlc3RzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
VGlsaW5nRGF0YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMu
Y3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMuaCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YTUwNWM5YWJlZDYwNWRhMzdhN2Jk
NDI3NTU4YzJiNmIxNjYxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcApAQCAtMCwwICsx
LDIzNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSAi
U2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKworI2luY2x1ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3Jh
cGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJGYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZh
Y2UuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiTGF5ZXJDaHJv
bWl1bS5oIgorI2luY2x1ZGUgIlJlbmRlckxheWVyQ29tcG9zaXRvci5oIgorI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKKyNpbmNsdWRlICJVUkxUZXN0SGVscGVycy5oIgorI2luY2x1ZGUgIldlYkZy
YW1lQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViRnJhbWVJbXBsLmgiCisjaW5jbHVkZSAiV2ViTGF5
ZXJJbXBsLmgiCisjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKKyNpbmNsdWRlICJXZWJWaWV3Q2xp
ZW50LmgiCisjaW5jbHVkZSAiV2ViVmlld0ltcGwuaCIKKyNpbmNsdWRlIDxndGVzdC9ndGVzdC5o
PgorI2luY2x1ZGUgPHB1YmxpYy9XZWJDb21wb3NpdG9yU3VwcG9ydC5oPgorI2luY2x1ZGUgPHdl
YmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0Lmg+CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURf
T1ZFUkZMT1dfU0NST0xMSU5HKQorI2luY2x1ZGUgIkdyYXBoaWNzTGF5ZXJDaHJvbWl1bS5oIgor
I2VuZGlmCisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwordXNpbmcgbmFtZXNwYWNlIFdlYktp
dDsKKworbmFtZXNwYWNlIHsKKworY2xhc3MgTW9ja1dlYlZpZXdDbGllbnQgOiBwdWJsaWMgV2Vi
Vmlld0NsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBXZWJDb21wb3NpdG9yT3V0cHV0U3Vy
ZmFjZSogY3JlYXRlT3V0cHV0U3VyZmFjZSgpIE9WRVJSSURFCisgICAgeworICAgICAgICByZXR1
cm4gRmFrZVdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNlOjpjcmVhdGUoQ29tcG9zaXRvckZha2VX
ZWJHcmFwaGljc0NvbnRleHQzRDo6Y3JlYXRlKFdlYkdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1
dGVzKCkpKS5sZWFrUHRyKCk7CisgICAgfQorfTsKKworY2xhc3MgTW9ja1dlYkZyYW1lQ2xpZW50
IDogcHVibGljIFdlYkZyYW1lQ2xpZW50IHsKK307CisKK2NsYXNzIFNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ2hyb21pdW1UZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorICAgIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0KCkKKyAgICAgICAgOiBtX2Jhc2VVUkwoImh0
dHA6Ly93d3cudGVzdC5jb20vIikKKyAgICAgICAgLCBtX3dlYlZpZXdJbXBsKDApIHsgfQorCisg
ICAgV2ViVmlld0ltcGwqIGNyZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3SW1wbChjb25zdCBzdGQ6OnN0
cmluZyYgdXJsKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFtX3dlYlZpZXdJbXBsKTsKKyAgICAg
ICAgV2ViS2l0OjpQbGF0Zm9ybTo6Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5pbml0
aWFsaXplKDApOworCisgICAgICAgIC8vIFdlIGNhbm5vdCByZXVzZSBGcmFtZVRlc3RIZWxwZXJz
OjpjcmVhdGVXZWJWaWV3QW5kTG9hZCBoZXJlIGJlY2F1c2UgdGhlIGNvbXBvc2l0aW5nCisgICAg
ICAgIC8vIHNldHRpbmdzIG5lZWQgdG8gYmUgc2V0IGJlZm9yZSB0aGUgcGFnZSBpcyBsb2FkZWQu
CisgICAgICAgIG1fd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KFdlYlZp
ZXc6OmNyZWF0ZSgmbV9tb2NrV2ViVmlld0NsaWVudCkpOworICAgICAgICBtX3dlYlZpZXdJbXBs
LT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgbV93ZWJW
aWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7CisgICAg
ICAgIG1fd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdF
bmFibGVkKHRydWUpOworICAgICAgICBtX3dlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRBY2Nl
bGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAgICAg
IG1fd2ViVmlld0ltcGwtPmluaXRpYWxpemVNYWluRnJhbWUoJm1fbW9ja1dlYkZyYW1lQ2xpZW50
KTsKKyAgICAgICAgbV93ZWJWaWV3SW1wbC0+cmVzaXplKEludFNpemUoMzIwLCAyNDApKTsKKwor
ICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lKCksIHVybCk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5jaHJvbm91c01v
Y2tlZFJlcXVlc3RzKCk7CisKKyAgICAgICAgcmV0dXJuIG1fd2ViVmlld0ltcGw7CisgICAgfQor
CisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHdl
YmtpdF9zdXBwb3J0OjpVbnJlZ2lzdGVyQWxsTW9ja2VkVVJMcygpOworICAgICAgICBpZiAobV93
ZWJWaWV3SW1wbCkgeworICAgICAgICAgICAgbV93ZWJWaWV3SW1wbC0+Y2xvc2UoKTsKKyAgICAg
ICAgICAgIG1fd2ViVmlld0ltcGwgPSAwOworICAgICAgICAgICAgV2ViS2l0OjpQbGF0Zm9ybTo6
Y3VycmVudCgpLT5jb21wb3NpdG9yU3VwcG9ydCgpLT5zaHV0ZG93bigpOworICAgICAgICB9Cisg
ICAgfQorCisgICAgdm9pZCByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3Ry
aW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAgIFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1v
Y2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkp
LCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1lLmNfc3RyKCkpKTsKKyAgICB9CisKKyAgICBX
ZWJMYXllckltcGwqIGdldFJvb3RTY3JvbGxMYXllckltcGwoV2ViVmlld0ltcGwqIHdlYlZpZXdJ
bXBsKQorICAgIHsKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0g
d2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCkt
PmNvbXBvc2l0b3IoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBvc2l0b3IpOworICAgICAgICBBU1NF
UlQoY29tcG9zaXRvci0+c2Nyb2xsTGF5ZXIoKSk7CisKKyAgICAgICAgV2ViTGF5ZXJJbXBsKiB3
ZWJTY3JvbGxMYXllckltcGwgPSBzdGF0aWNfY2FzdDxXZWJMYXllckltcGwqPihjb21wb3NpdG9y
LT5zY3JvbGxMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICByZXR1cm4gd2ViU2Ny
b2xsTGF5ZXJJbXBsOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHN0ZDo6c3RyaW5nIG1fYmFz
ZVVSTDsKKyAgICBNb2NrV2ViRnJhbWVDbGllbnQgbV9tb2NrV2ViRnJhbWVDbGllbnQ7CisgICAg
TW9ja1dlYlZpZXdDbGllbnQgbV9tb2NrV2ViVmlld0NsaWVudDsKKyAgICBXZWJWaWV3SW1wbCog
bV93ZWJWaWV3SW1wbDsKK307CisKK1RFU1RfRihTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVt
VGVzdCwgZmFzdFNjcm9sbGluZ0J5RGVmYXVsdCkKK3sKKyAgICBXZWJWaWV3SW1wbCogd2ViVmll
d0ltcGwgPSBjcmVhdGVDb21wb3NpdGVkV2ViVmlld0ltcGwoImFib3V0OmJsYW5rIik7CisKKyAg
ICAvLyBNYWtlIHN1cmUgdGhlIHNjcm9sbGluZyBjb29yZGluYXRvciBpcyBhY3RpdmUuCisgICAg
RnJhbWVWaWV3KiBmcmFtZVZpZXcgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFt
ZVZpZXcoKTsKKyAgICBQYWdlKiBwYWdlID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+
ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVF9UUlVFKHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5h
dG9yKCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPmNv
b3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOworCisgICAgLy8gRmFz
dCBzY3JvbGxpbmcgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAgICBXZWJMYXllcklt
cGwqIHJvb3RTY3JvbGxMYXllckltcGwgPSBnZXRSb290U2Nyb2xsTGF5ZXJJbXBsKHdlYlZpZXdJ
bXBsKTsKKyAgICBBU1NFUlRfVFJVRShyb290U2Nyb2xsTGF5ZXJJbXBsLT5sYXllcigpLT5zY3Jv
bGxhYmxlKCkpOworICAgIEFTU0VSVF9GQUxTRShyb290U2Nyb2xsTGF5ZXJJbXBsLT5sYXllcigp
LT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJvb3RTY3Jv
bGxMYXllckltcGwtPmxheWVyKCktPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoKSk7Cit9CisKK1RF
U1RfRihTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCwgZmFzdFNjcm9sbGluZ0ZvckZp
eGVkUG9zaXRpb24pCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfcG9z
aXRpb24uaHRtbCIpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBv
c2l0ZWRXZWJWaWV3SW1wbChtX2Jhc2VVUkwgKyAiZml4ZWRfcG9zaXRpb24uaHRtbCIpOworCisg
ICAgUGFnZSogcGFnZSA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPnBh
Z2UoKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlLT5zY3JvbGxpbmdDb29yZGluYXRvcigpLT5zdXBw
b3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSk7CisKKyAgICAvLyBGaXhlZCBwb3NpdGlvbiBzaG91
bGQgbm90IGZhbGwgYmFjayB0byBtYWluIHRocmVhZCBzY3JvbGxpbmcuCisgICAgV2ViTGF5ZXJJ
bXBsKiByb290U2Nyb2xsTGF5ZXJJbXBsID0gZ2V0Um9vdFNjcm9sbExheWVySW1wbCh3ZWJWaWV3
SW1wbCk7CisgICAgQVNTRVJUX0ZBTFNFKHJvb3RTY3JvbGxMYXllckltcGwtPmxheWVyKCktPnNo
b3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKTsKKworICAgIC8vIFZlcmlmeSB0aGUgcHJvcGVydGll
cyBvZiB0aGUgZml4ZWQgcG9zaXRpb24gZWxlbWVudCBzdGFydGluZyBmcm9tIHRoZSBSZW5kZXJP
YmplY3QgYWxsIHRoZQorICAgIC8vIHdheSB0byB0aGUgTGF5ZXJDaHJvbWl1bS4KKyAgICBFbGVt
ZW50KiBmaXhlZEVsZW1lbnQgPSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgp
LT5kb2N1bWVudCgpLT5nZXRFbGVtZW50QnlJZCgiZml4ZWQiKTsKKyAgICBBU1NFUlQoZml4ZWRF
bGVtZW50KTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmaXhlZEVsZW1lbnQtPnJl
bmRlcmVyKCk7CisgICAgQVNTRVJUX1RSVUUocmVuZGVyZXItPmlzQm94TW9kZWxPYmplY3QoKSk7
CisgICAgQVNTRVJUX1RSVUUocmVuZGVyZXItPmhhc0xheWVyKCkpOworCisgICAgUmVuZGVyTGF5
ZXIqIGxheWVyID0gdG9SZW5kZXJCb3hNb2RlbE9iamVjdChyZW5kZXJlciktPmxheWVyKCk7Cisg
ICAgQVNTRVJUX1RSVUUobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKworICAgIFJlbmRlckxheWVy
QmFja2luZyogbGF5ZXJCYWNraW5nID0gbGF5ZXItPmJhY2tpbmcoKTsKKyAgICBXZWJMYXllcklt
cGwqIHdlYkxheWVySW1wbCA9IHN0YXRpY19jYXN0PFdlYkxheWVySW1wbCo+KGxheWVyQmFja2lu
Zy0+Z3JhcGhpY3NMYXllcigpLT5wbGF0Zm9ybUxheWVyKCkpOworICAgIEFTU0VSVF9UUlVFKHdl
YkxheWVySW1wbC0+bGF5ZXIoKS0+Zml4ZWRUb0NvbnRhaW5lckxheWVyKCkpOworfQorCitURVNU
X0YoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QsIHNsb3dTY3JvbGxpbmdGb3JOb25D
b21wb3NpdGVkRml4ZWRQb3NpdGlvbikKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2Fk
KCJmaXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1sIik7CisgICAgV2ViVmlld0ltcGwq
IHdlYlZpZXdJbXBsID0gY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFzZVVSTCArICJm
aXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1sIik7CisKKyAgICBQYWdlKiBwYWdlID0g
d2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VS
VF9UUlVFKHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnN1cHBvcnRzRml4ZWRQb3NpdGlv
bkxheWVycygpKTsKKworICAgIC8vIE5vbi1jb21wb3NpdGVkIGZpeGVkIHBvc2l0aW9uIHNob3Vs
ZCBmYWxsIGJhY2sgdG8gbWFpbiB0aHJlYWQgc2Nyb2xsaW5nLgorICAgIFdlYkxheWVySW1wbCog
cm9vdFNjcm9sbExheWVySW1wbCA9IGdldFJvb3RTY3JvbGxMYXllckltcGwod2ViVmlld0ltcGwp
OworICAgIEFTU0VSVF9UUlVFKHJvb3RTY3JvbGxMYXllckltcGwtPmxheWVyKCktPnNob3VsZFNj
cm9sbE9uTWFpblRocmVhZCgpKTsKK30KKworVEVTVF9GKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW1UZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKK3sKKyAgICByZWdpc3Rlck1vY2tl
ZEh0dHBVUkxMb2FkKCJub25fZmFzdF9zY3JvbGxhYmxlLmh0bWwiKTsKKyAgICBXZWJWaWV3SW1w
bCogd2ViVmlld0ltcGwgPSBjcmVhdGVDb21wb3NpdGVkV2ViVmlld0ltcGwobV9iYXNlVVJMICsg
Im5vbl9mYXN0X3Njcm9sbGFibGUuaHRtbCIpOworCisgICAgV2ViTGF5ZXJJbXBsKiByb290U2Ny
b2xsTGF5ZXJJbXBsID0gZ2V0Um9vdFNjcm9sbExheWVySW1wbCh3ZWJWaWV3SW1wbCk7CisgICAg
UmVnaW9uIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gcm9vdFNjcm9sbExheWVySW1wbC0+bGF5
ZXIoKS0+bm9uRmFzdFNjcm9sbGFibGVSZWdpb24oKTsKKworICAgIEFTU0VSVF9FUSgxdSwgbm9u
RmFzdFNjcm9sbGFibGVSZWdpb24ucmVjdHMoKS5zaXplKCkpOworICAgIEludFJlY3QgcmVjdCA9
IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnJlY3RzKClbMF07CisgICAgQVNTRVJUX0VRKEludFJl
Y3QoOCwgOCwgMTAsIDEwKSwgcmVjdCk7Cit9CisKK1RFU1RfRihTY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtVGVzdCwgd2hlZWxFdmVudEhhbmRsZXIpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRI
dHRwVVJMTG9hZCgid2hlZWxfZXZlbnRfaGFuZGxlci5odG1sIik7CisgICAgV2ViVmlld0ltcGwq
IHdlYlZpZXdJbXBsID0gY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFzZVVSTCArICJ3
aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwiKTsKKworICAgIFdlYkxheWVySW1wbCogcm9vdFNjcm9s
bExheWVySW1wbCA9IGdldFJvb3RTY3JvbGxMYXllckltcGwod2ViVmlld0ltcGwpOworICAgIEFT
U0VSVF9UUlVFKHJvb3RTY3JvbGxMYXllckltcGwtPmxheWVyKCktPmhhdmVXaGVlbEV2ZW50SGFu
ZGxlcnMoKSk7Cit9CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5H
KQorVEVTVF9GKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCB0b3VjaE92ZXJmbG93
U2Nyb2xsaW5nKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoInRvdWNoX292ZXJm
bG93X3Njcm9sbGluZy5odG1sIik7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY3Jl
YXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFzZVVSTCArICJ0b3VjaF9vdmVyZmxvd19zY3Jv
bGxpbmcuaHRtbCIpOworCisgICAgLy8gVmVyaWZ5IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBhY2Nl
bGVyYXRlZCBzY3JvbGxpbmcgZWxlbWVudCBzdGFydGluZyBmcm9tIHRoZSBSZW5kZXJPYmplY3QK
KyAgICAvLyBhbGwgdGhlIHdheSB0byB0aGUgTGF5ZXJDaHJvbWl1bS4KKyAgICBFbGVtZW50KiBz
Y3JvbGxhYmxlRWxlbWVudCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lKCkt
PmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKCJzY3JvbGxhYmxlIik7CisgICAgQVNTRVJUKHNj
cm9sbGFibGVFbGVtZW50KTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzY3JvbGxh
YmxlRWxlbWVudC0+cmVuZGVyZXIoKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aXNCb3hN
b2RlbE9iamVjdCgpKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aGFzTGF5ZXIoKSk7CisK
KyAgICBSZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVy
KS0+bGF5ZXIoKTsKKyAgICBBU1NFUlRfVFJVRShsYXllci0+dXNlc0NvbXBvc2l0ZWRTY3JvbGxp
bmcoKSk7CisgICAgQVNTRVJUX1RSVUUobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKworICAgIFJl
bmRlckxheWVyQmFja2luZyogbGF5ZXJCYWNraW5nID0gbGF5ZXItPmJhY2tpbmcoKTsKKyAgICBB
U1NFUlRfVFJVRShsYXllckJhY2tpbmctPmhhc1Njcm9sbGluZ0xheWVyKCkpOworICAgIEFTU0VS
VChsYXllckJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CisKKyAgICBHcmFwaGlj
c0xheWVyQ2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVy
Q2hyb21pdW0qPihsYXllckJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CisgICAg
QVNTRVJUX0VRKGxheWVyLCBsYXllckNocm9taXVtLT5zY3JvbGxhYmxlQXJlYSgpKTsKKworICAg
IFdlYkxheWVySW1wbCogd2ViU2Nyb2xsTGF5ZXJJbXBsID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXJJ
bXBsKj4obGF5ZXJCYWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5
ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUod2ViU2Nyb2xsTGF5ZXJJbXBsLT5sYXllcigpLT5zY3Jv
bGxhYmxlKCkpOworfQorI2VuZGlmIC8vIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVSRkxPV19TQ1JP
TExJTkcpCisKK30gLy8gbmFtZXNwYWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3Rlc3RzL2RhdGEvZml4ZWRfcG9zaXRpb24uaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwZmQ2N2FjN2Y4
Y2QxYmVhZGM0ZjUwZGRiNjkwNTkwYzJmY2I3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZml4ZWRfcG9zaXRpb24uaHRtbApAQCAtMCwwICsx
LDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0
ZXh0L2NzcyI+CisgICAgI2ZpeGVkIHsKKyAgICAgIHBvc2l0aW9uOiBmaXhlZDsKKyAgICAgIC8q
IFVzZSBhIHN0YWNraW5nIGNvbnRleHQgdG8gZW5hYmxlIGNvbXBvc2l0aW9uLiAqLworICAgICAg
ei1pbmRleDogMDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5PgorICA8ZGl2
IGlkPSJmaXhlZCI+CisgICAgRml4ZWQgcG9zaXRpb25lZC4KKyAgPC9kaXY+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZml4
ZWRfcG9zaXRpb25fbm9uX2NvbXBvc2l0ZWQuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmYyZmZkMjZiNzVjMWUxNTI2NTRlNjJkNTFkMmI3ZWQ1MmJhYjJmNmMKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvZml4ZWRfcG9zaXRpb25fbm9u
X2NvbXBvc2l0ZWQuaHRtbApAQCAtMCwwICsxLDE2IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1s
PgorPGhlYWQ+CisgIDxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisgICAgLmZpeGVkIHsKKyAgICAg
IHBvc2l0aW9uOiBmaXhlZDsKKyAgICB9CisgIDwvc3R5bGU+Cis8L2hlYWQ+CisKKzxib2R5Pgor
ICA8ZGl2IGNsYXNzPSJmaXhlZCI+CisgICAgRml4ZWQgcG9zaXRpb25lZC4KKyAgPC9kaXY+Cis8
L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvbm9uX2Zhc3Rfc2Nyb2xsYWJsZS5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9kYXRhL25vbl9mYXN0X3Njcm9sbGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNjMzZDI1NGQ3
Y2Y4NTJlOWM5ZTVhODkzODQxNmZhMWEyM2Y0YjQwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL25vbl9mYXN0X3Njcm9sbGFibGUuaHRtbApAQCAt
MCwwICsxLDE4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxodG1sPgorPGhlYWQ+CisgIDxzdHlsZSB0
eXBlPSJ0ZXh0L2NzcyI+CisgICAgLnNjcm9sbGFibGUgeworICAgICAgd2lkdGg6IDEwcHg7Cisg
ICAgICBoZWlnaHQ6IDEwcHg7CisgICAgICBvdmVyZmxvdzogc2Nyb2xsOworICAgIH0KKyAgPC9z
dHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9InNjcm9sbGFibGUiPgorICAg
IFNjcm9sbGluZyBjb250ZW50LgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS90b3VjaF9vdmVyZmxvd19zY3Jv
bGxpbmcuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS90b3VjaF9vdmVy
Zmxvd19zY3JvbGxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNTk3MmFhMmVkNGYxMDRhZTE3NDAxZDY0
YjFkMDY2NDhjNzRjYmJhCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGluZy5odG1sCkBAIC0wLDAgKzEsMjMg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAjc2Nyb2xsYWJsZSB7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhlaWdo
dDogMTBweDsKKyAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgICAtd2Via2l0LW92ZXJmbG93
LXNjcm9sbGluZzogdG91Y2g7CisgICAgfQorICAgIC5jb250ZW50IHsKKyAgICAgIHdpZHRoOiAx
MDBweDsKKyAgICAgIGhlaWdodDogMTAwMHB4OworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4K
KworPGJvZHk+CisgIDxkaXYgaWQ9InNjcm9sbGFibGUiPgorICAgIDxkaXYgY2xhc3M9ImNvbnRl
bnQiPjwvZGl2PgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS93aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvd2hlZWxfZXZlbnRfaGFuZGxlci5odG1s
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjdlNDUwYTRlY2U2NzY5MDI4MGNmZDRlMTAwYTRjNWMxMmYwZjRkYzcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvd2hlZWxf
ZXZlbnRfaGFuZGxlci5odG1sCkBAIC0wLDAgKzEsMTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0
bWw+Cis8aGVhZD4KKyAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNld2hlZWwnLCBmdW5jdGlvbihldmVudCkgeworICAg
ICAgfSk7CisgIDwvc2NyaXB0PgorPC9oZWFkPgorCis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164138</attachid>
            <date>2012-09-14 07:07:30 -0700</date>
            <delta_ts>2012-09-19 02:38:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96657-20120914150701.patch</filename>
            <type>text/plain</type>
            <size>18078</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NjAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGRmNjA1MWZiMzhlYTE2MmY4ZmExZDZkYTA4YjUzZmJjMTFjNDU4NzYuLjQ0YzBlOWQ2MGViZDY3
NzQ5MDlmNTRmNjM4YTAxZjVjZGRiZjhkNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDktMTMgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgdGVzdCBmb3IgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGVzdHMgZm9yIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uIFRoZXNl
IHRlc3RzIG1haW5seSB2ZXJpZnkgdGhhdAorICAgICAgICBmYXN0IChub24tbWFpbiB0aHJlYWQp
IHNjcm9sbGluZyBpcyBlbmFibGVkIHdoZW4gbmVjZXNzYXJ5IGFuZCB0aGF0IGEgcHJvcGVyCisg
ICAgICAgIGNvbXBvc2l0aW5nIGxheWVyIHN0cnVjdHVyZSBpcyBjcmVhdGVkIGZvciBmaXhlZCBw
b3NpdGlvbiBhbmQgYWNjZWxlcmF0ZWQKKyAgICAgICAgc2Nyb2xsaW5nIGxheWVycy4KKworICAg
ICAgICBUZXN0czogU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuZmFzdFNjcm9sbGlu
Z0J5RGVmYXVsdAorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3QuZmFzdFNjcm9sbGluZ0ZvckZpeGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LnNsb3dTY3JvbGxpbmdGb3JOb25Db21wb3NpdGVkRml4
ZWRQb3NpdGlvbgorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3Qubm9uRmFzdFNjcm9sbGFibGVSZWdpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW1UZXN0LndoZWVsRXZlbnRIYW5kbGVyCisgICAgICAgICAgICAgICBTY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC50b3VjaE92ZXJmbG93U2Nyb2xsaW5nCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKE1v
Y2tXZWJWaWV3Q2xpZW50KToKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1U
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Q6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Q6OmNyZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0Ojpy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3Q6OmdldFJvb3RTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0aW9uX25vbl9jb21wb3NpdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvbm9uX2Zhc3Rfc2Nyb2xsYWJsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGlu
Zy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3doZWVsX2V2ZW50X2hhbmRsZXIu
aHRtbDogQWRkZWQuCisKIDIwMTItMDktMTQgIEtlaXNoaSBIYXR0b3JpICA8a2Vpc2hpQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgTWFrZSB0aW1lIGlucHV0IGxhbmcgYXR0cmlidXRlIGF3YXJlIGZv
ciB0ZXN0aW5nCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgKaW5k
ZXggMWJmZjdlZmUzZDVhMzE2OTEwMjJlOGVkM2Y3MGZjOGIwYjY5MTcyZS4uM2M5Yjk5NzlmZjky
MmUxOGUwMTAyYzA2OTlmYmUzNDNlMjUwYmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRmb3Jt
L2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1
bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMTY5LDEyICsxNjksMjUgQEAgcHVibGljOgogICAgIHZp
cnR1YWwgV2ViUG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0dWFs
IHZvaWQgc2V0TWF4U2Nyb2xsUG9zaXRpb24oV2ViU2l6ZSkgPSAwOworICAgIHZpcnR1YWwgV2Vi
U2l6ZSBtYXhTY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRTY3JvbGxhYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYWJsZSgpIGNv
bnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJzKGJv
b2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpIGNvbnN0
ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSBjb25z
dCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24oY29u
c3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdlYlJl
Y3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSA9IDA7CisgICAg
dmlydHVhbCBib29sIGlzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0ID0g
MDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkgPSAw
OworICAgIHZpcnR1YWwgYm9vbCBmaXhlZFRvQ29udGFpbmVyTGF5ZXIoKSBjb25zdCA9IDA7CiAK
ICAgICAvLyBUaGUgc2Nyb2xsIGNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBzY3JvbGwgcG9z
aXRpb24gb2YgdGhlIFdlYkxheWVyCiAgICAgLy8gY2hhbmdlcy4gT25seSBhIHNpbmdsZSBzY3Jv
bGwgY2xpZW50IGNhbiBiZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQgYSB0aW1lLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCmluZGV4IDE3OWFkNTBlZmZlN2U5NmVhN2U1MmQ1YWJmNDQxMDU4ZTY2
NmMwMmYuLmY3MTYzYjBjY2NhZjU3YjdlMTc4ODNmODM0ZDZlYjVhNDk2YmRlMmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTcxOCw2ICs3MTgsNyBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVSb3dUZXN0LmNw
cCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGVzdHMvVVJMVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwaQppbmRleCA1ZDNmODUwZDVhMWViMzViN2Q3NmI2MWFhMWUxOWRmM2U1
ZjllZDQxLi40MmYxMDdmYWIyYjhmZTZiY2UzODljNTMyMTY5NGNhYWJhNWY1YmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTkzLDYgKzkzLDcgQEAKICAgICAgICAgICAgICd0
ZXN0cy9SZWdpb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxs
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1JlbmRlclRhYmxlUm93VGVzdC5jcHAnLAor
ICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCcs
CiAgICAgICAgICAgICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKICAgICAgICAgICAgICd0
ZXN0cy9UcmVlVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVzdEhl
bHBlcnMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9s
bGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFl
YjQ3OGI2NTUxODk2ZDU5MWQwMWM4YzQ5NDc1NmZmYjNhMDYwNGMKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21p
dW1UZXN0LmNwcApAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
CisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKworI2luY2x1ZGUg
IkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJGYWtlV2Vi
Q29tcG9zaXRvck91dHB1dFN1cmZhY2UuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJzLmgi
CisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVyVmll
dy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGll
bnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5o
IgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgor
I2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0b3JT
dXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8d2Via2l0
L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9PVkVS
RkxPV19TQ1JPTExJTkcpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCisjZW5k
aWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0Owor
CituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrV2ViVmlld0NsaWVudCA6IHB1YmxpYyBXZWJWaWV3
Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJmYWNl
KiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVybiBG
YWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShDb21wb3NpdG9yRmFrZVdlYkdy
YXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMo
KSkpLmxlYWtQdHIoKTsKKyAgICB9Cit9OworCitjbGFzcyBNb2NrV2ViRnJhbWVDbGllbnQgOiBw
dWJsaWMgV2ViRnJhbWVDbGllbnQgeworfTsKKworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0b3JD
aHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0cDov
L3d3dy50ZXN0LmNvbS8iKQorICAgICAgICAsIG1fd2ViVmlld0ltcGwoMCkgeyB9CisKKyAgICBX
ZWJWaWV3SW1wbCogY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKGNvbnN0IHN0ZDo6c3RyaW5n
JiB1cmwpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fd2ViVmlld0ltcGwpOworICAgICAgICBX
ZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmluaXRpYWxp
emUoMCk7CisKKyAgICAgICAgLy8gV2UgY2Fubm90IHJldXNlIEZyYW1lVGVzdEhlbHBlcnM6OmNy
ZWF0ZVdlYlZpZXdBbmRMb2FkIGhlcmUgYmVjYXVzZSB0aGUgY29tcG9zaXRpbmcKKyAgICAgICAg
Ly8gc2V0dGluZ3MgbmVlZCB0byBiZSBzZXQgYmVmb3JlIHRoZSBwYWdlIGlzIGxvYWRlZC4KKyAg
ICAgICAgbV93ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oV2ViVmlldzo6
Y3JlYXRlKCZtX21vY2tXZWJWaWV3Q2xpZW50KSk7CisgICAgICAgIG1fd2ViVmlld0ltcGwtPnNl
dHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgICAgICBtX3dlYlZpZXdJ
bXBsLT5zZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICAgICAg
bV93ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0VuYWJs
ZWQodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFjY2VsZXJh
dGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAgbV93
ZWJWaWV3SW1wbC0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmbV9tb2NrV2ViRnJhbWVDbGllbnQpOwor
ICAgICAgICBtX3dlYlZpZXdJbXBsLT5yZXNpemUoSW50U2l6ZSgzMjAsIDI0MCkpOworCisgICAg
ICAgIEZyYW1lVGVzdEhlbHBlcnM6OmxvYWRGcmFtZShtX3dlYlZpZXdJbXBsLT5tYWluRnJhbWUo
KSwgdXJsKTsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9ja2Vk
UmVxdWVzdHMoKTsKKworICAgICAgICByZXR1cm4gbV93ZWJWaWV3SW1wbDsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgd2Via2l0
X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIGlmIChtX3dlYlZp
ZXdJbXBsKSB7CisgICAgICAgICAgICBtX3dlYlZpZXdJbXBsLT5jbG9zZSgpOworICAgICAgICAg
ICAgbV93ZWJWaWV3SW1wbCA9IDA7CisgICAgICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJy
ZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPnNodXRkb3duKCk7CisgICAgICAgIH0KKyAgICB9
CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoY29uc3Qgc3RkOjpzdHJpbmcm
IGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9ja2Vk
VVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSksIFdl
YlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOworICAgIH0KKworICAgIFdlYkxh
eWVyKiBnZXRSb290U2Nyb2xsTGF5ZXIoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsKQorICAgIHsK
KyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gd2ViVmlld0ltcGwt
Pm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCktPmNvbXBvc2l0b3Io
KTsKKyAgICAgICAgQVNTRVJUKGNvbXBvc2l0b3IpOworICAgICAgICBBU1NFUlQoY29tcG9zaXRv
ci0+c2Nyb2xsTGF5ZXIoKSk7CisKKyAgICAgICAgV2ViTGF5ZXIqIHdlYlNjcm9sbExheWVyID0g
c3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihjb21wb3NpdG9yLT5zY3JvbGxMYXllcigpLT5wbGF0Zm9y
bUxheWVyKCkpOworICAgICAgICByZXR1cm4gd2ViU2Nyb2xsTGF5ZXI7CisgICAgfQorCitwcm90
ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1vY2tXZWJGcmFtZUNsaWVu
dCBtX21vY2tXZWJGcmFtZUNsaWVudDsKKyAgICBNb2NrV2ViVmlld0NsaWVudCBtX21vY2tXZWJW
aWV3Q2xpZW50OworICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOworfTsKKworVEVTVF9G
KFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCBmYXN0U2Nyb2xsaW5nQnlEZWZhdWx0
KQoreworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBvc2l0ZWRXZWJW
aWV3SW1wbCgiYWJvdXQ6YmxhbmsiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgc2Nyb2xsaW5n
IGNvb3JkaW5hdG9yIGlzIGFjdGl2ZS4KKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdlYlZp
ZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOworICAgIFBhZ2UqIHBhZ2UgPSB3
ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNTRVJU
X1RSVUUocGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSk7CisgICAgQVNTRVJUX1RSVUUocGFn
ZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZp
ZXcoZnJhbWVWaWV3KSk7CisKKyAgICAvLyBGYXN0IHNjcm9sbGluZyBzaG91bGQgYmUgZW5hYmxl
ZCBieSBkZWZhdWx0LgorICAgIFdlYkxheWVyKiByb290U2Nyb2xsTGF5ZXIgPSBnZXRSb290U2Ny
b2xsTGF5ZXIod2ViVmlld0ltcGwpOworICAgIEFTU0VSVF9UUlVFKHJvb3RTY3JvbGxMYXllci0+
c2Nyb2xsYWJsZSgpKTsKKyAgICBBU1NFUlRfRkFMU0Uocm9vdFNjcm9sbExheWVyLT5zaG91bGRT
Y3JvbGxPbk1haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJvb3RTY3JvbGxMYXllci0+
aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKTsKK30KKworVEVTVF9GKFNjcm9sbGluZ0Nvb3JkaW5h
dG9yQ2hyb21pdW1UZXN0LCBmYXN0U2Nyb2xsaW5nRm9yRml4ZWRQb3NpdGlvbikKK3sKKyAgICBy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9wb3NpdGlvbi5odG1sIik7CisgICAgV2Vi
Vmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFz
ZVVSTCArICJmaXhlZF9wb3NpdGlvbi5odG1sIik7CisKKyAgICBQYWdlKiBwYWdlID0gd2ViVmll
d0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVF9UUlVF
KHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVy
cygpKTsKKworICAgIC8vIEZpeGVkIHBvc2l0aW9uIHNob3VsZCBub3QgZmFsbCBiYWNrIHRvIG1h
aW4gdGhyZWFkIHNjcm9sbGluZy4KKyAgICBXZWJMYXllciogcm9vdFNjcm9sbExheWVyID0gZ2V0
Um9vdFNjcm9sbExheWVyKHdlYlZpZXdJbXBsKTsKKyAgICBBU1NFUlRfRkFMU0Uocm9vdFNjcm9s
bExheWVyLT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSk7CisKKyAgICAvLyBWZXJpZnkgdGhl
IHByb3BlcnRpZXMgb2YgdGhlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgc3RhcnRpbmcgZnJvbSB0
aGUgUmVuZGVyT2JqZWN0IGFsbCB0aGUKKyAgICAvLyB3YXkgdG8gdGhlIExheWVyQ2hyb21pdW0u
CisgICAgRWxlbWVudCogZml4ZWRFbGVtZW50ID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwo
KS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoImZpeGVkIik7CisgICAgQVNT
RVJUKGZpeGVkRWxlbWVudCk7CisKKyAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZml4ZWRF
bGVtZW50LT5yZW5kZXJlcigpOworICAgIEFTU0VSVF9UUlVFKHJlbmRlcmVyLT5pc0JveE1vZGVs
T2JqZWN0KCkpOworICAgIEFTU0VSVF9UUlVFKHJlbmRlcmVyLT5oYXNMYXllcigpKTsKKworICAg
IFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5s
YXllcigpOworICAgIEFTU0VSVF9UUlVFKGxheWVyLT5pc0NvbXBvc2l0ZWQoKSk7CisKKyAgICBS
ZW5kZXJMYXllckJhY2tpbmcqIGxheWVyQmFja2luZyA9IGxheWVyLT5iYWNraW5nKCk7CisgICAg
V2ViTGF5ZXIqIHdlYkxheWVyID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihsYXllckJhY2tpbmct
PmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1MYXllcigpKTsKKyAgICBBU1NFUlRfVFJVRSh3ZWJM
YXllci0+Zml4ZWRUb0NvbnRhaW5lckxheWVyKCkpOworfQorCitURVNUX0YoU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3QsIHNsb3dTY3JvbGxpbmdGb3JOb25Db21wb3NpdGVkRml4ZWRQ
b3NpdGlvbikKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9wb3NpdGlv
bl9ub25fY29tcG9zaXRlZC5odG1sIik7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0g
Y3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFzZVVSTCArICJmaXhlZF9wb3NpdGlvbl9u
b25fY29tcG9zaXRlZC5odG1sIik7CisKKyAgICBQYWdlKiBwYWdlID0gd2ViVmlld0ltcGwtPm1h
aW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVF9UUlVFKHBhZ2UtPnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCktPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpKTsKKwor
ICAgIC8vIE5vbi1jb21wb3NpdGVkIGZpeGVkIHBvc2l0aW9uIHNob3VsZCBmYWxsIGJhY2sgdG8g
bWFpbiB0aHJlYWQgc2Nyb2xsaW5nLgorICAgIFdlYkxheWVyKiByb290U2Nyb2xsTGF5ZXIgPSBn
ZXRSb290U2Nyb2xsTGF5ZXIod2ViVmlld0ltcGwpOworICAgIEFTU0VSVF9UUlVFKHJvb3RTY3Jv
bGxMYXllci0+c2hvdWxkU2Nyb2xsT25NYWluVGhyZWFkKCkpOworfQorCitURVNUX0YoU2Nyb2xs
aW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QsIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKQorewor
ICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoIm5vbl9mYXN0X3Njcm9sbGFibGUuaHRtbCIp
OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3
SW1wbChtX2Jhc2VVUkwgKyAibm9uX2Zhc3Rfc2Nyb2xsYWJsZS5odG1sIik7CisKKyAgICBXZWJM
YXllciogcm9vdFNjcm9sbExheWVyID0gZ2V0Um9vdFNjcm9sbExheWVyKHdlYlZpZXdJbXBsKTsK
KyAgICBXZWJWZWN0b3I8V2ViUmVjdD4gbm9uRmFzdFNjcm9sbGFibGVSZWdpb24gPSByb290U2Ny
b2xsTGF5ZXItPm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCk7CisKKyAgICBBU1NFUlRfRVEoMXUs
IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uLnNpemUoKSk7CisgICAgQVNTRVJUX0VRKFdlYlJlY3Qo
OCwgOCwgMTAsIDEwKSwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb25bMF0pOworfQorCitURVNUX0Yo
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QsIHdoZWVsRXZlbnRIYW5kbGVyKQorewor
ICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoIndoZWVsX2V2ZW50X2hhbmRsZXIuaHRtbCIp
OworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3
SW1wbChtX2Jhc2VVUkwgKyAid2hlZWxfZXZlbnRfaGFuZGxlci5odG1sIik7CisKKyAgICBXZWJM
YXllciogcm9vdFNjcm9sbExheWVyID0gZ2V0Um9vdFNjcm9sbExheWVyKHdlYlZpZXdJbXBsKTsK
KyAgICBBU1NFUlRfVFJVRShyb290U2Nyb2xsTGF5ZXItPmhhdmVXaGVlbEV2ZW50SGFuZGxlcnMo
KSk7Cit9CisKKyNpZiBFTkFCTEUoQUNDRUxFUkFURURfT1ZFUkZMT1dfU0NST0xMSU5HKQorVEVT
VF9GKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCB0b3VjaE92ZXJmbG93U2Nyb2xs
aW5nKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoInRvdWNoX292ZXJmbG93X3Nj
cm9sbGluZy5odG1sIik7CisgICAgV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY3JlYXRlQ29t
cG9zaXRlZFdlYlZpZXdJbXBsKG1fYmFzZVVSTCArICJ0b3VjaF9vdmVyZmxvd19zY3JvbGxpbmcu
aHRtbCIpOworCisgICAgLy8gVmVyaWZ5IHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBhY2NlbGVyYXRl
ZCBzY3JvbGxpbmcgZWxlbWVudCBzdGFydGluZyBmcm9tIHRoZSBSZW5kZXJPYmplY3QKKyAgICAv
LyBhbGwgdGhlIHdheSB0byB0aGUgTGF5ZXJDaHJvbWl1bS4KKyAgICBFbGVtZW50KiBzY3JvbGxh
YmxlRWxlbWVudCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lKCktPmRvY3Vt
ZW50KCktPmdldEVsZW1lbnRCeUlkKCJzY3JvbGxhYmxlIik7CisgICAgQVNTRVJUKHNjcm9sbGFi
bGVFbGVtZW50KTsKKworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzY3JvbGxhYmxlRWxl
bWVudC0+cmVuZGVyZXIoKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aGFzTGF5ZXIoKSk7CisKKyAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5
ZXIoKTsKKyAgICBBU1NFUlRfVFJVRShsYXllci0+dXNlc0NvbXBvc2l0ZWRTY3JvbGxpbmcoKSk7
CisgICAgQVNTRVJUX1RSVUUobGF5ZXItPmlzQ29tcG9zaXRlZCgpKTsKKworICAgIFJlbmRlckxh
eWVyQmFja2luZyogbGF5ZXJCYWNraW5nID0gbGF5ZXItPmJhY2tpbmcoKTsKKyAgICBBU1NFUlRf
VFJVRShsYXllckJhY2tpbmctPmhhc1Njcm9sbGluZ0xheWVyKCkpOworICAgIEFTU0VSVChsYXll
ckJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CisKKyAgICBHcmFwaGljc0xheWVy
Q2hyb21pdW0qIGxheWVyQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxHcmFwaGljc0xheWVyQ2hyb21p
dW0qPihsYXllckJhY2tpbmctPnNjcm9sbGluZ0NvbnRlbnRzTGF5ZXIoKSk7CisgICAgQVNTRVJU
X0VRKGxheWVyLCBsYXllckNocm9taXVtLT5zY3JvbGxhYmxlQXJlYSgpKTsKKworICAgIFdlYkxh
eWVyKiB3ZWJTY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PFdlYkxheWVyKj4obGF5ZXJCYWNraW5n
LT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJU
X1RSVUUod2ViU2Nyb2xsTGF5ZXItPnNjcm9sbGFibGUoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxF
KEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKKworfSAvLyBuYW1lc3BhY2UKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbi5o
dG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0aW9uLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZDBmZDY3YWM3ZjhjZDFiZWFkYzRmNTBkZGI2OTA1OTBjMmZjYjdkNAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhl
ZF9wb3NpdGlvbi5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+
Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjZml4ZWQgeworICAgICAg
cG9zaXRpb246IGZpeGVkOworICAgICAgLyogVXNlIGEgc3RhY2tpbmcgY29udGV4dCB0byBlbmFi
bGUgY29tcG9zaXRpb24uICovCisgICAgICB6LWluZGV4OiAwOworICAgIH0KKyAgPC9zdHlsZT4K
KzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgaWQ9ImZpeGVkIj4KKyAgICBGaXhlZCBwb3NpdGlv
bmVkLgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1s
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0aW9uX25vbl9j
b21wb3NpdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJmZmQyNmI3NWMxZTE1MjY1NGU2MmQ1MWQyYjdl
ZDUyYmFiMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvZGF0YS9maXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1sCkBAIC0wLDAgKzEsMTYg
QEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQv
Y3NzIj4KKyAgICAuZml4ZWQgeworICAgICAgcG9zaXRpb246IGZpeGVkOworICAgIH0KKyAgPC9z
dHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9ImZpeGVkIj4KKyAgICBGaXhl
ZCBwb3NpdGlvbmVkLgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9ub25fZmFzdF9zY3JvbGxhYmxlLmh0bWwg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9uX2Zhc3Rfc2Nyb2xsYWJsZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmI2MzNkMjU0ZDdjZjg1MmU5YzllNWE4OTM4NDE2ZmExYTIzZjRiNDAK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9u
X2Zhc3Rfc2Nyb2xsYWJsZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1sPgor
PGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAuc2Nyb2xsYWJs
ZSB7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhlaWdodDogMTBweDsKKyAgICAgIG92ZXJm
bG93OiBzY3JvbGw7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRp
diBjbGFzcz0ic2Nyb2xsYWJsZSI+CisgICAgU2Nyb2xsaW5nIGNvbnRlbnQuCisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGluZy5odG1sIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGluZy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI1OTcyYWEyZWQ0ZjEwNGFlMTc0MDFkNjRiMWQwNjY0OGM3NGNiYmEKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvdG91Y2hfb3ZlcmZsb3dfc2Ny
b2xsaW5nLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICNzY3JvbGxhYmxlIHsKKyAgICAg
IHdpZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgICAgb3ZlcmZsb3c6IHNjcm9s
bDsKKyAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAgICB9CisgICAg
LmNvbnRlbnQgeworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAxMDAwcHg7Cisg
ICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBpZD0ic2Nyb2xsYWJs
ZSI+CisgICAgPGRpdiBjbGFzcz0iY29udGVudCI+PC9kaXY+CisgIDwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3do
ZWVsX2V2ZW50X2hhbmRsZXIuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0
YS93aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0NTBhNGVjZTY3NjkwMjgw
Y2ZkNGUxMDBhNGM1YzEyZjBmNGRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vdGVzdHMvZGF0YS93aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwKQEAgLTAsMCArMSwx
MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCI+CisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V3aGVl
bCcsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisK
KzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164697</attachid>
            <date>2012-09-19 02:38:41 -0700</date>
            <delta_ts>2012-09-21 06:41:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96657-20120919103807.patch</filename>
            <type>text/plain</type>
            <size>18087</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4OTgwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDk4OTg5NGRmMDQxMTJhMzY4YTE0ZDlkYTdhNzI1N2IwYzkwNGJlOTcuLjhmNDAxN2NiMjA4MmUw
N2I5ZThlMmRmN2U4MmNmMGU0ZGI2NDJlYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzggQEAKKzIwMTItMDktMTMgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgdGVzdCBmb3IgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGQgdGVzdHMgZm9yIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uIFRoZXNl
IHRlc3RzIG1haW5seSB2ZXJpZnkgdGhhdAorICAgICAgICBmYXN0IChub24tbWFpbiB0aHJlYWQp
IHNjcm9sbGluZyBpcyBlbmFibGVkIHdoZW4gbmVjZXNzYXJ5IGFuZCB0aGF0IGEgcHJvcGVyCisg
ICAgICAgIGNvbXBvc2l0aW5nIGxheWVyIHN0cnVjdHVyZSBpcyBjcmVhdGVkIGZvciBmaXhlZCBw
b3NpdGlvbiBhbmQgYWNjZWxlcmF0ZWQKKyAgICAgICAgc2Nyb2xsaW5nIGxheWVycy4KKworICAg
ICAgICBUZXN0czogU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuZmFzdFNjcm9sbGlu
Z0J5RGVmYXVsdAorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3QuZmFzdFNjcm9sbGluZ0ZvckZpeGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LnNsb3dTY3JvbGxpbmdGb3JOb25Db21wb3NpdGVkRml4
ZWRQb3NpdGlvbgorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3Qubm9uRmFzdFNjcm9sbGFibGVSZWdpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW1UZXN0LndoZWVsRXZlbnRIYW5kbGVyCisgICAgICAgICAgICAgICBTY3Jv
bGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC50b3VjaE92ZXJmbG93U2Nyb2xsaW5nCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwaToKKyAgICAgICAgKiB0ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRv
ckNocm9taXVtVGVzdC5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKE1v
Y2tXZWJWaWV3Q2xpZW50KToKKyAgICAgICAgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1U
ZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Q6
OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0KToKKyAgICAgICAgKFdlYktpdDo6U2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Q6OmNyZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3SW1w
bCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0Ojpy
ZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKToKKyAgICAgICAgKFdlYktpdDo6U2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3Q6OmdldFJvb3RTY3JvbGxMYXllcik6CisgICAgICAgIChXZWJL
aXQ6OlRFU1RfRik6CisgICAgICAgICogdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbi5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0aW9uX25vbl9jb21wb3NpdGVk
Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvbm9uX2Zhc3Rfc2Nyb2xsYWJsZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGlu
Zy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiB0ZXN0cy9kYXRhL3doZWVsX2V2ZW50X2hhbmRsZXIu
aHRtbDogQWRkZWQuCisKIDIwMTItMDktMTkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0u
b3JnPgogCiAgICAgICAgIFtDaHJvbWl1bV0gRml4IGNyYXNoIGluIFdlYkZyYW1lSW1wbDo6bG9h
ZEhpc3RvcnlJdGVtCmRpZmYgLS1naXQgYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGlj
L1dlYkxheWVyLmggYi9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dlYkxheWVyLmgK
aW5kZXggMWJmZjdlZmUzZDVhMzE2OTEwMjJlOGVkM2Y3MGZjOGIwYjY5MTcyZS4uM2M5Yjk5Nzlm
ZjkyMmUxOGUwMTAyYzA2OTlmYmUzNDNlMjUwYmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1BsYXRm
b3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5oCisrKyBiL1NvdXJjZS9QbGF0Zm9ybS9jaHJv
bWl1bS9wdWJsaWMvV2ViTGF5ZXIuaApAQCAtMTY5LDEyICsxNjksMjUgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgV2ViUG9pbnQgc2Nyb2xsUG9zaXRpb24oKSBjb25zdCA9IDA7CiAKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWF4U2Nyb2xsUG9zaXRpb24oV2ViU2l6ZSkgPSAwOworICAgIHZpcnR1YWwg
V2ViU2l6ZSBtYXhTY3JvbGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRTY3JvbGxhYmxlKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgc2Nyb2xsYWJsZSgp
IGNvbnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRIYXZlV2hlZWxFdmVudEhhbmRsZXJz
KGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpIGNv
bnN0ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRTaG91bGRTY3JvbGxPbk1haW5UaHJlYWQo
Ym9vbCkgPSAwOworICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSBj
b25zdCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9uRmFzdFNjcm9sbGFibGVSZWdpb24o
Y29uc3QgV2ViVmVjdG9yPFdlYlJlY3Q+JikgPSAwOworICAgIHZpcnR1YWwgV2ViVmVjdG9yPFdl
YlJlY3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVh
bCB2b2lkIHNldElzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycyhib29sKSA9IDA7Cisg
ICAgdmlydHVhbCBib29sIGlzQ29udGFpbmVyRm9yRml4ZWRQb3NpdGlvbkxheWVycygpIGNvbnN0
ID0gMDsKKwogICAgIHZpcnR1YWwgdm9pZCBzZXRGaXhlZFRvQ29udGFpbmVyTGF5ZXIoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBmaXhlZFRvQ29udGFpbmVyTGF5ZXIoKSBjb25zdCA9IDA7
CiAKICAgICAvLyBUaGUgc2Nyb2xsIGNsaWVudCBpcyBub3RpZmllZCB3aGVuIHRoZSBzY3JvbGwg
cG9zaXRpb24gb2YgdGhlIFdlYkxheWVyCiAgICAgLy8gY2hhbmdlcy4gT25seSBhIHNpbmdsZSBz
Y3JvbGwgY2xpZW50IGNhbiBiZSBzZXQgZm9yIGEgV2ViTGF5ZXIgYXQgYSB0aW1lLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDE3OWFkNTBlZmZlN2U5NmVhN2U1MmQ1YWJmNDQxMDU4
ZTY2NmMwMmYuLmY3MTYzYjBjY2NhZjU3YjdlMTc4ODNmODM0ZDZlYjVhNDk2YmRlMmEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTcxOCw2ICs3MTgsNyBAQAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAndGVzdHMvUG9wdXBNZW51VGVzdC5jcHAnLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVDZWxsVGVzdC5jcHAnLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVSb3dUZXN0
LmNwcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9TY3JvbGxpbmdD
b29yZGluYXRvckNocm9taXVtVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAndGVzdHMvVVJMVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3Rlc3RzL1dlYkZyYW1lVGVzdC5jcHAnLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAndGVzdHMvV2ViUGFnZU5ld1NlcmlhbGl6ZXJUZXN0LmNwcCcsCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwaQppbmRleCBlZGViZjFiM2M4NTUzYWNkNDFmOWEyZGVkNWQ1MDY1
ZWRjNmEwNmE0Li4yNzkwOWFmZTY4NTA3ZDRkNThlNTAwYjlmYTc1YjM0MTY5NDk0MTEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cGkKQEAgLTk0LDYgKzk0LDcgQEAKICAgICAgICAgICAg
ICd0ZXN0cy9SZWdpb25UZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMvUmVuZGVyVGFibGVD
ZWxsVGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1JlbmRlclRhYmxlUm93VGVzdC5jcHAn
LAorICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNw
cCcsCiAgICAgICAgICAgICAndGVzdHMvVGlsaW5nRGF0YVRlc3QuY3BwJywKICAgICAgICAgICAg
ICd0ZXN0cy9UcmVlVGVzdEhlbHBlcnMuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UcmVlVGVz
dEhlbHBlcnMuaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Nj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjI5M2FjYjgzNGI3MDg2M2Q1NTJmZmMyOWE5MGJhYWM3ODZkZWRhNzkKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hy
b21pdW1UZXN0LmNwcApAQCAtMCwwICsxLDIzNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFCisgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04KKyAqIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUworICogU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorCisjaW5jbHVkZSAiU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaCIKKworI2luY2x1
ZGUgIkNvbXBvc2l0b3JGYWtlV2ViR3JhcGhpY3NDb250ZXh0M0QuaCIKKyNpbmNsdWRlICJGYWtl
V2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2UuaCIKKyNpbmNsdWRlICJGcmFtZVRlc3RIZWxwZXJz
LmgiCisjaW5jbHVkZSAiUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmgiCisjaW5jbHVkZSAiUmVuZGVy
Vmlldy5oIgorI2luY2x1ZGUgIlVSTFRlc3RIZWxwZXJzLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVD
bGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUltcGwuaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5n
cy5oIgorI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJWaWV3SW1wbC5o
IgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkNvbXBvc2l0
b3JTdXBwb3J0Lmg+CisjaW5jbHVkZSA8cHVibGljL1dlYkxheWVyLmg+CisjaW5jbHVkZSA8d2Vi
a2l0L3N1cHBvcnQvd2Via2l0X3N1cHBvcnQuaD4KKworI2lmIEVOQUJMRShBQ0NFTEVSQVRFRF9P
VkVSRkxPV19TQ1JPTExJTkcpCisjaW5jbHVkZSAiR3JhcGhpY3NMYXllckNocm9taXVtLmgiCisj
ZW5kaWYKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Cit1c2luZyBuYW1lc3BhY2UgV2ViS2l0
OworCituYW1lc3BhY2UgeworCitjbGFzcyBNb2NrV2ViVmlld0NsaWVudCA6IHB1YmxpYyBXZWJW
aWV3Q2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIFdlYkNvbXBvc2l0b3JPdXRwdXRTdXJm
YWNlKiBjcmVhdGVPdXRwdXRTdXJmYWNlKCkgT1ZFUlJJREUKKyAgICB7CisgICAgICAgIHJldHVy
biBGYWtlV2ViQ29tcG9zaXRvck91dHB1dFN1cmZhY2U6OmNyZWF0ZShDb21wb3NpdG9yRmFrZVdl
YkdyYXBoaWNzQ29udGV4dDNEOjpjcmVhdGUoV2ViR3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0
ZXMoKSkpLmxlYWtQdHIoKTsKKyAgICB9Cit9OworCitjbGFzcyBNb2NrV2ViRnJhbWVDbGllbnQg
OiBwdWJsaWMgV2ViRnJhbWVDbGllbnQgeworfTsKKworY2xhc3MgU2Nyb2xsaW5nQ29vcmRpbmF0
b3JDaHJvbWl1bVRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7CitwdWJsaWM6CisgICAgU2Ny
b2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QoKQorICAgICAgICA6IG1fYmFzZVVSTCgiaHR0
cDovL3d3dy50ZXN0LmNvbS8iKQorICAgICAgICAsIG1fd2ViVmlld0ltcGwoMCkgeyB9CisKKyAg
ICBXZWJWaWV3SW1wbCogY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKGNvbnN0IHN0ZDo6c3Ry
aW5nJiB1cmwpCisgICAgeworICAgICAgICBBU1NFUlQoIW1fd2ViVmlld0ltcGwpOworICAgICAg
ICBXZWJLaXQ6OlBsYXRmb3JtOjpjdXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPmluaXRp
YWxpemUoMCk7CisKKyAgICAgICAgLy8gV2UgY2Fubm90IHJldXNlIEZyYW1lVGVzdEhlbHBlcnM6
OmNyZWF0ZVdlYlZpZXdBbmRMb2FkIGhlcmUgYmVjYXVzZSB0aGUgY29tcG9zaXRpbmcKKyAgICAg
ICAgLy8gc2V0dGluZ3MgbmVlZCB0byBiZSBzZXQgYmVmb3JlIHRoZSBwYWdlIGlzIGxvYWRlZC4K
KyAgICAgICAgbV93ZWJWaWV3SW1wbCA9IHN0YXRpY19jYXN0PFdlYlZpZXdJbXBsKj4oV2ViVmll
dzo6Y3JlYXRlKCZtX21vY2tXZWJWaWV3Q2xpZW50KSk7CisgICAgICAgIG1fd2ViVmlld0ltcGwt
PnNldHRpbmdzKCktPnNldEphdmFTY3JpcHRFbmFibGVkKHRydWUpOworICAgICAgICBtX3dlYlZp
ZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRGb3JjZUNvbXBvc2l0aW5nTW9kZSh0cnVlKTsKKyAgICAg
ICAgbV93ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Vu
YWJsZWQodHJ1ZSk7CisgICAgICAgIG1fd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFjY2Vs
ZXJhdGVkQ29tcG9zaXRpbmdGb3JGaXhlZFBvc2l0aW9uRW5hYmxlZCh0cnVlKTsKKyAgICAgICAg
bV93ZWJWaWV3SW1wbC0+aW5pdGlhbGl6ZU1haW5GcmFtZSgmbV9tb2NrV2ViRnJhbWVDbGllbnQp
OworICAgICAgICBtX3dlYlZpZXdJbXBsLT5yZXNpemUoSW50U2l6ZSgzMjAsIDI0MCkpOworCisg
ICAgICAgIEZyYW1lVGVzdEhlbHBlcnM6OmxvYWRGcmFtZShtX3dlYlZpZXdJbXBsLT5tYWluRnJh
bWUoKSwgdXJsKTsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6OlNlcnZlQXN5bmNocm9ub3VzTW9j
a2VkUmVxdWVzdHMoKTsKKworICAgICAgICByZXR1cm4gbV93ZWJWaWV3SW1wbDsKKyAgICB9CisK
KyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSBPVkVSUklERQorICAgIHsKKyAgICAgICAgd2Vi
a2l0X3N1cHBvcnQ6OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIGlmIChtX3dl
YlZpZXdJbXBsKSB7CisgICAgICAgICAgICBtX3dlYlZpZXdJbXBsLT5jbG9zZSgpOworICAgICAg
ICAgICAgbV93ZWJWaWV3SW1wbCA9IDA7CisgICAgICAgICAgICBXZWJLaXQ6OlBsYXRmb3JtOjpj
dXJyZW50KCktPmNvbXBvc2l0b3JTdXBwb3J0KCktPnNodXRkb3duKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICB2b2lkIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoY29uc3Qgc3RkOjpzdHJp
bmcmIGZpbGVOYW1lKQorICAgIHsKKyAgICAgICAgVVJMVGVzdEhlbHBlcnM6OnJlZ2lzdGVyTW9j
a2VkVVJMRnJvbUJhc2VVUkwoV2ViU3RyaW5nOjpmcm9tVVRGOChtX2Jhc2VVUkwuY19zdHIoKSks
IFdlYlN0cmluZzo6ZnJvbVVURjgoZmlsZU5hbWUuY19zdHIoKSkpOworICAgIH0KKworICAgIFdl
YkxheWVyKiBnZXRSb290U2Nyb2xsTGF5ZXIoV2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsKQorICAg
IHsKKyAgICAgICAgUmVuZGVyTGF5ZXJDb21wb3NpdG9yKiBjb21wb3NpdG9yID0gd2ViVmlld0lt
cGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCktPmNvbXBvc2l0
b3IoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBvc2l0b3IpOworICAgICAgICBBU1NFUlQoY29tcG9z
aXRvci0+c2Nyb2xsTGF5ZXIoKSk7CisKKyAgICAgICAgV2ViTGF5ZXIqIHdlYlNjcm9sbExheWVy
ID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihjb21wb3NpdG9yLT5zY3JvbGxMYXllcigpLT5wbGF0
Zm9ybUxheWVyKCkpOworICAgICAgICByZXR1cm4gd2ViU2Nyb2xsTGF5ZXI7CisgICAgfQorCitw
cm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1vY2tXZWJGcmFtZUNs
aWVudCBtX21vY2tXZWJGcmFtZUNsaWVudDsKKyAgICBNb2NrV2ViVmlld0NsaWVudCBtX21vY2tX
ZWJWaWV3Q2xpZW50OworICAgIFdlYlZpZXdJbXBsKiBtX3dlYlZpZXdJbXBsOworfTsKKworVEVT
VF9GKFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCBmYXN0U2Nyb2xsaW5nQnlEZWZh
dWx0KQoreworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBvc2l0ZWRX
ZWJWaWV3SW1wbCgiYWJvdXQ6YmxhbmsiKTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgc2Nyb2xs
aW5nIGNvb3JkaW5hdG9yIGlzIGFjdGl2ZS4KKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IHdl
YlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCktPmZyYW1lVmlldygpOworICAgIFBhZ2UqIHBhZ2Ug
PSB3ZWJWaWV3SW1wbC0+bWFpbkZyYW1lSW1wbCgpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNT
RVJUX1RSVUUocGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKSk7CisgICAgQVNTRVJUX1RSVUUo
cGFnZS0+c2Nyb2xsaW5nQ29vcmRpbmF0b3IoKS0+Y29vcmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFt
ZVZpZXcoZnJhbWVWaWV3KSk7CisKKyAgICAvLyBGYXN0IHNjcm9sbGluZyBzaG91bGQgYmUgZW5h
YmxlZCBieSBkZWZhdWx0LgorICAgIFdlYkxheWVyKiByb290U2Nyb2xsTGF5ZXIgPSBnZXRSb290
U2Nyb2xsTGF5ZXIod2ViVmlld0ltcGwpOworICAgIEFTU0VSVF9UUlVFKHJvb3RTY3JvbGxMYXll
ci0+c2Nyb2xsYWJsZSgpKTsKKyAgICBBU1NFUlRfRkFMU0Uocm9vdFNjcm9sbExheWVyLT5zaG91
bGRTY3JvbGxPbk1haW5UaHJlYWQoKSk7CisgICAgQVNTRVJUX0ZBTFNFKHJvb3RTY3JvbGxMYXll
ci0+aGF2ZVdoZWVsRXZlbnRIYW5kbGVycygpKTsKK30KKworVEVTVF9GKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW1UZXN0LCBmYXN0U2Nyb2xsaW5nRm9yRml4ZWRQb3NpdGlvbikKK3sKKyAg
ICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJmaXhlZF9wb3NpdGlvbi5odG1sIik7CisgICAg
V2ViVmlld0ltcGwqIHdlYlZpZXdJbXBsID0gY3JlYXRlQ29tcG9zaXRlZFdlYlZpZXdJbXBsKG1f
YmFzZVVSTCArICJmaXhlZF9wb3NpdGlvbi5odG1sIik7CisKKyAgICBQYWdlKiBwYWdlID0gd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVF9U
UlVFKHBhZ2UtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCktPnN1cHBvcnRzRml4ZWRQb3NpdGlvbkxh
eWVycygpKTsKKworICAgIC8vIEZpeGVkIHBvc2l0aW9uIHNob3VsZCBub3QgZmFsbCBiYWNrIHRv
IG1haW4gdGhyZWFkIHNjcm9sbGluZy4KKyAgICBXZWJMYXllciogcm9vdFNjcm9sbExheWVyID0g
Z2V0Um9vdFNjcm9sbExheWVyKHdlYlZpZXdJbXBsKTsKKyAgICBBU1NFUlRfRkFMU0Uocm9vdFNj
cm9sbExheWVyLT5zaG91bGRTY3JvbGxPbk1haW5UaHJlYWQoKSk7CisKKyAgICAvLyBWZXJpZnkg
dGhlIHByb3BlcnRpZXMgb2YgdGhlIGZpeGVkIHBvc2l0aW9uIGVsZW1lbnQgc3RhcnRpbmcgZnJv
bSB0aGUgUmVuZGVyT2JqZWN0IGFsbCB0aGUKKyAgICAvLyB3YXkgdG8gdGhlIFdlYkxheWVyLgor
ICAgIEVsZW1lbnQqIGZpeGVkRWxlbWVudCA9IHdlYlZpZXdJbXBsLT5tYWluRnJhbWVJbXBsKCkt
PmZyYW1lKCktPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKCJmaXhlZCIpOworICAgIEFTU0VS
VChmaXhlZEVsZW1lbnQpOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZpeGVkRWxl
bWVudC0+cmVuZGVyZXIoKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aXNCb3hNb2RlbE9i
amVjdCgpKTsKKyAgICBBU1NFUlRfVFJVRShyZW5kZXJlci0+aGFzTGF5ZXIoKSk7CisKKyAgICBS
ZW5kZXJMYXllciogbGF5ZXIgPSB0b1JlbmRlckJveE1vZGVsT2JqZWN0KHJlbmRlcmVyKS0+bGF5
ZXIoKTsKKyAgICBBU1NFUlRfVFJVRShsYXllci0+aXNDb21wb3NpdGVkKCkpOworCisgICAgUmVu
ZGVyTGF5ZXJCYWNraW5nKiBsYXllckJhY2tpbmcgPSBsYXllci0+YmFja2luZygpOworICAgIFdl
YkxheWVyKiB3ZWJMYXllciA9IHN0YXRpY19jYXN0PFdlYkxheWVyKj4obGF5ZXJCYWNraW5nLT5n
cmFwaGljc0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RSVUUod2ViTGF5
ZXItPmZpeGVkVG9Db250YWluZXJMYXllcigpKTsKK30KKworVEVTVF9GKFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yQ2hyb21pdW1UZXN0LCBzbG93U2Nyb2xsaW5nRm9yTm9uQ29tcG9zaXRlZEZpeGVkUG9z
aXRpb24pCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgiZml4ZWRfcG9zaXRpb25f
bm9uX2NvbXBvc2l0ZWQuaHRtbCIpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNy
ZWF0ZUNvbXBvc2l0ZWRXZWJWaWV3SW1wbChtX2Jhc2VVUkwgKyAiZml4ZWRfcG9zaXRpb25fbm9u
X2NvbXBvc2l0ZWQuaHRtbCIpOworCisgICAgUGFnZSogcGFnZSA9IHdlYlZpZXdJbXBsLT5tYWlu
RnJhbWVJbXBsKCktPmZyYW1lKCktPnBhZ2UoKTsKKyAgICBBU1NFUlRfVFJVRShwYWdlLT5zY3Jv
bGxpbmdDb29yZGluYXRvcigpLT5zdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSk7CisKKyAg
ICAvLyBOb24tY29tcG9zaXRlZCBmaXhlZCBwb3NpdGlvbiBzaG91bGQgZmFsbCBiYWNrIHRvIG1h
aW4gdGhyZWFkIHNjcm9sbGluZy4KKyAgICBXZWJMYXllciogcm9vdFNjcm9sbExheWVyID0gZ2V0
Um9vdFNjcm9sbExheWVyKHdlYlZpZXdJbXBsKTsKKyAgICBBU1NFUlRfVFJVRShyb290U2Nyb2xs
TGF5ZXItPnNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKTsKK30KKworVEVTVF9GKFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCBub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbikKK3sKKyAg
ICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJub25fZmFzdF9zY3JvbGxhYmxlLmh0bWwiKTsK
KyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBjcmVhdGVDb21wb3NpdGVkV2ViVmlld0lt
cGwobV9iYXNlVVJMICsgIm5vbl9mYXN0X3Njcm9sbGFibGUuaHRtbCIpOworCisgICAgV2ViTGF5
ZXIqIHJvb3RTY3JvbGxMYXllciA9IGdldFJvb3RTY3JvbGxMYXllcih3ZWJWaWV3SW1wbCk7Cisg
ICAgV2ViVmVjdG9yPFdlYlJlY3Q+IG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uID0gcm9vdFNjcm9s
bExheWVyLT5ub25GYXN0U2Nyb2xsYWJsZVJlZ2lvbigpOworCisgICAgQVNTRVJUX0VRKDF1LCBu
b25GYXN0U2Nyb2xsYWJsZVJlZ2lvbi5zaXplKCkpOworICAgIEFTU0VSVF9FUShXZWJSZWN0KDgs
IDgsIDEwLCAxMCksIG5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uWzBdKTsKK30KKworVEVTVF9GKFNj
cm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0LCB3aGVlbEV2ZW50SGFuZGxlcikKK3sKKyAg
ICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ3aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwiKTsK
KyAgICBXZWJWaWV3SW1wbCogd2ViVmlld0ltcGwgPSBjcmVhdGVDb21wb3NpdGVkV2ViVmlld0lt
cGwobV9iYXNlVVJMICsgIndoZWVsX2V2ZW50X2hhbmRsZXIuaHRtbCIpOworCisgICAgV2ViTGF5
ZXIqIHJvb3RTY3JvbGxMYXllciA9IGdldFJvb3RTY3JvbGxMYXllcih3ZWJWaWV3SW1wbCk7Cisg
ICAgQVNTRVJUX1RSVUUocm9vdFNjcm9sbExheWVyLT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkp
OworfQorCisjaWYgRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKK1RFU1Rf
RihTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCwgdG91Y2hPdmVyZmxvd1Njcm9sbGlu
ZykKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0dHBVUkxMb2FkKCJ0b3VjaF9vdmVyZmxvd19zY3Jv
bGxpbmcuaHRtbCIpOworICAgIFdlYlZpZXdJbXBsKiB3ZWJWaWV3SW1wbCA9IGNyZWF0ZUNvbXBv
c2l0ZWRXZWJWaWV3SW1wbChtX2Jhc2VVUkwgKyAidG91Y2hfb3ZlcmZsb3dfc2Nyb2xsaW5nLmh0
bWwiKTsKKworICAgIC8vIFZlcmlmeSB0aGUgcHJvcGVydGllcyBvZiB0aGUgYWNjZWxlcmF0ZWQg
c2Nyb2xsaW5nIGVsZW1lbnQgc3RhcnRpbmcgZnJvbSB0aGUgUmVuZGVyT2JqZWN0CisgICAgLy8g
YWxsIHRoZSB3YXkgdG8gdGhlIFdlYkxheWVyLgorICAgIEVsZW1lbnQqIHNjcm9sbGFibGVFbGVt
ZW50ID0gd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+
Z2V0RWxlbWVudEJ5SWQoInNjcm9sbGFibGUiKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUVsZW1l
bnQpOworCisgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNjcm9sbGFibGVFbGVtZW50LT5y
ZW5kZXJlcigpOworICAgIEFTU0VSVF9UUlVFKHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkp
OworICAgIEFTU0VSVF9UUlVFKHJlbmRlcmVyLT5oYXNMYXllcigpKTsKKworICAgIFJlbmRlckxh
eWVyKiBsYXllciA9IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOwor
ICAgIEFTU0VSVF9UUlVFKGxheWVyLT51c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKTsKKyAgICBB
U1NFUlRfVFJVRShsYXllci0+aXNDb21wb3NpdGVkKCkpOworCisgICAgUmVuZGVyTGF5ZXJCYWNr
aW5nKiBsYXllckJhY2tpbmcgPSBsYXllci0+YmFja2luZygpOworICAgIEFTU0VSVF9UUlVFKGxh
eWVyQmFja2luZy0+aGFzU2Nyb2xsaW5nTGF5ZXIoKSk7CisgICAgQVNTRVJUKGxheWVyQmFja2lu
Zy0+c2Nyb2xsaW5nQ29udGVudHNMYXllcigpKTsKKworICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1
bSogZ3JhcGhpY3NMYXllckNocm9taXVtID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9t
aXVtKj4obGF5ZXJCYWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCkpOworICAgIEFTU0VS
VF9FUShsYXllciwgZ3JhcGhpY3NMYXllckNocm9taXVtLT5zY3JvbGxhYmxlQXJlYSgpKTsKKwor
ICAgIFdlYkxheWVyKiB3ZWJTY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PFdlYkxheWVyKj4obGF5
ZXJCYWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7Cisg
ICAgQVNTRVJUX1RSVUUod2ViU2Nyb2xsTGF5ZXItPnNjcm9sbGFibGUoKSk7Cit9CisjZW5kaWYg
Ly8gRU5BQkxFKEFDQ0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKKworfSAvLyBuYW1lc3Bh
Y2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZF9w
b3NpdGlvbi5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpeGVkX3Bv
c2l0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDBmZDY3YWM3ZjhjZDFiZWFkYzRmNTBkZGI2OTA1OTBj
MmZjYjdkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
ZGF0YS9maXhlZF9wb3NpdGlvbi5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQRSBodG1s
PgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjZml4ZWQg
eworICAgICAgcG9zaXRpb246IGZpeGVkOworICAgICAgLyogVXNlIGEgc3RhY2tpbmcgY29udGV4
dCB0byBlbmFibGUgY29tcG9zaXRpb24uICovCisgICAgICB6LWluZGV4OiAwOworICAgIH0KKyAg
PC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgaWQ9ImZpeGVkIj4KKyAgICBGaXhl
ZCBwb3NpdGlvbmVkLgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbl9ub25fY29tcG9z
aXRlZC5odG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpeGVkX3Bvc2l0
aW9uX25vbl9jb21wb3NpdGVkLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjJmZmQyNmI3NWMxZTE1MjY1NGU2
MmQ1MWQyYjdlZDUyYmFiMmY2YwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvZGF0YS9maXhlZF9wb3NpdGlvbl9ub25fY29tcG9zaXRlZC5odG1sCkBAIC0w
LDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5
cGU9InRleHQvY3NzIj4KKyAgICAuZml4ZWQgeworICAgICAgcG9zaXRpb246IGZpeGVkOworICAg
IH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxkaXYgY2xhc3M9ImZpeGVkIj4K
KyAgICBGaXhlZCBwb3NpdGlvbmVkLgorICA8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9ub25fZmFzdF9zY3JvbGxh
YmxlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9uX2Zhc3Rfc2Ny
b2xsYWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzNkMjU0ZDdjZjg1MmU5YzllNWE4OTM4NDE2ZmEx
YTIzZjRiNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvbm9uX2Zhc3Rfc2Nyb2xsYWJsZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAu
c2Nyb2xsYWJsZSB7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhlaWdodDogMTBweDsKKyAg
ICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9k
eT4KKyAgPGRpdiBjbGFzcz0ic2Nyb2xsYWJsZSI+CisgICAgU2Nyb2xsaW5nIGNvbnRlbnQuCisg
IDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGluZy5odG1sIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3RvdWNoX292ZXJmbG93X3Njcm9sbGluZy5odG1sCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjI1OTcyYWEyZWQ0ZjEwNGFlMTc0MDFkNjRiMWQwNjY0OGM3NGNiYmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2RhdGEvdG91Y2hfb3Zl
cmZsb3dfc2Nyb2xsaW5nLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFET0NUWVBFIGh0bWw+Cis8
aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorICAgICNzY3JvbGxhYmxl
IHsKKyAgICAgIHdpZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4OworICAgICAgb3ZlcmZs
b3c6IHNjcm9sbDsKKyAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xsaW5nOiB0b3VjaDsKKyAg
ICB9CisgICAgLmNvbnRlbnQgeworICAgICAgd2lkdGg6IDEwMHB4OworICAgICAgaGVpZ2h0OiAx
MDAwcHg7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBpZD0i
c2Nyb2xsYWJsZSI+CisgICAgPGRpdiBjbGFzcz0iY29udGVudCI+PC9kaXY+CisgIDwvZGl2Pgor
PC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9kYXRhL3doZWVsX2V2ZW50X2hhbmRsZXIuaHRtbCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
dGVzdHMvZGF0YS93aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2U0NTBhNGVj
ZTY3NjkwMjgwY2ZkNGUxMDBhNGM1YzEyZjBmNGRjNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS93aGVlbF9ldmVudF9oYW5kbGVyLmh0bWwKQEAg
LTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcign
bW91c2V3aGVlbCcsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICB9KTsKKyAgPC9zY3JpcHQ+Cis8
L2hlYWQ+CisKKzwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165127</attachid>
            <date>2012-09-21 06:41:28 -0700</date>
            <delta_ts>2012-09-21 07:11:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96657-20120921144052.patch</filename>
            <type>text/plain</type>
            <size>16278</size>
            <attacher name="Sami Kyöstilä">skyostil</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5MjA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDc2NDZlYzQxNDYyYjQxYjczY2Q2NGIyMGRjZDU3ZmQ1Y2U5MDFjMjQuLjkxYWY5Y2JkNzIzOTA1
Y2NiMDI0ZWE4ZTgzZDljNWIyNzc1MjlkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTItMDktMTMgIFNhbWkgS3lvc3RpbGEgIDxza3lvc3RpbEBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBBZGQgdGVzdCBmb3IgU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTY2NTcKKworICAgICAgICBSZXZpZXdlZCBieSBKYW1lcyBSb2JpbnNvbi4KKwor
ICAgICAgICBBZGQgdGVzdHMgZm9yIFNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW0uIFRoZXNl
IHRlc3RzIG1haW5seSB2ZXJpZnkgdGhhdAorICAgICAgICBmYXN0IChub24tbWFpbiB0aHJlYWQp
IHNjcm9sbGluZyBpcyBlbmFibGVkIHdoZW4gbmVjZXNzYXJ5IGFuZCB0aGF0IGEgcHJvcGVyCisg
ICAgICAgIGNvbXBvc2l0aW5nIGxheWVyIHN0cnVjdHVyZSBpcyBjcmVhdGVkIGZvciBmaXhlZCBw
b3NpdGlvbiBhbmQgYWNjZWxlcmF0ZWQKKyAgICAgICAgc2Nyb2xsaW5nIGxheWVycy4KKworICAg
ICAgICBUZXN0czogU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuZmFzdFNjcm9sbGlu
Z0J5RGVmYXVsdAorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRl
c3QuZmFzdFNjcm9sbGluZ0ZvckZpeGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgIFNjcm9sbGlu
Z0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0Lm5vbkZhc3RTY3JvbGxhYmxlUmVnaW9uCisgICAgICAg
ICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdC53aGVlbEV2ZW50SGFuZGxl
cgorICAgICAgICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QudG91Y2hP
dmVyZmxvd1Njcm9sbGluZworCisgICAgICAgICogV2ViS2l0Lmd5cGk6CisgICAgICAgICogdGVz
dHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdCk6CisgICAgICAgIChNb2NrV2ViVmlld0NsaWVudCk6CisgICAgICAgIChTY3JvbGxp
bmdDb29yZGluYXRvckNocm9taXVtVGVzdCk6CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nv
b3JkaW5hdG9yQ2hyb21pdW1UZXN0OjpTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCk6
CisgICAgICAgIChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0OjpjcmVh
dGVDb21wb3NpdGVkV2ViVmlld0ltcGwpOgorICAgICAgICAoV2ViS2l0OjpTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtVGVzdDo6cmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCk6CisgICAgICAg
IChXZWJLaXQ6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0OjpnZXRSb290U2Nyb2xs
TGF5ZXIpOgorICAgICAgICAoV2ViS2l0OjpURVNUX0YpOgorICAgICAgICAqIHRlc3RzL2RhdGEv
Zml4ZWRfcG9zaXRpb24uaHRtbDogQWRkZWQuCisgICAgICAgICogdGVzdHMvZGF0YS9ub25fZmFz
dF9zY3JvbGxhYmxlLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvdG91Y2hfb3Zl
cmZsb3dfc2Nyb2xsaW5nLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHRlc3RzL2RhdGEvd2hlZWxf
ZXZlbnRfaGFuZGxlci5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0yMCAgVG9ueSBDaGFuZyAgPHRv
bnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gVW5yZXZpZXdlZCBidWlsZCBm
aXguIHdlYmtpdF91bml0X3Rlc3RzIGhhdmUgZ2xvYmFsIGNvbnN0cnVjdG9ycy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9QbGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaCBiL1NvdXJjZS9Q
bGF0Zm9ybS9jaHJvbWl1bS9wdWJsaWMvV2ViTGF5ZXIuaAppbmRleCAxYmZmN2VmZTNkNWEzMTY5
MTAyMmU4ZWQzZjcwZmM4YjBiNjkxNzJlLi4zYzliOTk3OWZmOTIyZTE4ZTAxMDJjMDY5OWZiZTM0
M2UyNTBiYzAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvUGxhdGZvcm0vY2hyb21pdW0vcHVibGljL1dl
YkxheWVyLmgKKysrIGIvU291cmNlL1BsYXRmb3JtL2Nocm9taXVtL3B1YmxpYy9XZWJMYXllci5o
CkBAIC0xNjksMTIgKzE2OSwyNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBXZWJQb2ludCBzY3Jv
bGxQb3NpdGlvbigpIGNvbnN0ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzZXRNYXhTY3JvbGxQ
b3NpdGlvbihXZWJTaXplKSA9IDA7CisgICAgdmlydHVhbCBXZWJTaXplIG1heFNjcm9sbFBvc2l0
aW9uKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2b2lkIHNldFNjcm9sbGFibGUoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgYm9vbCBzY3JvbGxhYmxlKCkgY29uc3QgPSAwOworCiAgICAgdmly
dHVhbCB2b2lkIHNldEhhdmVXaGVlbEV2ZW50SGFuZGxlcnMoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgYm9vbCBoYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVh
bCB2b2lkIHNldFNob3VsZFNjcm9sbE9uTWFpblRocmVhZChib29sKSA9IDA7CisgICAgdmlydHVh
bCBib29sIHNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpIGNvbnN0ID0gMDsKKwogICAgIHZpcnR1
YWwgdm9pZCBzZXROb25GYXN0U2Nyb2xsYWJsZVJlZ2lvbihjb25zdCBXZWJWZWN0b3I8V2ViUmVj
dD4mKSA9IDA7CisgICAgdmlydHVhbCBXZWJWZWN0b3I8V2ViUmVjdD4gbm9uRmFzdFNjcm9sbGFi
bGVSZWdpb24oKSBjb25zdCA9IDA7CisKICAgICB2aXJ0dWFsIHZvaWQgc2V0SXNDb250YWluZXJG
b3JGaXhlZFBvc2l0aW9uTGF5ZXJzKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250
YWluZXJGb3JGaXhlZFBvc2l0aW9uTGF5ZXJzKCkgY29uc3QgPSAwOworCiAgICAgdmlydHVhbCB2
b2lkIHNldEZpeGVkVG9Db250YWluZXJMYXllcihib29sKSA9IDA7CisgICAgdmlydHVhbCBib29s
IGZpeGVkVG9Db250YWluZXJMYXllcigpIGNvbnN0ID0gMDsKIAogICAgIC8vIFRoZSBzY3JvbGwg
Y2xpZW50IGlzIG5vdGlmaWVkIHdoZW4gdGhlIHNjcm9sbCBwb3NpdGlvbiBvZiB0aGUgV2ViTGF5
ZXIKICAgICAvLyBjaGFuZ2VzLiBPbmx5IGEgc2luZ2xlIHNjcm9sbCBjbGllbnQgY2FuIGJlIHNl
dCBmb3IgYSBXZWJMYXllciBhdCBhIHRpbWUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggMWY4N2VlNWQ4N2EzMTVlOTY3MDM2NWFlYjg0OTVjYzA4NjY1OWNiMS4uNzA5ZjBkOWVlNmI3
YzQ3ODVjN2VmODVjZWNkYzdlNzEyYjkwODJjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cApAQCAtNzE0LDYgKzcxNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0
ZXN0cy9Qb3B1cE1lbnVUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICd0ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICd0ZXN0cy9SZW5kZXJUYWJsZVJvd1Rlc3QuY3BwJywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgJ3Rlc3RzL1Njcm9sbGluZ0Nvb3JkaW5hdG9yQ2hyb21pdW1UZXN0
LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9VUkxUZXN0SGVs
cGVycy5jcHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdHMvV2ViRnJh
bWVUZXN0LmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXN0cy9XZWJJ
bWFnZVRlc3QuY3BwJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0
Lmd5cGkgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXBpCmluZGV4IDE0MDUzOWYy
ZDRjMWJmZjk1NmNmN2VlMDE1ZDJiZThkNDNhYmNkZjkuLmY0MjhjYjEzMGI3ZDY2N2U1OGY4Yjlm
ZWRiNjUxZDliNzgwMDYxODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cGkKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwaQpAQCAtOTcs
NiArOTcsNyBAQAogICAgICAgICAgICAgJ3Rlc3RzL1JlZ2lvblRlc3QuY3BwJywKICAgICAgICAg
ICAgICd0ZXN0cy9SZW5kZXJUYWJsZUNlbGxUZXN0LmNwcCcsCiAgICAgICAgICAgICAndGVzdHMv
UmVuZGVyVGFibGVSb3dUZXN0LmNwcCcsCisgICAgICAgICAgICAndGVzdHMvU2Nyb2xsaW5nQ29v
cmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwJywKICAgICAgICAgICAgICd0ZXN0cy9UaWxpbmdEYXRh
VGVzdC5jcHAnLAogICAgICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5jcHAnLAogICAg
ICAgICAgICAgJ3Rlc3RzL1RyZWVUZXN0SGVscGVycy5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9TY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtVGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRmYTRhMWRiZjc0NDUwYjUyYTIxOGFjY2MyOWE5M2Q4
ODM0MzIxZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QuY3BwCkBAIC0wLDAgKzEsMjE3IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiAgUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
IElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQorICog
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKKyAqIExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTgorICogQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCisg
KiBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbmNsdWRlICJTY3JvbGxpbmdD
b29yZGluYXRvci5oIgorCisjaW5jbHVkZSAiQ29tcG9zaXRvckZha2VXZWJHcmFwaGljc0NvbnRl
eHQzRC5oIgorI2luY2x1ZGUgIkZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZS5oIgorI2lu
Y2x1ZGUgIkZyYW1lVGVzdEhlbHBlcnMuaCIKKyNpbmNsdWRlICJSZW5kZXJMYXllckNvbXBvc2l0
b3IuaCIKKyNpbmNsdWRlICJSZW5kZXJWaWV3LmgiCisjaW5jbHVkZSAiVVJMVGVzdEhlbHBlcnMu
aCIKKyNpbmNsdWRlICJXZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXIuaCIKKyNpbmNsdWRlICJXZWJG
cmFtZUNsaWVudC5oIgorI2luY2x1ZGUgIldlYkZyYW1lSW1wbC5oIgorI2luY2x1ZGUgIldlYlNl
dHRpbmdzLmgiCisjaW5jbHVkZSAiV2ViVmlld0NsaWVudC5oIgorI2luY2x1ZGUgIldlYlZpZXdJ
bXBsLmgiCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViQ29t
cG9zaXRvclN1cHBvcnQuaD4KKyNpbmNsdWRlIDxwdWJsaWMvV2ViTGF5ZXIuaD4KKyNpbmNsdWRl
IDx3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oPgorCisjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykKKyNpbmNsdWRlICJHcmFwaGljc0xheWVyQ2hyb21pdW0u
aCIKKyNlbmRpZgorCit1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKK3VzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CisKK25hbWVzcGFjZSB7CisKK2NsYXNzIE1vY2tXZWJWaWV3Q2xpZW50IDogcHVibGlj
IFdlYlZpZXdDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgV2ViQ29tcG9zaXRvck91dHB1
dFN1cmZhY2UqIGNyZWF0ZU91dHB1dFN1cmZhY2UoKSBPVkVSUklERQorICAgIHsKKyAgICAgICAg
cmV0dXJuIEZha2VXZWJDb21wb3NpdG9yT3V0cHV0U3VyZmFjZTo6Y3JlYXRlKENvbXBvc2l0b3JG
YWtlV2ViR3JhcGhpY3NDb250ZXh0M0Q6OmNyZWF0ZShXZWJHcmFwaGljc0NvbnRleHQzRDo6QXR0
cmlidXRlcygpKSkubGVha1B0cigpOworICAgIH0KK307CisKK2NsYXNzIE1vY2tXZWJGcmFtZUNs
aWVudCA6IHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7Cit9OworCitjbGFzcyBTY3JvbGxpbmdDb29y
ZGluYXRvckNocm9taXVtVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3B1YmxpYzoKKyAg
ICBTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVzdCgpCisgICAgICAgIDogbV9iYXNlVVJM
KCJodHRwOi8vd3d3LnRlc3QuY29tLyIpCisgICAgICAgICwgbV93ZWJDb21wb3NpdG9ySW5pdGlh
bGl6ZXIoMCkKKyAgICB7CisgICAgICAgIC8vIFdlIGNhbm5vdCByZXVzZSBGcmFtZVRlc3RIZWxw
ZXJzOjpjcmVhdGVXZWJWaWV3QW5kTG9hZCBoZXJlIGJlY2F1c2UgdGhlIGNvbXBvc2l0aW5nCisg
ICAgICAgIC8vIHNldHRpbmdzIG5lZWQgdG8gYmUgc2V0IGJlZm9yZSB0aGUgcGFnZSBpcyBsb2Fk
ZWQuCisgICAgICAgIG1fd2ViVmlld0ltcGwgPSBzdGF0aWNfY2FzdDxXZWJWaWV3SW1wbCo+KFdl
YlZpZXc6OmNyZWF0ZSgmbV9tb2NrV2ViVmlld0NsaWVudCkpOworICAgICAgICBtX3dlYlZpZXdJ
bXBsLT5zZXR0aW5ncygpLT5zZXRKYXZhU2NyaXB0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgbV93
ZWJWaWV3SW1wbC0+c2V0dGluZ3MoKS0+c2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1ZSk7Cisg
ICAgICAgIG1fd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEFjY2VsZXJhdGVkQ29tcG9zaXRp
bmdFbmFibGVkKHRydWUpOworICAgICAgICBtX3dlYlZpZXdJbXBsLT5zZXR0aW5ncygpLT5zZXRB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nRm9yRml4ZWRQb3NpdGlvbkVuYWJsZWQodHJ1ZSk7CisgICAg
ICAgIG1fd2ViVmlld0ltcGwtPnNldHRpbmdzKCktPnNldEZpeGVkUG9zaXRpb25DcmVhdGVzU3Rh
Y2tpbmdDb250ZXh0KHRydWUpOworICAgICAgICBtX3dlYlZpZXdJbXBsLT5pbml0aWFsaXplTWFp
bkZyYW1lKCZtX21vY2tXZWJGcmFtZUNsaWVudCk7CisgICAgICAgIG1fd2ViVmlld0ltcGwtPnJl
c2l6ZShJbnRTaXplKDMyMCwgMjQwKSk7CisgICAgfQorCisgICAgdmlydHVhbCB+U2Nyb2xsaW5n
Q29vcmRpbmF0b3JDaHJvbWl1bVRlc3QoKQorICAgIHsKKyAgICAgICAgd2Via2l0X3N1cHBvcnQ6
OlVucmVnaXN0ZXJBbGxNb2NrZWRVUkxzKCk7CisgICAgICAgIG1fd2ViVmlld0ltcGwtPmNsb3Nl
KCk7CisgICAgfQorCisgICAgdm9pZCBuYXZpZ2F0ZVRvKGNvbnN0IHN0ZDo6c3RyaW5nJiB1cmwp
CisgICAgeworICAgICAgICBGcmFtZVRlc3RIZWxwZXJzOjpsb2FkRnJhbWUobV93ZWJWaWV3SW1w
bC0+bWFpbkZyYW1lKCksIHVybCk7CisgICAgICAgIHdlYmtpdF9zdXBwb3J0OjpTZXJ2ZUFzeW5j
aHJvbm91c01vY2tlZFJlcXVlc3RzKCk7CisgICAgfQorCisgICAgdm9pZCByZWdpc3Rlck1vY2tl
ZEh0dHBVUkxMb2FkKGNvbnN0IHN0ZDo6c3RyaW5nJiBmaWxlTmFtZSkKKyAgICB7CisgICAgICAg
IFVSTFRlc3RIZWxwZXJzOjpyZWdpc3Rlck1vY2tlZFVSTEZyb21CYXNlVVJMKFdlYlN0cmluZzo6
ZnJvbVVURjgobV9iYXNlVVJMLmNfc3RyKCkpLCBXZWJTdHJpbmc6OmZyb21VVEY4KGZpbGVOYW1l
LmNfc3RyKCkpKTsKKyAgICB9CisKKyAgICBXZWJMYXllciogZ2V0Um9vdFNjcm9sbExheWVyKCkK
KyAgICB7CisgICAgICAgIFJlbmRlckxheWVyQ29tcG9zaXRvciogY29tcG9zaXRvciA9IG1fd2Vi
Vmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+Y29udGVudFJlbmRlcmVyKCktPmNv
bXBvc2l0b3IoKTsKKyAgICAgICAgQVNTRVJUKGNvbXBvc2l0b3IpOworICAgICAgICBBU1NFUlQo
Y29tcG9zaXRvci0+c2Nyb2xsTGF5ZXIoKSk7CisKKyAgICAgICAgV2ViTGF5ZXIqIHdlYlNjcm9s
bExheWVyID0gc3RhdGljX2Nhc3Q8V2ViTGF5ZXIqPihjb21wb3NpdG9yLT5zY3JvbGxMYXllcigp
LT5wbGF0Zm9ybUxheWVyKCkpOworICAgICAgICByZXR1cm4gd2ViU2Nyb2xsTGF5ZXI7CisgICAg
fQorCitwcm90ZWN0ZWQ6CisgICAgc3RkOjpzdHJpbmcgbV9iYXNlVVJMOworICAgIE1vY2tXZWJG
cmFtZUNsaWVudCBtX21vY2tXZWJGcmFtZUNsaWVudDsKKyAgICBNb2NrV2ViVmlld0NsaWVudCBt
X21vY2tXZWJWaWV3Q2xpZW50OworICAgIFdlYktpdFRlc3RzOjpXZWJDb21wb3NpdG9ySW5pdGlh
bGl6ZXIgbV93ZWJDb21wb3NpdG9ySW5pdGlhbGl6ZXI7CisgICAgV2ViVmlld0ltcGwqIG1fd2Vi
Vmlld0ltcGw7Cit9OworCitURVNUX0YoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3Qs
IGZhc3RTY3JvbGxpbmdCeURlZmF1bHQpCit7CisgICAgbmF2aWdhdGVUbygiYWJvdXQ6Ymxhbmsi
KTsKKworICAgIC8vIE1ha2Ugc3VyZSB0aGUgc2Nyb2xsaW5nIGNvb3JkaW5hdG9yIGlzIGFjdGl2
ZS4KKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IG1fd2ViVmlld0ltcGwtPm1haW5GcmFtZUlt
cGwoKS0+ZnJhbWVWaWV3KCk7CisgICAgUGFnZSogcGFnZSA9IG1fd2ViVmlld0ltcGwtPm1haW5G
cmFtZUltcGwoKS0+ZnJhbWUoKS0+cGFnZSgpOworICAgIEFTU0VSVF9UUlVFKHBhZ2UtPnNjcm9s
bGluZ0Nvb3JkaW5hdG9yKCkpOworICAgIEFTU0VSVF9UUlVFKHBhZ2UtPnNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCktPmNvb3JkaW5hdGVzU2Nyb2xsaW5nRm9yRnJhbWVWaWV3KGZyYW1lVmlldykpOwor
CisgICAgLy8gRmFzdCBzY3JvbGxpbmcgc2hvdWxkIGJlIGVuYWJsZWQgYnkgZGVmYXVsdC4KKyAg
ICBXZWJMYXllciogcm9vdFNjcm9sbExheWVyID0gZ2V0Um9vdFNjcm9sbExheWVyKCk7CisgICAg
QVNTRVJUX1RSVUUocm9vdFNjcm9sbExheWVyLT5zY3JvbGxhYmxlKCkpOworICAgIEFTU0VSVF9G
QUxTRShyb290U2Nyb2xsTGF5ZXItPnNob3VsZFNjcm9sbE9uTWFpblRocmVhZCgpKTsKKyAgICBB
U1NFUlRfRkFMU0Uocm9vdFNjcm9sbExheWVyLT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpOwor
fQorCitURVNUX0YoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QsIGZhc3RTY3JvbGxp
bmdGb3JGaXhlZFBvc2l0aW9uKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoImZp
eGVkLXBvc2l0aW9uLmh0bWwiKTsKKyAgICBuYXZpZ2F0ZVRvKG1fYmFzZVVSTCArICJmaXhlZC1w
b3NpdGlvbi5odG1sIik7CisKKyAgICBQYWdlKiBwYWdlID0gbV93ZWJWaWV3SW1wbC0+bWFpbkZy
YW1lSW1wbCgpLT5mcmFtZSgpLT5wYWdlKCk7CisgICAgQVNTRVJUX1RSVUUocGFnZS0+c2Nyb2xs
aW5nQ29vcmRpbmF0b3IoKS0+c3VwcG9ydHNGaXhlZFBvc2l0aW9uTGF5ZXJzKCkpOworCisgICAg
Ly8gRml4ZWQgcG9zaXRpb24gc2hvdWxkIG5vdCBmYWxsIGJhY2sgdG8gbWFpbiB0aHJlYWQgc2Ny
b2xsaW5nLgorICAgIFdlYkxheWVyKiByb290U2Nyb2xsTGF5ZXIgPSBnZXRSb290U2Nyb2xsTGF5
ZXIoKTsKKyAgICBBU1NFUlRfRkFMU0Uocm9vdFNjcm9sbExheWVyLT5zaG91bGRTY3JvbGxPbk1h
aW5UaHJlYWQoKSk7CisKKyAgICAvLyBWZXJpZnkgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGZpeGVk
IHBvc2l0aW9uIGVsZW1lbnQgc3RhcnRpbmcgZnJvbSB0aGUgUmVuZGVyT2JqZWN0IGFsbCB0aGUK
KyAgICAvLyB3YXkgdG8gdGhlIFdlYkxheWVyLgorICAgIEVsZW1lbnQqIGZpeGVkRWxlbWVudCA9
IG1fd2ViVmlld0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Z2V0
RWxlbWVudEJ5SWQoImZpeGVkIik7CisgICAgQVNTRVJUKGZpeGVkRWxlbWVudCk7CisKKyAgICBS
ZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gZml4ZWRFbGVtZW50LT5yZW5kZXJlcigpOworICAgIEFT
U0VSVF9UUlVFKHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpOworICAgIEFTU0VSVF9UUlVF
KHJlbmRlcmVyLT5oYXNMYXllcigpKTsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9IHRvUmVu
ZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAgIEFTU0VSVF9UUlVFKGxh
eWVyLT5pc0NvbXBvc2l0ZWQoKSk7CisKKyAgICBSZW5kZXJMYXllckJhY2tpbmcqIGxheWVyQmFj
a2luZyA9IGxheWVyLT5iYWNraW5nKCk7CisgICAgV2ViTGF5ZXIqIHdlYkxheWVyID0gc3RhdGlj
X2Nhc3Q8V2ViTGF5ZXIqPihsYXllckJhY2tpbmctPmdyYXBoaWNzTGF5ZXIoKS0+cGxhdGZvcm1M
YXllcigpKTsKKyAgICBBU1NFUlRfVFJVRSh3ZWJMYXllci0+Zml4ZWRUb0NvbnRhaW5lckxheWVy
KCkpOworfQorCitURVNUX0YoU2Nyb2xsaW5nQ29vcmRpbmF0b3JDaHJvbWl1bVRlc3QsIG5vbkZh
c3RTY3JvbGxhYmxlUmVnaW9uKQoreworICAgIHJlZ2lzdGVyTW9ja2VkSHR0cFVSTExvYWQoIm5v
bi1mYXN0LXNjcm9sbGFibGUuaHRtbCIpOworICAgIG5hdmlnYXRlVG8obV9iYXNlVVJMICsgIm5v
bi1mYXN0LXNjcm9sbGFibGUuaHRtbCIpOworCisgICAgV2ViTGF5ZXIqIHJvb3RTY3JvbGxMYXll
ciA9IGdldFJvb3RTY3JvbGxMYXllcigpOworICAgIFdlYlZlY3RvcjxXZWJSZWN0PiBub25GYXN0
U2Nyb2xsYWJsZVJlZ2lvbiA9IHJvb3RTY3JvbGxMYXllci0+bm9uRmFzdFNjcm9sbGFibGVSZWdp
b24oKTsKKworICAgIEFTU0VSVF9FUSgxdSwgbm9uRmFzdFNjcm9sbGFibGVSZWdpb24uc2l6ZSgp
KTsKKyAgICBBU1NFUlRfRVEoV2ViUmVjdCg4LCA4LCAxMCwgMTApLCBub25GYXN0U2Nyb2xsYWJs
ZVJlZ2lvblswXSk7Cit9CisKK1RFU1RfRihTY3JvbGxpbmdDb29yZGluYXRvckNocm9taXVtVGVz
dCwgd2hlZWxFdmVudEhhbmRsZXIpCit7CisgICAgcmVnaXN0ZXJNb2NrZWRIdHRwVVJMTG9hZCgi
d2hlZWwtZXZlbnQtaGFuZGxlci5odG1sIik7CisgICAgbmF2aWdhdGVUbyhtX2Jhc2VVUkwgKyAi
d2hlZWwtZXZlbnQtaGFuZGxlci5odG1sIik7CisKKyAgICBXZWJMYXllciogcm9vdFNjcm9sbExh
eWVyID0gZ2V0Um9vdFNjcm9sbExheWVyKCk7CisgICAgQVNTRVJUX1RSVUUocm9vdFNjcm9sbExh
eWVyLT5oYXZlV2hlZWxFdmVudEhhbmRsZXJzKCkpOworfQorCisjaWYgRU5BQkxFKEFDQ0VMRVJB
VEVEX09WRVJGTE9XX1NDUk9MTElORykKK1RFU1RfRihTY3JvbGxpbmdDb29yZGluYXRvckNocm9t
aXVtVGVzdCwgdG91Y2hPdmVyZmxvd1Njcm9sbGluZykKK3sKKyAgICByZWdpc3Rlck1vY2tlZEh0
dHBVUkxMb2FkKCJ0b3VjaC1vdmVyZmxvdy1zY3JvbGxpbmcuaHRtbCIpOworICAgIG5hdmlnYXRl
VG8obV9iYXNlVVJMICsgInRvdWNoLW92ZXJmbG93LXNjcm9sbGluZy5odG1sIik7CisKKyAgICAv
LyBWZXJpZnkgdGhlIHByb3BlcnRpZXMgb2YgdGhlIGFjY2VsZXJhdGVkIHNjcm9sbGluZyBlbGVt
ZW50IHN0YXJ0aW5nIGZyb20gdGhlIFJlbmRlck9iamVjdAorICAgIC8vIGFsbCB0aGUgd2F5IHRv
IHRoZSBXZWJMYXllci4KKyAgICBFbGVtZW50KiBzY3JvbGxhYmxlRWxlbWVudCA9IG1fd2ViVmll
d0ltcGwtPm1haW5GcmFtZUltcGwoKS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5
SWQoInNjcm9sbGFibGUiKTsKKyAgICBBU1NFUlQoc2Nyb2xsYWJsZUVsZW1lbnQpOworCisgICAg
UmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNjcm9sbGFibGVFbGVtZW50LT5yZW5kZXJlcigpOwor
ICAgIEFTU0VSVF9UUlVFKHJlbmRlcmVyLT5pc0JveE1vZGVsT2JqZWN0KCkpOworICAgIEFTU0VS
VF9UUlVFKHJlbmRlcmVyLT5oYXNMYXllcigpKTsKKworICAgIFJlbmRlckxheWVyKiBsYXllciA9
IHRvUmVuZGVyQm94TW9kZWxPYmplY3QocmVuZGVyZXIpLT5sYXllcigpOworICAgIEFTU0VSVF9U
UlVFKGxheWVyLT51c2VzQ29tcG9zaXRlZFNjcm9sbGluZygpKTsKKyAgICBBU1NFUlRfVFJVRShs
YXllci0+aXNDb21wb3NpdGVkKCkpOworCisgICAgUmVuZGVyTGF5ZXJCYWNraW5nKiBsYXllckJh
Y2tpbmcgPSBsYXllci0+YmFja2luZygpOworICAgIEFTU0VSVF9UUlVFKGxheWVyQmFja2luZy0+
aGFzU2Nyb2xsaW5nTGF5ZXIoKSk7CisgICAgQVNTRVJUKGxheWVyQmFja2luZy0+c2Nyb2xsaW5n
Q29udGVudHNMYXllcigpKTsKKworICAgIEdyYXBoaWNzTGF5ZXJDaHJvbWl1bSogZ3JhcGhpY3NM
YXllckNocm9taXVtID0gc3RhdGljX2Nhc3Q8R3JhcGhpY3NMYXllckNocm9taXVtKj4obGF5ZXJC
YWNraW5nLT5zY3JvbGxpbmdDb250ZW50c0xheWVyKCkpOworICAgIEFTU0VSVF9FUShsYXllciwg
Z3JhcGhpY3NMYXllckNocm9taXVtLT5zY3JvbGxhYmxlQXJlYSgpKTsKKworICAgIFdlYkxheWVy
KiB3ZWJTY3JvbGxMYXllciA9IHN0YXRpY19jYXN0PFdlYkxheWVyKj4obGF5ZXJCYWNraW5nLT5z
Y3JvbGxpbmdDb250ZW50c0xheWVyKCktPnBsYXRmb3JtTGF5ZXIoKSk7CisgICAgQVNTRVJUX1RS
VUUod2ViU2Nyb2xsTGF5ZXItPnNjcm9sbGFibGUoKSk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKEFD
Q0VMRVJBVEVEX09WRVJGTE9XX1NDUk9MTElORykKKworfSAvLyBuYW1lc3BhY2UKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZC1wb3NpdGlvbi5odG1s
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL2ZpeGVkLXBvc2l0aW9uLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYmNiNDRlMzU1MmE0NjRmMmMxNDk0N2ZhMjg1MDMzZmMzMjQ5ZTExMQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9maXhlZC1w
b3NpdGlvbi5odG1sCkBAIC0wLDAgKzEsMTYgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8
aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAjZml4ZWQgeworICAgICAgcG9z
aXRpb246IGZpeGVkOworICAgIH0KKyAgPC9zdHlsZT4KKzwvaGVhZD4KKworPGJvZHk+CisgIDxk
aXYgaWQ9ImZpeGVkIj4KKyAgICBGaXhlZCBwb3NpdGlvbmVkLgorICA8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS9u
b24tZmFzdC1zY3JvbGxhYmxlLmh0bWwgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL2Rh
dGEvbm9uLWZhc3Qtc2Nyb2xsYWJsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI2MzNkMjU0ZDdjZjg1MmU5
YzllNWE4OTM4NDE2ZmExYTIzZjRiNDAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3Rlc3RzL2RhdGEvbm9uLWZhc3Qtc2Nyb2xsYWJsZS5odG1sCkBAIC0wLDAgKzEs
MTggQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKyAgPHN0eWxlIHR5cGU9InRl
eHQvY3NzIj4KKyAgICAuc2Nyb2xsYWJsZSB7CisgICAgICB3aWR0aDogMTBweDsKKyAgICAgIGhl
aWdodDogMTBweDsKKyAgICAgIG92ZXJmbG93OiBzY3JvbGw7CisgICAgfQorICA8L3N0eWxlPgor
PC9oZWFkPgorCis8Ym9keT4KKyAgPGRpdiBjbGFzcz0ic2Nyb2xsYWJsZSI+CisgICAgU2Nyb2xs
aW5nIGNvbnRlbnQuCisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3RvdWNoLW92ZXJmbG93LXNjcm9sbGluZy5o
dG1sIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9kYXRhL3RvdWNoLW92ZXJmbG93LXNj
cm9sbGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI1OTcyYWEyZWQ0ZjEwNGFlMTc0MDFkNjRiMWQwNjY0
OGM3NGNiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3Rz
L2RhdGEvdG91Y2gtb3ZlcmZsb3ctc2Nyb2xsaW5nLmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCFE
T0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgor
ICAgICNzY3JvbGxhYmxlIHsKKyAgICAgIHdpZHRoOiAxMHB4OworICAgICAgaGVpZ2h0OiAxMHB4
OworICAgICAgb3ZlcmZsb3c6IHNjcm9sbDsKKyAgICAgIC13ZWJraXQtb3ZlcmZsb3ctc2Nyb2xs
aW5nOiB0b3VjaDsKKyAgICB9CisgICAgLmNvbnRlbnQgeworICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgaGVpZ2h0OiAxMDAwcHg7CisgICAgfQorICA8L3N0eWxlPgorPC9oZWFkPgorCis8Ym9k
eT4KKyAgPGRpdiBpZD0ic2Nyb2xsYWJsZSI+CisgICAgPGRpdiBjbGFzcz0iY29udGVudCI+PC9k
aXY+CisgIDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9kYXRhL3doZWVsLWV2ZW50LWhhbmRsZXIuaHRtbCBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS93aGVlbC1ldmVudC1oYW5kbGVyLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uN2U0NTBhNGVjZTY3NjkwMjgwY2ZkNGUxMDBhNGM1YzEyZjBmNGRjNwotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvZGF0YS93aGVlbC1ldmVudC1o
YW5kbGVyLmh0bWwKQEAgLTAsMCArMSwxMCBAQAorPCFET0NUWVBFIGh0bWw+Cis8aHRtbD4KKzxo
ZWFkPgorICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICB3aW5kb3cuYWRk
RXZlbnRMaXN0ZW5lcignbW91c2V3aGVlbCcsIGZ1bmN0aW9uKGV2ZW50KSB7CisgICAgICB9KTsK
KyAgPC9zY3JpcHQ+Cis8L2hlYWQ+CisKKzwvaHRtbD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>