<?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>39635</bug_id>
          
          <creation_ts>2010-05-24 18:09:40 -0700</creation_ts>
          <short_desc>Improve canvas perf test accuracy.</short_desc>
          <delta_ts>2010-05-25 00:49:01 -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>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="David Levin">levin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>mjs</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>230017</commentid>
    <comment_count>0</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-24 18:09:40 -0700</bug_when>
    <thetext>Improve canvas perf test fairness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230018</commentid>
    <comment_count>1</comment_count>
      <attachid>56953</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-24 18:13:45 -0700</bug_when>
    <thetext>Created attachment 56953
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230020</commentid>
    <comment_count>2</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-24 18:17:19 -0700</bug_when>
    <thetext>With these changes the results in chromium are nearly unchanged, but now the results from the gpu enabled firefox show how long the underlying operations really take.

From my run with Firefox 3.7a4 with the DirectX enabled:
  Direct image copy: 93.5ms
  Indirect copy with (via ImageData): 121.25ms
  Copy with 2x scale: 492ms
  Copy with 0.5x scale 171ms
  Copy with rotate: 10.5 ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230125</commentid>
    <comment_count>3</comment_count>
      <attachid>56981</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-24 23:58:14 -0700</bug_when>
    <thetext>Created attachment 56981
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230130</commentid>
    <comment_count>4</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-25 00:17:00 -0700</bug_when>
    <thetext>From last time, I remove the scale calls that I was sure were needed but apparently were not. (I must have made a mistake in the Javascript code with the context I was using when I hit this issue.)

I fixed a few issues in my last patch:

&gt;  output.innerHTML += &quot;Indirect copy with (via ImageData): &quot; + (time/2) + &quot;ms&lt;br&gt;&quot;;
                                                                                                                    ^^^^ the /2 shouldn&apos;t be here.


&gt;     time = (new Date()) - startDate;
Old time calculation was present before the result for 0.5 scale.

&gt;  time = timeCanvasOperation(scaledDownContext,
                                                       ^^^^ flushing the wrong context.
&gt;          function () {
&gt;              rotatedContext.drawImage(original, 0, -original.height);
&gt;          });

As such the results changed to more accurately reflect perf, for Firefox 3.7a4
  Direct image copy: 96ms
  Indirect copy with (via ImageData): 346ms (No longer dividing by 2 when we shouldn&apos;t)
  Copy with 2x scale: 277ms (likely lower due to allowing garbage collection)
  Copy with 0.5x scale: 44ms (now calc&apos;ing time correctly with subtracting out the overhead)
  Copy with rotate: 120 ms (now flushing the correct context)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230134</commentid>
    <comment_count>5</comment_count>
      <attachid>56981</attachid>
    <who name="Maciej Stachowiak">mjs</who>
    <bug_when>2010-05-25 00:36:55 -0700</bug_when>
    <thetext>Comment on attachment 56981
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230139</commentid>
    <comment_count>6</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-05-25 00:49:01 -0700</bug_when>
    <thetext>Committed as http://trac.webkit.org/changeset/60140</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56953</attachid>
            <date>2010-05-24 18:13:45 -0700</date>
            <delta_ts>2010-05-24 23:58:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39635-20100524181514.patch</filename>
            <type>text/plain</type>
            <size>5994</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFNpdGUvQ2hhbmdlTG9nIGIvV2ViS2l0U2l0ZS9DaGFuZ2VMb2cK
