<?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>79180</bug_id>
          
          <creation_ts>2012-02-21 18:44:54 -0800</creation_ts>
          <short_desc>firstRendererOf() returns fallback element in NodeRenderingContext</short_desc>
          <delta_ts>2012-02-22 04:06:29 -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>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>79220</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Shinya Kawanaka">shinyak</reporter>
          <assigned_to name="Shinya Kawanaka">shinyak</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>561463</commentid>
    <comment_count>0</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-21 18:44:54 -0800</bug_when>
    <thetext>Currently we handle AttachingFallback in some special manner.
However, if firstRendererOf and lastRendererOf returns fallback renderer, we don&apos;t need to handle it in special manner.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561470</commentid>
    <comment_count>1</comment_count>
      <attachid>128103</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-21 18:51:27 -0800</bug_when>
    <thetext>Created attachment 128103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561498</commentid>
    <comment_count>2</comment_count>
      <attachid>128103</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-21 19:28:27 -0800</bug_when>
    <thetext>Comment on attachment 128103
Patch

Ah, I should have to remove more code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561520</commentid>
    <comment_count>3</comment_count>
      <attachid>128103</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-21 19:51:17 -0800</bug_when>
    <thetext>Comment on attachment 128103
Patch

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

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:159
&gt; +            return parent-&gt;firstChild()-&gt;renderer();

I don&apos;t think this is enough to replace |NodeRenderingContext(m_node-&gt;parentNode()).nextRenderer()|.
In the fallback case,  nextRenderer() is possible to return non-fallback element. 
Actually as the expression implies, it return the renderer which is next to the renderer of the parent. not renderer of the parent&apos;s first child. 

The point here is that nextRenderer() doesn&apos;t necessarily return a renderer of parent&apos;s children. It could return one of its sibling&apos;s.
This is really tricky part but we don&apos;t have enough test coverage...

&gt; Source/WebCore/html/shadow/InsertionPoint.h:63
&gt; +    ASSERT(!node || isInsertionPoint(node));

Doesn&apos;t need !node ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561622</commentid>
    <comment_count>4</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-21 22:29:26 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 128103 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128103&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.cpp:159
&gt; &gt; +            return parent-&gt;firstChild()-&gt;renderer();
&gt; 
&gt; I don&apos;t think this is enough to replace |NodeRenderingContext(m_node-&gt;parentNode()).nextRenderer()|.
&gt; In the fallback case,  nextRenderer() is possible to return non-fallback element. 
&gt; Actually as the expression implies, it return the renderer which is next to the renderer of the parent. not renderer of the parent&apos;s first child. 

Yeah, we should add a test case that &lt;content&gt; has &lt;content&gt; as a fallback element...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561666</commentid>
    <comment_count>5</comment_count>
      <attachid>128143</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-21 23:32:34 -0800</bug_when>
    <thetext>Created attachment 128143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561691</commentid>
    <comment_count>6</comment_count>
      <attachid>128143</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2012-02-22 00:20:42 -0800</bug_when>
    <thetext>Comment on attachment 128143
Patch

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

Basically looks good. Let&apos;s iterate once more.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:156
&gt; +        }

Could you return here and eliminate else clause?
We generally prefer early return style.

&gt; Source/WebCore/dom/NodeRenderingContext.cpp:169
&gt; +        }

Ditto for return.

&gt; Source/WebCore/dom/NodeRenderingContext.h:-77
&gt; -        AttachingFallback,

These names are getting more confusing. Could you re-align this in separate change?

&gt; Source/WebCore/html/shadow/InsertionPoint.h:63
&gt; +    ASSERT(!node || isInsertionPoint(node));

it looks we don&apos;t need |!node|.

&gt; LayoutTests/fast/dom/shadow/shadow-contents-fallback-dynamic.html:343
&gt; +function testContentInContent(callIfDone) {

covering these extra case is great! 
Could you have some case where some host and fallback nodes don&apos;t have renderer? we can do it by giving display:none.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561701</commentid>
    <comment_count>7</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-22 00:33:49 -0800</bug_when>
    <thetext>&gt; &gt; LayoutTests/fast/dom/shadow/shadow-contents-fallback-dynamic.html:343
&gt; &gt; +function testContentInContent(callIfDone) {
&gt; 
&gt; covering these extra case is great! 
&gt; Could you have some case where some host and fallback nodes don&apos;t have renderer? we can do it by giving display:none.

Let me file another bug to cover these cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561742</commentid>
    <comment_count>8</comment_count>
      <attachid>128156</attachid>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-22 01:35:50 -0800</bug_when>
    <thetext>Created attachment 128156
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561744</commentid>
    <comment_count>9</comment_count>
    <who name="Shinya Kawanaka">shinyak</who>
    <bug_when>2012-02-22 01:37:13 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 128143 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=128143&amp;action=review
&gt; 
&gt; Basically looks good. Let&apos;s iterate once more.
&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.cpp:156
&gt; &gt; +        }
&gt; 
&gt; Could you return here and eliminate else clause?
&gt; We generally prefer early return style.

Done.

&gt; 
&gt; &gt; Source/WebCore/dom/NodeRenderingContext.cpp:169
&gt; &gt; +        }
&gt; 
&gt; Ditto for return.

Done.

&gt; &gt; Source/WebCore/dom/NodeRenderingContext.h:-77
&gt; &gt; -        AttachingFallback,
&gt; 
&gt; These names are getting more confusing. Could you re-align this in separate change?

Let me make another bug.

&gt; &gt; Source/WebCore/html/shadow/InsertionPoint.h:63
&gt; &gt; +    ASSERT(!node || isInsertionPoint(node));
&gt; 
&gt; it looks we don&apos;t need |!node|.

Done.

