<?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>32757</bug_id>
          
          <creation_ts>2009-12-18 16:43:04 -0800</creation_ts>
          <short_desc>Repaint bug with -webkit-shadow on svg shapes</short_desc>
          <delta_ts>2010-01-08 15:52:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>bdakin</cc>
    
    <cc>krit</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>173413</commentid>
    <comment_count>0</comment_count>
      <attachid>45210</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-18 16:43:04 -0800</bug_when>
    <thetext>Created attachment 45210
Reduction

Dragging around the shapes in the attached test cases leaves behind traces of the shadow.

&lt;rdar://problem/7389149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173414</commentid>
    <comment_count>1</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-18 16:44:28 -0800</bug_when>
    <thetext>I have a patch that I will attach momentarily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173418</commentid>
    <comment_count>2</comment_count>
      <attachid>45211</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-18 16:50:18 -0800</bug_when>
    <thetext>Created attachment 45211
Patch

I&apos;m not sure how to write a test for this, but I am open to suggestions!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173423</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2009-12-18 16:54:26 -0800</bug_when>
    <thetext>style-queue ran check-webkit-style on attachment 45211 without any errors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173425</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2009-12-18 16:57:31 -0800</bug_when>
    <thetext>You should be able to write a repaint test that moves an SVG object in JS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173427</commentid>
    <comment_count>5</comment_count>
      <attachid>45211</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2009-12-18 17:04:07 -0800</bug_when>
    <thetext>Comment on attachment 45211
Patch

R-minusing this for now. This solution needs to be expanded beyond the root.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>173569</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2009-12-19 11:49:35 -0800</bug_when>
    <thetext>This does not only happen on shadows. I can reproduce it without shadows and the same example. But only for the star, where the stroke is not drawn at the edge.
We also need a general fix for repaintRectInLocalCoordinates independent of the bug for shadow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178446</commentid>
    <comment_count>7</comment_count>
      <attachid>46098</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-01-07 16:40:14 -0800</bug_when>
    <thetext>Created attachment 46098
New patch

Here&apos;s a new patch that applies to more than just the root and also includes tests. Unfortunately, it does not fix the non-shadow bug that Dirk pointed out. I was able to reproduce that as well, and I spent some time working on a patch to fix both at once. Ultimately, it seems like it is just a separate bug. In the no-shadow case, I think that strokeBoundingBox() might be buggy, but I haven&apos;t worked out the details yet. I will file a new bug for that repaint issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178833</commentid>
    <comment_count>8</comment_count>
      <attachid>46168</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-01-08 15:23:55 -0800</bug_when>
    <thetext>Created attachment 46168
Even newer patch

Here&apos;s a better patch based on comments from Oliver and Dan on irc. This patch rewrites inflateForShadow to be more like RenderStyle::getBoxShadowExtent().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178834</commentid>
    <comment_count>9</comment_count>
      <attachid>46168</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2010-01-08 15:26:44 -0800</bug_when>
    <thetext>Comment on attachment 46168
Even newer patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178837</commentid>
    <comment_count>10</comment_count>
      <attachid>46168</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-01-08 15:28:19 -0800</bug_when>
    <thetext>Comment on attachment 46168
Even newer patch