aW5kZXggZDRlM2FlY2ZhNDAwY2I4MmU4OGVhYzEzZjQyNDlmZTQ4YmQyNGU5Ny4uZjYyMGU5NzFl
NWJhNzc2MTE5NWZmOTgzNzNmNWFkMmRiMDBiNjg5ZSAxMDA2NDQKLS0tIGEvV2ViS2l0U2l0ZS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0U2l0ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBAQAorMjAx
MC0wNS0yNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjYW52YXMgcGVyZiB0
ZXN0IGZhaXJuZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk2MzUKKworICAgICAgICAqIGRlbW9zL2NhbnZhcy1wZXJmL2NhbnZhcy5odG1sOgor
ICAgICAgICAgIDEuIENoYW5nZSB0aGUgdmFyaW91cyB0ZXN0cyB0byBnZXQgdGhlIGltYWdlIGRh
dGEgZm9yIHRoZSByZXN1bHQKKyAgICAgICAgICAgICB0byBoZWxwIGVuc3VyZSB0aGF0IHRoZSBv
cGVyYXRpb24gaGFzIGNvbXBsZXRlZCBieSB0aGUgdGltZSwKKyAgICAgICAgICAgICBhbmQgc3Vi
dHJhY3Qgb3V0IHRoZSB0aW1lIG5lZWRlZCB0byBkbyB0aGlzLgorICAgICAgICAgIDIuIE1hZGUg
dGhlIHRlc3QgbW9yZSBmbGV4aWJsZSBhYm91dCBudW1iZXIgb2YgcmVwZXRpdGlvbnMgYW5kCisg
ICAgICAgICAgICAgaW1hZ2Ugc2l6ZS4KKyAgICAgICAgICAzLiBBZGRlZCBhIHNjYWxlIG1hdHJp
eCBmb3IgdGhlIHNjYWxpbmcgdGVzdHMgYmVjYXVzZSBGaXJlZm94CisgICAgICAgICAgICAgZGlk
bid0IGFwcGVhciB0byBiZSBkb2luZyB0aGUgc2NhbGluZyB3aXRob3V0IHRoaXMuCisKIDIwMTAt
MDUtMjAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFJ1YmJlci1z
dGFtcGVkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdFNpdGUvZGVtb3MvY2Fu
dmFzLXBlcmYvY2FudmFzLmh0bWwgYi9XZWJLaXRTaXRlL2RlbW9zL2NhbnZhcy1wZXJmL2NhbnZh
cy5odG1sCmluZGV4IDM5ODIzZjQ5ZTI1MTJjZGQ5MDU0ZDI2NmY2YmQzMWQyODdmNzk4YmEuLjY2
NTRmNWQ1MWNkODQ2NTA1ODIxYTU4OWMyMmI4NGNjYTk3ZjA1MTkgMTAwNjQ0Ci0tLSBhL1dlYktp
dFNpdGUvZGVtb3MvY2FudmFzLXBlcmYvY2FudmFzLmh0bWwKKysrIGIvV2ViS2l0U2l0ZS9kZW1v
cy9jYW52YXMtcGVyZi9jYW52YXMuaHRtbApAQCAtOSwxNSArOSw1MiBAQAogPGNhbnZhcyBpZD0i
c2NhbGVkRG93biIgd2lkdGg9MTYzMiBoZWlnaHQ9MTIyNCBzdHlsZT0id2lkdGg6IDE2MzJweDsg
aGVpZ2h0OiAxMjI0cHgiPjwvY2FudmFzPgogPGNhbnZhcyBpZD0icm90YXRlZCIgd2lkdGg9MjQ0
OCBoZWlnaHQ9MzI2NCBzdHlsZT0id2lkdGg6IDI0NDhweDsgaGVpZ2h0OiAzMjY0cHg7IGJvcmRl
cjogMXB4IHNvbGlkIHJlZDsiPjwvY2FudmFzPgogPHNjcmlwdD4KK3ZhciB3aWR0aCA9IDMyNjQ7
Cit2YXIgaGVpZ2h0ID0gMjQ0ODsKKworZnVuY3Rpb24gZmx1c2hPcGVyYXRpb24oY29udGV4dCkg
eworICAgdmFyIGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIGNvbnRleHQu
Y2FudmFzLndpZHRoLCBjb250ZXh0LmNhbnZhcy5oZWlnaHQpOworfQorCitmdW5jdGlvbiB0aW1l
Q2FudmFzT3BlcmF0aW9uKGNvbnRleHQsIGNhbnZhc09wZXJhdGlvbikgeworICAgIHZhciByZXBl
dGl0aW9ucyA9IDI7CisgICAgdmFyIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7CisKKyAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHJlcGV0aXRpb25zOyArK2kpIHsKKyAgICAgICAgY2FudmFzT3BlcmF0
aW9uKCk7CisgICAgICAgIGZsdXNoT3BlcmF0aW9uKGNvbnRleHQpOworICAgIH0KKyAgICB2YXIg
ZmluaXNoRGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgdmFyIHRpbWVXaXRoT3ZlcmhlYWQgPSBmaW5p
c2hEYXRlIC0gc3RhcnREYXRlOworCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXBldGl0aW9u
czsgKytpKSB7CisgICAgICAgIGZsdXNoT3BlcmF0aW9uKGNvbnRleHQpOworICAgIH0KKyAgICB2
YXIgb3ZlcmhlYWRUaW1lID0gbmV3IERhdGUoKSAtIGZpbmlzaERhdGU7CisgICAgcmV0dXJuICh0
aW1lV2l0aE92ZXJoZWFkIC0gb3ZlcmhlYWRUaW1lKSAvIHJlcGV0aXRpb25zOworfQorCiBmdW5j
dGlvbiBkb1Rlc3QoKSB7CiAgICAgdmFyIG91dHB1dCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJvdXRwdXQiKTsKICAgICB2YXIgaW1hZ2UgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImlt
YWdlIik7CisgICAgaW1hZ2Uud2lkdGggPSB3aWR0aDsKKyAgICBpbWFnZS5oZWlnaHQgPSBoZWln
aHQ7CiAgICAgdmFyIG9yaWdpbmFsID0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJvcmlnaW5h
bCIpOworICAgIG9yaWdpbmFsLndpZHRoID0gd2lkdGg7CisgICAgb3JpZ2luYWwuaGVpZ2h0ID0g
aGVpZ2h0OwogCiAgICAgdmFyIGNvcHkgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvcHki
KTsKKyAgICBjb3B5LndpZHRoID0gd2lkdGg7CisgICAgY29weS5oZWlnaHQgPSBoZWlnaHQ7CiAg
ICAgdmFyIHNjYWxlZFVwID0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2FsZWRVcCIpOwor
ICAgIHNjYWxlZFVwLndpZHRoID0gd2lkdGggKiAyOworICAgIHNjYWxlZFVwLmhlaWdodCA9IGhl
aWdodCAqIDI7CiAgICAgdmFyIHNjYWxlZERvd24gPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InNjYWxlZERvd24iKTsKKyAgICBzY2FsZWREb3duLndpZHRoID0gd2lkdGggLyAyOworICAgIHNj
YWxlZERvd24uaGVpZ2h0ID0gaGVpZ2h0IC8gMjsKICAgICB2YXIgcm90YXRlZCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJyb3RhdGVkIik7CisgICAgcm90YXRlZC53aWR0aCA9IGhlaWdodDsK
KyAgICByb3RhdGVkLmhlaWdodCA9IHdpZHRoOwogCiAgICAgb3JpZ2luYWwuZ2V0Q29udGV4dCgi
MmQiKS5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOwogCkBAIC0yNyw1NSArNjQsNTIgQEAgZnVuY3Rp
b24gZG9UZXN0KCkgewogICAgIHZhciBzY2FsZWREb3duQ29udGV4dCA9IHNjYWxlZERvd24uZ2V0
Q29udGV4dCgiMmQiKTsKICAgICB2YXIgcm90YXRlZENvbnRleHQgPSByb3RhdGVkLmdldENvbnRl
eHQoIjJkIik7CiAKLSAgICB2YXIgc3RhcnREYXRlID0gbmV3IERhdGUoKTsKLSAgICAKICAgICBj
b3B5Q29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRpb24gPSAiY29weSI7Ci0gICAgZm9yICh2
YXIgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAgY29weUNvbnRleHQuZHJhd0ltYWdlKG9y
aWdpbmFsLCAwLCAwKTsKLSAgICB9Ci0KLSAgICB2YXIgdGltZSA9IChuZXcgRGF0ZSgpKSAtIHN0
YXJ0RGF0ZTsKLSAgICBvdXRwdXQuaW5uZXJIVE1MICs9ICJEaXJlY3QgaW1hZ2UgY29weTogIiAr
ICh0aW1lLzIpICsgIm1zPGJyPiI7CisgICAgdmFyIHRpbWUgPSB0aW1lQ2FudmFzT3BlcmF0aW9u
KGNvcHlDb250ZXh0LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBjb3B5Q29u
dGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIDApOworICAgICAgICB9KTsKKyAgICBvdXRwdXQu
aW5uZXJIVE1MICs9ICJEaXJlY3QgaW1hZ2UgY29weTogIiArIHRpbWUgKyAibXM8YnI+IjsKIAog
ICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7CiAgICAgCi0gICAgZm9yICh2YXIgaSA9IDA7IGkg
PCAyOyArK2kpIHsKLSAgICAgICAgdmFyIGltYWdlRGF0YSA9IG9yaWdpbmFsQ29udGV4dC5nZXRJ
bWFnZURhdGEoMCwgMCwgMzI2NCwgMjQ0OCk7Ci0gICAgICAgIGNvcHlDb250ZXh0LnB1dEltYWdl
RGF0YShpbWFnZURhdGEsIDAsIDApOwotICAgIH0KLQotICAgIHRpbWUgPSAobmV3IERhdGUoKSkg
LSBzdGFydERhdGU7CisgICAgdGltZSA9IHRpbWVDYW52YXNPcGVyYXRpb24oY29weUNvbnRleHQs
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBpbWFnZURhdGEgPSBvcmln
aW5hbENvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAg
ICAgY29weUNvbnRleHQucHV0SW1hZ2VEYXRhKGltYWdlRGF0YSwgMCwgMCk7CisgICAgICAgIH0p
OwogICAgIG91dHB1dC5pbm5lckhUTUwgKz0gIkluZGlyZWN0IGNvcHkgd2l0aCAodmlhIEltYWdl
RGF0YSk6ICIgKyAodGltZS8yKSArICJtczxicj4iOwotCi0gICAgc3RhcnREYXRlID0gbmV3IERh
dGUoKTsKICAgICAKICAgICBzY2FsZWRVcENvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9u
ID0gImNvcHkiOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7Ci0gICAgICAgIHNj
YWxlZFVwQ29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIDAsIDY1MjgsIDQ4OTYpOwotICAg
IH0KKyAgICBzY2FsZWRVcENvbnRleHQuc2NhbGUoMiwgMik7CisgICAgdGltZSA9IHRpbWVDYW52
YXNPcGVyYXRpb24oc2NhbGVkVXBDb250ZXh0LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAg
ICAgICAgICBzY2FsZWRVcENvbnRleHQuZHJhd0ltYWdlKG9yaWdpbmFsLCAwLCAwLCB3aWR0aCAq
IDIsIGhlaWdodCAqIDIpOworICAgICAgICB9KTsKIAotICAgIHRpbWUgPSAobmV3IERhdGUoKSkg
LSBzdGFydERhdGU7Ci0gICAgb3V0cHV0LmlubmVySFRNTCArPSAiQ29weSB3aXRoIDJ4IHNjYWxl
OiAiICsgKHRpbWUvMikgKyAibXM8YnI+IjsKKyAgICBvdXRwdXQuaW5uZXJIVE1MICs9ICJDb3B5
IHdpdGggMnggc2NhbGU6ICIgKyB0aW1lICsgIm1zPGJyPiI7CiAKICAgICBzdGFydERhdGUgPSBu
ZXcgRGF0ZSgpOwogICAgIHNjYWxlZERvd25Db250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJhdGlv
biA9ICJjb3B5IjsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBz
Y2FsZWREb3duQ29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIDAsIDE2MzIsIDEyMjQpOwot
ICAgIH0KKyAgICBzY2FsZWREb3duQ29udGV4dC5zY2FsZSgwLjUsIDAuNSk7CisgICAgdGltZSA9
IHRpbWVDYW52YXNPcGVyYXRpb24oc2NhbGVkRG93bkNvbnRleHQsCisgICAgICAgIGZ1bmN0aW9u
ICgpIHsKKyAgICAgICAgICAgIHNjYWxlZERvd25Db250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbCwg
MCwgMCwgd2lkdGggLyAyLCBoZWlnaHQgLyAyKTsKKyAgICAgICAgfSk7CiAKICAgICB0aW1lID0g
KG5ldyBEYXRlKCkpIC0gc3RhcnREYXRlOwotICAgIG91dHB1dC5pbm5lckhUTUwgKz0gIkNvcHkg
d2l0aCAwLjV4IHNjYWxlOiAiICsgKHRpbWUvMikgKyAibXM8YnI+IjsKKyAgICBvdXRwdXQuaW5u
ZXJIVE1MICs9ICJDb3B5IHdpdGggMC41eCBzY2FsZTogIiArIHRpbWUgKyAibXM8YnI+IjsKIAog
ICAgIHN0YXJ0RGF0ZSA9IG5ldyBEYXRlKCk7CiAgICAgcm90YXRlZENvbnRleHQuZ2xvYmFsQ29t
cG9zaXRlT3BlcmF0aW9uID0gImNvcHkiOwogICAgIHJvdGF0ZWRDb250ZXh0LnJvdGF0ZShNYXRo
LlBJIC8gMik7CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICBy
b3RhdGVkQ29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIC1vcmlnaW5hbC5oZWlnaHQpOwot
ICAgIH0KKyAgICB0aW1lID0gdGltZUNhbnZhc09wZXJhdGlvbihzY2FsZWREb3duQ29udGV4dCwK
KyAgICAgICAgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgcm90YXRlZENvbnRleHQuZHJhd0lt
YWdlKG9yaWdpbmFsLCAwLCAtb3JpZ2luYWwuaGVpZ2h0KTsKKyAgICAgICAgfSk7CiAKLSAgICB0
aW1lID0gKG5ldyBEYXRlKCkpIC0gc3RhcnREYXRlOwotICAgIG91dHB1dC5pbm5lckhUTUwgKz0g
IkNvcHkgd2l0aCByb3RhdGU6IiArICh0aW1lLzIpICsgIm1zPGJyPiI7CisgICAgb3V0cHV0Lmlu
bmVySFRNTCArPSAiQ29weSB3aXRoIHJvdGF0ZToiICsgdGltZSArICJtczxicj4iOwogfQogPC9z
Y3JpcHQ+CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56981</attachid>
            <date>2010-05-24 23:58:14 -0700</date>
            <delta_ts>2010-05-25 00:36:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39635-20100524235942.patch</filename>
            <type>text/plain</type>
            <size>9487</size>
            <attacher name="David Levin">levin</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFNpdGUvQ2hhbmdlTG9nIGIvV2ViS2l0U2l0ZS9DaGFuZ2VMb2cK