&gt; &gt; LayoutTests/fast/dom/shadow/shadow-contents-fallback-dynamic.html:343
&gt; &gt; +function testContentInContent(callIfDone) {
&gt; 
&gt; covering these extra case is great! 
&gt; Could you have some case where some host and fallback nodes don&apos;t have renderer? we can do it by giving display:none.

I&apos;ve added a new case, but we should have exhaustive tests.
Let me make another bug for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561829</commentid>
    <comment_count>10</comment_count>
      <attachid>128156</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 04:06:23 -0800</bug_when>
    <thetext>Comment on attachment 128156
Patch

Clearing flags on attachment: 128156

Committed r108480: &lt;http://trac.webkit.org/changeset/108480&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>561830</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-22 04:06:29 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128103</attachid>
            <date>2012-02-21 18:51:27 -0800</date>
            <delta_ts>2012-02-21 23:32:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79180-20120222115126.patch</filename>
            <type>text/plain</type>
            <size>5556</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M5YmQyOWMxNmMwNWY1
ZDhhMjQzMzkzOThhMGJiMmE0MDc1Y2ZjZi4uMWUxZmVkMWUxODZiMmFiMzliOTg2NjBhNjIwZDY1
ZTcxMGM3NDBiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDEyLTAyLTIxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZWZhY3Rvcmlu
ZzogZmlyc3RSZW5kZXJlck9mIHNob3VsZCBhbHNvIHJldHVybiBhIGZhbGxiYWNrIGVsZW1lbnQg
cmVuZGVyZXIgaW4gTm9kZVJlbmRlcmluZ0NvbnRleHQuCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSB3ZSBoYXZlIGhhbmRsZWQgQXR0YWNo
aW5nRmFsbGJhY2sgaW4gc29tZSBzcGVjaWFsIG1hbm5nZXIsIGhvd2V2ZXIgaWYgZmlyc3RSZW5k
ZXJlck9mCisgICAgICAgIGFuZCBsYXN0UmVuZGVyZXJPZiByZXR1cm4gYSBmYWxsYmFjayBlbGVt
ZW50IHJlbmRlcmVyLCB3ZSBkb24ndCBuZWVkIHRvIGhhbmRsZSBpdCBpbiBzdWNoIGEgbWFubmVy
LgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAg
ICAgICogZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5v
ZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpmaXJzdFJlbmRlcmVyT2YpOiBSZXR1cm5zIGNoaWxkIHJlbmRlcmVyIGlmIGFueS4KKyAg
ICAgICAgKFdlYkNvcmU6Omxhc3RSZW5kZXJlck9mKTogZGl0dG8uCisgICAgICAgIChXZWJDb3Jl
OjpOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKiBodG1sL3No
YWRvdy9JbnNlcnRpb25Qb2ludC5oOgorICAgICAgICAoV2ViQ29yZTo6aXNJbnNlcnRpb25Qb2lu
dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OnRvSW5zZXJ0aW9uUG9p
bnQpOgorCiAyMDEyLTAyLTIxICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZW1vdmUgRklYTUUgZnJvbSByZXNvbHZlLXN1cHBsZW1lbnRhbC5wbApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKaW5kZXggOWE1NWFiM2E0
YTYzODUzMWEzOGY5ZWNhZTFkMzRiYTY2MmYzZDNiZS4uZmQ1ZWRiNmRlMjViZGNhMmNhMjViMjZm
NmNjY2RjZTc5YjUwMDNlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5k
ZXJpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0Nv
bnRleHQuY3BwCkBAIC03OSw5ICs3OSw4IEBAIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVu
ZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAKLSAgICAgICAgaWYgKHBhcmVudC0+aXNDb250ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAg
ICBIVE1MQ29udGVudEVsZW1lbnQqIHNoYWRvd0NvbnRlbnRFbGVtZW50ID0gdG9IVE1MQ29udGVu
dEVsZW1lbnQocGFyZW50KTsKLSAgICAgICAgICAgIGlmICghc2hhZG93Q29udGVudEVsZW1lbnQt
Pmhhc1NlbGVjdGlvbigpKSB7CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVudCkp
IHsKKyAgICAgICAgICAgIGlmICghdG9JbnNlcnRpb25Qb2ludChwYXJlbnQpLT5oYXNTZWxlY3Rp
b24oKSkgewogICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdGYWxsYmFjazsKICAg
ICAgICAgICAgICAgICBtX3BhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSA9IE5vZGVSZW5k
ZXJpbmdDb250ZXh0KHBhcmVudCkucGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlKCk7CiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ5LDkgKzE0OCwxNSBAQCBzdGF0aWMgUmVuZGVy
T2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2YoSW5zZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSog
Y3VycmVudCkKIAogc3RhdGljIFJlbmRlck9iamVjdCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlv
blBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0
aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9u
ID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVy
ZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJldHVybiBy
ZW5kZXJlcjsKKyAgICBpZiAocGFyZW50LT5oYXNTZWxlY3Rpb24oKSkgeworICAgICAgICBmb3Ig
KEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+
Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAg
ICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+
cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0K
KyAgICB9IGVsc2UgeworICAgICAgICAvLyBJZiBubyBvYmplY3Qgd2FzIHNlbGVjdGVkLCB3ZSBo
YXZlIHRvIHNob3cgdGhlIGZhbGxiYWNrIGVsZW1lbnQuCisgICAgICAgIGlmIChwYXJlbnQtPmZp
cnN0Q2hpbGQoKSAmJiBwYXJlbnQtPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAg
ICAgIHJldHVybiBwYXJlbnQtPmZpcnN0Q2hpbGQoKS0+cmVuZGVyZXIoKTsKICAgICB9CiAKICAg
ICByZXR1cm4gMDsKQEAgLTE1OSw5ICsxNjQsMTQgQEAgc3RhdGljIFJlbmRlck9iamVjdCogZmly
c3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiAKIHN0YXRpYyBSZW5kZXJPYmpl
Y3QqIGxhc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxh
c3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKLSAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICBpZiAocGFyZW50LT5o
YXNTZWxlY3Rpb24oKSkgeworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxl
Y3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247IHNlbGVjdGlv
biA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAocGFyZW50LT5sYXN0Q2hpbGQoKSAmJiBwYXJlbnQtPmxhc3RDaGlsZCgpLT5yZW5kZXJlcigp
KQorICAgICAgICAgICAgcmV0dXJuIHBhcmVudC0+bGFzdENoaWxkKCktPnJlbmRlcmVyKCk7CiAg
ICAgfQogCiAgICAgcmV0dXJuIDA7CkBAIC0xODIsOSArMTkyLDcgQEAgUmVuZGVyT2JqZWN0KiBO
b2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkgY29uc3QKICAgICAgICAgcmV0dXJu
IE5vZGVSZW5kZXJpbmdDb250ZXh0KG1faW5zZXJ0aW9uUG9pbnQpLm5leHRSZW5kZXJlcigpOwog
ICAgIH0KIAotICAgIC8vIEF2b2lkIGFuIE8obl4yKSBwcm9ibGVtIHdpdGggdGhpcyBmdW5jdGlv
biBieSBub3QgY2hlY2tpbmcgZm9yCi0gICAgLy8gbmV4dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFy
ZW50IGVsZW1lbnQgaGFzbid0IGF0dGFjaGVkIHlldC4KLSAgICBpZiAobV9ub2RlLT5wYXJlbnRP
ckhvc3ROb2RlKCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpLT5hdHRhY2hlZCgpICYm
IG1fcGhhc2UgIT0gQXR0YWNoaW5nRmFsbGJhY2spCisgICAgaWYgKG1fbm9kZS0+cGFyZW50T3JI
b3N0Tm9kZSgpICYmICFtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKS0+YXR0YWNoZWQoKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUtPm5leHRTaWJs
aW5nKCk7IG5vZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkBAIC0yMDAsOSArMjA4
LDYgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRlcmVyKCkg
Y29uc3QKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ0Zh
bGxiYWNrKQotICAgICAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQobV9ub2RlLT5wYXJl
bnROb2RlKCkpLm5leHRSZW5kZXJlcigpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDQwZmFlMjNiNjkxNjEw
ZmQyMTkxNWQ5ZjE0YzJjYzk3YTZkNzFmZjUuLjgxMTZjMGVmMDg2YjBjYTZhOTg0NTcxMTM4Yzc2
ZGMzMmEwNDg2YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2Vy
dGlvblBvaW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9p
bnQuaApAQCAtNDgsNiArNDgsMjIgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxDb250ZW50U2VsZWN0
aW9uTGlzdCBtX3NlbGVjdGlvbnM7CiB9OwogCitpbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50
KE5vZGUqIG5vZGUpCit7CisgICAgLy8gRklYTUU6IDxzaGFkb3c+IHNob3VsZCBhbHNvIGJlIElu
c2VydGlvblBvaW50LgorICAgIC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD03ODU5NgorICAgIGlmICghbm9kZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpCisg
ICAgICAgIHJldHVybiB0cnVlOworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgSW5z
ZXJ0aW9uUG9pbnQqIHRvSW5zZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQo
IW5vZGUgfHwgaXNJbnNlcnRpb25Qb2ludChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEluc2VydGlvblBvaW50Kj4obm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAog
I2VuZGlmIC8vIEluc2VydGlvblBvaW50X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128143</attachid>
            <date>2012-02-21 23:32:34 -0800</date>
            <delta_ts>2012-02-22 01:35:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79180-20120222163232.patch</filename>
            <type>text/plain</type>
            <size>19205</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M5YmQyOWMxNmMwNWY1
ZDhhMjQzMzkzOThhMGJiMmE0MDc1Y2ZjZi4uMmI1NTg1ZTkzNzQwMGY0M2U1OGE5YjZkMjhkMDNi
MWEwZDQxOTYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTIxICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBmaXJzdFJlbmRl
cmVyT2YoKSBzaG91bGQgYWxzbyByZXR1cm4gYSBmYWxsYmFjayBlbGVtZW50IHJlbmRlcmVyIGlu
IE5vZGVSZW5kZXJpbmdDb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzkxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgaGF2ZSBoYW5kbGVkIEF0dGFjaGluZ0ZhbGxiYWNr
IGluIHNvbWUgc3BlY2lhbCBtYW5uZ2VyLCBob3dldmVyIGlmIGZpcnN0UmVuZGVyZXJPZgorICAg
ICAgICBhbmQgbGFzdFJlbmRlcmVyT2YgcmV0dXJuIGEgZmFsbGJhY2sgZWxlbWVudCByZW5kZXJl
ciwgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgaXQgaW4gc3VjaCBhIG1hbm5lci4KKworICAgICAg
ICBXZSBoYXZlIGludHJvZHVjZWQgbmV3IGF0dGFjaGluZyBwaGFzZTogQXR0YWNoaW5nRmFsbGJh
Y2tlZCwgYW5kIEF0dGFjaGluZ05vdEZhbGxiYWNrZWQuCisgICAgICAgIFRoZXkgYXJlIHVzZWQg
Zm9yIGZhbGxiYWNrIGVsZW1lbnRzLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0IGNhc2VzIGlu
OgorICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRt
bAorICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHlu
YW1pYy5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3Jl
OjpsYXN0UmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKwogMjAxMi0wMi0yMSAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEZJWE1FIGZyb20g
cmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDlhNTVhYjNhNGE2Mzg1MzFhMzhmOWVjYWUxZDM0YmE2NjJmM2Qz
YmUuLmE2YzA5NTZhZDkwZDVkMjBiOTcyZmM0NzIxYWZlYTQwNGEwOWMwNzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzksMTMgKzc5LDEzIEBA
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBhcmVudC0+aXND
b250ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MQ29udGVudEVsZW1lbnQqIHNoYWRv
d0NvbnRlbnRFbGVtZW50ID0gdG9IVE1MQ29udGVudEVsZW1lbnQocGFyZW50KTsKLSAgICAgICAg
ICAgIGlmICghc2hhZG93Q29udGVudEVsZW1lbnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNrOwotICAgICAgICAgICAgICAgIG1f
cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFy
ZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVu
dCkpIHsKKyAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc1NlbGVj
dGlvbigpKQorICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2Vk
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdG
YWxsYmFja2VkOworICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUg
PSBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDks
MjAgKzE0OSwyNiBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2YoSW5z
ZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIAogc3RhdGljIFJlbmRlck9iamVj
dCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZp
cnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKLSAgICB9CisgICAgaWYgKHBhcmVu
dC0+aGFzU2VsZWN0aW9uKCkpIHsKKyAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiog
c2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZpcnN0KCk7IHNlbGVjdGlvbjsgc2Vs
ZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gc2VsZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIHJlbmRlcmVyOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJl
dHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLm5leHRSZW5kZXJlcigpOwogCiAgICAg
cmV0dXJuIDA7CiB9CiAKIHN0YXRpYyBSZW5kZXJPYmplY3QqIGxhc3RSZW5kZXJlck9mKEluc2Vy
dGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2Vs
ZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rp
b24gPSBzZWxlY3Rpb24tPnByZXZpb3VzKCkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
cmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJl
dHVybiByZW5kZXJlcjsKLSAgICB9CisgICAgaWYgKHBhcmVudC0+aGFzU2VsZWN0aW9uKCkpIHsK
KyAgICAgICAgZm9yIChIVE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5z
ZWxlY3Rpb25zKCktPmxhc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24gPSBzZWxlY3Rpb24tPnBy
ZXZpb3VzKCkpIHsKKyAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc2Vs
ZWN0aW9uLT5ub2RlKCktPnJlbmRlcmVyKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHJlbmRl
cmVyOworICAgICAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBOb2RlUmVuZGVyaW5n
Q29udGV4dChwYXJlbnQpLnByZXZpb3VzUmVuZGVyZXIoKTsKIAogICAgIHJldHVybiAwOwogfQpA
QCAtMTgyLDkgKzE4OCw5IEBAIFJlbmRlck9iamVjdCogTm9kZVJlbmRlcmluZ0NvbnRleHQ6Om5l
eHRSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dCht
X2luc2VydGlvblBvaW50KS5uZXh0UmVuZGVyZXIoKTsKICAgICB9CiAKLSAgICAvLyBBdm9pZCBh
biBPKG5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVuY3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgor
ICAgIC8vIEF2b2lkIGFuIE8oTl4yKSBwcm9ibGVtIHdpdGggdGhpcyBmdW5jdGlvbiBieSBub3Qg
Y2hlY2tpbmcgZm9yCiAgICAgLy8gbmV4dFJlbmRlcmVyKCkgd2hlbiB0aGUgcGFyZW50IGVsZW1l
bnQgaGFzbid0IGF0dGFjaGVkIHlldC4KLSAgICBpZiAobV9ub2RlLT5wYXJlbnRPckhvc3ROb2Rl
KCkgJiYgIW1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgpLT5hdHRhY2hlZCgpICYmIG1fcGhhc2Ug
IT0gQXR0YWNoaW5nRmFsbGJhY2spCisgICAgaWYgKG1fbm9kZS0+cGFyZW50T3JIb3N0Tm9kZSgp
ICYmICFtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKS0+YXR0YWNoZWQoKSkKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX25vZGUtPm5leHRTaWJsaW5nKCk7IG5v
ZGU7IG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpKSB7CkBAIC0xOTQsMTUgKzIwMCwxMyBAQCBS
ZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAog
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgcmV0dXJuIG5vZGUtPnJlbmRl
cmVyKCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG5vZGUtPmlzQ29udGVudEVsZW1lbnQoKSkg
ewotICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogZmlyc3QgPSBmaXJzdFJlbmRlcmVyT2Yo
dG9IVE1MQ29udGVudEVsZW1lbnQobm9kZSkpKQorCisgICAgICAgIGlmIChpc0luc2VydGlvblBv
aW50KG5vZGUpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBmaXJzdCA9IGZpcnN0
UmVuZGVyZXJPZih0b0luc2VydGlvblBvaW50KG5vZGUpKSkKICAgICAgICAgICAgICAgICByZXR1
cm4gZmlyc3Q7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hp
bmdGYWxsYmFjaykKLSAgICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdDb250ZXh0KG1fbm9kZS0+
cGFyZW50Tm9kZSgpKS5uZXh0UmVuZGVyZXIoKTsKLQogICAgIHJldHVybiAwOwogfQogCkBAIC0y
MzEsMTUgKzIzNSwxMiBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJpbmdDb250ZXh0OjpwcmV2
aW91c1JlbmRlcmVyKCkgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgIHJldHVybiBub2RlLT5yZW5kZXJlcigpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2Rl
LT5pc0NvbnRlbnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGxh
c3QgPSBsYXN0UmVuZGVyZXJPZih0b0hUTUxDb250ZW50RWxlbWVudChub2RlKSkpCisgICAgICAg
IGlmIChpc0luc2VydGlvblBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Qb2ludChub2RlKSkpCiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGxhc3Q7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9w
aGFzZSA9PSBBdHRhY2hpbmdGYWxsYmFjaykKLSAgICAgICAgcmV0dXJuIE5vZGVSZW5kZXJpbmdD
b250ZXh0KG1fbm9kZS0+cGFyZW50Tm9kZSgpKS5wcmV2aW91c1JlbmRlcmVyKCk7Ci0KICAgICBy
ZXR1cm4gMDsKIH0KIApAQCAtMjY4LDcgKzI2OSw3IEBAIGJvb2wgTm9kZVJlbmRlcmluZ0NvbnRl
eHQ6OnNob3VsZENyZWF0ZVJlbmRlcmVyKCkgY29uc3QKICAgICBBU1NFUlQobV9waGFzZSAhPSBD
YWxjdWxhdGluZyk7CiAgICAgQVNTRVJUKHBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRTdHlsZSgp
KTsKIAotICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05vdEluVHJlZSB8fCBtX3BoYXNlID09
IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkKQorICAgIGlmIChtX3BoYXNlID09IEF0dGFjaGluZ05v
dEluVHJlZSB8fCBtX3BoYXNlID09IEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkIHx8IG1fcGhhc2Ug
PT0gQXR0YWNoaW5nTm90RmFsbGJhY2tlZCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
UmVuZGVyT2JqZWN0KiBwYXJlbnRSZW5kZXJlciA9IHRoaXMtPnBhcmVudFJlbmRlcmVyKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4IGYzZjUwMWE4MWVi
NTlkYTUwZDFlMjk2NjFlOWQ2YjhlZGMxMzc3NmUuLmVlNWEwMDNkOGYxMjc4N2U1NDMyMWM5Y2Ey
NTI2YmY1NTlkMTM5YTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVy
aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4
dC5oCkBAIC03MSwxMCArNzEsMTEgQEAgcHJpdmF0ZToKICAgICAgICAgQ2FsY3VsYXRpbmcsCiAg
ICAgICAgIEF0dGFjaGluZ1N0cmFpZ2h0LAogICAgICAgICBBdHRhY2hpbmdOb3RJblRyZWUsCi0g
ICAgICAgIEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkLAogICAgICAgICBBdHRhY2hpbmdEaXN0cmli
dXRlZCwKKyAgICAgICAgQXR0YWNoaW5nTm90RGlzdHJpYnV0ZWQsCisgICAgICAgIEF0dGFjaGlu
Z0ZhbGxiYWNrZWQsCisgICAgICAgIEF0dGFjaGluZ05vdEZhbGxiYWNrZWQsCiAgICAgICAgIEF0
dGFjaGluZ1NoYWRvd0NoaWxkLAotICAgICAgICBBdHRhY2hpbmdGYWxsYmFjaywKICAgICB9Owog
CiAgICAgQXR0YWNoaW5nUGhhc2UgbV9waGFzZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRv
dy9JbnNlcnRpb25Qb2ludC5oCmluZGV4IDQwZmFlMjNiNjkxNjEwZmQyMTkxNWQ5ZjE0YzJjYzk3
YTZkNzFmZjUuLjgxMTZjMGVmMDg2YjBjYTZhOTg0NTcxMTM4Yzc2ZGMzMmEwNDg2YjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaApAQCAtNDgsNiArNDgs
MjIgQEAgcHJvdGVjdGVkOgogICAgIEhUTUxDb250ZW50U2VsZWN0aW9uTGlzdCBtX3NlbGVjdGlv
bnM7CiB9OwogCitpbmxpbmUgYm9vbCBpc0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCit7Cisg
ICAgLy8gRklYTUU6IDxzaGFkb3c+IHNob3VsZCBhbHNvIGJlIEluc2VydGlvblBvaW50LgorICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03ODU5NgorICAgIGlm
ICghbm9kZSB8fCBub2RlLT5pc0NvbnRlbnRFbGVtZW50KCkpCisgICAgICAgIHJldHVybiB0cnVl
OworCisgICAgcmV0dXJuIGZhbHNlOworfQorCitpbmxpbmUgSW5zZXJ0aW9uUG9pbnQqIHRvSW5z
ZXJ0aW9uUG9pbnQoTm9kZSogbm9kZSkKK3sKKyAgICBBU1NFUlQoIW5vZGUgfHwgaXNJbnNlcnRp
b25Qb2ludChub2RlKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PEluc2VydGlvblBvaW50Kj4o
bm9kZSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEluc2VydGlv
blBvaW50X2gKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAxYWJkMjI3NTcwY2RlZTBiZDc1MGUwMGFiOGI4MWJhMWRjNDZhMDJh
Li5mZjc1YjlmODNiZjM4YzU2ZDg0ZWVjNGE1NjgyM2I5NDAxNTExNWExIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTcgQEAKKzIwMTItMDItMjEgIFNoaW55YSBLYXdhbmFrYSAgPHNoaW55YWtAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIGZpcnN0UmVuZGVyZXJPZigpIHNob3VsZCBhbHNvIHJldHVybiBhIGZh
bGxiYWNrIGVsZW1lbnQgcmVuZGVyZXIgaW4gTm9kZVJlbmRlcmluZ0NvbnRleHQuCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03OTE4MAorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0IGNh
c2VzLCA8Y29udGVudD4gaW4gPGNvbnRlbnQ+LCBmb3IgZmFsbGJhY2sgZWxlbWVudHMuCisKKyAg
ICAgICAgKiBmYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMt
ZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sOgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ct
Y29udGVudHMtZmFsbGJhY2stZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRtbDoKKwogMjAxMi0wMi0yMSAgQWRhbSBLbGVp
biAgPGFkYW1rQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTZXR0aW5nIGlubmVyVGV4dCBjYXVz
ZXMgRE9NU3VidHJlZU1vZGlmaWVkIHRvIGJlIGRpc3BhdGNoZWQgdG9vIGVhcmx5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNr
LWR5bmFtaWMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRv
dy1jb250ZW50cy1mYWxsYmFjay1keW5hbWljLWV4cGVjdGVkLnR4dAppbmRleCBkOTc0Y2MxOTBj
NjgwNTI2NWQ3YWRjOWI1YzEyN2ZmYzU3ODZjNzIxLi41OGM4NmUyZTY5MjEyZWE1YzhlZTlkYTU4
MzZhNmI5NGRjZGUyYmRiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1l
eHBlY3RlZC50eHQKQEAgLTIyLDUgKzIyLDExIEBAIHRlc3RDb21wbGV4UmVtb3ZlCiBQQVNTCiB0
ZXN0Q29tcGxleFJlcGxhY2UKIFBBU1MKK3Rlc3RDb250ZW50SW5Db250ZW50CitQQVNTCit0ZXN0
Q29udGVudEluQ29udGVudEZhbGxiYWNrCitQQVNTCit0ZXN0Q29udGVudEluQ29udGVudEZhbGxi
YWNrRGlyZWN0CitQQVNTCiBURVNUIENPTVBMRVRFRAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMuaHRtbCBi
L0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHlu
YW1pYy5odG1sCmluZGV4IDI3NjMyMGQ3N2M0NDI3NmIzNDhiNDQxOGZiZTMyOTM0NmQwNjFhZjMu
LjFmZWE5NGZkYWVmZGNiNzM5YjFjZmVjMzExOTk0YTAxNjY2ODA0ZjMgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1p
Yy5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMt
ZmFsbGJhY2stZHluYW1pYy5odG1sCkBAIC0zMTksOCArMzE5LDYgQEAgZnVuY3Rpb24gdGVzdENv
bXBsZXhSZXBsYWNlKGNhbGxJZkRvbmUpIHsKIAogICAgIHZhciBzZWxlY3RDb250ZW50ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwogICAgIHNlbGVjdENvbnRlbnQuc2V0QXR0cmli
dXRlKCdpZCcsICdjb21wbGV4LTMnKTsKLSAgICB7Ci0gICAgfQogICAgIGFwcGVuZFNoYWRvdyhz
ZWxlY3RDb250ZW50LCAnc3BhbicpOwogCiAgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGRvY3VtZW50
LmNyZWF0ZVRleHROb2RlKCdbV09OVCBTRUxFQ1RFRF0nKSk7CkBAIC0zNDIsNiArMzQwLDk2IEBA
IGZ1bmN0aW9uIHRlc3RDb21wbGV4UmVwbGFjZShjYWxsSWZEb25lKSB7CiAgICAgc2V0VGltZW91
dChmLCAwKTsKIH0KIAorZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNvbnRlbnQoY2FsbElmRG9uZSkg
eworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJykuaW5uZXJI
VE1MID0KKyAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+UzE8L3NwYW4+PHNwYW4+UzI8L3Nw
YW4+fTwvZGl2PiI7CisKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzEnKSk7
CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzInKSk7CisKKyAg
ICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisgICAgdmFy
IGNvbnRlbnQxID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAg
ICBjb250ZW50MS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKworICAgIHJvb3QuYXBw
ZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290
LmFwcGVuZENoaWxkKGNvbnRlbnQxKTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKCJ9IikpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVh
bC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworCisgICAgdmFyIGYgPSAoZnVuY3Rp
b24odGFyZ2V0LCBjb250ZW50MSwgY2FsbElmRG9uZSkgeworICAgICAgICByZXR1cm4gZnVuY3Rp
b24oKSB7CisgICAgICAgICAgICB2YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVu
dEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgY29udGVudDIuc2V0QXR0cmlidXRlKCdz
ZWxlY3QnLCAnc3BhbicpOworICAgICAgICAgICAgY29udGVudDIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdDT05URU5UIDIgRkFMTEJBQ0snKSk7CisgICAgICAgICAgICBjb250ZW50
MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisgICAgICAgICAgICBjYWxsSWZEb25lKCk7CisgICAg
ICAgIH07CisgICAgfSkodGFyZ2V0LCBjb250ZW50MSwgY2FsbElmRG9uZSk7CisKKyAgICBzZXRU
aW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNr
KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRh
aW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPkNPTlRFTlQg
MiBGQUxMQkFDSzwvc3Bhbj59PC9kaXY+IjsKKworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bhbldp
dGhUZXh0KCdTMScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0
KCdTMicpKTsKKworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFy
Z2V0KTsKKyAgICB2YXIgY29udGVudDEgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQo
ZG9jdW1lbnQpOworICAgIGNvbnRlbnQxLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOwor
CisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzog
IikpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudDEpOworICAgIHJvb3QuYXBwZW5kQ2hp
bGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoIn0iKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2
YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNvbnRlbnQxLCBjYWxsSWZEb25lKSB7CisgICAgICAg
IHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50MiA9IGludGVybmFs
cy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAgICBjb250ZW50Mi5z
ZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICAgICAgICAgIGNvbnRlbnQyLmFwcGVu
ZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOworICAgICAg
ICAgICAgY29udGVudDEuYXBwZW5kQ2hpbGQoY29udGVudDIpOworICAgICAgICAgICAgY2FsbElm
RG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY29udGVudDEsIGNhbGxJZkRvbmUp
OworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKworZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNv
bnRlbnRGYWxsYmFja0RpcmVjdChjYWxsSWZEb25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bh
bj5DT05URU5UIDIgRkFMTEJBQ0s8L3NwYW4+PC9kaXY+IjsKKworICAgIHZhciB0YXJnZXQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3Jl
YXRlU3BhbldpdGhUZXh0KCdTMScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3Bh
bldpdGhUZXh0KCdTMicpKTsKKworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRv
d1Jvb3QodGFyZ2V0KTsKKyAgICB2YXIgY29udGVudDEgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVu
dEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQxLnNldEF0dHJpYnV0ZSgnc2VsZWN0Jywg
J2RpdicpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudDEpOworCisgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOwor
CisgICAgdmFyIGYgPSAoZnVuY3Rpb24odGFyZ2V0LCBjb250ZW50MSwgY2FsbElmRG9uZSkgewor
ICAgICAgICByZXR1cm4gZnVuY3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgY29udGVudDIgPSBp
bnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgICAgICAgICAgY29u
dGVudDIuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnZGl2Jyk7CisgICAgICAgICAgICBjb250ZW50
Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycpKTsK
KyAgICAgICAgICAgIGNvbnRlbnQxLmFwcGVuZENoaWxkKGNvbnRlbnQyKTsKKyAgICAgICAgICAg
IGNhbGxJZkRvbmUoKTsKKyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNvbnRlbnQxLCBjYWxs
SWZEb25lKTsKKworICAgIHNldFRpbWVvdXQoZiwgMCk7Cit9CisKIHZhciB0ZXN0RnVuY3MgPSBb
CiAgICAgdGVzdEFwcGVuZEZhbGxiYWNrLAogICAgIHRlc3RBcHBlbmRGYWxsYmFja0RlZXAsCkBA
IC0zNTUsNyArNDQzLDkgQEAgdmFyIHRlc3RGdW5jcyA9IFsKICAgICB0ZXN0Q29tcGxleEFwcGVu
ZCwKICAgICB0ZXN0Q29tcGxleFJlbW92ZSwKICAgICB0ZXN0Q29tcGxleFJlcGxhY2UsCi0KKyAg
ICB0ZXN0Q29udGVudEluQ29udGVudCwKKyAgICB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNr
LAorICAgIHRlc3RDb250ZW50SW5Db250ZW50RmFsbGJhY2tEaXJlY3QKIF07CiAKIGZ1bmN0aW9u
IGRvVGVzdElmTGVmdCgpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRv
dy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQKaW5kZXgg
Mzk1MjJiNGNkOWJhNjU1NzI0MDU5NzA1MjY0Nzg5MWYyZDIyMDQ1NC4uMTEzMWViNWJmOGE5YzVl
ODNkYzVlMjg2YjU4YjAwYjdmNDg5MDczMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3Rl
ZC50eHQKQEAgLTYsNCArNiw4IEBAIFBBU1MKIFBBU1MKIFBBU1MKIFBBU1MKK1BBU1MKK1BBU1MK
K1BBU1MKK1BBU1MKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1mYWxsYmFjay5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay5odG1sCmluZGV4IGZhYmU2NGMyOTgzZDA4ZjI5MTYz
OTVmMTU1MTlkODQyMzQ0NTNmNWEuLmIyN2ZkNmVkMjg1YzcxN2QxMjZhYzUxMjdlMzMyNTNhN2Y1
MDFkNDIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29u
dGVudHMtZmFsbGJhY2suaHRtbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hh
ZG93LWNvbnRlbnRzLWZhbGxiYWNrLmh0bWwKQEAgLTIxNCw2ICsyMTQsOTkgQEAgZnVuY3Rpb24g
dGVzdENvbXBsZXhGYWxsYmFja0RlZXBBZ2FpbigpIHsKICAgICAgICAgIjxkaXY+e1NIQURPVzog
PHNwYW4+e0lOTkVSOiA8c3Bhbj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxzcGFuPkZBTExCQUNL
PC9zcGFuPn08L3NwYW4+fTwvc3Bhbj59PC9zcGFuPn08L3NwYW4+PC9kaXY+IjsKIH0KIAorZnVu
Y3Rpb24gdGVzdENvbnRlbnRJbkNvbnRlbnQoKSB7CisgICAgdmFyIHRhcmdldCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVTcGFu
V2l0aFRleHQoJ1MxJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRl
eHQoJ1MyJykpOworCisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0
YXJnZXQpOworICAgIHZhciBjb250ZW50MiA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVu
dChkb2N1bWVudCk7CisgICAgY29udGVudDIuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnc3Bhbicp
OworICAgIGNvbnRlbnQyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAy
IEZBTExCQUNLJykpOworCisgICAgdmFyIGNvbnRlbnQxID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRl
bnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50MS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcs
ICdkaXYnKTsKKyAgICBjb250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisKKyAgICByb290
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAg
cm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChkb2N1bWVu
dC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdh
Y3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PntTSEFET1c6IDxzcGFuPlMxPC9zcGFuPjxzcGFuPlMyPC9zcGFuPn08L2Rpdj4iOworfQorCitm
dW5jdGlvbiB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrKCkgeworICAgIHZhciB0YXJnZXQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQo
Y3JlYXRlU3BhbldpdGhUZXh0KCdTMScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdTMicpKTsKKworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNo
YWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29u
dGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQyLnNldEF0dHJpYnV0ZSgnc2VsZWN0
JywgJ2RpdicpOworICAgIGNvbnRlbnQyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgn
Q09OVEVOVCAyIEZBTExCQUNLJykpOworCisgICAgdmFyIGNvbnRlbnQxID0gaW50ZXJuYWxzLmNy
ZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50MS5zZXRBdHRyaWJ1dGUo
J3NlbGVjdCcsICdkaXYnKTsKKyAgICBjb250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisK
KyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAi
KSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAg
ICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj59PC9kaXY+
IjsKK30KKworZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFja1dpdGhEaXNwbGF5
Tm9uZSgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzEnKSk7CisgICAg
dGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzInKSk7CisKKyAgICB2YXIg
cm9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisgICAgdmFyIGNvbnRl
bnQyID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250
ZW50Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBjb250ZW50Mi5hcHBlbmRD
aGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycpKTsKKworICAgIHZh
ciBjb250ZW50MSA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7Cisg
ICAgY29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnZGl2Jyk7CisgICAgY29udGVudDEu
YXBwZW5kQ2hpbGQoY29udGVudDIpOworCisgICAgdmFyIHMgPSBjcmVhdGVTcGFuV2l0aFRleHQo
J05PVCBSRU5ERVJFRCcpOworICAgIHMuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKKyAgICByb290
LmFwcGVuZENoaWxkKHMpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIntTSEFET1c6ICIpKTsKKyAgICByb290LmFwcGVuZENoaWxkKGNvbnRlbnQxKTsKKyAg
ICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ9IikpOworCisgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWluZXInKS5hcHBlbmRDaGlsZCh0
YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3QtY29udGFpbmVyJyku
aW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+Q09OVEVOVCAyIEZBTExC
QUNLPC9zcGFuPn08L2Rpdj4iOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGVudEluQ29udGVudEZh
bGxiYWNrRGlyZWN0KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScp
KTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsKKwor
ICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAgICB2
YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOwor
ICAgIGNvbnRlbnQyLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworICAgIGNvbnRlbnQy
LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNLJykpOwor
CisgICAgdmFyIGNvbnRlbnQxID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3Vt
ZW50KTsKKyAgICBjb250ZW50MS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBj
b250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisKKyAgICByb290LmFwcGVuZENoaWxkKGNv
bnRlbnQxKTsKKworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVy
JykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhw
ZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2PjxzcGFuPkNPTlRFTlQg
MiBGQUxMQkFDSzwvc3Bhbj48L2Rpdj4iOworfQorCiB2YXIgdGVzdEZ1bmNzID0gWwogICAgIHRl
c3RGYWxsYmFjaywKICAgICB0ZXN0RmFsbGJhY2tEZWVwLApAQCAtMjIyLDggKzMxNSwxMiBAQCB2
YXIgdGVzdEZ1bmNzID0gWwogICAgIHRlc3RDb21wbGV4RmFsbGJhY2ssCiAgICAgdGVzdENvbXBs
ZXhGYWxsYmFja0RlZXAsCiAgICAgdGVzdENvbXBsZXhGYWxsYmFja0FnYWluLAotICAgIHRlc3RD
b21wbGV4RmFsbGJhY2tEZWVwQWdhaW4KLV0KKyAgICB0ZXN0Q29tcGxleEZhbGxiYWNrRGVlcEFn
YWluLAorICAgIHRlc3RDb250ZW50SW5Db250ZW50LAorICAgIHRlc3RDb250ZW50SW5Db250ZW50
RmFsbGJhY2ssCisgICAgdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFja1dpdGhEaXNwbGF5Tm9u
ZSwKKyAgICB0ZXN0Q29udGVudEluQ29udGVudEZhbGxiYWNrRGlyZWN0CitdOwogCiBmdW5jdGlv
biBkb1Rlc3QoKSB7CiAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128156</attachid>
            <date>2012-02-22 01:35:50 -0800</date>
            <delta_ts>2012-02-22 04:06:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-79180-20120222183548.patch</filename>
            <type>text/plain</type>
            <size>20539</size>
            <attacher name="Shinya Kawanaka">shinyak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA4NDI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2M5YmQyOWMxNmMwNWY1
ZDhhMjQzMzkzOThhMGJiMmE0MDc1Y2ZjZi4uYTk4YThlYzExZmYzMjBjNDc0NTIzNDU2YTI0YjM0
NWJkYzQyM2Y5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDEyLTAyLTIyICBTaGlu
eWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9taXVtLm9yZz4KKworICAgICAgICBmaXJzdFJlbmRl
cmVyT2YoKSBzaG91bGQgYWxzbyByZXR1cm4gYSBmYWxsYmFjayBlbGVtZW50IHJlbmRlcmVyIGlu
IE5vZGVSZW5kZXJpbmdDb250ZXh0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9NzkxODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDdXJyZW50bHkgd2UgaGF2ZSBoYW5kbGVkIEF0dGFjaGluZ0ZhbGxiYWNr
IGluIHNvbWUgc3BlY2lhbCBtYW5uZ2VyLCBob3dldmVyIGlmIGZpcnN0UmVuZGVyZXJPZgorICAg
ICAgICBhbmQgbGFzdFJlbmRlcmVyT2YgcmV0dXJuIGEgZmFsbGJhY2sgZWxlbWVudCByZW5kZXJl
ciwgd2UgZG9uJ3QgbmVlZCB0byBoYW5kbGUgaXQgaW4gc3VjaCBhIG1hbm5lci4KKworICAgICAg
ICBXZSBoYXZlIGludHJvZHVjZWQgbmV3IGF0dGFjaGluZyBwaGFzZTogQXR0YWNoaW5nRmFsbGJh
Y2tlZCwgYW5kIEF0dGFjaGluZ05vdEZhbGxiYWNrZWQuCisgICAgICAgIFRoZXkgYXJlIHVzZWQg
Zm9yIGZhbGxiYWNrIGVsZW1lbnRzLgorCisgICAgICAgIEFkZGVkIG5ldyB0ZXN0IGNhc2VzIGlu
OgorICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRt
bAorICAgICAgICAgIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHlu
YW1pYy5odG1sCisKKyAgICAgICAgKiBkb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Tm9kZVJlbmRlcmluZ0NvbnRleHQ6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
KToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0UmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3Jl
OjpsYXN0UmVuZGVyZXJPZik6CisgICAgICAgIChXZWJDb3JlOjpOb2RlUmVuZGVyaW5nQ29udGV4
dDo6bmV4dFJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250ZXh0
OjpwcmV2aW91c1JlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGVSZW5kZXJpbmdDb250
ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcik6CisgICAgICAgICogZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0Lmg6CisgICAgICAgICogaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OmlzSW5zZXJ0aW9uUG9pbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjp0b0luc2VydGlvblBvaW50KToKKwogMjAxMi0wMi0yMSAgS2VudGFybyBI
YXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmVtb3ZlIEZJWE1FIGZyb20g
cmVzb2x2ZS1zdXBwbGVtZW50YWwucGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9O
b2RlUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmlu
Z0NvbnRleHQuY3BwCmluZGV4IDlhNTVhYjNhNGE2Mzg1MzFhMzhmOWVjYWUxZDM0YmE2NjJmM2Qz
YmUuLmQ3MWUzYjIzNGJjNzY0MmE1ZTg1MjBhYjMxMzY2MmJmOTdlOTY0NTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlUmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNzksMTMgKzc5LDEzIEBA
IE5vZGVSZW5kZXJpbmdDb250ZXh0OjpOb2RlUmVuZGVyaW5nQ29udGV4dChOb2RlKiBub2RlKQog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBhcmVudC0+aXND
b250ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBIVE1MQ29udGVudEVsZW1lbnQqIHNoYWRv
d0NvbnRlbnRFbGVtZW50ID0gdG9IVE1MQ29udGVudEVsZW1lbnQocGFyZW50KTsKLSAgICAgICAg
ICAgIGlmICghc2hhZG93Q29udGVudEVsZW1lbnQtPmhhc1NlbGVjdGlvbigpKSB7Ci0gICAgICAg
ICAgICAgICAgbV9waGFzZSA9IEF0dGFjaGluZ0ZhbGxiYWNrOwotICAgICAgICAgICAgICAgIG1f
cGFyZW50Tm9kZUZvclJlbmRlcmluZ0FuZFN0eWxlID0gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFy
ZW50KS5wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUoKTsKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChpc0luc2VydGlvblBvaW50KHBhcmVu
dCkpIHsKKyAgICAgICAgICAgIGlmICh0b0luc2VydGlvblBvaW50KHBhcmVudCktPmhhc1NlbGVj
dGlvbigpKQorICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdOb3RGYWxsYmFja2Vk
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIG1fcGhhc2UgPSBBdHRhY2hpbmdG
YWxsYmFja2VkOworICAgICAgICAgICAgbV9wYXJlbnROb2RlRm9yUmVuZGVyaW5nQW5kU3R5bGUg
PSBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnBhcmVudE5vZGVGb3JSZW5kZXJpbmdBbmRT
dHlsZSgpOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQogCkBAIC0xNDks
MjIgKzE0OSwzMCBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyT2YoSW5z
ZXJ0aW9uUG9pbnQqIHBhcmVudCwgTm9kZSogY3VycmVudCkKIAogc3RhdGljIFJlbmRlck9iamVj
dCogZmlyc3RSZW5kZXJlck9mKEluc2VydGlvblBvaW50KiBwYXJlbnQpCiB7Ci0gICAgZm9yIChI
VE1MQ29udGVudFNlbGVjdGlvbiogc2VsZWN0aW9uID0gcGFyZW50LT5zZWxlY3Rpb25zKCktPmZp
cnN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5uZXh0KCkpIHsKLSAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIHJldHVybiByZW5kZXJlcjsKKyAgICBpZiAocGFyZW50LT5oYXNT
ZWxlY3Rpb24oKSkgeworICAgICAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9uKiBzZWxlY3Rp
b24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+Zmlyc3QoKTsgc2VsZWN0aW9uOyBzZWxlY3Rpb24g
PSBzZWxlY3Rpb24tPm5leHQoKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCogcmVu
ZGVyZXIgPSBzZWxlY3Rpb24tPm5vZGUoKS0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVuZGVyZXI7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAK
LSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTm9kZVJlbmRlcmluZ0NvbnRleHQocGFyZW50KS5u
ZXh0UmVuZGVyZXIoKTsKIH0KIAogc3RhdGljIFJlbmRlck9iamVjdCogbGFzdFJlbmRlcmVyT2Yo
SW5zZXJ0aW9uUG9pbnQqIHBhcmVudCkKIHsKLSAgICBmb3IgKEhUTUxDb250ZW50U2VsZWN0aW9u
KiBzZWxlY3Rpb24gPSBwYXJlbnQtPnNlbGVjdGlvbnMoKS0+bGFzdCgpOyBzZWxlY3Rpb247IHNl
bGVjdGlvbiA9IHNlbGVjdGlvbi0+cHJldmlvdXMoKSkgewotICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiByZW5kZXJlciA9IHNlbGVjdGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQotICAgICAgICAg
ICAgcmV0dXJuIHJlbmRlcmVyOworICAgIGlmIChwYXJlbnQtPmhhc1NlbGVjdGlvbigpKSB7Cisg
ICAgICAgIGZvciAoSFRNTENvbnRlbnRTZWxlY3Rpb24qIHNlbGVjdGlvbiA9IHBhcmVudC0+c2Vs
ZWN0aW9ucygpLT5sYXN0KCk7IHNlbGVjdGlvbjsgc2VsZWN0aW9uID0gc2VsZWN0aW9uLT5wcmV2
aW91cygpKSB7CisgICAgICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHNlbGVj
dGlvbi0+bm9kZSgpLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgICAgIHJldHVybiByZW5kZXJl
cjsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAotICAgIHJldHVybiAw
OworICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29udGV4dChwYXJlbnQpLnByZXZpb3VzUmVuZGVy
ZXIoKTsKIH0KIAogUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKCkgY29uc3QKQEAgLTE4Miw5ICsxOTAsOSBAQCBSZW5kZXJPYmplY3QqIE5vZGVSZW5kZXJp
bmdDb250ZXh0OjpuZXh0UmVuZGVyZXIoKSBjb25zdAogICAgICAgICByZXR1cm4gTm9kZVJlbmRl
cmluZ0NvbnRleHQobV9pbnNlcnRpb25Qb2ludCkubmV4dFJlbmRlcmVyKCk7CiAgICAgfQogCi0g
ICAgLy8gQXZvaWQgYW4gTyhuXjIpIHByb2JsZW0gd2l0aCB0aGlzIGZ1bmN0aW9uIGJ5IG5vdCBj
aGVja2luZyBmb3IKKyAgICAvLyBBdm9pZCBhbiBPKE5eMikgcHJvYmxlbSB3aXRoIHRoaXMgZnVu
Y3Rpb24gYnkgbm90IGNoZWNraW5nIGZvcgogICAgIC8vIG5leHRSZW5kZXJlcigpIHdoZW4gdGhl
IHBhcmVudCBlbGVtZW50IGhhc24ndCBhdHRhY2hlZCB5ZXQuCi0gICAgaWYgKG1fbm9kZS0+cGFy
ZW50T3JIb3N0Tm9kZSgpICYmICFtX25vZGUtPnBhcmVudE9ySG9zdE5vZGUoKS0+YXR0YWNoZWQo
KSAmJiBtX3BoYXNlICE9IEF0dGFjaGluZ0ZhbGxiYWNrKQorICAgIGlmIChtX25vZGUtPnBhcmVu
dE9ySG9zdE5vZGUoKSAmJiAhbV9ub2RlLT5wYXJlbnRPckhvc3ROb2RlKCktPmF0dGFjaGVkKCkp
CiAgICAgICAgIHJldHVybiAwOwogCiAgICAgZm9yIChOb2RlKiBub2RlID0gbV9ub2RlLT5uZXh0
U2libGluZygpOyBub2RlOyBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKSkgewpAQCAtMTk0LDE1
ICsyMDIsMTMgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5nQ29udGV4dDo6bmV4dFJlbmRl
cmVyKCkgY29uc3QKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIHJldHVy
biBub2RlLT5yZW5kZXJlcigpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChub2RlLT5pc0NvbnRl
bnRFbGVtZW50KCkpIHsKLSAgICAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIGZpcnN0ID0gZmly
c3RSZW5kZXJlck9mKHRvSFRNTENvbnRlbnRFbGVtZW50KG5vZGUpKSkKKworICAgICAgICBpZiAo
aXNJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
Zmlyc3QgPSBmaXJzdFJlbmRlcmVyT2YodG9JbnNlcnRpb25Qb2ludChub2RlKSkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGZpcnN0OwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fcGhh
c2UgPT0gQXR0YWNoaW5nRmFsbGJhY2spCi0gICAgICAgIHJldHVybiBOb2RlUmVuZGVyaW5nQ29u
dGV4dChtX25vZGUtPnBhcmVudE5vZGUoKSkubmV4dFJlbmRlcmVyKCk7Ci0KICAgICByZXR1cm4g
MDsKIH0KIApAQCAtMjMxLDE1ICsyMzcsMTIgQEAgUmVuZGVyT2JqZWN0KiBOb2RlUmVuZGVyaW5n
Q29udGV4dDo6cHJldmlvdXNSZW5kZXJlcigpIGNvbnN0CiAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICByZXR1cm4gbm9kZS0+cmVuZGVyZXIoKTsKICAgICAgICAgfQotICAg
ICAgICBpZiAobm9kZS0+aXNDb250ZW50RWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBsYXN0ID0gbGFzdFJlbmRlcmVyT2YodG9IVE1MQ29udGVudEVsZW1lbnQobm9k
ZSkpKQorICAgICAgICBpZiAoaXNJbnNlcnRpb25Qb2ludChub2RlKSkgeworICAgICAgICAgICAg
aWYgKFJlbmRlck9iamVjdCogbGFzdCA9IGxhc3RSZW5kZXJlck9mKHRvSW5zZXJ0aW9uUG9pbnQo
bm9kZSkpKQogICAgICAgICAgICAgICAgIHJldHVybiBsYXN0OwogICAgICAgICB9CiAgICAgfQog
Ci0gICAgaWYgKG1fcGhhc2UgPT0gQXR0YWNoaW5nRmFsbGJhY2spCi0gICAgICAgIHJldHVybiBO
b2RlUmVuZGVyaW5nQ29udGV4dChtX25vZGUtPnBhcmVudE5vZGUoKSkucHJldmlvdXNSZW5kZXJl
cigpOwotCiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTI2OCw3ICsyNzEsNyBAQCBib29sIE5vZGVS
ZW5kZXJpbmdDb250ZXh0OjpzaG91bGRDcmVhdGVSZW5kZXJlcigpIGNvbnN0CiAgICAgQVNTRVJU
KG1fcGhhc2UgIT0gQ2FsY3VsYXRpbmcpOwogICAgIEFTU0VSVChwYXJlbnROb2RlRm9yUmVuZGVy
aW5nQW5kU3R5bGUoKSk7CiAKLSAgICBpZiAobV9waGFzZSA9PSBBdHRhY2hpbmdOb3RJblRyZWUg
fHwgbV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCkKKyAgICBpZiAobV9waGFzZSA9
PSBBdHRhY2hpbmdOb3RJblRyZWUgfHwgbV9waGFzZSA9PSBBdHRhY2hpbmdOb3REaXN0cmlidXRl
ZCB8fCBtX3BoYXNlID09IEF0dGFjaGluZ05vdEZhbGxiYWNrZWQpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAogICAgIFJlbmRlck9iamVjdCogcGFyZW50UmVuZGVyZXIgPSB0aGlzLT5wYXJlbnRS
ZW5kZXJlcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGVSZW5kZXJpbmdD
b250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAppbmRl
eCBmM2Y1MDFhODFlYjU5ZGE1MGQxZTI5NjYxZTlkNmI4ZWRjMTM3NzZlLi5lZTVhMDAzZDhmMTI3
ODdlNTQzMjFjOWNhMjUyNmJmNTU5ZDEzOWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9k
b20vTm9kZVJlbmRlcmluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZVJl
bmRlcmluZ0NvbnRleHQuaApAQCAtNzEsMTAgKzcxLDExIEBAIHByaXZhdGU6CiAgICAgICAgIENh
bGN1bGF0aW5nLAogICAgICAgICBBdHRhY2hpbmdTdHJhaWdodCwKICAgICAgICAgQXR0YWNoaW5n
Tm90SW5UcmVlLAotICAgICAgICBBdHRhY2hpbmdOb3REaXN0cmlidXRlZCwKICAgICAgICAgQXR0
YWNoaW5nRGlzdHJpYnV0ZWQsCisgICAgICAgIEF0dGFjaGluZ05vdERpc3RyaWJ1dGVkLAorICAg
ICAgICBBdHRhY2hpbmdGYWxsYmFja2VkLAorICAgICAgICBBdHRhY2hpbmdOb3RGYWxsYmFja2Vk
LAogICAgICAgICBBdHRhY2hpbmdTaGFkb3dDaGlsZCwKLSAgICAgICAgQXR0YWNoaW5nRmFsbGJh
Y2ssCiAgICAgfTsKIAogICAgIEF0dGFjaGluZ1BoYXNlIG1fcGhhc2U7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Qb2ludC5oIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvSW5zZXJ0aW9uUG9pbnQuaAppbmRleCA0MGZhZTIzYjY5MTYxMGZkMjE5
MTVkOWYxNGMyY2M5N2E2ZDcxZmY1Li4yOTI0MzkwMzI3N2RlYTJlZmNiYjY3NDFjZWUwODljYWYz
MTI1Njg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9JbnNlcnRpb25Q
b2ludC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L0luc2VydGlvblBvaW50LmgK
QEAgLTQ4LDYgKzQ4LDIyIEBAIHByb3RlY3RlZDoKICAgICBIVE1MQ29udGVudFNlbGVjdGlvbkxp
c3QgbV9zZWxlY3Rpb25zOwogfTsKIAoraW5saW5lIGJvb2wgaXNJbnNlcnRpb25Qb2ludChOb2Rl
KiBub2RlKQoreworICAgIC8vIEZJWE1FOiA8c2hhZG93PiBzaG91bGQgYWxzbyBiZSBJbnNlcnRp
b25Qb2ludC4KKyAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
Nzg1OTYKKyAgICBpZiAoIW5vZGUgfHwgbm9kZS0+aXNDb250ZW50RWxlbWVudCgpKQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworaW5saW5lIEluc2VydGlv
blBvaW50KiB0b0luc2VydGlvblBvaW50KE5vZGUqIG5vZGUpCit7CisgICAgQVNTRVJUKGlzSW5z
ZXJ0aW9uUG9pbnQobm9kZSkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxJbnNlcnRpb25Qb2lu
dCo+KG5vZGUpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBJbnNl
cnRpb25Qb2ludF9oCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKaW5kZXggMWFiZDIyNzU3MGNkZWUwYmQ3NTBlMDBhYjhiODFiYTFkYzQ2
YTAyYS4uNGE1Nzk1MmYzNDFlODVmNTkxNGFkY2MzMTA3Y2ZhMTU4NjViNzQyMCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDE3IEBACisyMDEyLTAyLTIyICBTaGlueWEgS2F3YW5ha2EgIDxzaGlueWFrQGNocm9t
aXVtLm9yZz4KKworICAgICAgICBmaXJzdFJlbmRlcmVyT2YoKSBzaG91bGQgYWxzbyByZXR1cm4g
YSBmYWxsYmFjayBlbGVtZW50IHJlbmRlcmVyIGluIE5vZGVSZW5kZXJpbmdDb250ZXh0LgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzkxODAKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBuZXcgdGVz
dCBjYXNlcywgZS5nLiA8Y29udGVudD4gaW4gPGNvbnRlbnQ+LCB3aXRoIGRpc3BsYXk6bm9uZS4K
KworICAgICAgICAqIGZhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHlu
YW1pYy1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1mYWxsYmFjay1keW5hbWljLmh0bWw6CisgICAgICAgICogZmFzdC9kb20vc2hhZG93L3No
YWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQ6CisgICAgICAgICogZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay5odG1sOgorCiAyMDEyLTAyLTIxICBBZGFt
IEtsZWluICA8YWRhbWtAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFNldHRpbmcgaW5uZXJUZXh0
IGNhdXNlcyBET01TdWJ0cmVlTW9kaWZpZWQgdG8gYmUgZGlzcGF0Y2hlZCB0b28gZWFybHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFs
bGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cv
c2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWR5bmFtaWMtZXhwZWN0ZWQudHh0CmluZGV4IGQ5NzRj
YzE5MGM2ODA1MjY1ZDdhZGM5YjVjMTI3ZmZjNTc4NmM3MjEuLjU4Yzg2ZTJlNjkyMTJlYTVjOGVl
OWRhNTgzNmE2Yjk0ZGNkZTJiZGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3No
YWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy1leHBlY3RlZC50eHQKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1keW5h
bWljLWV4cGVjdGVkLnR4dApAQCAtMjIsNSArMjIsMTEgQEAgdGVzdENvbXBsZXhSZW1vdmUKIFBB
U1MKIHRlc3RDb21wbGV4UmVwbGFjZQogUEFTUwordGVzdENvbnRlbnRJbkNvbnRlbnQKK1BBU1MK
K3Rlc3RDb250ZW50SW5Db250ZW50RmFsbGJhY2sKK1BBU1MKK3Rlc3RDb250ZW50SW5Db250ZW50
RmFsbGJhY2tEaXJlY3QKK1BBU1MKIFRFU1QgQ09NUExFVEVECiAKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvZG9tL3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2stZHluYW1pYy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFj
ay1keW5hbWljLmh0bWwKaW5kZXggMjc2MzIwZDc3YzQ0Mjc2YjM0OGI0NDE4ZmJlMzI5MzQ2ZDA2
MWFmMy4uMWZlYTk0ZmRhZWZkY2I3MzliMWNmZWMzMTE5OTRhMDE2NjY4MDRmMyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1k
eW5hbWljLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93L3NoYWRvdy1jb250
ZW50cy1mYWxsYmFjay1keW5hbWljLmh0bWwKQEAgLTMxOSw4ICszMTksNiBAQCBmdW5jdGlvbiB0
ZXN0Q29tcGxleFJlcGxhY2UoY2FsbElmRG9uZSkgewogCiAgICAgdmFyIHNlbGVjdENvbnRlbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7CiAgICAgc2VsZWN0Q29udGVudC5zZXRB
dHRyaWJ1dGUoJ2lkJywgJ2NvbXBsZXgtMycpOwotICAgIHsKLSAgICB9CiAgICAgYXBwZW5kU2hh
ZG93KHNlbGVjdENvbnRlbnQsICdzcGFuJyk7CiAKICAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoZG9j
dW1lbnQuY3JlYXRlVGV4dE5vZGUoJ1tXT05UIFNFTEVDVEVEXScpKTsKQEAgLTM0Miw2ICszNDAs
OTYgQEAgZnVuY3Rpb24gdGVzdENvbXBsZXhSZXBsYWNlKGNhbGxJZkRvbmUpIHsKICAgICBzZXRU
aW1lb3V0KGYsIDApOwogfQogCitmdW5jdGlvbiB0ZXN0Q29udGVudEluQ29udGVudChjYWxsSWZE
b25lKSB7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5p
bm5lckhUTUwgPQorICAgICAgICAiPGRpdj57U0hBRE9XOiA8c3Bhbj5TMTwvc3Bhbj48c3Bhbj5T
Mjwvc3Bhbj59PC9kaXY+IjsKKworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdT
MScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsK
KworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAg
ICB2YXIgY29udGVudDEgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQp
OworICAgIGNvbnRlbnQxLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworCisgICAgcm9v
dC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzogIikpOworICAg
IHJvb3QuYXBwZW5kQ2hpbGQoY29udGVudDEpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1l
bnQuY3JlYXRlVGV4dE5vZGUoIn0iKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgn
YWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisKKyAgICB2YXIgZiA9IChm
dW5jdGlvbih0YXJnZXQsIGNvbnRlbnQxLCBjYWxsSWZEb25lKSB7CisgICAgICAgIHJldHVybiBm
dW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50MiA9IGludGVybmFscy5jcmVhdGVD
b250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAgICBjb250ZW50Mi5zZXRBdHRyaWJ1
dGUoJ3NlbGVjdCcsICdzcGFuJyk7CisgICAgICAgICAgICBjb250ZW50Mi5hcHBlbmRDaGlsZChj
cmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycpKTsKKyAgICAgICAgICAgIGNv
bnRlbnQxLmFwcGVuZENoaWxkKGNvbnRlbnQyKTsKKyAgICAgICAgICAgIGNhbGxJZkRvbmUoKTsK
KyAgICAgICAgfTsKKyAgICB9KSh0YXJnZXQsIGNvbnRlbnQxLCBjYWxsSWZEb25lKTsKKworICAg
IHNldFRpbWVvdXQoZiwgMCk7Cit9CisKK2Z1bmN0aW9uIHRlc3RDb250ZW50SW5Db250ZW50RmFs
bGJhY2soY2FsbElmRG9uZSkgeworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdleHBlY3Qt
Y29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+e1NIQURPVzogPHNwYW4+Q09O
VEVOVCAyIEZBTExCQUNLPC9zcGFuPn08L2Rpdj4iOworCisgICAgdmFyIHRhcmdldCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ1MxJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0
aFRleHQoJ1MyJykpOworCisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJlU2hhZG93Um9v
dCh0YXJnZXQpOworICAgIHZhciBjb250ZW50MSA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxl
bWVudChkb2N1bWVudCk7CisgICAgY29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnZGl2
Jyk7CisKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hB
RE9XOiAiKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKwor
ICAgIHZhciBmID0gKGZ1bmN0aW9uKHRhcmdldCwgY29udGVudDEsIGNhbGxJZkRvbmUpIHsKKyAg
ICAgICAgcmV0dXJuIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgdmFyIGNvbnRlbnQyID0gaW50
ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICAgICAgICAgIGNvbnRl
bnQyLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworICAgICAgICAgICAgY29udGVudDIu
YXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdDT05URU5UIDIgRkFMTEJBQ0snKSk7Cisg
ICAgICAgICAgICBjb250ZW50MS5hcHBlbmRDaGlsZChjb250ZW50Mik7CisgICAgICAgICAgICBj
YWxsSWZEb25lKCk7CisgICAgICAgIH07CisgICAgfSkodGFyZ2V0LCBjb250ZW50MSwgY2FsbElm
RG9uZSk7CisKKyAgICBzZXRUaW1lb3V0KGYsIDApOworfQorCitmdW5jdGlvbiB0ZXN0Q29udGVu
dEluQ29udGVudEZhbGxiYWNrRGlyZWN0KGNhbGxJZkRvbmUpIHsKKyAgICBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9CisgICAgICAgICI8ZGl2
PjxzcGFuPkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj48L2Rpdj4iOworCisgICAgdmFyIHRhcmdl
dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdldC5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ1MxJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVh
dGVTcGFuV2l0aFRleHQoJ1MyJykpOworCisgICAgdmFyIHJvb3QgPSBpbnRlcm5hbHMuZW5zdXJl
U2hhZG93Um9vdCh0YXJnZXQpOworICAgIHZhciBjb250ZW50MSA9IGludGVybmFscy5jcmVhdGVD
b250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxl
Y3QnLCAnZGl2Jyk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisKKyAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdl
dCk7CisKKyAgICB2YXIgZiA9IChmdW5jdGlvbih0YXJnZXQsIGNvbnRlbnQxLCBjYWxsSWZEb25l
KSB7CisgICAgICAgIHJldHVybiBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIHZhciBjb250ZW50
MiA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgICAgICAg
ICBjb250ZW50Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICAgICAgICAgIGNv
bnRlbnQyLmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnQ09OVEVOVCAyIEZBTExCQUNL
JykpOworICAgICAgICAgICAgY29udGVudDEuYXBwZW5kQ2hpbGQoY29udGVudDIpOworICAgICAg
ICAgICAgY2FsbElmRG9uZSgpOworICAgICAgICB9OworICAgIH0pKHRhcmdldCwgY29udGVudDEs
IGNhbGxJZkRvbmUpOworCisgICAgc2V0VGltZW91dChmLCAwKTsKK30KKwogdmFyIHRlc3RGdW5j
cyA9IFsKICAgICB0ZXN0QXBwZW5kRmFsbGJhY2ssCiAgICAgdGVzdEFwcGVuZEZhbGxiYWNrRGVl
cCwKQEAgLTM1NSw3ICs0NDMsOSBAQCB2YXIgdGVzdEZ1bmNzID0gWwogICAgIHRlc3RDb21wbGV4
QXBwZW5kLAogICAgIHRlc3RDb21wbGV4UmVtb3ZlLAogICAgIHRlc3RDb21wbGV4UmVwbGFjZSwK
LQorICAgIHRlc3RDb250ZW50SW5Db250ZW50LAorICAgIHRlc3RDb250ZW50SW5Db250ZW50RmFs
bGJhY2ssCisgICAgdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFja0RpcmVjdAogXTsKIAogZnVu
Y3Rpb24gZG9UZXN0SWZMZWZ0KCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20v
c2hhZG93L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWV4cGVjdGVkLnR4dApp
bmRleCAzOTUyMmI0Y2Q5YmE2NTU3MjQwNTk3MDUyNjQ3ODkxZjJkMjIwNDU0Li44MjIwMTU5OWU0
OGJkYjdiNGE2N2Q2OTE0ZWNlY2U2ZTVhNjI1ZDQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9m
YXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWV4cGVjdGVkLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLWV4
cGVjdGVkLnR4dApAQCAtNiw0ICs2LDkgQEAgUEFTUwogUEFTUwogUEFTUwogUEFTUworUEFTUwor
UEFTUworUEFTUworUEFTUworUEFTUwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2RvbS9zaGFkb3cvc2hhZG93LWNvbnRlbnRzLWZhbGxiYWNrLmh0bWwKaW5kZXggZmFiZTY0YzI5
ODNkMDhmMjkxNjM5NWYxNTUxOWQ4NDIzNDQ1M2Y1YS4uMTNmZjUxZTAxOTg2ODk3MzRkODc5OWVl
NWZmYjRiZTQ3MjZkOWMxYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2hhZG93
L3NoYWRvdy1jb250ZW50cy1mYWxsYmFjay5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L3NoYWRvdy9zaGFkb3ctY29udGVudHMtZmFsbGJhY2suaHRtbApAQCAtMjE0LDYgKzIxNCwxMzIg
QEAgZnVuY3Rpb24gdGVzdENvbXBsZXhGYWxsYmFja0RlZXBBZ2FpbigpIHsKICAgICAgICAgIjxk
aXY+e1NIQURPVzogPHNwYW4+e0lOTkVSOiA8c3Bhbj57U0hBRE9XOiA8c3Bhbj57SU5ORVI6IDxz
cGFuPkZBTExCQUNLPC9zcGFuPn08L3NwYW4+fTwvc3Bhbj59PC9zcGFuPn08L3NwYW4+PC9kaXY+
IjsKIH0KIAorZnVuY3Rpb24gdGVzdENvbnRlbnRrV2l0aERpc3BsYXlOb25lKCkgeworICAgIHZh
ciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKKworICAgIHZhciBzcGFu
MSA9IGNyZWF0ZVNwYW5XaXRoVGV4dCgnTk9UIFJFTkRFUkVEJyk7CisgICAgc3BhbjEuc3R5bGUu
ZGlzcGxheSA9ICdub25lJzsKKyAgICB2YXIgc3BhbjIgPSBjcmVhdGVTcGFuV2l0aFRleHQoJ05P
VCBSRU5ERVJFRCcpOworICAgIHNwYW4yLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgdmFy
IHNwYW4zID0gY3JlYXRlU3BhbldpdGhUZXh0KCdOT1QgUkVOREVSRUQnKTsKKyAgICBzcGFuMy5z
dHlsZS5kaXNwbGF5ID0gJ25vbmUnOworCisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKHNwYW4xKTsK
KyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMScpKTsKKyAgICB0
YXJnZXQuYXBwZW5kQ2hpbGQoc3BhbjIpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChjcmVhdGVT
cGFuV2l0aFRleHQoJ1MyJykpOworICAgIHRhcmdldC5hcHBlbmRDaGlsZChzcGFuMyk7CisKKyAg
ICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisgICAgdmFy
IGNvbnRlbnQgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAg
IGNvbnRlbnQuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnc3BhbicpOworICAgIGNvbnRlbnQuYXBw
ZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdGQUxMQkFDSycpKTsKKworICAgIHZhciBzID0g
Y3JlYXRlU3BhbldpdGhUZXh0KCdOT1QgUkVOREVSRUQnKTsKKyAgICBzLnN0eWxlLmRpc3BsYXkg
PSAnbm9uZSc7CisgICAgcm9vdC5hcHBlbmRDaGlsZChzKTsKKyAgICByb290LmFwcGVuZENoaWxk
KGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hBRE9XOiAiKSk7CisgICAgcm9vdC5hcHBlbmRD
aGlsZChjb250ZW50KTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHRO
b2RlKCJ9IikpOworCisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2FjdHVhbC1jb250YWlu
ZXInKS5hcHBlbmRDaGlsZCh0YXJnZXQpOworICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdl
eHBlY3QtY29udGFpbmVyJykuaW5uZXJIVE1MID0KKyAgICAgICAgIjxkaXY+e1NIQURPVzogPHNw
YW4+UzE8L3NwYW4+PHNwYW4+UzI8L3NwYW4+fTwvZGl2PiI7Cit9CisKK2Z1bmN0aW9uIHRlc3RD
b250ZW50SW5Db250ZW50KCkgeworICAgIHZhciB0YXJnZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdkaXYnKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdT
MScpKTsKKyAgICB0YXJnZXQuYXBwZW5kQ2hpbGQoY3JlYXRlU3BhbldpdGhUZXh0KCdTMicpKTsK
KworICAgIHZhciByb290ID0gaW50ZXJuYWxzLmVuc3VyZVNoYWRvd1Jvb3QodGFyZ2V0KTsKKyAg
ICB2YXIgY29udGVudDIgPSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQp
OworICAgIGNvbnRlbnQyLnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ3NwYW4nKTsKKyAgICBjb250
ZW50Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycp
KTsKKworICAgIHZhciBjb250ZW50MSA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChk
b2N1bWVudCk7CisgICAgY29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnZGl2Jyk7Cisg
ICAgY29udGVudDEuYXBwZW5kQ2hpbGQoY29udGVudDIpOworCisgICAgcm9vdC5hcHBlbmRDaGls
ZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzogIikpOworICAgIHJvb3QuYXBwZW5k
Q2hpbGQoY29udGVudDEpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoIn0iKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRh
aW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj57U0hBRE9XOiA8
c3Bhbj5TMTwvc3Bhbj48c3Bhbj5TMjwvc3Bhbj59PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVz
dENvbnRlbnRJbkNvbnRlbnRGYWxsYmFjaygpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5X
aXRoVGV4dCgnUzEnKSk7CisgICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4
dCgnUzInKSk7CisKKyAgICB2YXIgcm9vdCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRh
cmdldCk7CisgICAgdmFyIGNvbnRlbnQyID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50
KGRvY3VtZW50KTsKKyAgICBjb250ZW50Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsK
KyAgICBjb250ZW50Mi5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBG
QUxMQkFDSycpKTsKKworICAgIHZhciBjb250ZW50MSA9IGludGVybmFscy5jcmVhdGVDb250ZW50
RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAn
ZGl2Jyk7CisgICAgY29udGVudDEuYXBwZW5kQ2hpbGQoY29udGVudDIpOworCisgICAgcm9vdC5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgie1NIQURPVzogIikpOworICAgIHJv
b3QuYXBwZW5kQ2hpbGQoY29udGVudDEpOworICAgIHJvb3QuYXBwZW5kQ2hpbGQoZG9jdW1lbnQu
Y3JlYXRlVGV4dE5vZGUoIn0iKSk7CisKKyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0
dWFsLWNvbnRhaW5lcicpLmFwcGVuZENoaWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2V4cGVjdC1jb250YWluZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj57
U0hBRE9XOiA8c3Bhbj5DT05URU5UIDIgRkFMTEJBQ0s8L3NwYW4+fTwvZGl2PiI7Cit9CisKK2Z1
bmN0aW9uIHRlc3RDb250ZW50SW5Db250ZW50RmFsbGJhY2tXaXRoRGlzcGxheU5vbmUoKSB7Cisg
ICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIHRhcmdl
dC5hcHBlbmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1MxJykpOworICAgIHRhcmdldC5hcHBl
bmRDaGlsZChjcmVhdGVTcGFuV2l0aFRleHQoJ1MyJykpOworCisgICAgdmFyIHJvb3QgPSBpbnRl
cm5hbHMuZW5zdXJlU2hhZG93Um9vdCh0YXJnZXQpOworICAgIHZhciBjb250ZW50MiA9IGludGVy
bmFscy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAgY29udGVudDIuc2V0QXR0
cmlidXRlKCdzZWxlY3QnLCAnZGl2Jyk7CisgICAgY29udGVudDIuYXBwZW5kQ2hpbGQoY3JlYXRl
U3BhbldpdGhUZXh0KCdDT05URU5UIDIgRkFMTEJBQ0snKSk7CisKKyAgICB2YXIgY29udGVudDEg
PSBpbnRlcm5hbHMuY3JlYXRlQ29udGVudEVsZW1lbnQoZG9jdW1lbnQpOworICAgIGNvbnRlbnQx
LnNldEF0dHJpYnV0ZSgnc2VsZWN0JywgJ2RpdicpOworICAgIGNvbnRlbnQxLmFwcGVuZENoaWxk
KGNvbnRlbnQyKTsKKworICAgIHZhciBzID0gY3JlYXRlU3BhbldpdGhUZXh0KCdOT1QgUkVOREVS
RUQnKTsKKyAgICBzLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7CisgICAgcm9vdC5hcHBlbmRDaGls
ZChzKTsKKyAgICByb290LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCJ7U0hB
RE9XOiAiKSk7CisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisgICAgcm9vdC5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgifSIpKTsKKworICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCdhY3R1YWwtY29udGFpbmVyJykuYXBwZW5kQ2hpbGQodGFyZ2V0KTsKKyAg
ICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZXhwZWN0LWNvbnRhaW5lcicpLmlubmVySFRNTCA9
CisgICAgICAgICI8ZGl2PntTSEFET1c6IDxzcGFuPkNPTlRFTlQgMiBGQUxMQkFDSzwvc3Bhbj59
PC9kaXY+IjsKK30KKworZnVuY3Rpb24gdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFja0RpcmVj
dCgpIHsKKyAgICB2YXIgdGFyZ2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Cisg
ICAgdGFyZ2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzEnKSk7CisgICAgdGFy
Z2V0LmFwcGVuZENoaWxkKGNyZWF0ZVNwYW5XaXRoVGV4dCgnUzInKSk7CisKKyAgICB2YXIgcm9v
dCA9IGludGVybmFscy5lbnN1cmVTaGFkb3dSb290KHRhcmdldCk7CisgICAgdmFyIGNvbnRlbnQy
ID0gaW50ZXJuYWxzLmNyZWF0ZUNvbnRlbnRFbGVtZW50KGRvY3VtZW50KTsKKyAgICBjb250ZW50
Mi5zZXRBdHRyaWJ1dGUoJ3NlbGVjdCcsICdkaXYnKTsKKyAgICBjb250ZW50Mi5hcHBlbmRDaGls
ZChjcmVhdGVTcGFuV2l0aFRleHQoJ0NPTlRFTlQgMiBGQUxMQkFDSycpKTsKKworICAgIHZhciBj
b250ZW50MSA9IGludGVybmFscy5jcmVhdGVDb250ZW50RWxlbWVudChkb2N1bWVudCk7CisgICAg
Y29udGVudDEuc2V0QXR0cmlidXRlKCdzZWxlY3QnLCAnZGl2Jyk7CisgICAgY29udGVudDEuYXBw
ZW5kQ2hpbGQoY29udGVudDIpOworCisgICAgcm9vdC5hcHBlbmRDaGlsZChjb250ZW50MSk7CisK
KyAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWN0dWFsLWNvbnRhaW5lcicpLmFwcGVuZENo
aWxkKHRhcmdldCk7CisgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2V4cGVjdC1jb250YWlu
ZXInKS5pbm5lckhUTUwgPQorICAgICAgICAiPGRpdj48c3Bhbj5DT05URU5UIDIgRkFMTEJBQ0s8
L3NwYW4+PC9kaXY+IjsKK30KKwogdmFyIHRlc3RGdW5jcyA9IFsKICAgICB0ZXN0RmFsbGJhY2ss
CiAgICAgdGVzdEZhbGxiYWNrRGVlcCwKQEAgLTIyMiw4ICszNDgsMTMgQEAgdmFyIHRlc3RGdW5j
cyA9IFsKICAgICB0ZXN0Q29tcGxleEZhbGxiYWNrLAogICAgIHRlc3RDb21wbGV4RmFsbGJhY2tE
ZWVwLAogICAgIHRlc3RDb21wbGV4RmFsbGJhY2tBZ2FpbiwKLSAgICB0ZXN0Q29tcGxleEZhbGxi
YWNrRGVlcEFnYWluCi1dCisgICAgdGVzdENvbXBsZXhGYWxsYmFja0RlZXBBZ2FpbiwKKyAgICB0
ZXN0Q29udGVudGtXaXRoRGlzcGxheU5vbmUsCisgICAgdGVzdENvbnRlbnRJbkNvbnRlbnQsCisg
ICAgdGVzdENvbnRlbnRJbkNvbnRlbnRGYWxsYmFjaywKKyAgICB0ZXN0Q29udGVudEluQ29udGVu
dEZhbGxiYWNrV2l0aERpc3BsYXlOb25lLAorICAgIHRlc3RDb250ZW50SW5Db250ZW50RmFsbGJh
Y2tEaXJlY3QKK107CiAKIGZ1bmN0aW9uIGRvVGVzdCgpIHsKICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>