&gt; +static void getSVGShadowExtent(ShadowData* shadow, int &amp;top, int &amp;right, int &amp;bottom, int &amp;left)
&gt; +{

The &amp; is on the wrong side here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178842</commentid>
    <comment_count>11</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-01-08 15:37:45 -0800</bug_when>
    <thetext>Good eye, Sammy, good eye. I fixed that before I checked in.

http://trac.webkit.org/changeset/53017</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>178849</commentid>
    <comment_count>12</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2010-01-08 15:52:34 -0800</bug_when>
    <thetext>I filed https://bugs.webkit.org/show_bug.cgi?id=33406 for the bug that Dirk found.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>45210</attachid>
            <date>2009-12-18 16:43:04 -0800</date>
            <delta_ts>2009-12-18 16:43:04 -0800</delta_ts>
            <desc>Reduction</desc>
            <filename>shadow-test.html</filename>
            <type>text/html</type>
            <size>2282</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">PGh0bWw+CjxoZWFkPgo8c2NyaXB0IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KPCEtLQoKU1ZHX05T
ID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsKCmZ1bmN0aW9uIHBhdGhGcm9tU3RhciAo
cmFkaXVzLCBpbm5lclJhZGl1cywgc2lkZXMpIHsKICAgIHZhciBwYXRoID0gW107CiAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IHNpZGVzICogMjsgKytpKSB7CiAgICAgICAgdmFyIHRoZXRhID0gTWF0
aC5QSSAqIGkgLyBzaWRlcyArIChNYXRoLlBJIC8gMik7CiAgICAgICAgdmFyIHIgPSAoaSAlIDIp
ID8gcmFkaXVzIDogaW5uZXJSYWRpdXM7CiAgICAgICAgdmFyIHggPSByICogTWF0aC5jb3ModGhl
dGEpOwogICAgICAgIHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsKICAgICAgICBwYXRoLnB1
c2goKGkgPyAnTCcgOiAnTScpLCB4LCB5KTsKICAgIH0KICAgIHBhdGgucHVzaCgnWicpOwogICAg
cmV0dXJuIHBhdGguam9pbignICcpOwp9CgpmdW5jdGlvbiBuZXdTdmdFbGVtZW50ICh0YWdOYW1l
LCBwYXJlbnROb2RlLCBhdHRycykgewogICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50TlMoU1ZHX05TLCB0YWdOYW1lKTsKICAgIGlmIChhdHRycykgewogICAgICAgIGZvciAodmFy
IGsgaW4gYXR0cnMpIHsKICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoaywgYXR0cnNba10p
OwogICAgICAgIH0KICAgIH0KICAgIGlmIChwYXJlbnROb2RlKSB7CiAgICAgICAgcGFyZW50Tm9k
ZS5hcHBlbmRDaGlsZChub2RlKTsKICAgIH0KICAgIHJldHVybiBub2RlOwp9CgpmdW5jdGlvbiBz
ZXRDZW50ZXJQb3NpdGlvbiAobm9kZSwgeCwgeSkgewogICAgbm9kZS5zZXRBdHRyaWJ1dGUoJ3Ry
YW5zZm9ybScsICd0cmFuc2xhdGUoJDEsICQyKScKICAgICAgICAucmVwbGFjZSgnJDEnLCB4KQog
ICAgICAgIC5yZXBsYWNlKCckMicsIHkpKTsKfQoKdmFyIGFybWVkID0gbnVsbDsKCndpbmRvdy5h
ZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkgewoKICAgIHZhciBzdmdDb250YWlu
ZXIgPSBuZXdTdmdFbGVtZW50KCdzdmcnLCBkb2N1bWVudC5ib2R5KTsKICAgIHZhciBzaGFwZXMg
PSBbCiAgICAgICAgeyBwb3M6IFsgMTAwLCAxMDAgXSwgc2l6ZTogNjAsIGhhc1N0cm9rZTogZmFs
c2UgfSwKICAgICAgICB7IHBvczogWyAyNTAsIDEwMCBdLCBzaXplOiA2MCwgaGFzU3Ryb2tlOiB0
cnVlIH0sCiAgICAgICAgeyBwb3M6IFsgNDAwLCAxMDAgXSwgc2l6ZTogNTAsIGhhc1N0cm9rZTog
dHJ1ZSB9CiAgICBdOwoJc3ZnQ29udGFpbmVyLnN0eWxlLldlYmtpdFNoYWRvdyA9ICc1cHggNXB4
IDVweCByZWQnOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaGFwZXMubGVuZ3RoOyArK2kpIHsK
ICAgICAgICB2YXIgc2hhcGUgPSBzaGFwZXNbaV07CiAgICAgICAgdmFyIG5vZGUgPSBuZXdTdmdF
bGVtZW50KCdwYXRoJywgc3ZnQ29udGFpbmVyLCB7CiAgICAgICAgICAgIGQ6IHBhdGhGcm9tU3Rh
cihzaGFwZS5zaXplLCBzaGFwZS5zaXplIC8gMiwgNSksCiAgICAgICAgICAgIGZpbGw6ICcjOTk5
JywKICAgICAgICAgICAgc3Ryb2tlOiAnYmxhY2snLAogICAgICAgICAgICAnc3Ryb2tlLXdpZHRo
JzogMTAsCiAgICAgICAgfSk7CiAgICAgICAgc2V0Q2VudGVyUG9zaXRpb24obm9kZSwgc2hhcGUu
cG9zWzBdLCBzaGFwZS5wb3NbMV0pOwogICAgICAgIGlmIChzaGFwZXNbaV0uaGFzU3Ryb2tlKSB7
CiAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKCdzdHJva2UtZGFzaGFycmF5JywgMjApOwog
ICAgICAgIH0KICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0
aW9uIChldikgewogICAgICAgICAgICB2YXIgZSA9IGV2IHx8IGV2ZW50OwogICAgICAgICAgICBh
cm1lZCA9IHsgbm9kZTogZS50YXJnZXQgfHwgZS5zcmNFbGVtZW50IH07CiAgICAgICAgfSk7CiAg
ICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gKCkgewogICAg
ICAgICAgICBhcm1lZCA9IG51bGw7CiAgICAgICAgfSk7CiAgICB9CiAgICB3aW5kb3cuYWRkRXZl
bnRMaXN0ZW5lcignbW91c2Vtb3ZlJywgZnVuY3Rpb24gKGV2KSB7CiAgICAgICAgaWYgKGFybWVk
KSB7CiAgICAgICAgICAgIHZhciBlID0gZXYgfHwgZXZlbnQ7CiAgICAgICAgICAgIHNldENlbnRl
clBvc2l0aW9uKGFybWVkLm5vZGUsIGUuY2xpZW50WCwgZS5jbGllbnRZKTsKICAgICAgICB9CiAg
ICB9KTsKfSk7CgovLy0tPgo8L3NjcmlwdD4KPC9oZWFkPgo8Ym9keT4KCjwvYm9keT4KPC9odG1s
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>45211</attachid>
            <date>2009-12-18 16:50:18 -0800</date>
            <delta_ts>2010-01-07 16:40:14 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>forReview.txt</filename>
            <type>text/plain</type>
            <size>3210</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MjM2NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMDktMTItMTggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzU3IFJlcGFpbnQg
YnVnIAorICAgICAgICB3aXRoIC13ZWJraXQtc2hhZG93IG9uIHN2ZyBzaGFwZXMKKyAgICAgICAg
LWFuZC0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODkxNDk+CisKKyAgICAgICAgSW5mbGF0
ZSB0aGUgcmVwYWludFJlY3QgZm9yIHRoZSBzaGFkb3cuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlclNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6aW5mbGF0
ZUZvclNoYWRvdyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpyZXBhaW50UmVj
dEluTG9jYWxDb29yZGluYXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpj
b21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290
Lmg6CisKIDIwMDktMTItMTggIEpvbiBIb25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4K
IAogICAgICAgICBSRUdSRVNTSU9OKHI1MjIzMyk6IE1TQUE6IEFjY2Vzc2liaWxpdHkgcm9sZSBv
ZiBsaXN0cyBpcyB3cm9uZwpJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHJl
dmlzaW9uIDUyMzIzKQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTIxNyw2ICsyMTcsMTQgQEAgSW50U2l6ZSBSZW5kZXJTVkdSb290Ojpi
b3JkZXJPcmlnaW5Ub0NvbgogICAgIHJldHVybiBJbnRTaXplKGJvcmRlckxlZnQoKSArIHBhZGRp
bmdMZWZ0KCksIGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpKTsKIH0KIAordm9pZCBSZW5kZXJT
VkdSb290OjppbmZsYXRlRm9yU2hhZG93KEludFJlY3QmIHJlcGFpbnRSZWN0KQoreworICAgIFNo
YWRvd0RhdGEqIHNoYWRvdyA9IHN0eWxlKCktPnN2Z1N0eWxlKCktPnNoYWRvdygpOworICAgIHJl
cGFpbnRSZWN0LmluZmxhdGVYKHNoYWRvdy0+eCk7CisgICAgcmVwYWludFJlY3QuaW5mbGF0ZVko
c2hhZG93LT55KTsKKyAgICByZXBhaW50UmVjdC5pbmZsYXRlKHNoYWRvdy0+c3ByZWFkICsgc2hh
ZG93LT5ibHVyKTsKK30KKwogVHJhbnNmb3JtYXRpb25NYXRyaXggUmVuZGVyU1ZHUm9vdDo6bG9j
YWxUb1JlcGFpbnRDb250YWluZXJUcmFuc2Zvcm0oY29uc3QgSW50UG9pbnQmIHBhcmVudE9yaWdp
bkluQ29udGFpbmVyKSBjb25zdAogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHBhcmVudFRv
Q29udGFpbmVyOwpAQCAtMjQ4LDcgKzI1Niw3IEBAIEZsb2F0UmVjdCBSZW5kZXJTVkdSb290Ojpv
YmplY3RCb3VuZGluZ0IKIAogRmxvYXRSZWN0IFJlbmRlclNWR1Jvb3Q6OnJlcGFpbnRSZWN0SW5M
b2NhbENvb3JkaW5hdGVzKCkgY29uc3QKIHsKLSAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBp
bmNsdWRlIHRoZSBib3JkZXIgYnV0IGl0IHNob3VsZCEKKyAgICAvLyBGSVhNRTogVGhpcyBkb2Vz
IG5vdCBpbmNsdWRlIHRoZSBib3JkZXIgb3Igc2hhZG93IGJ1dCBpdCBzaG91bGQhCiAgICAgcmV0
dXJuIGNvbXB1dGVDb250YWluZXJCb3VuZGluZ0JveCh0aGlzLCB0cnVlKTsKIH0KIApAQCAtMjU5
LDggKzI2NywxMCBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBSZW5kZXJTVkdSb290Ojpsb2NhCiAK
IHZvaWQgUmVuZGVyU1ZHUm9vdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlckJveE1vZGVs
T2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50UmVjdCwgYm9vbCBmaXhl
ZCkKIHsKLSAgICAvLyBBcHBseSBvdXIgbG9jYWwgdHJhbnNmb3JtcyAoZXhjZXB0IGZvciB4L3kg
dHJhbnNsYXRpb24pIGFuZCBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5kbGUgYWxsIHRo
ZSBub3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCisgICAgLy8gQXBwbHkgb3VyIGxvY2FsIHRyYW5z
Zm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSwgdGhlbiBvdXIgc2hhZG93LCAKKyAg
ICAvLyBhbmQgdGhlbiBjYWxsIFJlbmRlckJveCdzIG1ldGhvZCB0byBoYW5kbGUgYWxsIHRoZSBu
b3JtYWwgQ1NTIEJveCBtb2RlbCBiaXRzCiAgICAgcmVwYWludFJlY3QgPSBsb2NhbFRvQm9yZGVy
Qm94VHJhbnNmb3JtKCkubWFwUmVjdChyZXBhaW50UmVjdCk7CisgICAgaW5mbGF0ZUZvclNoYWRv
dyhyZXBhaW50UmVjdCk7CiAgICAgUmVuZGVyQm94Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQocmVw
YWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIApJbmRleDogV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHUm9vdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuaAkocmV2aXNpb24gNTIzMjMpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJTVkdSb290LmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToK
IAogICAgIEludFNpemUgcGFyZW50T3JpZ2luVG9Cb3JkZXJCb3goKSBjb25zdDsKICAgICBJbnRT
aXplIGJvcmRlck9yaWdpblRvQ29udGVudEJveCgpIGNvbnN0OworICAgIHZvaWQgaW5mbGF0ZUZv
clNoYWRvdyhJbnRSZWN0Jik7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggbG9jYWxUb1JlcGFp
bnRDb250YWluZXJUcmFuc2Zvcm0oY29uc3QgSW50UG9pbnQmIHBhcmVudE9yaWdpbkluQ29udGFp
bmVyKSBjb25zdDsKICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBsb2NhbFRvQm9yZGVyQm94VHJh
bnNmb3JtKCkgY29uc3Q7CiAK
</data>
<flag name="review"
          id="27197"
          type_id="1"
          status="-"
          setter="bdakin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46098</attachid>
            <date>2010-01-07 16:40:14 -0800</date>
            <delta_ts>2010-01-08 15:23:55 -0800</delta_ts>
            <desc>New patch</desc>
            <filename>forReview2.txt</filename>
            <type>text/plain</type>
            <size>18230</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Mjk1MikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjggQEAKKzIwMTAtMDEtMDcgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzU3IFJlcGFpbnQg
YnVnIAorICAgICAgICB3aXRoIC13ZWJraXQtc2hhZG93IG9uIHN2ZyBzaGFwZXMKKyAgICAgICAg
LWFuZC0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODkxNDk+CisKKyAgICAgICAgSW5mbGF0
ZSB0aGUgcmVwYWludFJlY3QgZm9yIHRoZSBzaGFkb3cuCisgICAgICAgICogcmVuZGVyaW5nL1Jl
bmRlckZvcmVpZ25PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRm9yZWlnbk9i
amVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVy
U1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmNvbXB1dGVS
ZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR01vZGVsT2JqZWN0Ojpjb21wdXRlUmVj
dEZvclJlcGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJTVkdSb290LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnJlcGFpbnRSZWN0SW5Mb2NhbENvb3JkaW5h
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZWN0Rm9yUmVw
YWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJCYXNlOjppbmZsYXRlRm9yU2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorCiAyMDEwLTAxLTA3ICBOYXRlIENoYXBpbiAgPGphcGhldEBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHJldmlzaW9uIDUyOTM2KQor
KysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTg0LDYgKzg0LDcgQEAgRmxvYXRSZWN0IFJlbmRlckZvcmVpZ25PYmplY3Q6OnJlcGFp
bnRSZQogdm9pZCBSZW5kZXJGb3JlaWduT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmIHJlY3QsIGJvb2wg
Zml4ZWQpCiB7CiAgICAgcmVjdCA9IGxvY2FsVG9QYXJlbnRUcmFuc2Zvcm0oKS5tYXBSZWN0KHJl
Y3QpOworICAgIGluZmxhdGVGb3JTaGFkb3coc3R5bGUoKSwgcmVjdCk7CiAgICAgUmVuZGVyQmxv
Y2s6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCByZWN0LCBmaXhlZCk7
CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHJldmlzaW9uIDUy
OTM2KQorKysgV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNzUsNiArMTc1LDcgQEAgSW50UmVjdCBSZW5kZXJTVkdJbWFnZTo6Y2xpcHBlZE92
ZXJmbG93UgogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjpjb21wdXRlUmVjdEZvclJlcGFpbnQoUmVu
ZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmIHJlcGFpbnRSZWN0
LCBib29sIGZpeGVkKQogeworICAgIGluZmxhdGVGb3JTaGFkb3coc3R5bGUoKSwgcmVwYWludFJl
Y3QpOwogICAgIFNWR1JlbmRlckJhc2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCh0aGlzLCByZXBh
aW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCkluZGV4OiBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCShyZXZpc2lvbiA1MjkzNikKKysrIFdl
YkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNTYsNiArNTYsNyBAQCBJbnRSZWN0IFJlbmRlclNWR01vZGVsT2JqZWN0OjpjbGlwcGVkT3Zl
CiAKIHZvaWQgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYgcmVwYWludFJlY3Qs
IGJvb2wgZml4ZWQpCiB7CisgICAgaW5mbGF0ZUZvclNoYWRvdyhzdHlsZSgpLCByZXBhaW50UmVj
dCk7CiAgICAgU1ZHUmVuZGVyQmFzZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFp
bnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR1Jvb3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuY3BwCShyZXZpc2lvbiA1MjkzNikKKysrIFdlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclNWR1Jvb3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNTEsNyArMjUxLDcgQEAgRmxv
YXRSZWN0IFJlbmRlclNWR1Jvb3Q6Om9iamVjdEJvdW5kaW5nQgogCiBGbG9hdFJlY3QgUmVuZGVy
U1ZHUm9vdDo6cmVwYWludFJlY3RJbkxvY2FsQ29vcmRpbmF0ZXMoKSBjb25zdAogewotICAgIC8v
IEZJWE1FOiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGJvcmRlciBidXQgaXQgc2hvdWxkIQor
ICAgIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGJvcmRlciBvciBzaGFkb3cg
YnV0IGl0IHNob3VsZCEKICAgICByZXR1cm4gY29tcHV0ZUNvbnRhaW5lckJvdW5kaW5nQm94KHRo
aXMsIHRydWUpOwogfQogCkBAIC0yNjIsOCArMjYyLDEwIEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4
IFJlbmRlclNWR1Jvb3Q6OmxvY2EKIAogdm9pZCBSZW5kZXJTVkdSb290Ojpjb21wdXRlUmVjdEZv
clJlcGFpbnQoUmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3Qm
IHJlcGFpbnRSZWN0LCBib29sIGZpeGVkKQogewotICAgIC8vIEFwcGx5IG91ciBsb2NhbCB0cmFu
c2Zvcm1zIChleGNlcHQgZm9yIHgveSB0cmFuc2xhdGlvbikgYW5kIGNhbGwgUmVuZGVyQm94J3Mg
bWV0aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5vcm1hbCBDU1MgQm94IG1vZGVsIGJpdHMKKyAgICAv
LyBBcHBseSBvdXIgbG9jYWwgdHJhbnNmb3JtcyAoZXhjZXB0IGZvciB4L3kgdHJhbnNsYXRpb24p
LCB0aGVuIG91ciBzaGFkb3csIAorICAgIC8vIGFuZCB0aGVuIGNhbGwgUmVuZGVyQm94J3MgbWV0
aG9kIHRvIGhhbmRsZSBhbGwgdGhlIG5vcm1hbCBDU1MgQm94IG1vZGVsIGJpdHMKICAgICByZXBh
aW50UmVjdCA9IGxvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlcGFpbnRSZWN0
KTsKKyAgICBpbmZsYXRlRm9yU2hhZG93KHN0eWxlKCksIHJlcGFpbnRSZWN0KTsKICAgICBSZW5k
ZXJCb3g6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChyZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVj
dCwgZml4ZWQpOwogfQogCkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAkocmV2
aXNpb24gNTI5MzYpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdUZXh0LmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTksNiArNTksNyBAQCBJbnRSZWN0IFJlbmRlclNWR1RleHQ6OmNsaXBw
ZWRPdmVyZmxvd1JlCiAKIHZvaWQgUmVuZGVyU1ZHVGV4dDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50
KFJlbmRlckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50
UmVjdCwgYm9vbCBmaXhlZCkKIHsKKyAgICBpbmZsYXRlRm9yU2hhZG93KHN0eWxlKCksIHJlcGFp
bnRSZWN0KTsKICAgICBTVkdSZW5kZXJCYXNlOjpjb21wdXRlUmVjdEZvclJlcGFpbnQodGhpcywg
cmVwYWludENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIApJbmRleDogV2ViQ29y
ZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9y
ZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHJldmlzaW9uIDUyOTM2KQorKysgV2ViQ29y
ZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU5LDYg
KzU5LDIxIEBAIEludFJlY3QgU1ZHUmVuZGVyQmFzZTo6Y2xpcHBlZE92ZXJmbG93UmUKICAgICBy
ZXR1cm4gcmVwYWludFJlY3Q7CiB9CiAKK3ZvaWQgU1ZHUmVuZGVyQmFzZTo6aW5mbGF0ZUZvclNo
YWRvdyhSZW5kZXJTdHlsZSogc3R5bGUsIEludFJlY3QmIHJlcGFpbnRSZWN0KSBjb25zdAorewor
ICAgIEFTU0VSVChzdHlsZSk7CisgICAgaWYgKCFzdHlsZSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgU2hhZG93RGF0YSogc2hhZG93ID0gc3R5bGUtPnN2Z1N0eWxlKCktPnNoYWRvdygpOworICAg
IGlmICghc2hhZG93KQorICAgICAgICByZXR1cm47CisKKyAgICByZXBhaW50UmVjdC5pbmZsYXRl
WChzaGFkb3ctPngpOworICAgIHJlcGFpbnRSZWN0LmluZmxhdGVZKHNoYWRvdy0+eSk7CisgICAg
cmVwYWludFJlY3QuaW5mbGF0ZShzaGFkb3ctPnNwcmVhZCArIHNoYWRvdy0+Ymx1cik7Cit9CisK
IHZvaWQgU1ZHUmVuZGVyQmFzZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRlck9iamVjdCog
b2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYg
cmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCiB7CiAgICAgLy8gVHJhbnNsYXRlIHRvIGNvb3JkcyBp
biBvdXIgcGFyZW50IHJlbmRlcmVyLCBhbmQgdGhlbiBjYWxsIGNvbXB1dGVSZWN0Rm9yUmVwYWlu
dCBvbiBvdXIgcGFyZW50CkluZGV4OiBXZWJDb3JlL3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCShy
ZXZpc2lvbiA1MjkzNikKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAko
d29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIEZsb2F0UmVjdCBmaWx0ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9i
amVjdCopIGNvbnN0OwogICAgICAgICBGbG9hdFJlY3QgY2xpcHBlckJvdW5kaW5nQm94Rm9yUmVu
ZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KikgY29uc3Q7CiAgICAgICAgIEZsb2F0UmVjdCBtYXNr
ZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OworCisg
ICAgICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlRm9yU2hhZG93KFJlbmRlclN0eWxlKiwgSW50UmVj
dCYpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgogICAgICAgICBzdGF0aWMgSW50UmVjdCBjbGlw
cGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9i
amVjdCogcmVwYWludENvbnRhaW5lcik7CiAgICAgICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVSZWN0
Rm9yUmVwYWludChSZW5kZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENv
bnRhaW5lciwgSW50UmVjdCYsIGJvb2wgZml4ZWQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTI5NTIp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBA
QAorMjAxMC0wMS0wNyAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHMgZm9yIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMjc1NyBSZXBhaW50IGJ1ZyAKKyAgICAg
ICAgd2l0aCAtd2Via2l0LXNoYWRvdyBvbiBzdmcgc2hhcGVzCisgICAgICAgIC1hbmQtCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS83Mzg5MTQ5PgorCisgICAgICAgICogZmFzdC9yZXBhaW50L21v
dmluZy1zaGFkb3ctb24tY29udGFpbmVyLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVw
YWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGguaHRtbDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC5j
aGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zp
bmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBs
YXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0
ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmlu
Zy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGgtZXhwZWN0ZWQucG5n
OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFk
b3ctb24tcGF0aC1leHBlY3RlZC50eHQ6IEFkZGVkLgorCiAyMDEwLTAxLTA3ICBTaW1vbiBGcmFz
ZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtldmlu
IERlY2tlciwgRGFyaW4gQWRsZXIuCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvbW92
aW5nLXNoYWRvdy1vbi1jb250YWluZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1jb250YWluZXIuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci5o
dG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDkzIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy9yZXBhaW50LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgbGFuZ3VhZ2U9
ImphdmFzY3JpcHQiPgorPCEtLQorCitTVkdfTlMgPSAnaHR0cDovL3d3dy53My5vcmcvMjAwMC9z
dmcnOworCitmdW5jdGlvbiByZXBhaW50VGVzdCgpIHsKKyAgICB2YXIgc3RhciA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJmaXJzdC1zdGFyIik7CisgICAgc2V0Q2VudGVyUG9zaXRpb24oc3Rh
ciwgMCwgMCk7Cit9CisKK2Z1bmN0aW9uIHBhdGhGcm9tU3RhciAocmFkaXVzLCBpbm5lclJhZGl1
cywgc2lkZXMpIHsKKyAgICB2YXIgcGF0aCA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2lkZXMgKiAyOyArK2kpIHsKKyAgICAgICAgdmFyIHRoZXRhID0gTWF0aC5QSSAqIGkgLyBzaWRl
cyArIChNYXRoLlBJIC8gMik7CisgICAgICAgIHZhciByID0gKGkgJSAyKSA/IHJhZGl1cyA6IGlu
bmVyUmFkaXVzOworICAgICAgICB2YXIgeCA9IHIgKiBNYXRoLmNvcyh0aGV0YSk7CisgICAgICAg
IHZhciB5ID0gciAqIE1hdGguc2luKHRoZXRhKTsKKyAgICAgICAgcGF0aC5wdXNoKChpID8gJ0wn
IDogJ00nKSwgeCwgeSk7CisgICAgfQorICAgIHBhdGgucHVzaCgnWicpOworICAgIHJldHVybiBw
YXRoLmpvaW4oJyAnKTsKK30KKworZnVuY3Rpb24gbmV3U3ZnRWxlbWVudCAodGFnTmFtZSwgcGFy
ZW50Tm9kZSwgYXR0cnMpIHsKKyAgICB2YXIgbm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnRO
UyhTVkdfTlMsIHRhZ05hbWUpOworICAgIGlmIChhdHRycykgeworICAgICAgICBmb3IgKHZhciBr
IGluIGF0dHJzKSB7CisgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShrLCBhdHRyc1trXSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHBhcmVudE5vZGUpIHsKKyAgICAgICAgcGFyZW50
Tm9kZS5hcHBlbmRDaGlsZChub2RlKTsKKyAgICB9CisgICAgcmV0dXJuIG5vZGU7Cit9CisKK2Z1
bmN0aW9uIHNldENlbnRlclBvc2l0aW9uIChub2RlLCB4LCB5KSB7CisgICAgbm9kZS5zZXRBdHRy
aWJ1dGUoJ3RyYW5zZm9ybScsICd0cmFuc2xhdGUoJDEsICQyKScKKyAgICAgICAgLnJlcGxhY2Uo
JyQxJywgeCkKKyAgICAgICAgLnJlcGxhY2UoJyQyJywgeSkpOworfQorCit2YXIgYXJtZWQgPSBu
dWxsOworCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uICgpIHsKKwor
ICAgIHZhciBzdmdDb250YWluZXIgPSBuZXdTdmdFbGVtZW50KCdzdmcnLCBkb2N1bWVudC5ib2R5
KTsKKyAgICB2YXIgc2hhcGVzID0gWworICAgICAgICB7IHBvczogWyAxMDAsIDEwMCBdLCBzaXpl
OiA2MCwgaGFzU3Ryb2tlOiBmYWxzZSB9LAorICAgICAgICB7IHBvczogWyAyNTAsIDEwMCBdLCBz
aXplOiA2MCwgaGFzU3Ryb2tlOiB0cnVlIH0sCisgICAgICAgIHsgcG9zOiBbIDQwMCwgMTAwIF0s
IHNpemU6IDUwLCBoYXNTdHJva2U6IHRydWUgfQorICAgIF07CisJc3ZnQ29udGFpbmVyLnN0eWxl
LldlYmtpdFNoYWRvdyA9ICc1cHggNXB4IDVweCByZWQnOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2hhcGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFwZSA9IHNoYXBlc1tpXTsK
KyAgICAgICAgdmFyIG5vZGUgPSBuZXdTdmdFbGVtZW50KCdwYXRoJywgc3ZnQ29udGFpbmVyLCB7
CisgICAgICAgICAgICBkOiBwYXRoRnJvbVN0YXIoc2hhcGUuc2l6ZSwgc2hhcGUuc2l6ZSAvIDIs
IDUpLAorICAgICAgICAgICAgZmlsbDogJyM5OTknLAorICAgICAgICAgICAgc3Ryb2tlOiAnYmxh
Y2snLAorICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6IDEwLAorICAgICAgICB9KTsKKyAgICAg
ICAgaWYgKGkgPT0gMCkKKyAgICAgICAgICAgIG5vZGUuaWQgPSAiZmlyc3Qtc3RhciI7CisgICAg
ICAgIHNldENlbnRlclBvc2l0aW9uKG5vZGUsIHNoYXBlLnBvc1swXSwgc2hhcGUucG9zWzFdKTsK
KyAgICAgICAgaWYgKHNoYXBlc1tpXS5oYXNTdHJva2UpIHsKKyAgICAgICAgICAgIG5vZGUuc2V0
QXR0cmlidXRlKCdzdHJva2UtZGFzaGFycmF5JywgMjApOworICAgICAgICB9CisgICAgICAgIG5v
ZGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2KSB7CisgICAgICAg
ICAgICB2YXIgZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgYXJtZWQgPSB7IG5vZGU6IGUu
dGFyZ2V0IHx8IGUuc3JjRWxlbWVudCB9OworICAgICAgICB9KTsKKyAgICAgICAgbm9kZS5hZGRF
dmVudExpc3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXJtZWQg
PSBudWxsOworICAgICAgICB9KTsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIo
J21vdXNlbW92ZScsIGZ1bmN0aW9uIChldikgeworICAgICAgICBpZiAoYXJtZWQpIHsKKyAgICAg
ICAgICAgIHZhciBlID0gZXYgfHwgZXZlbnQ7CisgICAgICAgICAgICBzZXRDZW50ZXJQb3NpdGlv
bihhcm1lZC5ub2RlLCBlLmNsaWVudFgsIGUuY2xpZW50WSk7CisgICAgICAgIH0KKyAgICB9KTsK
K30pOworCisvLy0tPgorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJlcGFp
bnRUZXN0KCk7Ij4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9y
ZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC5odG1sCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGguaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGguaHRtbAko
cmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IGxhbmd1YWdlPSJqYXZh
c2NyaXB0Ij4KKzwhLS0KKworU1ZHX05TID0gJ2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJzsK
KworZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7CisgICAgdmFyIHN0YXIgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgiZmlyc3Qtc3RhciIpOworICAgIHNldENlbnRlclBvc2l0aW9uKHN0YXIsIDAs
IDApOworfQorCitmdW5jdGlvbiBwYXRoRnJvbVN0YXIgKHJhZGl1cywgaW5uZXJSYWRpdXMsIHNp
ZGVzKSB7CisgICAgdmFyIHBhdGggPSBbXTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNpZGVz
ICogMjsgKytpKSB7CisgICAgICAgIHZhciB0aGV0YSA9IE1hdGguUEkgKiBpIC8gc2lkZXMgKyAo
TWF0aC5QSSAvIDIpOworICAgICAgICB2YXIgciA9IChpICUgMikgPyByYWRpdXMgOiBpbm5lclJh
ZGl1czsKKyAgICAgICAgdmFyIHggPSByICogTWF0aC5jb3ModGhldGEpOworICAgICAgICB2YXIg
eSA9IHIgKiBNYXRoLnNpbih0aGV0YSk7CisgICAgICAgIHBhdGgucHVzaCgoaSA/ICdMJyA6ICdN
JyksIHgsIHkpOworICAgIH0KKyAgICBwYXRoLnB1c2goJ1onKTsKKyAgICByZXR1cm4gcGF0aC5q
b2luKCcgJyk7Cit9CisKK2Z1bmN0aW9uIG5ld1N2Z0VsZW1lbnQgKHRhZ05hbWUsIHBhcmVudE5v
ZGUsIGF0dHJzKSB7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50TlMoU1ZH
X05TLCB0YWdOYW1lKTsKKyAgICBpZiAoYXR0cnMpIHsKKyAgICAgICAgZm9yICh2YXIgayBpbiBh
dHRycykgeworICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoaywgYXR0cnNba10pOworICAg
ICAgICB9CisgICAgfQorICAgIGlmIChwYXJlbnROb2RlKSB7CisgICAgICAgIHBhcmVudE5vZGUu
YXBwZW5kQ2hpbGQobm9kZSk7CisgICAgfQorICAgIHJldHVybiBub2RlOworfQorCitmdW5jdGlv
biBzZXRDZW50ZXJQb3NpdGlvbiAobm9kZSwgeCwgeSkgeworICAgIG5vZGUuc2V0QXR0cmlidXRl
KCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCQxLCAkMiknCisgICAgICAgIC5yZXBsYWNlKCckMScs
IHgpCisgICAgICAgIC5yZXBsYWNlKCckMicsIHkpKTsKK30KKwordmFyIGFybWVkID0gbnVsbDsK
Kword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlvbiAoKSB7CisKKyAgICB2
YXIgc3ZnQ29udGFpbmVyID0gbmV3U3ZnRWxlbWVudCgnc3ZnJywgZG9jdW1lbnQuYm9keSk7Cisg
ICAgdmFyIHNoYXBlcyA9IFsKKyAgICAgICAgeyBwb3M6IFsgMTAwLCAxMDAgXSwgc2l6ZTogNjAs
IGhhc1N0cm9rZTogZmFsc2UgfSwKKyAgICAgICAgeyBwb3M6IFsgMjUwLCAxMDAgXSwgc2l6ZTog
NjAsIGhhc1N0cm9rZTogdHJ1ZSB9LAorICAgICAgICB7IHBvczogWyA0MDAsIDEwMCBdLCBzaXpl
OiA1MCwgaGFzU3Ryb2tlOiB0cnVlIH0KKyAgICBdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
c2hhcGVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHZhciBzaGFwZSA9IHNoYXBlc1tpXTsKKyAg
ICAgICAgdmFyIG5vZGUgPSBuZXdTdmdFbGVtZW50KCdwYXRoJywgc3ZnQ29udGFpbmVyLCB7Cisg
ICAgICAgICAgICBkOiBwYXRoRnJvbVN0YXIoc2hhcGUuc2l6ZSwgc2hhcGUuc2l6ZSAvIDIsIDUp
LAorICAgICAgICAgICAgZmlsbDogJyM5OTknLAorICAgICAgICAgICAgc3Ryb2tlOiAnYmxhY2sn
LAorICAgICAgICAgICAgJ3N0cm9rZS13aWR0aCc6IDEwLAorICAgICAgICB9KTsKKyAgICAgICAg
bm9kZS5zdHlsZS5XZWJraXRTaGFkb3cgPSAnNXB4IDVweCA1cHggcmVkJzsKKyAgICAgICAgaWYg
KGkgPT0gMCkKKyAgICAgICAgICAgIG5vZGUuaWQgPSAiZmlyc3Qtc3RhciI7CisgICAgICAgIHNl
dENlbnRlclBvc2l0aW9uKG5vZGUsIHNoYXBlLnBvc1swXSwgc2hhcGUucG9zWzFdKTsKKyAgICAg
ICAgaWYgKHNoYXBlc1tpXS5oYXNTdHJva2UpIHsKKyAgICAgICAgICAgIG5vZGUuc2V0QXR0cmli
dXRlKCdzdHJva2UtZGFzaGFycmF5JywgMjApOworICAgICAgICB9CisgICAgICAgIG5vZGUuYWRk
RXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2KSB7CisgICAgICAgICAgICB2
YXIgZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgYXJtZWQgPSB7IG5vZGU6IGUudGFyZ2V0
IHx8IGUuc3JjRWxlbWVudCB9OworICAgICAgICB9KTsKKyAgICAgICAgbm9kZS5hZGRFdmVudExp
c3RlbmVyKCdtb3VzZXVwJywgZnVuY3Rpb24gKCkgeworICAgICAgICAgICAgYXJtZWQgPSBudWxs
OworICAgICAgICB9KTsKKyAgICB9CisgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNl
bW92ZScsIGZ1bmN0aW9uIChldikgeworICAgICAgICBpZiAoYXJtZWQpIHsKKyAgICAgICAgICAg
IHZhciBlID0gZXYgfHwgZXZlbnQ7CisgICAgICAgICAgICBzZXRDZW50ZXJQb3NpdGlvbihhcm1l
ZC5ub2RlLCBlLmNsaWVudFgsIGUuY2xpZW50WSk7CisgICAgICAgIH0KKyAgICB9KTsKK30pOwor
CisvLy0tPgorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blJlcGFpbnRUZXN0
KCk7Ij4KKworPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC5jaGVja3N1
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21v
dmluZy1zaGFkb3ctb24tY29udGFpbmVyLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9u
LWNvbnRhaW5lci1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAor
MzliMmNlZmZiYjNhMzAzYjMyZjgxYjVlMzczZTZiMDgKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1z
aGFkb3ctb24tY29udGFpbmVyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0
L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQpAQCAtMCwwICsxLDkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBSZW5k
ZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjE2
CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5kZXJC
b2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKKyAgICAgIFJlbmRlclNWR1Jvb3Qge3N2
Z30gYXQgKC01OS44MSwtNjMuMzApIHNpemUgNTEzLjQzeDIyMy42MQorICAgICAgICBSZW5kZXJQ
YXRoIHtwYXRofSBhdCAoLTU5LjgxLC02My4zMCkgc2l6ZSAxMzUuNjJ4MTI4Ljk4IFtzdHJva2U9
e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9rZSB3aWR0aD0xMC4wMF19XSBbZmls
bD17W3R5cGU9U09MSURdIFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwzMC4wMCBMLTM1
LjI3LDQ4LjU0IEwtMjguNTMsOS4yNyBMLTU3LjA2LC0xOC41NCBMLTE3LjYzLC0yNC4yNyBMLTAu
MDAsLTYwLjAwIEwxNy42MywtMjQuMjcgTDU3LjA2LC0xOC41NCBMMjguNTMsOS4yNyBMMzUuMjcs
NDguNTQgWiJdCisgICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICgyMDAuNjgsNDYuNDkpIHNp
emUgMTE3LjA5eDExMy44MyBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0
PSgyNTAuMDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0g
W3N0cm9rZSB3aWR0aD0xMC4wMF0gW2Rhc2ggYXJyYXk9ezIwLjAwfV19XSBbZmlsbD17W3R5cGU9
U09MSURdIFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwzMC4wMCBMLTM1LjI3LDQ4LjU0
IEwtMjguNTMsOS4yNyBMLTU3LjA2LC0xOC41NCBMLTE3LjYzLC0yNC4yNyBMLTAuMDAsLTYwLjAw
IEwxNy42MywtMjQuMjcgTDU3LjA2LC0xOC41NCBMMjguNTMsOS4yNyBMMzUuMjcsNDguNTQgWiJd
CisgICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICgzNDkuNzAsNDYuNzApIHNpemUgMTAzLjkx
eDExMC44OSBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSg0MDAuMDAs
MTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9rZSB3
aWR0aD0xMC4wMF0gW2Rhc2ggYXJyYXk9ezIwLjAwfV19XSBbZmlsbD17W3R5cGU9U09MSURdIFtj
b2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwyNS4wMCBMLTI5LjM5LDQwLjQ1IEwtMjMuNzgs
Ny43MyBMLTQ3LjU1LC0xNS40NSBMLTE0LjY5LC0yMC4yMyBMLTAuMDAsLTUwLjAwIEwxNC42OSwt
MjAuMjMgTDQ3LjU1LC0xNS40NSBMMjMuNzgsNy43MyBMMjkuMzksNDAuNDUgWiJdCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0
aC1leHBlY3RlZC5jaGVja3N1bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC5jaGVja3N1bQko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92
aW5nLXNoYWRvdy1vbi1wYXRoLWV4cGVjdGVkLmNoZWNrc3VtCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxIEBACisyYzlhZDMxNDMzNzkwOGQ4OTcyOTFlOWJlNjNhMGNjYQpcIE5vIG5ld2xpbmUgYXQg
ZW5kIG9mIGZpbGUKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQv
bW92aW5nLXNoYWRvdy1vbi1wYXRoLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9y
ZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsOSBAQAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4NjE2CisgIFJlbmRlclZpZXcg
YXQgKDAsMCkgc2l6ZSA3ODV4NjAwCitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgNzg1eDYxNgorICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzY5eDYwMAorICAgICAgUmVuZGVyU1ZHUm9vdCB7c3ZnfSBhdCAo
LTU5LjgxLC02My4zMCkgc2l6ZSA1MTMuNDN4MjIzLjYxCisgICAgICAgIFJlbmRlclBhdGgge3Bh
dGh9IGF0ICgtNTkuODEsLTYzLjMwKSBzaXplIDEzNS42MngxMjguOTggW3N0cm9rZT17W3R5cGU9
U09MSURdIFtjb2xvcj0jMDAwMDAwXSBbc3Ryb2tlIHdpZHRoPTEwLjAwXX1dIFtmaWxsPXtbdHlw
ZT1TT0xJRF0gW2NvbG9yPSM5OTk5OTldfV0gW2RhdGE9Ik0wLjAwLDMwLjAwIEwtMzUuMjcsNDgu
NTQgTC0yOC41Myw5LjI3IEwtNTcuMDYsLTE4LjU0IEwtMTcuNjMsLTI0LjI3IEwtMC4wMCwtNjAu
MDAgTDE3LjYzLC0yNC4yNyBMNTcuMDYsLTE4LjU0IEwyOC41Myw5LjI3IEwzNS4yNyw0OC41NCBa
Il0KKyAgICAgICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKDIwMC42OCw0Ni40OSkgc2l6ZSAxMTcu
MDl4MTEzLjgzIFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDI1MC4w
MCwxMDAuMDApfV0gW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXSBbc3Ryb2tl
IHdpZHRoPTEwLjAwXSBbZGFzaCBhcnJheT17MjAuMDB9XX1dIFtmaWxsPXtbdHlwZT1TT0xJRF0g
W2NvbG9yPSM5OTk5OTldfV0gW2RhdGE9Ik0wLjAwLDMwLjAwIEwtMzUuMjcsNDguNTQgTC0yOC41
Myw5LjI3IEwtNTcuMDYsLTE4LjU0IEwtMTcuNjMsLTI0LjI3IEwtMC4wMCwtNjAuMDAgTDE3LjYz
LC0yNC4yNyBMNTcuMDYsLTE4LjU0IEwyOC41Myw5LjI3IEwzNS4yNyw0OC41NCBaIl0KKyAgICAg
ICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKDM0OS43MCw0Ni43MCkgc2l6ZSAxMDMuOTF4MTEwLjg5
IFt0cmFuc2Zvcm09e209KCgxLjAwLDAuMDApKDAuMDAsMS4wMCkpIHQ9KDQwMC4wMCwxMDAuMDAp
fV0gW3N0cm9rZT17W3R5cGU9U09MSURdIFtjb2xvcj0jMDAwMDAwXSBbc3Ryb2tlIHdpZHRoPTEw
LjAwXSBbZGFzaCBhcnJheT17MjAuMDB9XX1dIFtmaWxsPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSM5
OTk5OTldfV0gW2RhdGE9Ik0wLjAwLDI1LjAwIEwtMjkuMzksNDAuNDUgTC0yMy43OCw3LjczIEwt
NDcuNTUsLTE1LjQ1IEwtMTQuNjksLTIwLjIzIEwtMC4wMCwtNTAuMDAgTDE0LjY5LC0yMC4yMyBM
NDcuNTUsLTE1LjQ1IEwyMy43OCw3LjczIEwyOS4zOSw0MC40NSBaIl0KSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1jb250YWluZXIt
ZXhwZWN0ZWQucG5nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KQ2Fubm90IGRpc3BsYXk6IGZpbGUgbWFya2VkIGFzIGEg
YmluYXJ5IHR5cGUuCnN2bjptaW1lLXR5cGUgPSBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KClBy
b3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQv
bW92aW5nLXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0ZWQucG5nCl9fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6
IHN2bjptaW1lLXR5cGUKICAgKyBhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0KCgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46168</attachid>
            <date>2010-01-08 15:23:55 -0800</date>
            <delta_ts>2010-01-08 15:28:18 -0800</delta_ts>
            <desc>Even newer patch</desc>
            <filename>forReview3.txt</filename>
            <type>text/plain</type>
            <size>19322</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzAxMykKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjkgQEAKKzIwMTAtMDEtMDggIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29t
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBm
b3IgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMyNzU3IFJlcGFpbnQg
YnVnIAorICAgICAgICB3aXRoIC13ZWJraXQtc2hhZG93IG9uIHN2ZyBzaGFwZXMKKyAgICAgICAg
LWFuZC0KKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzczODkxNDk+CisKKyAgICAgICAgSW5mbGF0
ZSB0aGUgcmVwYWludFJlY3QgZm9yIHRoZSBzaGFkb3cgdXNpbmcgaXRzIGV4dGVudC4KKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRm9yZWlnbk9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJGb3JlaWduT2JqZWN0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJT
VkdJbWFnZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyU1ZHTW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHTW9kZWxP
YmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRl
clNWR1Jvb3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6cmVwYWludFJl
Y3RJbkxvY2FsQ29vcmRpbmF0ZXMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6
Y29tcHV0ZVJlY3RGb3JSZXBhaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyU1ZHVGV4
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJl
cGFpbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OmdldFNWR1NoYWRvd0V4dGVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdS
ZW5kZXJCYXNlOjppbmZsYXRlRm9yU2hhZG93KToKKyAgICAgICAgKiByZW5kZXJpbmcvU1ZHUmVu
ZGVyU3VwcG9ydC5oOgorCiAyMDEwLTAxLTA4ICBLZW5uZXRoIFJ1c3NlbGwgIDxrYnJAZ29vZ2xl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkocmV2aXNpb24gNTI5OTUpCisr
KyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGb3JlaWduT2JqZWN0LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtODQsNiArODQsNyBAQCBGbG9hdFJlY3QgUmVuZGVyRm9yZWlnbk9iamVjdDo6cmVwYWlu
dFJlCiB2b2lkIFJlbmRlckZvcmVpZ25PYmplY3Q6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYgcmVjdCwgYm9vbCBm
aXhlZCkKIHsKICAgICByZWN0ID0gbG9jYWxUb1BhcmVudFRyYW5zZm9ybSgpLm1hcFJlY3QocmVj
dCk7CisgICAgaW5mbGF0ZUZvclNoYWRvdyhzdHlsZSgpLCByZWN0KTsKICAgICBSZW5kZXJCbG9j
azo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlY3QsIGZpeGVkKTsK
IH0KIApJbmRleDogV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHSW1hZ2UuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR0ltYWdlLmNwcAkocmV2aXNpb24gNTI5
OTUpCisrKyBXZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJTVkdJbWFnZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE3NSw2ICsxNzUsNyBAQCBJbnRSZWN0IFJlbmRlclNWR0ltYWdlOjpjbGlwcGVkT3Zl
cmZsb3dSCiAKIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYgcmVwYWludFJlY3Qs
IGJvb2wgZml4ZWQpCiB7CisgICAgaW5mbGF0ZUZvclNoYWRvdyhzdHlsZSgpLCByZXBhaW50UmVj
dCk7CiAgICAgU1ZHUmVuZGVyQmFzZTo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHRoaXMsIHJlcGFp
bnRDb250YWluZXIsIHJlcGFpbnRSZWN0LCBmaXhlZCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlclNWR01vZGVsT2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJTVkdNb2RlbE9iamVjdC5jcHAJKHJldmlzaW9uIDUyOTk1KQorKysgV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyU1ZHTW9kZWxPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01Niw2ICs1Niw3IEBAIEludFJlY3QgUmVuZGVyU1ZHTW9kZWxPYmplY3Q6OmNsaXBwZWRPdmUK
IAogdm9pZCBSZW5kZXJTVkdNb2RlbE9iamVjdDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KFJlbmRl
ckJveE1vZGVsT2JqZWN0KiByZXBhaW50Q29udGFpbmVyLCBJbnRSZWN0JiByZXBhaW50UmVjdCwg
Ym9vbCBmaXhlZCkKIHsKKyAgICBpbmZsYXRlRm9yU2hhZG93KHN0eWxlKCksIHJlcGFpbnRSZWN0
KTsKICAgICBTVkdSZW5kZXJCYXNlOjpjb21wdXRlUmVjdEZvclJlcGFpbnQodGhpcywgcmVwYWlu
dENvbnRhaW5lciwgcmVwYWludFJlY3QsIGZpeGVkKTsKIH0KIApJbmRleDogV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyU1ZHUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5jcHAJKHJldmlzaW9uIDUyOTk1KQorKysgV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyU1ZHUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw3ICsyNTEsNyBAQCBGbG9h
dFJlY3QgUmVuZGVyU1ZHUm9vdDo6b2JqZWN0Qm91bmRpbmdCCiAKIEZsb2F0UmVjdCBSZW5kZXJT
VkdSb290OjpyZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpIGNvbnN0CiB7Ci0gICAgLy8g
RklYTUU6IFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9yZGVyIGJ1dCBpdCBzaG91bGQhCisg
ICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgYm9yZGVyIG9yIHNoYWRvdyBi
dXQgaXQgc2hvdWxkIQogICAgIHJldHVybiBjb21wdXRlQ29udGFpbmVyQm91bmRpbmdCb3godGhp
cywgdHJ1ZSk7CiB9CiAKQEAgLTI2Miw4ICsyNjIsMTAgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXgg
UmVuZGVyU1ZHUm9vdDo6bG9jYQogCiB2b2lkIFJlbmRlclNWR1Jvb3Q6OmNvbXB1dGVSZWN0Rm9y
UmVwYWludChSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYg
cmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCiB7Ci0gICAgLy8gQXBwbHkgb3VyIGxvY2FsIHRyYW5z
Zm9ybXMgKGV4Y2VwdCBmb3IgeC95IHRyYW5zbGF0aW9uKSBhbmQgY2FsbCBSZW5kZXJCb3gncyBt
ZXRob2QgdG8gaGFuZGxlIGFsbCB0aGUgbm9ybWFsIENTUyBCb3ggbW9kZWwgYml0cworICAgIC8v
IEFwcGx5IG91ciBsb2NhbCB0cmFuc2Zvcm1zIChleGNlcHQgZm9yIHgveSB0cmFuc2xhdGlvbiks
IHRoZW4gb3VyIHNoYWRvdywgCisgICAgLy8gYW5kIHRoZW4gY2FsbCBSZW5kZXJCb3gncyBtZXRo
b2QgdG8gaGFuZGxlIGFsbCB0aGUgbm9ybWFsIENTUyBCb3ggbW9kZWwgYml0cwogICAgIHJlcGFp
bnRSZWN0ID0gbG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybSgpLm1hcFJlY3QocmVwYWludFJlY3Qp
OworICAgIGluZmxhdGVGb3JTaGFkb3coc3R5bGUoKSwgcmVwYWludFJlY3QpOwogICAgIFJlbmRl
ckJveDo6Y29tcHV0ZVJlY3RGb3JSZXBhaW50KHJlcGFpbnRDb250YWluZXIsIHJlcGFpbnRSZWN0
LCBmaXhlZCk7CiB9CiAKSW5kZXg6IFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCShyZXZp
c2lvbiA1Mjk5NSkKKysrIFdlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclNWR1RleHQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01OSw2ICs1OSw3IEBAIEludFJlY3QgUmVuZGVyU1ZHVGV4dDo6Y2xpcHBl
ZE92ZXJmbG93UmUKIAogdm9pZCBSZW5kZXJTVkdUZXh0Ojpjb21wdXRlUmVjdEZvclJlcGFpbnQo
UmVuZGVyQm94TW9kZWxPYmplY3QqIHJlcGFpbnRDb250YWluZXIsIEludFJlY3QmIHJlcGFpbnRS
ZWN0LCBib29sIGZpeGVkKQogeworICAgIGluZmxhdGVGb3JTaGFkb3coc3R5bGUoKSwgcmVwYWlu
dFJlY3QpOwogICAgIFNWR1JlbmRlckJhc2U6OmNvbXB1dGVSZWN0Rm9yUmVwYWludCh0aGlzLCBy
ZXBhaW50Q29udGFpbmVyLCByZXBhaW50UmVjdCwgZml4ZWQpOwogfQogCkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Jl
bmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkocmV2aXNpb24gNTI5OTUpCisrKyBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsNiAr
NDAsOCBAQAogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSA8d3Rm
L1VudXNlZFBhcmFtLmg+CiAKK3VzaW5nIG5hbWVzcGFjZSBzdGQ7CisKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogU1ZHUmVuZGVyQmFzZTo6flNWR1JlbmRlckJhc2UoKQpAQCAtNTksNiArNjEsNDgg
QEAgSW50UmVjdCBTVkdSZW5kZXJCYXNlOjpjbGlwcGVkT3ZlcmZsb3dSZQogICAgIHJldHVybiBy
ZXBhaW50UmVjdDsKIH0KIAorc3RhdGljIHZvaWQgZ2V0U1ZHU2hhZG93RXh0ZW50KFNoYWRvd0Rh
dGEqIHNoYWRvdywgaW50ICZ0b3AsIGludCAmcmlnaHQsIGludCAmYm90dG9tLCBpbnQgJmxlZnQp
Cit7CisgICAgdG9wID0gMDsKKyAgICByaWdodCA9IDA7CisgICAgYm90dG9tID0gMDsKKyAgICBs
ZWZ0ID0gMDsKKworICAgIGludCBibHVyQW5kU3ByZWFkID0gc2hhZG93LT5ibHVyICsgc2hhZG93
LT5zcHJlYWQ7CisKKyAgICB0b3AgPSBtaW4odG9wLCBzaGFkb3ctPnkgLSBibHVyQW5kU3ByZWFk
KTsKKyAgICByaWdodCA9IG1heChyaWdodCwgc2hhZG93LT54ICsgYmx1ckFuZFNwcmVhZCk7Cisg
ICAgYm90dG9tID0gbWF4KGJvdHRvbSwgc2hhZG93LT55ICsgYmx1ckFuZFNwcmVhZCk7CisgICAg
bGVmdCA9IG1pbihsZWZ0LCBzaGFkb3ctPnggLSBibHVyQW5kU3ByZWFkKTsKK30KKwordm9pZCBT
VkdSZW5kZXJCYXNlOjppbmZsYXRlRm9yU2hhZG93KFJlbmRlclN0eWxlKiBzdHlsZSwgSW50UmVj
dCYgcmVwYWludFJlY3QpIGNvbnN0Cit7CisgICAgQVNTRVJUKHN0eWxlKTsKKyAgICBpZiAoIXN0
eWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBTaGFkb3dEYXRhKiBzaGFkb3cgPSBzdHlsZS0+
c3ZnU3R5bGUoKS0+c2hhZG93KCk7CisgICAgaWYgKCFzaGFkb3cpCisgICAgICAgIHJldHVybjsK
KworICAgIGludCBzaGFkb3dUb3A7CisgICAgaW50IHNoYWRvd1JpZ2h0OworICAgIGludCBzaGFk
b3dCb3R0b207CisgICAgaW50IHNoYWRvd0xlZnQ7CisgICAgZ2V0U1ZHU2hhZG93RXh0ZW50KHNo
YWRvdywgc2hhZG93VG9wLCBzaGFkb3dSaWdodCwgc2hhZG93Qm90dG9tLCBzaGFkb3dMZWZ0KTsK
KworICAgIGludCBvdmVyZmxvd0xlZnQgPSByZXBhaW50UmVjdC54KCkgKyBzaGFkb3dMZWZ0Owor
ICAgIGludCBvdmVyZmxvd1JpZ2h0ID0gcmVwYWludFJlY3QucmlnaHQoKSArIHNoYWRvd1JpZ2h0
OworICAgIGludCBvdmVyZmxvd1RvcCA9IHJlcGFpbnRSZWN0LnkoKSArIHNoYWRvd1RvcDsKKyAg
ICBpbnQgb3ZlcmZsb3dCb3R0b20gPSByZXBhaW50UmVjdC5ib3R0b20oKSArIHNoYWRvd0JvdHRv
bTsKKworICAgIHJlcGFpbnRSZWN0LnNldFgob3ZlcmZsb3dMZWZ0KTsKKyAgICByZXBhaW50UmVj
dC5zZXRZKG92ZXJmbG93VG9wKTsKKyAgICByZXBhaW50UmVjdC5zZXRXaWR0aChvdmVyZmxvd1Jp
Z2h0IC0gb3ZlcmZsb3dMZWZ0KTsKKyAgICByZXBhaW50UmVjdC5zZXRIZWlnaHQob3ZlcmZsb3dC
b3R0b20gLSBvdmVyZmxvd1RvcCk7Cit9CisKIHZvaWQgU1ZHUmVuZGVyQmFzZTo6Y29tcHV0ZVJl
Y3RGb3JSZXBhaW50KFJlbmRlck9iamVjdCogb2JqZWN0LCBSZW5kZXJCb3hNb2RlbE9iamVjdCog
cmVwYWludENvbnRhaW5lciwgSW50UmVjdCYgcmVwYWludFJlY3QsIGJvb2wgZml4ZWQpCiB7CiAg
ICAgLy8gVHJhbnNsYXRlIHRvIGNvb3JkcyBpbiBvdXIgcGFyZW50IHJlbmRlcmVyLCBhbmQgdGhl
biBjYWxsIGNvbXB1dGVSZWN0Rm9yUmVwYWludCBvbiBvdXIgcGFyZW50CkluZGV4OiBXZWJDb3Jl
L3JlbmRlcmluZy9TVkdSZW5kZXJTdXBwb3J0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9yZW5k
ZXJpbmcvU1ZHUmVuZGVyU3VwcG9ydC5oCShyZXZpc2lvbiA1Mjk5NSkKKysrIFdlYkNvcmUvcmVu
ZGVyaW5nL1NWR1JlbmRlclN1cHBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNiArNTUsOSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIEZsb2F0UmVjdCBmaWx0ZXJCb3VuZGluZ0Jv
eEZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCopIGNvbnN0OwogICAgICAgICBGbG9hdFJl
Y3QgY2xpcHBlckJvdW5kaW5nQm94Rm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0KikgY29u
c3Q7CiAgICAgICAgIEZsb2F0UmVjdCBtYXNrZXJCb3VuZGluZ0JveEZvclJlbmRlcmVyKGNvbnN0
IFJlbmRlck9iamVjdCopIGNvbnN0OworCisgICAgICAgIHZpcnR1YWwgdm9pZCBpbmZsYXRlRm9y
U2hhZG93KFJlbmRlclN0eWxlKiwgSW50UmVjdCYpIGNvbnN0OworCiAgICAgcHJvdGVjdGVkOgog
ICAgICAgICBzdGF0aWMgSW50UmVjdCBjbGlwcGVkT3ZlcmZsb3dSZWN0Rm9yUmVwYWludChSZW5k
ZXJPYmplY3QqLCBSZW5kZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lcik7CiAgICAg
ICAgIHN0YXRpYyB2b2lkIGNvbXB1dGVSZWN0Rm9yUmVwYWludChSZW5kZXJPYmplY3QqLCBSZW5k
ZXJCb3hNb2RlbE9iamVjdCogcmVwYWludENvbnRhaW5lciwgSW50UmVjdCYsIGJvb2wgZml4ZWQp
OwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTMwMTMpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wMS0wOCAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdHMgZm9yIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMjc1NyBSZXBhaW50IGJ1ZyAKKyAgICAgICAgd2l0aCAtd2Via2l0LXNoYWRvdyBvbiBzdmcg
c2hhcGVzCisgICAgICAgIC1hbmQtCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83Mzg5MTQ5Pgor
CisgICAgICAgICogZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGguaHRt
bDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hh
ZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC5jaGVja3N1bTogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3Rl
ZC5wbmc6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92aW5n
LXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwbGF0
Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC5jaGVj
a3N1bTogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmct
c2hhZG93LW9uLXBhdGgtZXhwZWN0ZWQucG5nOiBBZGRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9t
YWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC50eHQ6IEFkZGVk
LgorCiAyMDEwLTAxLTA4ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9y
ZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLmh0bWwKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1j
b250YWluZXIuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5MyBAQAorPGh0bWw+Cis8aGVh
ZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcmVwYWludC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0
IGxhbmd1YWdlPSJqYXZhc2NyaXB0Ij4KKzwhLS0KKworU1ZHX05TID0gJ2h0dHA6Ly93d3cudzMu
b3JnLzIwMDAvc3ZnJzsKKworZnVuY3Rpb24gcmVwYWludFRlc3QoKSB7CisgICAgdmFyIHN0YXIg
PSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZmlyc3Qtc3RhciIpOworICAgIHNldENlbnRlclBv
c2l0aW9uKHN0YXIsIDAsIDApOworfQorCitmdW5jdGlvbiBwYXRoRnJvbVN0YXIgKHJhZGl1cywg
aW5uZXJSYWRpdXMsIHNpZGVzKSB7CisgICAgdmFyIHBhdGggPSBbXTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNpZGVzICogMjsgKytpKSB7CisgICAgICAgIHZhciB0aGV0YSA9IE1hdGguUEkg
KiBpIC8gc2lkZXMgKyAoTWF0aC5QSSAvIDIpOworICAgICAgICB2YXIgciA9IChpICUgMikgPyBy
YWRpdXMgOiBpbm5lclJhZGl1czsKKyAgICAgICAgdmFyIHggPSByICogTWF0aC5jb3ModGhldGEp
OworICAgICAgICB2YXIgeSA9IHIgKiBNYXRoLnNpbih0aGV0YSk7CisgICAgICAgIHBhdGgucHVz
aCgoaSA/ICdMJyA6ICdNJyksIHgsIHkpOworICAgIH0KKyAgICBwYXRoLnB1c2goJ1onKTsKKyAg
ICByZXR1cm4gcGF0aC5qb2luKCcgJyk7Cit9CisKK2Z1bmN0aW9uIG5ld1N2Z0VsZW1lbnQgKHRh
Z05hbWUsIHBhcmVudE5vZGUsIGF0dHJzKSB7CisgICAgdmFyIG5vZGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50TlMoU1ZHX05TLCB0YWdOYW1lKTsKKyAgICBpZiAoYXR0cnMpIHsKKyAgICAgICAg
Zm9yICh2YXIgayBpbiBhdHRycykgeworICAgICAgICAgICAgbm9kZS5zZXRBdHRyaWJ1dGUoaywg
YXR0cnNba10pOworICAgICAgICB9CisgICAgfQorICAgIGlmIChwYXJlbnROb2RlKSB7CisgICAg
ICAgIHBhcmVudE5vZGUuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgfQorICAgIHJldHVybiBub2Rl
OworfQorCitmdW5jdGlvbiBzZXRDZW50ZXJQb3NpdGlvbiAobm9kZSwgeCwgeSkgeworICAgIG5v
ZGUuc2V0QXR0cmlidXRlKCd0cmFuc2Zvcm0nLCAndHJhbnNsYXRlKCQxLCAkMiknCisgICAgICAg
IC5yZXBsYWNlKCckMScsIHgpCisgICAgICAgIC5yZXBsYWNlKCckMicsIHkpKTsKK30KKwordmFy
IGFybWVkID0gbnVsbDsKKword2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBmdW5jdGlv
biAoKSB7CisKKyAgICB2YXIgc3ZnQ29udGFpbmVyID0gbmV3U3ZnRWxlbWVudCgnc3ZnJywgZG9j
dW1lbnQuYm9keSk7CisgICAgdmFyIHNoYXBlcyA9IFsKKyAgICAgICAgeyBwb3M6IFsgMTAwLCAx
MDAgXSwgc2l6ZTogNjAsIGhhc1N0cm9rZTogZmFsc2UgfSwKKyAgICAgICAgeyBwb3M6IFsgMjUw
LCAxMDAgXSwgc2l6ZTogNjAsIGhhc1N0cm9rZTogdHJ1ZSB9LAorICAgICAgICB7IHBvczogWyA0
MDAsIDEwMCBdLCBzaXplOiA1MCwgaGFzU3Ryb2tlOiB0cnVlIH0KKyAgICBdOworCXN2Z0NvbnRh
aW5lci5zdHlsZS5XZWJraXRTaGFkb3cgPSAnNXB4IDVweCA1cHggcmVkJzsKKyAgICBmb3IgKHZh
ciBpID0gMDsgaSA8IHNoYXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgc2hhcGUgPSBz
aGFwZXNbaV07CisgICAgICAgIHZhciBub2RlID0gbmV3U3ZnRWxlbWVudCgncGF0aCcsIHN2Z0Nv
bnRhaW5lciwgeworICAgICAgICAgICAgZDogcGF0aEZyb21TdGFyKHNoYXBlLnNpemUsIHNoYXBl
LnNpemUgLyAyLCA1KSwKKyAgICAgICAgICAgIGZpbGw6ICcjOTk5JywKKyAgICAgICAgICAgIHN0
cm9rZTogJ2JsYWNrJywKKyAgICAgICAgICAgICdzdHJva2Utd2lkdGgnOiAxMCwKKyAgICAgICAg
fSk7CisgICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICBub2RlLmlkID0gImZpcnN0LXN0
YXIiOworICAgICAgICBzZXRDZW50ZXJQb3NpdGlvbihub2RlLCBzaGFwZS5wb3NbMF0sIHNoYXBl
LnBvc1sxXSk7CisgICAgICAgIGlmIChzaGFwZXNbaV0uaGFzU3Ryb2tlKSB7CisgICAgICAgICAg
ICBub2RlLnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIDIwKTsKKyAgICAgICAgfQor
ICAgICAgICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldikg
eworICAgICAgICAgICAgdmFyIGUgPSBldiB8fCBldmVudDsKKyAgICAgICAgICAgIGFybWVkID0g
eyBub2RlOiBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQgfTsKKyAgICAgICAgfSk7CisgICAgICAg
IG5vZGUuYWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAg
ICAgIGFybWVkID0gbnVsbDsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVu
dExpc3RlbmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgaWYgKGFybWVk
KSB7CisgICAgICAgICAgICB2YXIgZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgc2V0Q2Vu
dGVyUG9zaXRpb24oYXJtZWQubm9kZSwgZS5jbGllbnRYLCBlLmNsaWVudFkpOworICAgICAgICB9
CisgICAgfSk7Cit9KTsKKworLy8tLT4KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSJydW5SZXBhaW50VGVzdCgpOyI+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGguaHRtbAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1wYXRoLmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1w
YXRoLmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsOTMgQEAKKzxodG1sPgorPGhlYWQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JlcGFpbnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBsYW5n
dWFnZT0iamF2YXNjcmlwdCI+Cis8IS0tCisKK1NWR19OUyA9ICdodHRwOi8vd3d3LnczLm9yZy8y
MDAwL3N2Zyc7CisKK2Z1bmN0aW9uIHJlcGFpbnRUZXN0KCkgeworICAgIHZhciBzdGFyID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImZpcnN0LXN0YXIiKTsKKyAgICBzZXRDZW50ZXJQb3NpdGlv
bihzdGFyLCAwLCAwKTsKK30KKworZnVuY3Rpb24gcGF0aEZyb21TdGFyIChyYWRpdXMsIGlubmVy
UmFkaXVzLCBzaWRlcykgeworICAgIHZhciBwYXRoID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBzaWRlcyAqIDI7ICsraSkgeworICAgICAgICB2YXIgdGhldGEgPSBNYXRoLlBJICogaSAv
IHNpZGVzICsgKE1hdGguUEkgLyAyKTsKKyAgICAgICAgdmFyIHIgPSAoaSAlIDIpID8gcmFkaXVz
IDogaW5uZXJSYWRpdXM7CisgICAgICAgIHZhciB4ID0gciAqIE1hdGguY29zKHRoZXRhKTsKKyAg
ICAgICAgdmFyIHkgPSByICogTWF0aC5zaW4odGhldGEpOworICAgICAgICBwYXRoLnB1c2goKGkg
PyAnTCcgOiAnTScpLCB4LCB5KTsKKyAgICB9CisgICAgcGF0aC5wdXNoKCdaJyk7CisgICAgcmV0
dXJuIHBhdGguam9pbignICcpOworfQorCitmdW5jdGlvbiBuZXdTdmdFbGVtZW50ICh0YWdOYW1l
LCBwYXJlbnROb2RlLCBhdHRycykgeworICAgIHZhciBub2RlID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudE5TKFNWR19OUywgdGFnTmFtZSk7CisgICAgaWYgKGF0dHJzKSB7CisgICAgICAgIGZvciAo
dmFyIGsgaW4gYXR0cnMpIHsKKyAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKGssIGF0dHJz
W2tdKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAocGFyZW50Tm9kZSkgeworICAgICAgICBw
YXJlbnROb2RlLmFwcGVuZENoaWxkKG5vZGUpOworICAgIH0KKyAgICByZXR1cm4gbm9kZTsKK30K
KworZnVuY3Rpb24gc2V0Q2VudGVyUG9zaXRpb24gKG5vZGUsIHgsIHkpIHsKKyAgICBub2RlLnNl
dEF0dHJpYnV0ZSgndHJhbnNmb3JtJywgJ3RyYW5zbGF0ZSgkMSwgJDIpJworICAgICAgICAucmVw
bGFjZSgnJDEnLCB4KQorICAgICAgICAucmVwbGFjZSgnJDInLCB5KSk7Cit9CisKK3ZhciBhcm1l
ZCA9IG51bGw7CisKK3dpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZnVuY3Rpb24gKCkg
eworCisgICAgdmFyIHN2Z0NvbnRhaW5lciA9IG5ld1N2Z0VsZW1lbnQoJ3N2ZycsIGRvY3VtZW50
LmJvZHkpOworICAgIHZhciBzaGFwZXMgPSBbCisgICAgICAgIHsgcG9zOiBbIDEwMCwgMTAwIF0s
IHNpemU6IDYwLCBoYXNTdHJva2U6IGZhbHNlIH0sCisgICAgICAgIHsgcG9zOiBbIDI1MCwgMTAw
IF0sIHNpemU6IDYwLCBoYXNTdHJva2U6IHRydWUgfSwKKyAgICAgICAgeyBwb3M6IFsgNDAwLCAx
MDAgXSwgc2l6ZTogNTAsIGhhc1N0cm9rZTogdHJ1ZSB9CisgICAgXTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IHNoYXBlcy5sZW5ndGg7ICsraSkgeworICAgICAgICB2YXIgc2hhcGUgPSBzaGFw
ZXNbaV07CisgICAgICAgIHZhciBub2RlID0gbmV3U3ZnRWxlbWVudCgncGF0aCcsIHN2Z0NvbnRh
aW5lciwgeworICAgICAgICAgICAgZDogcGF0aEZyb21TdGFyKHNoYXBlLnNpemUsIHNoYXBlLnNp
emUgLyAyLCA1KSwKKyAgICAgICAgICAgIGZpbGw6ICcjOTk5JywKKyAgICAgICAgICAgIHN0cm9r
ZTogJ2JsYWNrJywKKyAgICAgICAgICAgICdzdHJva2Utd2lkdGgnOiAxMCwKKyAgICAgICAgfSk7
CisgICAgICAgIG5vZGUuc3R5bGUuV2Via2l0U2hhZG93ID0gJzVweCA1cHggNXB4IHJlZCc7Cisg
ICAgICAgIGlmIChpID09IDApCisgICAgICAgICAgICBub2RlLmlkID0gImZpcnN0LXN0YXIiOwor
ICAgICAgICBzZXRDZW50ZXJQb3NpdGlvbihub2RlLCBzaGFwZS5wb3NbMF0sIHNoYXBlLnBvc1sx
XSk7CisgICAgICAgIGlmIChzaGFwZXNbaV0uaGFzU3Ryb2tlKSB7CisgICAgICAgICAgICBub2Rl
LnNldEF0dHJpYnV0ZSgnc3Ryb2tlLWRhc2hhcnJheScsIDIwKTsKKyAgICAgICAgfQorICAgICAg
ICBub2RlLmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGZ1bmN0aW9uIChldikgeworICAg
ICAgICAgICAgdmFyIGUgPSBldiB8fCBldmVudDsKKyAgICAgICAgICAgIGFybWVkID0geyBub2Rl
OiBlLnRhcmdldCB8fCBlLnNyY0VsZW1lbnQgfTsKKyAgICAgICAgfSk7CisgICAgICAgIG5vZGUu
YWRkRXZlbnRMaXN0ZW5lcignbW91c2V1cCcsIGZ1bmN0aW9uICgpIHsKKyAgICAgICAgICAgIGFy
bWVkID0gbnVsbDsKKyAgICAgICAgfSk7CisgICAgfQorICAgIHdpbmRvdy5hZGRFdmVudExpc3Rl
bmVyKCdtb3VzZW1vdmUnLCBmdW5jdGlvbiAoZXYpIHsKKyAgICAgICAgaWYgKGFybWVkKSB7Cisg
ICAgICAgICAgICB2YXIgZSA9IGV2IHx8IGV2ZW50OworICAgICAgICAgICAgc2V0Q2VudGVyUG9z
aXRpb24oYXJtZWQubm9kZSwgZS5jbGllbnRYLCBlLmNsaWVudFkpOworICAgICAgICB9CisgICAg
fSk7Cit9KTsKKworLy8tLT4KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5S
ZXBhaW50VGVzdCgpOyI+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92aW5nLXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0
ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3Qv
cmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC5jaGVja3N1bQkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlcGFpbnQvbW92aW5n
LXNoYWRvdy1vbi1jb250YWluZXItZXhwZWN0ZWQuY2hlY2tzdW0JKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEgQEAKKzNjYTZlMzc0ZTAxNmE5ODg5ZGJkZmJmMGMwNzIxZWQwClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgZmlsZQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWlu
dC9tb3Zpbmctc2hhZG93LW9uLWNvbnRhaW5lci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLWNv
bnRhaW5lci1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACitsYXllciBhdCAoMCwwKSBzaXplIDc4NXg2
MTYKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDc4NXg2MDAKK2xheWVyIGF0ICgwLDApIHNp
emUgNzg1eDYxNgorICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA3ODV4NjE2Cisg
ICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3Njl4NjAwCisgICAgICBSZW5kZXJT
VkdSb290IHtzdmd9IGF0ICgtNTkuODEsLTYzLjMwKSBzaXplIDUxMy40M3gyMjMuNjEKKyAgICAg
ICAgUmVuZGVyUGF0aCB7cGF0aH0gYXQgKC01OS44MSwtNjMuMzApIHNpemUgMTM1LjYyeDEyOC45
OCBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAu
MDBdfV0gW2ZpbGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAs
MzAuMDAgTC0zNS4yNyw0OC41NCBMLTI4LjUzLDkuMjcgTC01Ny4wNiwtMTguNTQgTC0xNy42Mywt
MjQuMjcgTC0wLjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3IEw1Ny4wNiwtMTguNTQgTDI4LjUzLDku
MjcgTDM1LjI3LDQ4LjU0IFoiXQorICAgICAgICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoMjAwLjY4
LDQ2LjQ5KSBzaXplIDExNy4wOXgxMTMuODMgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4w
MCwxLjAwKSkgdD0oMjUwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9y
PSMwMDAwMDBdIFtzdHJva2Ugd2lkdGg9MTAuMDBdIFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2Zp
bGw9e1t0eXBlPVNPTElEXSBbY29sb3I9Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMzAuMDAgTC0z
NS4yNyw0OC41NCBMLTI4LjUzLDkuMjcgTC01Ny4wNiwtMTguNTQgTC0xNy42MywtMjQuMjcgTC0w
LjAwLC02MC4wMCBMMTcuNjMsLTI0LjI3IEw1Ny4wNiwtMTguNTQgTDI4LjUzLDkuMjcgTDM1LjI3
LDQ4LjU0IFoiXQorICAgICAgICBSZW5kZXJQYXRoIHtwYXRofSBhdCAoMzQ5LjcwLDQ2LjcwKSBz
aXplIDEwMy45MXgxMTAuODkgW3RyYW5zZm9ybT17bT0oKDEuMDAsMC4wMCkoMC4wMCwxLjAwKSkg
dD0oNDAwLjAwLDEwMC4wMCl9XSBbc3Ryb2tlPXtbdHlwZT1TT0xJRF0gW2NvbG9yPSMwMDAwMDBd
IFtzdHJva2Ugd2lkdGg9MTAuMDBdIFtkYXNoIGFycmF5PXsyMC4wMH1dfV0gW2ZpbGw9e1t0eXBl
PVNPTElEXSBbY29sb3I9Izk5OTk5OV19XSBbZGF0YT0iTTAuMDAsMjUuMDAgTC0yOS4zOSw0MC40
NSBMLTIzLjc4LDcuNzMgTC00Ny41NSwtMTUuNDUgTC0xNC42OSwtMjAuMjMgTC0wLjAwLC01MC4w
MCBMMTQuNjksLTIwLjIzIEw0Ny41NSwtMTUuNDUgTDIzLjc4LDcuNzMgTDI5LjM5LDQwLjQ1IFoi
XQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hh
ZG93LW9uLXBhdGgtZXhwZWN0ZWQuY2hlY2tzdW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGgtZXhwZWN0ZWQu
Y2hlY2tzdW0JKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9y
ZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC5jaGVja3N1bQkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSBAQAorMGFhNzRiYmYyMzZjOGU3YWY3ZTQxZGQxYjU0ZGFhMmUKXCBObyBu
ZXdsaW5lIGF0IGVuZCBvZiBmaWxlCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tcGF0aC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9u
LXBhdGgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL2Zhc3QvcmVwYWludC9tb3Zpbmctc2hhZG93LW9uLXBhdGgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDkgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgNzg1eDYxNgorICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgNzg1eDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA3ODV4
NjE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDc4NXg2MTYKKyAgICBSZW5k
ZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc2OXg2MDAKKyAgICAgIFJlbmRlclNWR1Jvb3Qg
e3N2Z30gYXQgKC01OS44MSwtNjMuMzApIHNpemUgNTEzLjQzeDIyMy42MQorICAgICAgICBSZW5k
ZXJQYXRoIHtwYXRofSBhdCAoLTU5LjgxLC02My4zMCkgc2l6ZSAxMzUuNjJ4MTI4Ljk4IFtzdHJv
a2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9rZSB3aWR0aD0xMC4wMF19XSBb
ZmlsbD17W3R5cGU9U09MSURdIFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwzMC4wMCBM
LTM1LjI3LDQ4LjU0IEwtMjguNTMsOS4yNyBMLTU3LjA2LC0xOC41NCBMLTE3LjYzLC0yNC4yNyBM
LTAuMDAsLTYwLjAwIEwxNy42MywtMjQuMjcgTDU3LjA2LC0xOC41NCBMMjguNTMsOS4yNyBMMzUu
MjcsNDguNTQgWiJdCisgICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICgyMDAuNjgsNDYuNDkp
IHNpemUgMTE3LjA5eDExMy44MyBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDAp
KSB0PSgyNTAuMDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAw
MF0gW3N0cm9rZSB3aWR0aD0xMC4wMF0gW2Rhc2ggYXJyYXk9ezIwLjAwfV19XSBbZmlsbD17W3R5
cGU9U09MSURdIFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwzMC4wMCBMLTM1LjI3LDQ4
LjU0IEwtMjguNTMsOS4yNyBMLTU3LjA2LC0xOC41NCBMLTE3LjYzLC0yNC4yNyBMLTAuMDAsLTYw
LjAwIEwxNy42MywtMjQuMjcgTDU3LjA2LC0xOC41NCBMMjguNTMsOS4yNyBMMzUuMjcsNDguNTQg
WiJdCisgICAgICAgIFJlbmRlclBhdGgge3BhdGh9IGF0ICgzNDkuNzAsNDYuNzApIHNpemUgMTAz
LjkxeDExMC44OSBbdHJhbnNmb3JtPXttPSgoMS4wMCwwLjAwKSgwLjAwLDEuMDApKSB0PSg0MDAu
MDAsMTAwLjAwKX1dIFtzdHJva2U9e1t0eXBlPVNPTElEXSBbY29sb3I9IzAwMDAwMF0gW3N0cm9r
ZSB3aWR0aD0xMC4wMF0gW2Rhc2ggYXJyYXk9ezIwLjAwfV19XSBbZmlsbD17W3R5cGU9U09MSURd
IFtjb2xvcj0jOTk5OTk5XX1dIFtkYXRhPSJNMC4wMCwyNS4wMCBMLTI5LjM5LDQwLjQ1IEwtMjMu
NzgsNy43MyBMLTQ3LjU1LC0xNS40NSBMLTE0LjY5LC0yMC4yMyBMLTAuMDAsLTUwLjAwIEwxNC42
OSwtMjAuMjMgTDQ3LjU1LC0xNS40NSBMMjMuNzgsNy43MyBMMjkuMzksNDAuNDUgWiJdCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24t
Y29udGFpbmVyLWV4cGVjdGVkLnBuZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkNhbm5vdCBkaXNwbGF5OiBmaWxlIG1h
cmtlZCBhcyBhIGJpbmFyeSB0eXBlLgpzdm46bWltZS10eXBlID0gYXBwbGljYXRpb24vb2N0ZXQt
c3RyZWFtCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFz
dC9yZXBhaW50L21vdmluZy1zaGFkb3ctb24tY29udGFpbmVyLWV4cGVjdGVkLnBuZwpfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46bWltZS10eXBlCiAgICsgYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtCgo=
</data>
<flag name="review"
          id="28391"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>