aW5kZXggZDRlM2FlY2ZhNDAwY2I4MmU4OGVhYzEzZjQyNDlmZTQ4YmQyNGU5Ny4uZDNhYTBjNjBh
OTE2MzkwODU2Zjg5M2Q2ZjkyZGE3MWRlYjlkMDRhMCAxMDA2NDQKLS0tIGEvV2ViS2l0U2l0ZS9D
aGFuZ2VMb2cKKysrIGIvV2ViS2l0U2l0ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAorMjAx
MC0wNS0yNCAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW1wcm92ZSBjYW52YXMgcGVyZiB0
ZXN0IGZhaXJuZXNzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9Mzk2MzUKKworICAgICAgICAqIGRlbW9zL2NhbnZhcy1wZXJmL2NhbnZhcy5odG1sOgor
ICAgICAgICAgIDEuIENoYW5nZSB0aGUgdmFyaW91cyB0ZXN0cyB0byBnZXQgdGhlIGltYWdlIGRh
dGEgZm9yIHRoZSByZXN1bHQKKyAgICAgICAgICAgICB0byBoZWxwIGVuc3VyZSB0aGF0IHRoZSBv
cGVyYXRpb24gaGFzIGNvbXBsZXRlZCBieSB0aGUgdGltZSwKKyAgICAgICAgICAgICBhbmQgc3Vi
dHJhY3Qgb3V0IHRoZSB0aW1lIG5lZWRlZCB0byBkbyB0aGlzLgorICAgICAgICAgIDIuIE1hZGUg
dGhlIHRlc3QgbW9yZSBmbGV4aWJsZSBhYm91dCBudW1iZXIgb2YgcmVwZXRpdGlvbnMgYW5kCisg
ICAgICAgICAgICAgaW1hZ2Ugc2l6ZS4KKyAgICAgICAgICAzLiBNYWtlIHRoZSB0ZXN0cyBydW4g
c2VwYXJhdGVseSBhbmQgaGF2ZSBhIHBhdXNlIGJldHdlZW4gdGhlbQorICAgICAgICAgICAgIHRv
IGFsbG93IGZvciBnYXJiYWdlIGNvbGxlY3Rpb24gc28gdGhhdCByZXN1bHRzIGFyZSBtb3JlCisg
ICAgICAgICAgICAgY29uc2lzdGVudC4KKyAgICAgICAgICA0LiBBZGRlZCBhIHN0YW5kYXJkIGxv
Z2dpbmcgZnVuY3Rpb24gYW5kIHNob3VsZEJlIGFzc2VydHMgdG8KKyAgICAgICAgICAgICB2ZXJp
ZnkgdGhhdCB0aGUgY29ycmVjdCBzY2FsaW5nIG9wZXJhdGlvbnMgd2VyZSBoYXBwZW5pbmcuCisK
IDIwMTAtMDUtMjAgIERhbmllbCBCYXRlcyAgPGRiYXRlc0ByaW0uY29tPgogCiAgICAgICAgIFJ1
YmJlci1zdGFtcGVkIGJ5IFNpbW9uIEZyYXNlci4KZGlmZiAtLWdpdCBhL1dlYktpdFNpdGUvZGVt
b3MvY2FudmFzLXBlcmYvY2FudmFzLmh0bWwgYi9XZWJLaXRTaXRlL2RlbW9zL2NhbnZhcy1wZXJm
L2NhbnZhcy5odG1sCmluZGV4IDM5ODIzZjQ5ZTI1MTJjZGQ5MDU0ZDI2NmY2YmQzMWQyODdmNzk4
YmEuLjlmNTdlYjc2YjllNGNhNzBjNDcwNjAzNDdjMTQ2YjIzMjNhMzlkNjUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFNpdGUvZGVtb3MvY2FudmFzLXBlcmYvY2FudmFzLmh0bWwKKysrIGIvV2ViS2l0U2l0
ZS9kZW1vcy9jYW52YXMtcGVyZi9jYW52YXMuaHRtbApAQCAtMyw3OSArMywxNDYgQEAKIDxwcmUg
aWQ9Im91dHB1dCI+CiA8L3ByZT4KIDxpbWcgc3JjPSJrcmFrZW4uanBnIiBpZD0iaW1hZ2UiPgot
PGNhbnZhcyBpZD0ib3JpZ2luYWwiIHdpZHRoPTMyNjQgaGVpZ2h0PTI0NDggc3R5bGU9IndpZHRo
OiAzMjY0cHg7IGhlaWdodDogMjQ0OHB4Ij48L2NhbnZhcz4KLTxjYW52YXMgaWQ9ImNvcHkiIHdp
ZHRoPTMyNjQgaGVpZ2h0PTI0NDggc3R5bGU9IndpZHRoOiAzMjY0cHg7IGhlaWdodDogMjQ0OHB4
Ij48L2NhbnZhcz4KLTxjYW52YXMgaWQ9InNjYWxlZFVwIiB3aWR0aD02NTI4IGhlaWdodD00ODk2
IHN0eWxlPSJ3aWR0aDogNjUyOHB4OyBoZWlnaHQ6IDQ4OTZweCI+PC9jYW52YXM+Ci08Y2FudmFz
IGlkPSJzY2FsZWREb3duIiB3aWR0aD0xNjMyIGhlaWdodD0xMjI0IHN0eWxlPSJ3aWR0aDogMTYz
MnB4OyBoZWlnaHQ6IDEyMjRweCI+PC9jYW52YXM+Ci08Y2FudmFzIGlkPSJyb3RhdGVkIiB3aWR0
aD0yNDQ4IGhlaWdodD0zMjY0IHN0eWxlPSJ3aWR0aDogMjQ0OHB4OyBoZWlnaHQ6IDMyNjRweDsg
Ym9yZGVyOiAxcHggc29saWQgcmVkOyI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJvcmlnaW5hbCIg
c3R5bGU9IndpZHRoOiAzMjY0cHg7IGhlaWdodDogMjQ0OHB4Ij48L2NhbnZhcz4KKzxjYW52YXMg
aWQ9ImNvcHkiIHN0eWxlPSJ3aWR0aDogMzI2NHB4OyBoZWlnaHQ6IDI0NDhweCI+PC9jYW52YXM+
Cis8Y2FudmFzIGlkPSJpbmRpcmVjdENvcHkiIHN0eWxlPSJ3aWR0aDogMzI2NHB4OyBoZWlnaHQ6
IDI0NDhweCI+PC9jYW52YXM+Cis8Y2FudmFzIGlkPSJzY2FsZWRVcCIgc3R5bGU9IndpZHRoOiA2
NTI4cHg7IGhlaWdodDogNDg5NnB4Ij48L2NhbnZhcz4KKzxjYW52YXMgaWQ9InNjYWxlZERvd24i
IHN0eWxlPSJ3aWR0aDogMTYzMnB4OyBoZWlnaHQ6IDEyMjRweCI+PC9jYW52YXM+Cis8Y2FudmFz
IGlkPSJyb3RhdGVkIiBzdHlsZT0id2lkdGg6IDI0NDhweDsgaGVpZ2h0OiAzMjY0cHg7IGJvcmRl
cjogMXB4IHNvbGlkIHJlZDsiPjwvY2FudmFzPgogPHNjcmlwdD4KLWZ1bmN0aW9uIGRvVGVzdCgp
IHsKLSAgICB2YXIgb3V0cHV0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpOwot
ICAgIHZhciBpbWFnZSA9ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW1hZ2UiKTsKLSAgICB2
YXIgb3JpZ2luYWwgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm9yaWdpbmFsIik7Cit2YXIg
d2lkdGggPSAzMjY0OwordmFyIGhlaWdodCA9IDI0NDg7Cit2YXIgb3JpZ2luYWwgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgib3JpZ2luYWwiKTsKK3ZhciBvcmlnaW5hbENvbnRleHQgPSBvcmln
aW5hbC5nZXRDb250ZXh0KCIyZCIpOwordmFyIGlkbGVUaW1lciA9IDIwOwogCi0gICAgdmFyIGNv
cHkgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvcHkiKTsKLSAgICB2YXIgc2NhbGVkVXAg
PSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjYWxlZFVwIik7Ci0gICAgdmFyIHNjYWxlZERv
d24gPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNjYWxlZERvd24iKTsKLSAgICB2YXIgcm90
YXRlZCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyb3RhdGVkIik7CitmdW5jdGlvbiBsb2co
dGV4dCkgeworICAgIGlmICh0eXBlb2YgdGV4dCAhPSAic3RyaW5nIiApCisgICAgICAgIHRleHQg
PSB0ZXh0LnRvU3RyaW5nKCk7CisgICAgdmFyIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJzcGFuIik7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIm91dHB1dCIpLmFwcGVuZENo
aWxkKHNwYW4pOworICAgIHNwYW4uaW5uZXJIVE1MID0gdGV4dC5yZXBsYWNlKC88L2csICImbHQ7
IikucmVwbGFjZSgiLz4vZyIsICImZ3Q7IikucmVwbGFjZSgiLyYvZyIsICImYW1wIikrICI8YnI+
IjsKK30KIAotICAgIG9yaWdpbmFsLmdldENvbnRleHQoIjJkIikuZHJhd0ltYWdlKGltYWdlLCAw
LCAwKTsKK2Z1bmN0aW9uIHNob3VsZEJlKF9hLCBfYikgeworICAgIGlmICh0eXBlb2YgX2EgIT0g
InN0cmluZyIgfHwgdHlwZW9mIF9iICE9ICJzdHJpbmciKQorICAgICAgICBsb2coIldBUk5JTkc6
IHNob3VsZEJlKCkgZXhwZWN0cyBzdHJpbmcgYXJndW1lbnRzLiIpOworICAgIHZhciBfYVZhbHVl
ID0gZXZhbChfYSk7CisgICAgdmFyIF9iVmFsdWUgPSBldmFsKF9iKTsKKyAgICBpZiAoX2FWYWx1
ZSAhPT0gX2JWYWx1ZSkKKyAgICAgICAgbG9nKCJGQUlMVVJFOiAiICsgX2EgKyAic2hvdWxkIGhh
dmUgYmVlbiAiICsgX2JWYWx1ZSArICIuIEluc3RlYWQgaXQgd2FzICIgKyBfYVZhbHVlICsgIi4i
KTsKK30KIAotICAgIHZhciBjb3B5Q29udGV4dCA9IGNvcHkuZ2V0Q29udGV4dCgiMmQiKTsKLSAg
ICB2YXIgb3JpZ2luYWxDb250ZXh0ID0gb3JpZ2luYWwuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICB2
YXIgc2NhbGVkVXBDb250ZXh0ID0gc2NhbGVkVXAuZ2V0Q29udGV4dCgiMmQiKTsKLSAgICB2YXIg
c2NhbGVkRG93bkNvbnRleHQgPSBzY2FsZWREb3duLmdldENvbnRleHQoIjJkIik7Ci0gICAgdmFy
IHJvdGF0ZWRDb250ZXh0ID0gcm90YXRlZC5nZXRDb250ZXh0KCIyZCIpOworZnVuY3Rpb24gZmx1
c2hPcGVyYXRpb24oY29udGV4dCkgeworICAgdmFyIGltYWdlRGF0YSA9IGNvbnRleHQuZ2V0SW1h
Z2VEYXRhKDAsIDAsIGNvbnRleHQuY2FudmFzLndpZHRoLCBjb250ZXh0LmNhbnZhcy5oZWlnaHQp
OworfQogCitmdW5jdGlvbiB0aW1lQ2FudmFzT3BlcmF0aW9uKGNvbnRleHQsIGNhbnZhc09wZXJh
dGlvbikgeworICAgIHZhciByZXBldGl0aW9ucyA9IDI7CiAgICAgdmFyIHN0YXJ0RGF0ZSA9IG5l
dyBEYXRlKCk7Ci0gICAgCi0gICAgY29weUNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9u
ID0gImNvcHkiOwotICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMjsgKytpKSB7Ci0gICAgICAgIGNv
cHlDb250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbCwgMCwgMCk7CisKKyAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlcGV0aXRpb25zOyArK2kpIHsKKyAgICAgICAgY2FudmFzT3BlcmF0aW9uKCk7Cisg
ICAgICAgIGZsdXNoT3BlcmF0aW9uKGNvbnRleHQpOwogICAgIH0KKyAgICB2YXIgZmluaXNoRGF0
ZSA9IG5ldyBEYXRlKCk7CisgICAgdmFyIHRpbWVXaXRoT3ZlcmhlYWQgPSBmaW5pc2hEYXRlIC0g
c3RhcnREYXRlOwogCi0gICAgdmFyIHRpbWUgPSAobmV3IERhdGUoKSkgLSBzdGFydERhdGU7Ci0g
ICAgb3V0cHV0LmlubmVySFRNTCArPSAiRGlyZWN0IGltYWdlIGNvcHk6ICIgKyAodGltZS8yKSAr
ICJtczxicj4iOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVwZXRpdGlvbnM7ICsraSkgewor
ICAgICAgICBmbHVzaE9wZXJhdGlvbihjb250ZXh0KTsKKyAgICB9CisgICAgdmFyIG92ZXJoZWFk
VGltZSA9IG5ldyBEYXRlKCkgLSBmaW5pc2hEYXRlOworICAgIHJldHVybiAodGltZVdpdGhPdmVy
aGVhZCAtIG92ZXJoZWFkVGltZSkgLyByZXBldGl0aW9uczsKK30KIAotICAgIHN0YXJ0RGF0ZSA9
IG5ldyBEYXRlKCk7CitmdW5jdGlvbiBkb1Rlc3QoKSB7CisgICAgdmFyIGltYWdlID0gIGRvY3Vt
ZW50LmdldEVsZW1lbnRCeUlkKCJpbWFnZSIpOworICAgIGltYWdlLndpZHRoID0gd2lkdGg7Cisg
ICAgaW1hZ2UuaGVpZ2h0ID0gaGVpZ2h0OwogICAgIAotICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
MjsgKytpKSB7Ci0gICAgICAgIHZhciBpbWFnZURhdGEgPSBvcmlnaW5hbENvbnRleHQuZ2V0SW1h
Z2VEYXRhKDAsIDAsIDMyNjQsIDI0NDgpOwotICAgICAgICBjb3B5Q29udGV4dC5wdXRJbWFnZURh
dGEoaW1hZ2VEYXRhLCAwLCAwKTsKLSAgICB9CisgICAgb3JpZ2luYWwud2lkdGggPSB3aWR0aDsK
KyAgICBvcmlnaW5hbC5oZWlnaHQgPSBoZWlnaHQ7CisgICAgb3JpZ2luYWwuZ2V0Q29udGV4dCgi
MmQiKS5kcmF3SW1hZ2UoaW1hZ2UsIDAsIDApOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGRvQ29w
eSwgaWRsZVRpbWVyKTsKK30KIAotICAgIHRpbWUgPSAobmV3IERhdGUoKSkgLSBzdGFydERhdGU7
Ci0gICAgb3V0cHV0LmlubmVySFRNTCArPSAiSW5kaXJlY3QgY29weSB3aXRoICh2aWEgSW1hZ2VE
YXRhKTogIiArICh0aW1lLzIpICsgIm1zPGJyPiI7CitmdW5jdGlvbiBkb0NvcHkoKSB7CisgICAg
dmFyIGNvcHkgPSAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvcHkiKTsKKyAgICBjb3B5Lndp
ZHRoID0gd2lkdGg7CisgICAgY29weS5oZWlnaHQgPSBoZWlnaHQ7CisgICAgdmFyIGNvcHlDb250
ZXh0ID0gY29weS5nZXRDb250ZXh0KCIyZCIpOworICAgIGNvcHlDb250ZXh0Lmdsb2JhbENvbXBv
c2l0ZU9wZXJhdGlvbiA9ICJjb3B5IjsKKyAgICB2YXIgdGltZSA9IHRpbWVDYW52YXNPcGVyYXRp
b24oY29weUNvbnRleHQsCisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGNvcHlD
b250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbCwgMCwgMCk7CisgICAgICAgIH0pOworICAgIGxvZygi
RGlyZWN0IGltYWdlIGNvcHk6ICIgKyB0aW1lICsgIm1zIik7CisgICAgd2luZG93LnNldFRpbWVv
dXQoZG9JbmRpcmVjdENvcHksIGlkbGVUaW1lcik7Cit9CiAKLSAgICBzdGFydERhdGUgPSBuZXcg
RGF0ZSgpOwotICAgIAotICAgIHNjYWxlZFVwQ29udGV4dC5nbG9iYWxDb21wb3NpdGVPcGVyYXRp
b24gPSAiY29weSI7Ci0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCAyOyArK2kpIHsKLSAgICAgICAg
c2NhbGVkVXBDb250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbCwgMCwgMCwgNjUyOCwgNDg5Nik7Ci0g
ICAgfQorZnVuY3Rpb24gZG9JbmRpcmVjdENvcHkoKSB7CisgICAgdmFyIGluZGlyZWN0Q29weSA9
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaW5kaXJlY3RDb3B5Iik7CisgICAgaW5kaXJlY3RD
b3B5LndpZHRoID0gd2lkdGg7CisgICAgaW5kaXJlY3RDb3B5LmhlaWdodCA9IGhlaWdodDsKKyAg
ICB2YXIgaW5kaXJlY3RDb3B5Q29udGV4dCA9IGluZGlyZWN0Q29weS5nZXRDb250ZXh0KCIyZCIp
OworICAgIGluZGlyZWN0Q29weUNvbnRleHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImNv
cHkiOworICAgIHRpbWUgPSB0aW1lQ2FudmFzT3BlcmF0aW9uKGluZGlyZWN0Q29weUNvbnRleHQs
CisgICAgICAgIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIHZhciBpbWFnZURhdGEgPSBvcmln
aW5hbENvbnRleHQuZ2V0SW1hZ2VEYXRhKDAsIDAsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAg
ICAgaW5kaXJlY3RDb3B5Q29udGV4dC5wdXRJbWFnZURhdGEoaW1hZ2VEYXRhLCAwLCAwKTsKKyAg
ICAgICAgfSk7CisgICAgbG9nKCJJbmRpcmVjdCBjb3B5IHdpdGggKHZpYSBJbWFnZURhdGEpOiAi
ICsgdGltZSArICJtcyIpOworICAgIHdpbmRvdy5zZXRUaW1lb3V0KGRvU2NhbGVVcCwgaWRsZVRp
bWVyKTsKK30KIAotICAgIHRpbWUgPSAobmV3IERhdGUoKSkgLSBzdGFydERhdGU7Ci0gICAgb3V0
cHV0LmlubmVySFRNTCArPSAiQ29weSB3aXRoIDJ4IHNjYWxlOiAiICsgKHRpbWUvMikgKyAibXM8
YnI+IjsKK2Z1bmN0aW9uIGRvU2NhbGVVcCgpIHsKKyAgICB2YXIgc2NhbGVkVXAgPSAgZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoInNjYWxlZFVwIik7CisgICAgc2NhbGVkVXAud2lkdGggPSB3aWR0
aCAqIDI7CisgICAgc2NhbGVkVXAuaGVpZ2h0ID0gaGVpZ2h0ICogMjsKKyAgICB2YXIgc2NhbGVk
VXBDb250ZXh0ID0gc2NhbGVkVXAuZ2V0Q29udGV4dCgiMmQiKTsKKyAgICBzY2FsZWRVcENvbnRl
eHQuZ2xvYmFsQ29tcG9zaXRlT3BlcmF0aW9uID0gImNvcHkiOworICAgIHRpbWUgPSB0aW1lQ2Fu
dmFzT3BlcmF0aW9uKHNjYWxlZFVwQ29udGV4dCwKKyAgICAgICAgZnVuY3Rpb24gKCkgeworICAg
ICAgICAgICAgc2NhbGVkVXBDb250ZXh0LmRyYXdJbWFnZShvcmlnaW5hbCwgMCwgMCwgd2lkdGgg
KiAyLCBoZWlnaHQgKiAyKTsKKyAgICAgICAgfSk7CisgICAgbG9nKCJDb3B5IHdpdGggMnggc2Nh
bGU6ICIgKyB0aW1lICsgIm1zIik7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCdzY2FsZWRVcCcpLndpZHRoIiwgIndpZHRoICogMiIpOworICAgIHNob3VsZEJlKCJkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnc2NhbGVkVXAnKS5oZWlnaHQiLCAiaGVpZ2h0ICogMiIpOwor
ICAgIHdpbmRvdy5zZXRUaW1lb3V0KGRvU2NhbGVEb3duLCBpZGxlVGltZXIpOworfQogCi0gICAg
c3RhcnREYXRlID0gbmV3IERhdGUoKTsKK2Z1bmN0aW9uIGRvU2NhbGVEb3duKCkgeworICAgIHZh
ciBzY2FsZWREb3duID0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJzY2FsZWREb3duIik7Cisg
ICAgc2NhbGVkRG93bi53aWR0aCA9IHdpZHRoIC8gMjsKKyAgICBzY2FsZWREb3duLmhlaWdodCA9
IGhlaWdodCAvIDI7CisgICAgdmFyIHNjYWxlZERvd25Db250ZXh0ID0gc2NhbGVkRG93bi5nZXRD
b250ZXh0KCIyZCIpOwogICAgIHNjYWxlZERvd25Db250ZXh0Lmdsb2JhbENvbXBvc2l0ZU9wZXJh
dGlvbiA9ICJjb3B5IjsKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAg
ICBzY2FsZWREb3duQ29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIDAsIDE2MzIsIDEyMjQp
OwotICAgIH0KLQotICAgIHRpbWUgPSAobmV3IERhdGUoKSkgLSBzdGFydERhdGU7Ci0gICAgb3V0
cHV0LmlubmVySFRNTCArPSAiQ29weSB3aXRoIDAuNXggc2NhbGU6ICIgKyAodGltZS8yKSArICJt
czxicj4iOworICAgIHRpbWUgPSB0aW1lQ2FudmFzT3BlcmF0aW9uKHNjYWxlZERvd25Db250ZXh0
LAorICAgICAgICBmdW5jdGlvbiAoKSB7CisgICAgICAgICAgICBzY2FsZWREb3duQ29udGV4dC5k
cmF3SW1hZ2Uob3JpZ2luYWwsIDAsIDAsIHdpZHRoIC8gMiwgaGVpZ2h0IC8gMik7CisgICAgICAg
IH0pOworICAgIGxvZygiQ29weSB3aXRoIDAuNXggc2NhbGU6ICIgKyB0aW1lICsgIm1zIik7Cisg
ICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzY2FsZWREb3duJykud2lkdGgi
LCAid2lkdGggLyAyIik7CisgICAgc2hvdWxkQmUoImRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdz
Y2FsZWREb3duJykuaGVpZ2h0IiwgImhlaWdodCAvIDIiKTsKKyAgICB3aW5kb3cuc2V0VGltZW91
dChkb1JvdGF0aW9uLCBpZGxlVGltZXIpOworfQogCi0gICAgc3RhcnREYXRlID0gbmV3IERhdGUo
KTsKK2Z1bmN0aW9uIGRvUm90YXRpb24oKSB7CisgICAgdmFyIHJvdGF0ZWQgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgicm90YXRlZCIpOworICAgIHJvdGF0ZWQud2lkdGggPSBoZWlnaHQ7Cisg
ICAgcm90YXRlZC5oZWlnaHQgPSB3aWR0aDsKKyAgICB2YXIgcm90YXRlZENvbnRleHQgPSByb3Rh
dGVkLmdldENvbnRleHQoIjJkIik7CiAgICAgcm90YXRlZENvbnRleHQuZ2xvYmFsQ29tcG9zaXRl
T3BlcmF0aW9uID0gImNvcHkiOwogICAgIHJvdGF0ZWRDb250ZXh0LnJvdGF0ZShNYXRoLlBJIC8g
Mik7CiAKLSAgICBmb3IgKHZhciBpID0gMDsgaSA8IDI7ICsraSkgewotICAgICAgICByb3RhdGVk
Q29udGV4dC5kcmF3SW1hZ2Uob3JpZ2luYWwsIDAsIC1vcmlnaW5hbC5oZWlnaHQpOwotICAgIH0K
LQotICAgIHRpbWUgPSAobmV3IERhdGUoKSkgLSBzdGFydERhdGU7Ci0gICAgb3V0cHV0LmlubmVy
SFRNTCArPSAiQ29weSB3aXRoIHJvdGF0ZToiICsgKHRpbWUvMikgKyAibXM8YnI+IjsKKyAgICB0
aW1lID0gdGltZUNhbnZhc09wZXJhdGlvbihyb3RhdGVkQ29udGV4dCwKKyAgICAgICAgZnVuY3Rp
b24gKCkgeworICAgICAgICAgICAgcm90YXRlZENvbnRleHQuZHJhd0ltYWdlKG9yaWdpbmFsLCAw
LCAtb3JpZ2luYWwuaGVpZ2h0KTsKKyAgICAgICAgfSk7CisgICAgbG9nKCJDb3B5IHdpdGggcm90
YXRlOiAiICsgdGltZSArICJtcyIpOworICAgIHNob3VsZEJlKCJkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgncm90YXRlZCcpLndpZHRoIiwgImhlaWdodCIpOworICAgIHNob3VsZEJlKCJkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgncm90YXRlZCcpLmhlaWdodCIsICJ3aWR0aCIpOworICAgIGxvZygi
RE9ORSEiKTsKIH0KIDwvc2NyaXB0PgogCg==
</data>
<flag name="review"
          id="41476"
          type_id="1"
          status="+"
          setter="mjs"
    />
          </attachment>
      

    </bug>

</bugzilla>