<?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>100917</bug_id>
          
          <creation_ts>2012-10-31 22:36:33 -0700</creation_ts>
          <short_desc>There should be a way to dump the scrolling tree from the layout tests</short_desc>
          <delta_ts>2012-11-01 11:58:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Beth Dakin">bdakin</reporter>
          <assigned_to name="Beth Dakin">bdakin</assigned_to>
          <cc>andersca</cc>
    
    <cc>bdakin</cc>
    
    <cc>gustavo</cc>
    
    <cc>jamesr</cc>
    
    <cc>philn</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>755880</commentid>
    <comment_count>0</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-31 22:36:33 -0700</bug_when>
    <thetext>Since we&apos;re about to add multiple items to the scrolling tree by supporting fixed nodes, there should be a way to dump the scrolling tree from the layout tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755885</commentid>
    <comment_count>1</comment_count>
      <attachid>171770</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-10-31 22:41:55 -0700</bug_when>
    <thetext>Created attachment 171770
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755889</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-31 22:44:02 -0700</bug_when>
    <thetext>Attachment 171770 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/ChangeLog&apos;, u&apos;LayoutTests/plat...&quot; exit_code: 1
Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:223:  Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.  [readability/comparison_to_zero] [5]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>755917</commentid>
    <comment_count>3</comment_count>
      <attachid>171770</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-10-31 23:14:35 -0700</bug_when>
    <thetext>Comment on attachment 171770
Patch

Attachment 171770 did not pass win-ews (win):
Output: http://queues.webkit.org/results/14661501</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756427</commentid>
    <comment_count>4</comment_count>
      <attachid>171770</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-01 10:38:35 -0700</bug_when>
    <thetext>Comment on attachment 171770
Patch

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

This looks great, just some nits.

&gt; Source/WebCore/page/Page.cpp:256
&gt; +String Page::scrollingStateTreeAsText()
&gt; +{
&gt; +    if (Document* document = m_mainFrame-&gt;document())
&gt; +        document-&gt;updateLayout();
&gt; +
&gt; +    if (ScrollingCoordinator* scrollingCoordinator = this-&gt;scrollingCoordinator())
&gt; +        return scrollingCoordinator-&gt;scrollingStateTreeAsText();
&gt; +
&gt; +    return String();
&gt; +}

I think we should put this on Frame, like layerTreeAsText(), especially since it&apos;s per-frame, and not deep across frame boundaries.

&gt; Source/WebCore/page/scrolling/ScrollingCoordinator.h:120
&gt; +    virtual String scrollingStateTreeAsText();

Should be const I think.

&gt; Source/WebCore/page/scrolling/ScrollingStateNode.h:87
&gt; +    static void writeIndent(TextStream&amp;, int indent);

Should be const.

&gt; Source/WebCore/page/scrolling/ScrollingStateNode.h:94
&gt; +    void dumpNode(TextStream&amp;, int indent);
&gt; +
&gt; +    virtual void dumpProperties(TextStream&amp;, int indent) = 0;

These too.

&gt; Source/WebCore/page/scrolling/mac/ScrollingCoordinatorMac.h:75
&gt; +    virtual String scrollingStateTreeAsText() OVERRIDE;

const

&gt; LayoutTests/platform/mac/tiled-drawing/scrolling-tree-slow-scrolling.html:9
&gt; +            position: fixed; /* At this time, position:fixed forces slow mode. */

You could change the setting via internals to ensure this is always true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756483</commentid>
    <comment_count>5</comment_count>
      <attachid>171901</attachid>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-01 11:32:12 -0700</bug_when>
    <thetext>Created attachment 171901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756487</commentid>
    <comment_count>6</comment_count>
      <attachid>171901</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-11-01 11:36:27 -0700</bug_when>
    <thetext>Comment on attachment 171901
Patch

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

&gt; Source/WebCore/ChangeLog:41
&gt; +        * WebCore.exp.in:
&gt; +        * page/Page.cpp:
&gt; +        (WebCore::Page::scrollingStateTreeAsText):
&gt; +        (WebCore):
&gt; +        * page/Page.h:
&gt; +        (Page):
&gt; +        * page/scrolling/ScrollingCoordinator.cpp:
&gt; +        (WebCore::ScrollingCoordinator::scrollingStateTreeAsText):
&gt; +        (WebCore):
&gt; +        * page/scrolling/ScrollingCoordinator.h:
&gt; +        (ScrollingCoordinator):
&gt; +        * page/scrolling/ScrollingStateNode.cpp:
&gt; +        (WebCore::ScrollingStateNode::writeIndent):
&gt; +        (WebCore):
&gt; +        (WebCore::ScrollingStateNode::dumpNode):
&gt; +        (WebCore::ScrollingStateNode::scrollingStateTreeAsText):
&gt; +        * page/scrolling/ScrollingStateNode.h:
&gt; +        (WebCore):
&gt; +        (ScrollingStateNode):
&gt; +        * page/scrolling/ScrollingStateScrollingNode.cpp:
&gt; +        (WebCore::ScrollingStateScrollingNode::dumpProperties):
&gt; +        (WebCore):
&gt; +        * page/scrolling/ScrollingStateScrollingNode.h:
&gt; +        (ScrollingStateScrollingNode):
&gt; +        * page/scrolling/mac/ScrollingCoordinatorMac.h:
&gt; +        (ScrollingCoordinatorMac):
&gt; +        * page/scrolling/mac/ScrollingCoordinatorMac.mm:
&gt; +        (WebCore::ScrollingCoordinatorMac::scrollingStateTreeAsText):
&gt; +        (WebCore):
&gt; +        * testing/Internals.cpp:
&gt; +        (WebCore::Internals::scrollingStateTreeAsText):
&gt; +        (WebCore):
&gt; +        * testing/Internals.h:
&gt; +        * testing/Internals.idl:

This list could be cleaned up.

&gt; Source/WebCore/page/Page.h:198
&gt; +        String scrollingStateTreeAsText();

const?

&gt; Source/WebCore/page/scrolling/ScrollingStateNode.h:92
&gt; +    void dumpNode(TextStream&amp;, int indent) const;

I don&apos;t think you need Node in the name.

&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:211
&gt; +    ts &lt;&lt; &quot;(&quot; &lt;&lt; &quot;ScrollingStateScrollingNode&quot; &lt;&lt; &quot;\n&quot;;

I think it would be better to just dump &quot;scrolling node&quot;, in case we rename the classes in future.

&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:213
&gt; +    if (m_viewportRect != IntRect()) {

Maybe !m_viewportRect.isEmpty()

&gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:218
&gt; +    if (m_contentsSize != IntSize()) {

Maybe !m_contentsSize.isEmpty()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756504</commentid>
    <comment_count>7</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-01 11:46:01 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 171901 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171901&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:41
&gt; &gt; +        * WebCore.exp.in:
&gt; &gt; +        * page/Page.cpp:
&gt; &gt; +        (WebCore::Page::scrollingStateTreeAsText):
&gt; &gt; +        (WebCore):
&gt; &gt; +        * page/Page.h:
&gt; &gt; +        (Page):
&gt; &gt; +        * page/scrolling/ScrollingCoordinator.cpp:
&gt; &gt; +        (WebCore::ScrollingCoordinator::scrollingStateTreeAsText):
&gt; &gt; +        (WebCore):
&gt; &gt; +        * page/scrolling/ScrollingCoordinator.h:
&gt; &gt; +        (ScrollingCoordinator):
&gt; &gt; +        * page/scrolling/ScrollingStateNode.cpp:
&gt; &gt; +        (WebCore::ScrollingStateNode::writeIndent):
&gt; &gt; +        (WebCore):
&gt; &gt; +        (WebCore::ScrollingStateNode::dumpNode):
&gt; &gt; +        (WebCore::ScrollingStateNode::scrollingStateTreeAsText):
&gt; &gt; +        * page/scrolling/ScrollingStateNode.h:
&gt; &gt; +        (WebCore):
&gt; &gt; +        (ScrollingStateNode):
&gt; &gt; +        * page/scrolling/ScrollingStateScrollingNode.cpp:
&gt; &gt; +        (WebCore::ScrollingStateScrollingNode::dumpProperties):
&gt; &gt; +        (WebCore):
&gt; &gt; +        * page/scrolling/ScrollingStateScrollingNode.h:
&gt; &gt; +        (ScrollingStateScrollingNode):
&gt; &gt; +        * page/scrolling/mac/ScrollingCoordinatorMac.h:
&gt; &gt; +        (ScrollingCoordinatorMac):
&gt; &gt; +        * page/scrolling/mac/ScrollingCoordinatorMac.mm:
&gt; &gt; +        (WebCore::ScrollingCoordinatorMac::scrollingStateTreeAsText):
&gt; &gt; +        (WebCore):
&gt; &gt; +        * testing/Internals.cpp:
&gt; &gt; +        (WebCore::Internals::scrollingStateTreeAsText):
&gt; &gt; +        (WebCore):
&gt; &gt; +        * testing/Internals.h:
&gt; &gt; +        * testing/Internals.idl:
&gt; 
&gt; This list could be cleaned up.
&gt; 

Will do.

&gt; &gt; Source/WebCore/page/Page.h:198
&gt; &gt; +        String scrollingStateTreeAsText();
&gt; 
&gt; const?
&gt; 

This one can&apos;t be const because scrollingCoordinator() is not const.

&gt; &gt; Source/WebCore/page/scrolling/ScrollingStateNode.h:92
&gt; &gt; +    void dumpNode(TextStream&amp;, int indent) const;
&gt; 
&gt; I don&apos;t think you need Node in the name.
&gt; 

Will remove.

&gt; &gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:211
&gt; &gt; +    ts &lt;&lt; &quot;(&quot; &lt;&lt; &quot;ScrollingStateScrollingNode&quot; &lt;&lt; &quot;\n&quot;;
&gt; 
&gt; I think it would be better to just dump &quot;scrolling node&quot;, in case we rename the classes in future.
&gt; 

Will change.

&gt; &gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:213
&gt; &gt; +    if (m_viewportRect != IntRect()) {
&gt; 
&gt; Maybe !m_viewportRect.isEmpty()
&gt; 

Will fix.

&gt; &gt; Source/WebCore/page/scrolling/ScrollingStateScrollingNode.cpp:218
&gt; &gt; +    if (m_contentsSize != IntSize()) {
&gt; 
&gt; Maybe !m_contentsSize.isEmpty()

Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>756515</commentid>
    <comment_count>8</comment_count>
    <who name="Beth Dakin">bdakin</who>
    <bug_when>2012-11-01 11:58:20 -0700</bug_when>
    <thetext>Thanks, Simon!

http://trac.webkit.org/changeset/133205</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171770</attachid>
            <date>2012-10-31 22:41:55 -0700</date>
            <delta_ts>2012-11-01 11:32:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-test-infra.txt</filename>
            <type>text/plain</type>
            <size>18124</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzEyOCkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTEwLTMxICBCZXRoIERh
a2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTAwOTE3CisgICAgICAgIFRoZXJlIHNob3VsZCBiZSBhIHdheSB0
byBkdW1wIHRoZSBzY3JvbGxpbmcgdHJlZSBmcm9tIHRoZSBsYXlvdXQgdGVzdHMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmUuZXhwLmlu
OgorICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpzY3Jv
bGxpbmdTdGF0ZVRyZWVBc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFn
ZS9QYWdlLmg6CisgICAgICAgIChQYWdlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3Jv
bGxpbmdDb29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdDb29yZGlu
YXRvcjo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmg6CisgICAgICAgIChT
Y3JvbGxpbmdDb29yZGluYXRvcik6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5n
U3RhdGVOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlTm9kZTo6d3Jp
dGVJbmRlbnQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxp
bmdTdGF0ZU5vZGU6OmR1bXBOb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRl
Tm9kZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZU5vZGUuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoU2Ny
b2xsaW5nU3RhdGVOb2RlKToKKyAgICAgICAgKiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVTY3Jv
bGxpbmdOb2RlOjpkdW1wUHJvcGVydGllcyk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAg
KiBwYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaDoKKyAgICAgICAg
KFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmg6CisgICAgICAgIChTY3JvbGxpbmdDb29yZGlu
YXRvck1hYyk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OnNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0
ZXN0aW5nL0ludGVybmFscy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnRlcm5hbHM6OnNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiB0ZXN0
aW5nL0ludGVybmFscy5oOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmlkbDoKKwogMjAx
Mi0xMC0zMSAgU3RlcGhlbiBXaGl0ZSAgPHNlbm9yYmxhbmNvQGNocm9taXVtLm9yZz4KIAogICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTMzMTIyLgpJbmRleDogU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5leHAuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS5l
eHAuaW4JKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmlu
CSh3b3JraW5nIGNvcHkpCkBAIC03MjksNiArNzI5LDcgQEAgX19aTjdXZWJDb3JlNFBhZ2UyMW1h
cmtBbGxNYXRjaGVzRm9yVGV4dAogX19aTjdXZWJDb3JlNFBhZ2UyMmFsbFZpc2l0ZWRTdGF0ZUNo
YW5nZWRFUE5TXzlQYWdlR3JvdXBFCiBfX1pON1dlYkNvcmU0UGFnZTIzY2xlYXJVbmRvUmVkb09w
ZXJhdGlvbnNFdgogX19aTjdXZWJDb3JlNFBhZ2UyNHJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uc0V2
CitfX1pON1dlYkNvcmU0UGFnZTI0c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0RXYKIF9fWk43V2Vi
Q29yZTRQYWdlMjVzdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdl
MzFzZXRDdXN0b21IVE1MVG9rZW5pemVyQ2h1bmtTaXplRWkKIF9fWk43V2ViQ29yZTRQYWdlMzFz
ZXRDdXN0b21IVE1MVG9rZW5pemVyVGltZURlbGF5RWQKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAko
cmV2aXNpb24gMTMzMDY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMjQ0LDYgKzI0NCwxNyBAQCBTY3JvbGxpbmdDb29yZGluYXRvciogUGFnZTo6
c2Nyb2xsaW5nQ29vCiAgICAgcmV0dXJuIG1fc2Nyb2xsaW5nQ29vcmRpbmF0b3IuZ2V0KCk7CiB9
CiAKK1N0cmluZyBQYWdlOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKQoreworICAgIGlmIChE
b2N1bWVudCogZG9jdW1lbnQgPSBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgZG9j
dW1lbnQtPnVwZGF0ZUxheW91dCgpOworCisgICAgaWYgKFNjcm9sbGluZ0Nvb3JkaW5hdG9yKiBz
Y3JvbGxpbmdDb29yZGluYXRvciA9IHRoaXMtPnNjcm9sbGluZ0Nvb3JkaW5hdG9yKCkpCisgICAg
ICAgIHJldHVybiBzY3JvbGxpbmdDb29yZGluYXRvci0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0
KCk7CisKKyAgICByZXR1cm4gU3RyaW5nKCk7Cit9CisKIHN0cnVjdCBWaWV3TW9kZUluZm8gewog
ICAgIGNvbnN0IGNoYXIqIG5hbWU7CiAgICAgUGFnZTo6Vmlld01vZGUgdHlwZTsKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5oCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2Uu
aAkod29ya2luZyBjb3B5KQpAQCAtMTk1LDYgKzE5NSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICBTY3JvbGxpbmdDb29yZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IoKTsK
IAorICAgICAgICBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CisKICAgICAgICAg
U2V0dGluZ3MqIHNldHRpbmdzKCkgY29uc3QgeyByZXR1cm4gbV9zZXR0aW5ncy5nZXQoKTsgfQog
ICAgICAgICBQcm9ncmVzc1RyYWNrZXIqIHByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9wcm9n
cmVzcy5nZXQoKTsgfQogICAgICAgICBCYWNrRm9yd2FyZENvbnRyb2xsZXIqIGJhY2tGb3J3YXJk
KCkgY29uc3QgeyByZXR1cm4gbV9iYWNrRm9yd2FyZENvbnRyb2xsZXIuZ2V0KCk7IH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29y
ZGluYXRvci5jcHAJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIzLDQg
KzMyMyw5IEBAIFNjcm9sbGluZ05vZGVJRCBTY3JvbGxpbmdDb29yZGluYXRvcjo6dW4KICAgICBy
ZXR1cm4gdW5pcXVlU2Nyb2xsTGF5ZXJJRCsrOwogfQogCitTdHJpbmcgU2Nyb2xsaW5nQ29vcmRp
bmF0b3I6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCit7CisgICAgcmV0dXJuIFN0cmluZygp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmgJKHJldmlzaW9uIDEz
MzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTExNyw2ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgdmly
dHVhbCBTY3JvbGxpbmdOb2RlSUQgYXR0YWNoVG9TdGF0ZVRyZWUoU2Nyb2xsaW5nTm9kZVR5cGUs
IFNjcm9sbGluZ05vZGVJRCBuZXdOb2RlSUQsIFNjcm9sbGluZ05vZGVJRCAvKnBhcmVudElEKi8p
IHsgcmV0dXJuIG5ld05vZGVJRDsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXRhY2hGcm9tU3RhdGVU
cmVlKFNjcm9sbGluZ05vZGVJRCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyU3RhdGVUcmVl
KCkgeyB9CisgICAgdmlydHVhbCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7CiAK
ICAgICAvLyBHZW5lcmF0ZWQgYSB1bmlxdWUgaWQgZm9yIHNjcm9sbCBsYXllcnMuCiAgICAgU2Ny
b2xsaW5nTm9kZUlEIHVuaXF1ZVNjcm9sbExheWVySUQoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmNwcAkocmV2aXNp
b24gMTMzMDY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVOb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsOSBAQAogI2luY2x1ZGUgIlNj
cm9sbGluZ1N0YXRlTm9kZS5oIgogCiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3RhdGVUcmVlLmgiCisj
aW5jbHVkZSAiVGV4dFN0cmVhbS5oIgorCisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+
CiAKICNpZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQogCkBAIC0xMDQsNiArMTA3LDQwIEBA
IHZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpyZW1vdmVDaGlsZChTY3IKICAgICAgICAgbV9jaGls
ZHJlbi0+YXQoaSktPnJlbW92ZUNoaWxkKG5vZGUpOwogfQogCit2b2lkIFNjcm9sbGluZ1N0YXRl
Tm9kZTo6d3JpdGVJbmRlbnQoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpCit7CisgICAgZm9y
IChpbnQgaSA9IDA7IGkgIT0gaW5kZW50OyArK2kpCisgICAgICAgIHRzIDw8ICIgICI7Cit9CisK
K3ZvaWQgU2Nyb2xsaW5nU3RhdGVOb2RlOjpkdW1wTm9kZShUZXh0U3RyZWFtJiB0cywgaW50IGlu
ZGVudCkKK3sKKyAgICB3cml0ZUluZGVudCh0cywgaW5kZW50KTsKKyAgICBkdW1wUHJvcGVydGll
cyh0cywgaW5kZW50KTsKKworICAgIGlmIChtX2NoaWxkcmVuKSB7CisgICAgICAgIHdyaXRlSW5k
ZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgc2l6ZV90IHNpemUgPSBjaGlsZHJlbigpLT5z
aXplKCk7CisgICAgICAgIHRzIDw8ICIoY2hpbGRyZW4gIiA8PCBzaXplIDw8ICJcbiI7CisgICAg
ICAgIAorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykKKyAgICAgICAg
ICAgIG1fY2hpbGRyZW4tPmF0KGkpLT5kdW1wTm9kZSh0cywgaW5kZW50ICsgMik7CisgICAgICAg
IHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIilcbiI7CisgICAg
fQorCisgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCk7CisgICAgdHMgPDwgIilcbiI7Cit9CisK
K1N0cmluZyBTY3JvbGxpbmdTdGF0ZU5vZGU6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpCit7
CisgICAgVGV4dFN0cmVhbSB0czsKKworICAgIGR1bXBOb2RlKHRzLCAwKTsKKyAgICByZXR1cm4g
dHMucmVsZWFzZSgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBF
TkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
cGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVOb2RlLmgJKHJldmlzaW9uIDEzMzA2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00Miw2ICs0Miw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3Mg
R3JhcGhpY3NMYXllcjsKIGNsYXNzIFNjcm9sbGluZ1N0YXRlVHJlZTsKK2NsYXNzIFRleHRTdHJl
YW07CiAKIGNsYXNzIFNjcm9sbGluZ1N0YXRlTm9kZSB7CiBwdWJsaWM6CkBAIC03OSwxMiArODAs
MTkgQEAgcHVibGljOgogICAgIHZvaWQgYXBwZW5kQ2hpbGQoUGFzc093blB0cjxTY3JvbGxpbmdT
dGF0ZU5vZGU+KTsKICAgICB2b2lkIHJlbW92ZUNoaWxkKFNjcm9sbGluZ1N0YXRlTm9kZSopOwog
CisgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOworCiBwcm90ZWN0ZWQ6CiAg
ICAgU2Nyb2xsaW5nU3RhdGVOb2RlKGNvbnN0IFNjcm9sbGluZ1N0YXRlTm9kZSYpOworICAgIHN0
YXRpYyB2b2lkIHdyaXRlSW5kZW50KFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KTsKIAogICAgIFNj
cm9sbGluZ1N0YXRlVHJlZSogbV9zY3JvbGxpbmdTdGF0ZVRyZWU7CiAKIHByaXZhdGU6CisgICAg
dm9pZCBkdW1wTm9kZShUZXh0U3RyZWFtJiwgaW50IGluZGVudCk7CisKKyAgICB2aXJ0dWFsIHZv
aWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYsIGludCBpbmRlbnQpID0gMDsKKwogICAgIFNj
cm9sbGluZ05vZGVJRCBtX25vZGVJRDsKIAogICAgIFNjcm9sbGluZ1N0YXRlTm9kZSogbV9wYXJl
bnQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZS5jcHAJKHJldmlzaW9uIDEzMzA2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUuaCIKIAogI2luY2x1ZGUgIlNjcm9sbGluZ1N0YXRlVHJlZS5o
IgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKICNp
ZiBFTkFCTEUoVEhSRUFERURfU0NST0xMSU5HKQpAQCAtMjA1LDYgKzIwNiw0OCBAQCB2b2lkIFNj
cm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZTo6c2V0U2NyCiAgICAgbV9zY3JvbGxpbmdTdGF0ZVRy
ZWUtPnNldEhhc0NoYW5nZWRQcm9wZXJ0aWVzKHRydWUpOwogfQogCit2b2lkIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZTo6ZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYgdHMsIGludCBpbmRl
bnQpCit7CisgICAgdHMgPDwgIigiIDw8ICJTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUiIDw8
ICJcbiI7CisKKyAgICBpZiAobV92aWV3cG9ydFJlY3QgIT0gSW50UmVjdCgpKSB7CisgICAgICAg
IHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIih2aWV3cG9ydCBy
ZWN0ICIgPDwgbV92aWV3cG9ydFJlY3QueCgpIDw8ICIgIiA8PCBtX3ZpZXdwb3J0UmVjdC55KCkg
PDwgIiAiIDw8IG1fdmlld3BvcnRSZWN0LndpZHRoKCkgPDwgIiAiIDw8IG1fdmlld3BvcnRSZWN0
LmhlaWdodCgpIDw8ICIpXG4iOworICAgIH0KKworICAgIGlmIChtX2NvbnRlbnRzU2l6ZSAhPSBJ
bnRTaXplKCkpIHsKKyAgICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAg
ICB0cyA8PCAiKGNvbnRlbnRzIHNpemUgIiA8PCBtX2NvbnRlbnRzU2l6ZS53aWR0aCgpIDw8ICIg
IiA8PCBtX2NvbnRlbnRzU2l6ZS5oZWlnaHQoKSA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAo
bV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICE9IDApIHsKKyAg
ICAgICAgd3JpdGVJbmRlbnQodHMsIGluZGVudCArIDEpOworICAgICAgICB0cyA8PCAiKFNjcm9s
bGluZyBvbiBtYWluIHRocmVhZCBiZWNhdXNlOiAiOworICAgICAgICBpZiAobV9zaG91bGRVcGRh
dGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OkZvcmNlZE9uTWFpblRocmVhZCkKKyAgICAgICAgICAgIHRzIDw8ICJGb3JjZWQgb24gbWFpbiB0
aHJlYWQsICI7CisgICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25P
bk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6SGFzU2xvd1JlcGFpbnRPYmplY3Rz
KQorICAgICAgICAgICAgdHMgPDwgIkhhcyBzbG93IHJlcGFpbnQgb2JqZWN0cywgIjsKKyAgICAg
ICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNj
cm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRT
dXBwb3J0aW5nRml4ZWRMYXllcnMpCisgICAgICAgICAgICB0cyA8PCAiSGFzIHZpZXdwb3J0IGNv
bnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgIjsKKyAg
ICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAm
IFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNOb25MYXllckZpeGVkT2JqZWN0cykKKyAgICAgICAg
ICAgIHRzIDw8ICJIYXMgbm9uLWxheWVyIGZpeGVkIG9iamVjdHMsICI7CisgICAgICAgIGlmICht
X3Nob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdD
b29yZGluYXRvcjo6SXNJbWFnZURvY3VtZW50KQorICAgICAgICAgICAgdHMgPDwgIklzIGltYWdl
IGRvY3VtZW50IjsKKyAgICAgICAgdHMgPDwgIilcbiI7CisgICAgfQorCisgICAgaWYgKG1fcmVx
dWVzdGVkU2Nyb2xsUG9zaXRpb24gIT0gSW50UG9pbnQoKSkgeworICAgICAgICB3cml0ZUluZGVu
dCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIocmVxdWVzdGVkIHNjcm9sbCBwb3Np
dGlvbiAiIDw8IG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb24ueCgpIDw8ICIgIiA8PCBtX3JlcXVl
c3RlZFNjcm9sbFBvc2l0aW9uLnkoKSA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAobV9zY3Jv
bGxPcmlnaW4gIT0gSW50UG9pbnQoKSkgeworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50
ICsgMSk7CisgICAgICAgIHRzIDw8ICIoc2Nyb2xsIG9yaWdpbiAiIDw8IG1fc2Nyb2xsT3JpZ2lu
LngoKSA8PCAiICIgPDwgbV9zY3JvbGxPcmlnaW4ueSgpIDw8ICIpXG4iOworICAgIH0KKworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoVEhSRUFERURfU0NS
T0xMSU5HKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJKHJldmlzaW9uIDEzMzA2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDcsNiArMTA3LDggQEAgcHVibGljOgogCiAgICAgYm9v
bCByZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvblJlcHJlc2VudHNQcm9ncmFtbWF0aWNTY3JvbGwoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1t
YXRpY1Njcm9sbDsgfQogCisgICAgdmlydHVhbCB2b2lkIGR1bXBQcm9wZXJ0aWVzKFRleHRTdHJl
YW0mLCBpbnQgaW5kZW50KSBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICBTY3JvbGxpbmdTdGF0
ZVNjcm9sbGluZ05vZGUoU2Nyb2xsaW5nU3RhdGVUcmVlKiwgU2Nyb2xsaW5nTm9kZUlEKTsKIApJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5h
dG9yTWFjLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFj
L1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw2ICs3Miw4IEBAIHB1YmxpYzoKICAgICAvLyBUaGlzIGZ1bmN0aW9u
IHdpcGVzIG91dCB0aGUgY3VycmVudCB0cmVlLgogICAgIHZpcnR1YWwgdm9pZCBjbGVhclN0YXRl
VHJlZSgpOwogCisgICAgdmlydHVhbCBTdHJpbmcgc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkg
T1ZFUlJJREU7CisKIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIHJlY29tcHV0ZVdoZWVsRXZl
bnRIYW5kbGVyQ291bnRGb3JGcmFtZVZpZXcoRnJhbWVWaWV3Kik7CiAgICAgdmlydHVhbCB2b2lk
IHNldFNob3VsZFVwZGF0ZVNjcm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQoTWFpblRocmVh
ZFNjcm9sbGluZ1JlYXNvbnMpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcv
bWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5tbQkocmV2aXNp
b24gMTMzMDY4KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGlu
Z0Nvb3JkaW5hdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOTQsNiArMzk0LDExIEBAIHZv
aWQgU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWM6OmNvbW1pdFRyZWUKICAgICBTY3JvbGxpbmdUaHJl
YWQ6OmRpc3BhdGNoKGJpbmQoJlNjcm9sbGluZ1RyZWU6OmNvbW1pdE5ld1RyZWVTdGF0ZSwgbV9z
Y3JvbGxpbmdUcmVlLmdldCgpLCB0cmVlU3RhdGUucmVsZWFzZSgpKSk7CiB9CiAKK1N0cmluZyBT
Y3JvbGxpbmdDb29yZGluYXRvck1hYzo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkKK3sKKyAg
ICByZXR1cm4gbV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnJvb3RTdGF0ZU5vZGUoKS0+c2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlm
IC8vIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJTkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyNzMsNiArMTI3MywyMCBAQCBTdHJp
bmcgSW50ZXJuYWxzOjpyZXBhaW50UmVjdHNBc1RleHQoRG9jCiAgICAgcmV0dXJuIGRvY3VtZW50
LT5mcmFtZSgpLT50cmFja2VkUmVwYWludFJlY3RzQXNUZXh0KCk7CiB9CiAKK1N0cmluZyBJbnRl
cm5hbHM6OnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChEb2N1bWVudCogZG9jdW1lbnQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKSBjb25zdAoreworICAgIGlmICghZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5m
cmFtZSgpKSB7CisgICAgICAgIGVjID0gSU5WQUxJRF9BQ0NFU1NfRVJSOworICAgICAgICByZXR1
cm4gU3RyaW5nKCk7CisgICAgfQorCisgICAgUGFnZSogcGFnZSA9IGRvY3VtZW50LT5wYWdlKCk7
CisgICAgaWYgKCFwYWdlKQorICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisKKyAgICByZXR1cm4g
cGFnZS0+c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCk7Cit9CisKIHZvaWQgSW50ZXJuYWxzOjpn
YXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKERvY3VtZW50KiBkb2N1bWVudCwgRXhjZXB0
aW9uQ29kZSYgZWMpIGNvbnN0CiB7CiAgICAgaWYgKCFkb2N1bWVudCkgewpJbmRleDogU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTYsNiArMTk2LDcgQEAg
cHVibGljOgogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQoRG9jdW1lbnQqLCB1bnNpZ25lZCBm
bGFncywgRXhjZXB0aW9uQ29kZSYpIGNvbnN0OwogICAgIFN0cmluZyBsYXllclRyZWVBc1RleHQo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIHJlcGFpbnRSZWN0
c0FzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKKyAgICBTdHJpbmcgc2Ny
b2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owog
CiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKERvY3VtZW50KiwgRXhj
ZXB0aW9uQ29kZSYpIGNvbnN0OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMu
aWRsCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsOCBAQAogICAgIGNvbnN0IHVuc2ln
bmVkIHNob3J0IExBWUVSX1RSRUVfSU5DTFVERVNfVElMRV9DQUNIRVMgPSAyOwogICAgIERPTVN0
cmluZyBsYXllclRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQsIGluIFtPcHRpb25hbF0g
dW5zaWduZWQgc2hvcnQgZmxhZ3MpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAorICAgIERPTVN0
cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoaW4gRG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNl
cyAoRE9NRXhjZXB0aW9uKTsKKwogICAgIERPTVN0cmluZyByZXBhaW50UmVjdHNBc1RleHQoaW4g
RG9jdW1lbnQgZG9jdW1lbnQpIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKIAogICAgIHZvaWQgZ2Fy
YmFnZUNvbGxlY3REb2N1bWVudFJlc291cmNlcyhpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2Vz
IChET01FeGNlcHRpb24pOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTMzMTI4KQorKysgTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTAtMzEg
IEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUuY29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA5MTcKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJl
IGEgd2F5IHRvIGR1bXAgdGhlIHNjcm9sbGluZyB0cmVlIGZyb20gdGhlIGxheW91dCB0ZXN0cwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZv
cm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21h
Yy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5n
LXRyZWUtc2xvdy1zY3JvbGxpbmcuaHRtbDogQWRkZWQuCisKIDIwMTItMTAtMzEgIFRha2FzaGkg
U2FrYW1vdG8gIDx0YXNha0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtSZWZhY3RvcmluZ10gTW92
ZSBpbml0aWFsIHN0eWxlIHNldHRpbmcgZm9yIFByb2dyZXNzVmFsdWVFbGVtZW50IGZyb20gYXR0
YWNoIG1ldGhvZCB0byBjcmVhdGVTaGFkb3dTdWJ0cmVlIG1ldGhvZCBpbiBIVE1MUHJvZ3Jlc3NF
bGVtZW50LgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Ny
b2xsaW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1hZnRlci1z
Y3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBACisoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdO
b2RlCisgICh2aWV3cG9ydCByZWN0IDAgMCA3ODUgNjAwKQorICAoY29udGVudHMgc2l6ZSA3ODUg
NTAyMSkKKyAgKHJlcXVlc3RlZCBzY3JvbGwgcG9zaXRpb24gMCAzMDAwKQorKQorCkluZGV4OiBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1hZnRl
ci1zY3JvbGwuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGls
ZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1hZnRlci1zY3JvbGwuaHRtbAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LWFmdGVyLXNjcm9sbC5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDI3IEBACis8IURPQ1RZ
UEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+CisgICAgICAgIGJvZHkgewor
ICAgICAgICAgICAgaGVpZ2h0OiA1MDAwcHg7CisgICAgICAgIH0KKyAgICA8L3N0eWxlPgorICAg
IDxzY3JpcHQ+CisgICAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICAgIHRl
c3RSdW5uZXIuZHVtcEFzVGV4dCgpOworCisgICAgICAgIGZ1bmN0aW9uIGRvVGVzdCgpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHdpbmRvdy5zY3JvbGxUbygwLCAzMDAwKTsKKyAgICAgICAgICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7CisgICAgICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2xheWVycycpLmlubmVyVGV4dCA9IGludGVybmFscy5zY3JvbGxpbmdTdGF0ZVRy
ZWVBc1RleHQoZG9jdW1lbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdp
bmRvdy5hZGRFdmVudExpc3RlbmVyKCdsb2FkJywgZG9UZXN0LCBmYWxzZSk7CisgICAgPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwcmUgaWQ9ImxheWVycyI+U2Nyb2xsaW5nIHRyZWUgZ29l
cyBoZXJlPC9wPgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5n
L3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw2IEBA
CisoU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlCisgICh2aWV3cG9ydCByZWN0IDAgMCA4MDAg
NjAwKQorICAoY29udGVudHMgc2l6ZSA4MDAgNjAwKQorICAoU2Nyb2xsaW5nIG9uIG1haW4gdGhy
ZWFkIGJlY2F1c2U6IEhhcyB2aWV3cG9ydCBjb25zdHJhaW5lZCBvYmplY3RzIHdpdGhvdXQgc3Vw
cG9ydGluZyBmaXhlZCBsYXllcnMsICkKKykKKwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmcuaHRtbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1zbG93LXNjcm9sbGluZy5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmcu
aHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwzMCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxo
dG1sPgorPGhlYWQ+CisgICAgPHN0eWxlPgorICAgICAgICAuYm94IHsKKyAgICAgICAgICAgIGhl
aWdodDogMTAwcHg7CisgICAgICAgICAgICB3aWR0aDogMTAwcHg7CisgICAgICAgICAgICBwb3Np
dGlvbjogZml4ZWQ7IC8qIEF0IHRoaXMgdGltZSwgcG9zaXRpb246Zml4ZWQgZm9yY2VzIHNsb3cg
bW9kZS4gKi8KKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAg
aWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0
KCk7CisKKyAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJUZXh0ID0gaW50ZXJuYWxzLnNjcm9sbGluZ1N0YXRlVHJl
ZUFzVGV4dChkb2N1bWVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2lu
ZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgICA8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5PgorPGRpdiBjbGFzcz0iYm94Ij4KKzwvZGl2PgorPHByZSBpZD0i
bGF5ZXJzIj5TY3JvbGxpbmcgdHJlZSBnb2VzIGhlcmU8L3A+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="185810"
          type_id="1"
          status="-"
          setter="simon.fraser"
    />
    <flag name="commit-queue"
          id="185819"
          type_id="3"
          status="-"
          setter="buildbot"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171901</attachid>
            <date>2012-11-01 11:32:12 -0700</date>
            <delta_ts>2012-11-01 11:36:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>for-review-test-2.txt</filename>
            <type>text/plain</type>
            <size>21519</size>
            <attacher name="Beth Dakin">bdakin</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDEzMzE5
NikKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDEyLTEx
LTAxICBCZXRoIERha2luICA8YmRha2luQGFwcGxlLmNvbT4KKworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwOTE3CisgICAgICAgIFRoZXJlIHNob3Vs
ZCBiZSBhIHdheSB0byBkdW1wIHRoZSBzY3JvbGxpbmcgdHJlZSBmcm9tIHRoZSBsYXlvdXQgdGVz
dHMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNv
dXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXI6CisKIDIwMTItMTAtMzEgIFRoaWFnbyBNYXJj
b3MgUC4gU2FudG9zICA8dGhpYWdvLnNhbnRvc0BpbnRlbC5jb20+CiAKICAgICAgICAgQWRkZWQg
dmlld3BvcnQgYXQtcnVsZSB0byB0aGUgQ1NTIHBhcnNlciBhbmQgdG9rZW5pemVyCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiAxMzMxOTcpCisrKyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSw0NSBAQAorMjAxMi0xMS0wMSAgQmV0aCBEYWtpbiAgPGJk
YWtpbkBhcHBsZS5jb20+CisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTEwMDkxNworICAgICAgICBUaGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gZHVtcCB0
aGUgc2Nyb2xsaW5nIHRyZWUgZnJvbSB0aGUgbGF5b3V0IHRlc3RzCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlLmV4cC5pbjoKKyAgICAg
ICAgKiBwYWdlL1BhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2Nyb2xsaW5nU3Rh
dGVUcmVlQXNUZXh0KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBhZ2UvUGFnZS5o
OgorICAgICAgICAoUGFnZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29v
cmRpbmF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBw
YWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5oOgorICAgICAgICAoU2Nyb2xsaW5n
Q29vcmRpbmF0b3IpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OndyaXRlSW5kZW50
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nU3RhdGVO
b2RlOjpkdW1wTm9kZSk6CisgICAgICAgIChXZWJDb3JlOjpTY3JvbGxpbmdTdGF0ZU5vZGU6OnNj
cm9sbGluZ1N0YXRlVHJlZUFzVGV4dCk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xs
aW5nU3RhdGVOb2RlLmg6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFNjcm9sbGluZ1N0
YXRlTm9kZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9k
ZTo6ZHVtcFByb3BlcnRpZXMpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGFnZS9z
Y3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmg6CisgICAgICAgIChTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3Jv
bGxpbmdDb29yZGluYXRvck1hYy5oOgorICAgICAgICAoU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMp
OgorICAgICAgICAqIHBhZ2Uvc2Nyb2xsaW5nL21hYy9TY3JvbGxpbmdDb29yZGluYXRvck1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9J
bnRlcm5hbHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW50ZXJuYWxzOjpzY3JvbGxpbmdTdGF0
ZVRyZWVBc1RleHQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogdGVzdGluZy9JbnRl
cm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisKIDIwMTItMTEtMDEg
IEFsZWMgRmxldHQgIDxhbGVjZmxldHRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEluZGV4ZWRE
QjogYWRkIG1ldGhvZHMgdG8gc3VwcG9ydCBpZC1iYXNlZCBiYWNrZW5kIEFQSXMKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZXhwLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUuZXhwLmluCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmV4cC5pbgkod29ya2luZyBjb3B5KQpAQCAtNzI5LDYgKzcyOSw3IEBAIF9fWk43V2ViQ29y
ZTRQYWdlMjFtYXJrQWxsTWF0Y2hlc0ZvclRleHQKIF9fWk43V2ViQ29yZTRQYWdlMjJhbGxWaXNp
dGVkU3RhdGVDaGFuZ2VkRVBOU185UGFnZUdyb3VwRQogX19aTjdXZWJDb3JlNFBhZ2UyM2NsZWFy
VW5kb1JlZG9PcGVyYXRpb25zRXYKIF9fWk43V2ViQ29yZTRQYWdlMjRyZXN1bWVTY3JpcHRlZEFu
aW1hdGlvbnNFdgorX19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dEV2
CiBfX1pON1dlYkNvcmU0UGFnZTI1c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uc0V2CiBfX1pON1dl
YkNvcmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplckNodW5rU2l6ZUVpCiBfX1pON1dlYkNv
cmU0UGFnZTMxc2V0Q3VzdG9tSFRNTFRva2VuaXplclRpbWVEZWxheUVkCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTI0NCw2ICsyNDQsMTcgQEAgU2Nyb2xsaW5nQ29vcmRpbmF0
b3IqIFBhZ2U6OnNjcm9sbGluZ0NvbwogICAgIHJldHVybiBtX3Njcm9sbGluZ0Nvb3JkaW5hdG9y
LmdldCgpOwogfQogCitTdHJpbmcgUGFnZTo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KCkKK3sK
KyAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisg
ICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKKworICAgIGlmIChTY3JvbGxpbmdDb29y
ZGluYXRvciogc2Nyb2xsaW5nQ29vcmRpbmF0b3IgPSB0aGlzLT5zY3JvbGxpbmdDb29yZGluYXRv
cigpKQorICAgICAgICByZXR1cm4gc2Nyb2xsaW5nQ29vcmRpbmF0b3ItPnNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dCgpOworCisgICAgcmV0dXJuIFN0cmluZygpOworfQorCiBzdHJ1Y3QgVmlld01v
ZGVJbmZvIHsKICAgICBjb25zdCBjaGFyKiBuYW1lOwogICAgIFBhZ2U6OlZpZXdNb2RlIHR5cGU7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2UuaAkocmV2aXNpb24gMTMzMDY4KQorKysgU291cmNlL1dlYkNvcmUv
cGFnZS9QYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5NSw2ICsxOTUsOCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKICAgICAgICAgU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIHNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKCk7CiAKKyAgICAgICAgU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dCgpOwor
CiAgICAgICAgIFNldHRpbmdzKiBzZXR0aW5ncygpIGNvbnN0IHsgcmV0dXJuIG1fc2V0dGluZ3Mu
Z2V0KCk7IH0KICAgICAgICAgUHJvZ3Jlc3NUcmFja2VyKiBwcm9ncmVzcygpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvZ3Jlc3MuZ2V0KCk7IH0KICAgICAgICAgQmFja0ZvcndhcmRDb250cm9sbGVyKiBi
YWNrRm9yd2FyZCgpIGNvbnN0IHsgcmV0dXJuIG1fYmFja0ZvcndhcmRDb250cm9sbGVyLmdldCgp
OyB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGlu
YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Ny
b2xsaW5nQ29vcmRpbmF0b3IuY3BwCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTMyMyw0ICszMjMsOSBAQCBTY3JvbGxpbmdOb2RlSUQgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6
OnVuCiAgICAgcmV0dXJuIHVuaXF1ZVNjcm9sbExheWVySUQrKzsKIH0KIAorU3RyaW5nIFNjcm9s
bGluZ0Nvb3JkaW5hdG9yOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdAoreworICAg
IHJldHVybiBTdHJpbmcoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRv
ci5oCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdDb29yZGluYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsNiArMTE3LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgU2Nyb2xsaW5nTm9kZUlEIGF0dGFjaFRvU3RhdGVUcmVlKFNj
cm9sbGluZ05vZGVUeXBlLCBTY3JvbGxpbmdOb2RlSUQgbmV3Tm9kZUlELCBTY3JvbGxpbmdOb2Rl
SUQgLypwYXJlbnRJRCovKSB7IHJldHVybiBuZXdOb2RlSUQ7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGV0YWNoRnJvbVN0YXRlVHJlZShTY3JvbGxpbmdOb2RlSUQpIHsgfQogICAgIHZpcnR1YWwgdm9p
ZCBjbGVhclN0YXRlVHJlZSgpIHsgfQorICAgIHZpcnR1YWwgU3RyaW5nIHNjcm9sbGluZ1N0YXRl
VHJlZUFzVGV4dCgpIGNvbnN0OwogCiAgICAgLy8gR2VuZXJhdGVkIGEgdW5pcXVlIGlkIGZvciBz
Y3JvbGwgbGF5ZXJzLgogICAgIFNjcm9sbGluZ05vZGVJRCB1bmlxdWVTY3JvbGxMYXllcklEKCk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5jcHAJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9kZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3LDYg
KzI3LDkgQEAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZU5vZGUuaCIKIAogI2luY2x1ZGUgIlNj
cm9sbGluZ1N0YXRlVHJlZS5oIgorI2luY2x1ZGUgIlRleHRTdHJlYW0uaCIKKworI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiAjaWYgRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykK
IApAQCAtMTA0LDYgKzEwNyw0MCBAQCB2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6cmVtb3ZlQ2hp
bGQoU2NyCiAgICAgICAgIG1fY2hpbGRyZW4tPmF0KGkpLT5yZW1vdmVDaGlsZChub2RlKTsKIH0K
IAordm9pZCBTY3JvbGxpbmdTdGF0ZU5vZGU6OndyaXRlSW5kZW50KFRleHRTdHJlYW0mIHRzLCBp
bnQgaW5kZW50KQoreworICAgIGZvciAoaW50IGkgPSAwOyBpICE9IGluZGVudDsgKytpKQorICAg
ICAgICB0cyA8PCAiICAiOworfQorCit2b2lkIFNjcm9sbGluZ1N0YXRlTm9kZTo6ZHVtcE5vZGUo
VGV4dFN0cmVhbSYgdHMsIGludCBpbmRlbnQpIGNvbnN0Cit7CisgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCk7CisgICAgZHVtcFByb3BlcnRpZXModHMsIGluZGVudCk7CisKKyAgICBpZiAobV9j
aGlsZHJlbikgeworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAg
IHNpemVfdCBzaXplID0gY2hpbGRyZW4oKS0+c2l6ZSgpOworICAgICAgICB0cyA8PCAiKGNoaWxk
cmVuICIgPDwgc2l6ZSA8PCAiXG4iOworICAgICAgICAKKyAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBzaXplOyBpKyspCisgICAgICAgICAgICBtX2NoaWxkcmVuLT5hdChpKS0+ZHVtcE5v
ZGUodHMsIGluZGVudCArIDIpOworICAgICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7
CisgICAgICAgIHRzIDw8ICIpXG4iOworICAgIH0KKworICAgIHdyaXRlSW5kZW50KHRzLCBpbmRl
bnQpOworICAgIHRzIDw8ICIpXG4iOworfQorCitTdHJpbmcgU2Nyb2xsaW5nU3RhdGVOb2RlOjpz
Y3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKSBjb25zdAoreworICAgIFRleHRTdHJlYW0gdHM7CisK
KyAgICBkdW1wTm9kZSh0cywgMCk7CisgICAgcmV0dXJuIHRzLnJlbGVhc2UoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElO
RykKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ1N0YXRlTm9k
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGlu
Z1N0YXRlTm9kZS5oCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9TY3JvbGxpbmdTdGF0ZU5vZGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIs
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBT
Y3JvbGxpbmdTdGF0ZVRyZWU7CitjbGFzcyBUZXh0U3RyZWFtOwogCiBjbGFzcyBTY3JvbGxpbmdT
dGF0ZU5vZGUgewogcHVibGljOgpAQCAtNzksMTIgKzgwLDE5IEBAIHB1YmxpYzoKICAgICB2b2lk
IGFwcGVuZENoaWxkKFBhc3NPd25QdHI8U2Nyb2xsaW5nU3RhdGVOb2RlPik7CiAgICAgdm9pZCBy
ZW1vdmVDaGlsZChTY3JvbGxpbmdTdGF0ZU5vZGUqKTsKIAorICAgIFN0cmluZyBzY3JvbGxpbmdT
dGF0ZVRyZWVBc1RleHQoKSBjb25zdDsKKwogcHJvdGVjdGVkOgogICAgIFNjcm9sbGluZ1N0YXRl
Tm9kZShjb25zdCBTY3JvbGxpbmdTdGF0ZU5vZGUmKTsKKyAgICBzdGF0aWMgdm9pZCB3cml0ZUlu
ZGVudChUZXh0U3RyZWFtJiwgaW50IGluZGVudCk7CiAKICAgICBTY3JvbGxpbmdTdGF0ZVRyZWUq
IG1fc2Nyb2xsaW5nU3RhdGVUcmVlOwogCiBwcml2YXRlOgorICAgIHZvaWQgZHVtcE5vZGUoVGV4
dFN0cmVhbSYsIGludCBpbmRlbnQpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGR1bXBQcm9w
ZXJ0aWVzKFRleHRTdHJlYW0mLCBpbnQgaW5kZW50KSBjb25zdCA9IDA7CisKICAgICBTY3JvbGxp
bmdOb2RlSUQgbV9ub2RlSUQ7CiAKICAgICBTY3JvbGxpbmdTdGF0ZU5vZGUqIG1fcGFyZW50OwpJ
bmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxp
bmdOb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9T
Y3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3BwCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAiU2Nyb2xsaW5nU3Rh
dGVTY3JvbGxpbmdOb2RlLmgiCiAKICNpbmNsdWRlICJTY3JvbGxpbmdTdGF0ZVRyZWUuaCIKKyNp
bmNsdWRlICJUZXh0U3RyZWFtLmgiCiAjaW5jbHVkZSA8d3RmL093blB0ci5oPgogCiAjaWYgRU5B
QkxFKFRIUkVBREVEX1NDUk9MTElORykKQEAgLTIwNSw2ICsyMDYsNDggQEAgdm9pZCBTY3JvbGxp
bmdTdGF0ZVNjcm9sbGluZ05vZGU6OnNldFNjcgogICAgIG1fc2Nyb2xsaW5nU3RhdGVUcmVlLT5z
ZXRIYXNDaGFuZ2VkUHJvcGVydGllcyh0cnVlKTsKIH0KIAordm9pZCBTY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGU6OmR1bXBQcm9wZXJ0aWVzKFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KSBj
b25zdAoreworICAgIHRzIDw8ICIoIiA8PCAiU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlIiA8
PCAiXG4iOworCisgICAgaWYgKG1fdmlld3BvcnRSZWN0ICE9IEludFJlY3QoKSkgeworICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIodmlld3BvcnQg
cmVjdCAiIDw8IG1fdmlld3BvcnRSZWN0LngoKSA8PCAiICIgPDwgbV92aWV3cG9ydFJlY3QueSgp
IDw8ICIgIiA8PCBtX3ZpZXdwb3J0UmVjdC53aWR0aCgpIDw8ICIgIiA8PCBtX3ZpZXdwb3J0UmVj
dC5oZWlnaHQoKSA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAobV9jb250ZW50c1NpemUgIT0g
SW50U2l6ZSgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKKyAgICAg
ICAgdHMgPDwgIihjb250ZW50cyBzaXplICIgPDwgbV9jb250ZW50c1NpemUud2lkdGgoKSA8PCAi
ICIgPDwgbV9jb250ZW50c1NpemUuaGVpZ2h0KCkgPDwgIilcbiI7CisgICAgfQorCisgICAgaWYg
KG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCkgeworICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMSk7CisgICAgICAgIHRzIDw8ICIoU2Nyb2xsaW5n
IG9uIG1haW4gdGhyZWFkIGJlY2F1c2U6ICI7CisgICAgICAgIGlmIChtX3Nob3VsZFVwZGF0ZVNj
cm9sbExheWVyUG9zaXRpb25Pbk1haW5UaHJlYWQgJiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Rm9y
Y2VkT25NYWluVGhyZWFkKQorICAgICAgICAgICAgdHMgPDwgIkZvcmNlZCBvbiBtYWluIHRocmVh
ZCwgIjsKKyAgICAgICAgaWYgKG1fc2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFp
blRocmVhZCAmIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpIYXNTbG93UmVwYWludE9iamVjdHMpCisg
ICAgICAgICAgICB0cyA8PCAiSGFzIHNsb3cgcmVwYWludCBvYmplY3RzLCAiOworICAgICAgICBp
ZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Nyb2xs
aW5nQ29vcmRpbmF0b3I6Okhhc1ZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzV2l0aG91dFN1cHBv
cnRpbmdGaXhlZExheWVycykKKyAgICAgICAgICAgIHRzIDw8ICJIYXMgdmlld3BvcnQgY29uc3Ry
YWluZWQgb2JqZWN0cyB3aXRob3V0IHN1cHBvcnRpbmcgZml4ZWQgbGF5ZXJzLCAiOworICAgICAg
ICBpZiAobV9zaG91bGRVcGRhdGVTY3JvbGxMYXllclBvc2l0aW9uT25NYWluVGhyZWFkICYgU2Ny
b2xsaW5nQ29vcmRpbmF0b3I6Okhhc05vbkxheWVyRml4ZWRPYmplY3RzKQorICAgICAgICAgICAg
dHMgPDwgIkhhcyBub24tbGF5ZXIgZml4ZWQgb2JqZWN0cywgIjsKKyAgICAgICAgaWYgKG1fc2hv
dWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZCAmIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yOjpJc0ltYWdlRG9jdW1lbnQpCisgICAgICAgICAgICB0cyA8PCAiSXMgaW1hZ2UgZG9j
dW1lbnQiOworICAgICAgICB0cyA8PCAiKVxuIjsKKyAgICB9CisKKyAgICBpZiAobV9yZXF1ZXN0
ZWRTY3JvbGxQb3NpdGlvbiAhPSBJbnRQb2ludCgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRz
LCBpbmRlbnQgKyAxKTsKKyAgICAgICAgdHMgPDwgIihyZXF1ZXN0ZWQgc2Nyb2xsIHBvc2l0aW9u
ICIgPDwgbV9yZXF1ZXN0ZWRTY3JvbGxQb3NpdGlvbi54KCkgPDwgIiAiIDw8IG1fcmVxdWVzdGVk
U2Nyb2xsUG9zaXRpb24ueSgpIDw8ICIpXG4iOworICAgIH0KKworICAgIGlmIChtX3Njcm9sbE9y
aWdpbiAhPSBJbnRQb2ludCgpKSB7CisgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAx
KTsKKyAgICAgICAgdHMgPDwgIihzY3JvbGwgb3JpZ2luICIgPDwgbV9zY3JvbGxPcmlnaW4ueCgp
IDw8ICIgIiA8PCBtX3Njcm9sbE9yaWdpbi55KCkgPDwgIilcbiI7CisgICAgfQorCit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShUSFJFQURFRF9TQ1JPTExJ
TkcpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdTdGF0ZVNj
cm9sbGluZ05vZGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGlu
Zy9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUuaAkocmV2aXNpb24gMTMzMDY4KQorKysgU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nU3RhdGVTY3JvbGxpbmdOb2RlLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTEwNyw2ICsxMDcsOCBAQCBwdWJsaWM6CiAKICAgICBib29sIHJl
cXVlc3RlZFNjcm9sbFBvc2l0aW9uUmVwcmVzZW50c1Byb2dyYW1tYXRpY1Njcm9sbCgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVxdWVzdGVkU2Nyb2xsUG9zaXRpb25SZXByZXNlbnRzUHJvZ3JhbW1hdGlj
U2Nyb2xsOyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgZHVtcFByb3BlcnRpZXMoVGV4dFN0cmVhbSYs
IGludCBpbmRlbnQpIGNvbnN0IE9WRVJSSURFOworCiBwcml2YXRlOgogICAgIFNjcm9sbGluZ1N0
YXRlU2Nyb2xsaW5nTm9kZShTY3JvbGxpbmdTdGF0ZVRyZWUqLCBTY3JvbGxpbmdOb2RlSUQpOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRp
bmF0b3JNYWMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9t
YWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMuaAkocmV2aXNpb24gMTMzMDY4KQorKysgU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLmgJKHdv
cmtpbmcgY29weSkKQEAgLTcyLDYgKzcyLDggQEAgcHVibGljOgogICAgIC8vIFRoaXMgZnVuY3Rp
b24gd2lwZXMgb3V0IHRoZSBjdXJyZW50IHRyZWUuCiAgICAgdmlydHVhbCB2b2lkIGNsZWFyU3Rh
dGVUcmVlKCk7CiAKKyAgICB2aXJ0dWFsIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
KSBjb25zdCBPVkVSUklERTsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgcmVjb21wdXRl
V2hlZWxFdmVudEhhbmRsZXJDb3VudEZvckZyYW1lVmlldyhGcmFtZVZpZXcqKTsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0U2hvdWxkVXBkYXRlU2Nyb2xsTGF5ZXJQb3NpdGlvbk9uTWFpblRocmVhZChN
YWluVGhyZWFkU2Nyb2xsaW5nUmVhc29ucyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL3Nj
cm9sbGluZy9tYWMvU2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvbWFjL1Njcm9sbGluZ0Nvb3JkaW5hdG9yTWFjLm1t
CShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9tYWMv
U2Nyb2xsaW5nQ29vcmRpbmF0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTM5NCw2ICszOTQs
MTEgQEAgdm9pZCBTY3JvbGxpbmdDb29yZGluYXRvck1hYzo6Y29tbWl0VHJlZQogICAgIFNjcm9s
bGluZ1RocmVhZDo6ZGlzcGF0Y2goYmluZCgmU2Nyb2xsaW5nVHJlZTo6Y29tbWl0TmV3VHJlZVN0
YXRlLCBtX3Njcm9sbGluZ1RyZWUuZ2V0KCksIHRyZWVTdGF0ZS5yZWxlYXNlKCkpKTsKIH0KIAor
U3RyaW5nIFNjcm9sbGluZ0Nvb3JkaW5hdG9yTWFjOjpzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQo
KSBjb25zdAoreworICAgIHJldHVybiBtX3Njcm9sbGluZ1N0YXRlVHJlZS0+cm9vdFN0YXRlTm9k
ZSgpLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFRIUkVBREVEX1NDUk9MTElORykKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTI3Myw2ICsx
MjczLDIwIEBAIFN0cmluZyBJbnRlcm5hbHM6OnJlcGFpbnRSZWN0c0FzVGV4dChEb2MKICAgICBy
ZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPnRyYWNrZWRSZXBhaW50UmVjdHNBc1RleHQoKTsKIH0K
IAorU3RyaW5nIEludGVybmFsczo6c2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KERvY3VtZW50KiBk
b2N1bWVudCwgRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0Cit7CisgICAgaWYgKCFkb2N1bWVudCB8
fCAhZG9jdW1lbnQtPmZyYW1lKCkpIHsKKyAgICAgICAgZWMgPSBJTlZBTElEX0FDQ0VTU19FUlI7
CisgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICB9CisKKyAgICBQYWdlKiBwYWdlID0gZG9j
dW1lbnQtPnBhZ2UoKTsKKyAgICBpZiAoIXBhZ2UpCisgICAgICAgIHJldHVybiBTdHJpbmcoKTsK
KworICAgIHJldHVybiBwYWdlLT5zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoKTsKK30KKwogdm9p
ZCBJbnRlcm5hbHM6OmdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMoRG9jdW1lbnQqIGRv
Y3VtZW50LCBFeGNlcHRpb25Db2RlJiBlYykgY29uc3QKIHsKICAgICBpZiAoIWRvY3VtZW50KSB7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHJldmlzaW9uIDEzMzA2OCkKKysr
IFNvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5
Niw2ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIGxheWVyVHJlZUFzVGV4dChEb2N1bWVu
dCosIHVuc2lnbmVkIGZsYWdzLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAgICAgU3RyaW5nIGxh
eWVyVHJlZUFzVGV4dChEb2N1bWVudCosIEV4Y2VwdGlvbkNvZGUmKSBjb25zdDsKICAgICBTdHJp
bmcgcmVwYWludFJlY3RzQXNUZXh0KERvY3VtZW50KiwgRXhjZXB0aW9uQ29kZSYpIGNvbnN0Owor
ICAgIFN0cmluZyBzY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHQoRG9jdW1lbnQqLCBFeGNlcHRpb25D
b2RlJikgY29uc3Q7CiAKICAgICB2b2lkIGdhcmJhZ2VDb2xsZWN0RG9jdW1lbnRSZXNvdXJjZXMo
RG9jdW1lbnQqLCBFeGNlcHRpb25Db2RlJikgY29uc3Q7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwJKHJldmlzaW9uIDEzMzA2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvSW50ZXJuYWxzLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw4IEBACiAg
ICAgY29uc3QgdW5zaWduZWQgc2hvcnQgTEFZRVJfVFJFRV9JTkNMVURFU19USUxFX0NBQ0hFUyA9
IDI7CiAgICAgRE9NU3RyaW5nIGxheWVyVHJlZUFzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCwg
aW4gW09wdGlvbmFsXSB1bnNpZ25lZCBzaG9ydCBmbGFncykgcmFpc2VzIChET01FeGNlcHRpb24p
OwogCisgICAgRE9NU3RyaW5nIHNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChpbiBEb2N1bWVudCBk
b2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOworCiAgICAgRE9NU3RyaW5nIHJlcGFpbnRS
ZWN0c0FzVGV4dChpbiBEb2N1bWVudCBkb2N1bWVudCkgcmFpc2VzIChET01FeGNlcHRpb24pOwog
CiAgICAgdm9pZCBnYXJiYWdlQ29sbGVjdERvY3VtZW50UmVzb3VyY2VzKGluIERvY3VtZW50IGRv
Y3VtZW50KSByYWlzZXMgKERPTUV4Y2VwdGlvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAx
MzMxOTYpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxMyBAQAorMjAxMi0xMS0wMSAgQmV0aCBEYWtpbiAgPGJkYWtpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDkxNwor
ICAgICAgICBUaGVyZSBzaG91bGQgYmUgYSB3YXkgdG8gZHVtcCB0aGUgc2Nyb2xsaW5nIHRyZWUg
ZnJvbSB0aGUgbGF5b3V0IHRlc3RzCisgICAgICAgIAorICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHdpbi9XZWJLaXQyLmRlZjoKKyAgICAgICAgKiB3aW4v
V2ViS2l0MkNGTGl0ZS5kZWY6CisKIDIwMTItMTEtMDEgIEh1YW5nIERvbmdzdW5nICA8bHV4dGVs
bGFAY29tcGFueTEwMC5uZXQ+CiAKICAgICAgICAgQ29vcmRpbmF0ZWQgR3JhcGhpY3M6IENsZWFu
IHVwIGhlYWRlcnMgb2YgQ29vcmRpbmF0ZWQgR3JhcGhpY3MuCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi93aW4vV2ViS2l0Mi5kZWYKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvd2luL1dlYktp
dDIuZGVmCShyZXZpc2lvbiAxMzMwNjgpCisrKyBTb3VyY2UvV2ViS2l0Mi93aW4vV2ViS2l0Mi5k
ZWYJKHdvcmtpbmcgY29weSkKQEAgLTIxNiw2ICsyMTYsNyBAQCBFWFBPUlRTCiAgICAgICAgID9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0QEpTRE9NR2xvYmFsT2JqZWN0QFdlYkNvcmVAQFFCRVBBVlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHRAMkBYWgogICAgICAgICA/c2NyaXB0TmFtZVRvQ29kZUBXZWJD
b3JlQEBZQT9BVzRVU2NyaXB0Q29kZUBAQUJWU3RyaW5nQFdURkBAQFoKICAgICAgICAgP3Njcm9s
bEVsZW1lbnRUb1JlY3RARnJhbWVWaWV3QFdlYkNvcmVAQFFBRVhQQVZFbGVtZW50QDJAQUJWSW50
UmVjdEAyQEBaCisgICAgICAgID9zY3JvbGxpbmdTdGF0ZVRyZWVBc1RleHRAUGFnZUBXZWJDb3Jl
QEBRQUU/QVZTdHJpbmdAV1RGQEBYWgogICAgICAgICA/c2V0Q2FuU3RhcnRNZWRpYUBQYWdlQFdl
YkNvcmVAQFFBRVhfTkBaCiAgICAgICAgID9zZXRDdXJzaXZlRm9udEZhbWlseUBTZXR0aW5nc0BX
ZWJDb3JlQEBRQUVYQUJWQXRvbWljU3RyaW5nQFdURkBAVzRVU2NyaXB0Q29kZUBAQFoKICAgICAg
ICAgP3NldERldmljZVNjYWxlRmFjdG9yQFBhZ2VAV2ViQ29yZUBAUUFFWE1AWgpJbmRleDogU291
cmNlL1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL3dpbi9XZWJLaXQyQ0ZMaXRlLmRlZgkocmV2aXNpb24gMTMzMDY4KQorKysgU291cmNl
L1dlYktpdDIvd2luL1dlYktpdDJDRkxpdGUuZGVmCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiAr
MjA5LDcgQEAgRVhQT1JUUwogICAgICAgICA/c2NyaXB0RXhlY3V0aW9uQ29udGV4dEBKU0RPTUds
b2JhbE9iamVjdEBXZWJDb3JlQEBRQkVQQVZTY3JpcHRFeGVjdXRpb25Db250ZXh0QDJAWFoKICAg
ICAgICAgP3NjcmlwdE5hbWVUb0NvZGVAV2ViQ29yZUBAWUE/QVc0VVNjcmlwdENvZGVAQEFCVlN0
cmluZ0BXVEZAQEBaCiAgICAgICAgID9zY3JvbGxFbGVtZW50VG9SZWN0QEZyYW1lVmlld0BXZWJD
b3JlQEBRQUVYUEFWRWxlbWVudEAyQEFCVkludFJlY3RAMkBAWgorICAgICAgICA/c2Nyb2xsaW5n
U3RhdGVUcmVlQXNUZXh0QFBhZ2VAV2ViQ29yZUBAUUFFP0FWU3RyaW5nQFdURkBAWFoKICAgICAg
ICAgP3NldENhblN0YXJ0TWVkaWFAUGFnZUBXZWJDb3JlQEBRQUVYX05AWgogICAgICAgICA/c2V0
Q3Vyc2l2ZUZvbnRGYW1pbHlAU2V0dGluZ3NAV2ViQ29yZUBAUUFFWEFCVkF0b21pY1N0cmluZ0BX
VEZAQFc0VVNjcmlwdENvZGVAQEBaCiAgICAgICAgID9zZXREZXZpY2VTY2FsZUZhY3RvckBQYWdl
QFdlYkNvcmVAQFFBRVhNQFoKSW5kZXg6IFNvdXJjZS9hdXRvdG9vbHMvc3ltYm9scy5maWx0ZXIK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkocmV2aXNpb24g
MTMzMDY4KQorKysgU291cmNlL2F1dG90b29scy9zeW1ib2xzLmZpbHRlcgkod29ya2luZyBjb3B5
KQpAQCAtMzAsNiArMzAsNyBAQCBfWk4yNER1bXBSZW5kZXJUcmVlU3VwcG9ydEd0ayo7CiBfWk43
V2ViQ29yZTRQYWdlMTNzZXRQYWdpbmF0aW9uRVJLTlNfMTBQYWdpbmF0aW9uRTsKIF9aTjdXZWJD
b3JlNFBhZ2UxOHNldFBhZ2VTY2FsZUZhY3RvckVmUktOU184SW50UG9pbnRFOwogX1pON1dlYkNv
cmU0UGFnZTIwc2V0RGV2aWNlU2NhbGVGYWN0b3JFZjsKK19aTjdXZWJDb3JlNFBhZ2UyNHNjcm9s
bGluZ1N0YXRlVHJlZUFzVGV4dEV2OwogX1pON1dlYkNvcmU0UGFnZTE2c2V0Q2FuU3RhcnRNZWRp
YUViOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0YXRlRVBOU18xN0pTRE9NR2xvYmFs
T2JqZWN0RVBOU18xMENsaWVudFJlY3RFOwogX1pON1dlYkNvcmU0dG9KU0VQTjNKU0M5RXhlY1N0
YXRlRVBOU18xN0pTRE9NR2xvYmFsT2JqZWN0RVBOU18xMFNoYWRvd1Jvb3RFOwpJbmRleDogTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwko
cmV2aXNpb24gMTMzMTk2KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTItMTEtMDEgIEJldGggRGFraW4gIDxiZGFraW5AYXBwbGUu
Y29tPgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDA5MTcKKyAgICAgICAgVGhlcmUgc2hvdWxkIGJlIGEgd2F5IHRvIGR1bXAgdGhlIHNjcm9sbGlu
ZyB0cmVlIGZyb20gdGhlIGxheW91dCB0ZXN0cworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xs
aW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxh
dGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10
cmVlLXNsb3ctc2Nyb2xsaW5nLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGxhdGZv
cm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmcuaHRtbDog
QWRkZWQuCisKIDIwMTItMTEtMDEgIFJvZ2VyIEZvbmcgIDxyb2dlcl9mb25nQGFwcGxlLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkLiBTa2lwIGZhc3Qvd29ya2Vycy93b3JrZXItZG9tdXJsLmh0
bWwgb24gV2luZG93cy4gRU5BQkxFX0JMT0Igbm90IGVuYWJsZWQuCkluZGV4OiBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxpbmctdHJlZS1hZnRlci1zY3JvbGwt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxl
ZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1hZnRlci1zY3JvbGwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDYgQEAKKyhTY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUKKyAgKHZpZXdwb3J0IHJlY3QgMCAw
IDc4NSA2MDApCisgIChjb250ZW50cyBzaXplIDc4NSA1MDIxKQorICAocmVxdWVzdGVkIHNjcm9s
bCBwb3NpdGlvbiAwIDMwMDApCispCisKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90
aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLWFmdGVyLXNjcm9sbC5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVl
LWFmdGVyLXNjcm9sbC5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtYWZ0ZXItc2Nyb2xsLmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMjcgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8aHRtbD4KKzxoZWFk
PgorICAgIDxzdHlsZT4KKyAgICAgICAgYm9keSB7CisgICAgICAgICAgICBoZWlnaHQ6IDUwMDBw
eDsKKyAgICAgICAgfQorICAgIDwvc3R5bGU+CisgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKHdp
bmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisK
KyAgICAgICAgZnVuY3Rpb24gZG9UZXN0KCkKKyAgICAgICAgeworICAgICAgICAgICAgd2luZG93
LnNjcm9sbFRvKDAsIDMwMDApOworICAgICAgICAgICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsK
KyAgICAgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbGF5ZXJzJykuaW5uZXJU
ZXh0ID0gaW50ZXJuYWxzLnNjcm9sbGluZ1N0YXRlVHJlZUFzVGV4dChkb2N1bWVudCk7CisgICAg
ICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2xv
YWQnLCBkb1Rlc3QsIGZhbHNlKTsKKyAgICA8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHBy
ZSBpZD0ibGF5ZXJzIj5TY3JvbGxpbmcgdHJlZSBnb2VzIGhlcmU8L3A+Cis8L2JvZHk+Cis8L2h0
bWw+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1zbG93LXNjcm9sbGluZy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3Jv
bGxpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0v
bWFjL3RpbGVkLWRyYXdpbmcvc2Nyb2xsaW5nLXRyZWUtc2xvdy1zY3JvbGxpbmctZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDYgQEAKKyhTY3JvbGxpbmdTdGF0ZVNjcm9sbGlu
Z05vZGUKKyAgKHZpZXdwb3J0IHJlY3QgMCAwIDgwMCA2MDApCisgIChjb250ZW50cyBzaXplIDgw
MCA2MDApCisgIChTY3JvbGxpbmcgb24gbWFpbiB0aHJlYWQgYmVjYXVzZTogSGFzIHZpZXdwb3J0
IGNvbnN0cmFpbmVkIG9iamVjdHMgd2l0aG91dCBzdXBwb3J0aW5nIGZpeGVkIGxheWVycywgKQor
KQorCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2luZy9zY3JvbGxp
bmctdHJlZS1zbG93LXNjcm9sbGluZy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy90aWxlZC1kcmF3aW5nL3Njcm9sbGluZy10cmVlLXNsb3ctc2Nyb2xsaW5nLmh0
bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvdGlsZWQtZHJhd2lu
Zy9zY3JvbGxpbmctdHJlZS1zbG93LXNjcm9sbGluZy5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDMwIEBACis8IURPQ1RZUEUgaHRtbD4KKworPGh0bWw+Cis8aGVhZD4KKyAgICA8c3R5bGU+
CisgICAgICAgIC5ib3ggeworICAgICAgICAgICAgaGVpZ2h0OiAxMDBweDsKKyAgICAgICAgICAg
IHdpZHRoOiAxMDBweDsKKyAgICAgICAgICAgIHBvc2l0aW9uOiBmaXhlZDsgLyogQXQgdGhpcyB0
aW1lLCBwb3NpdGlvbjpmaXhlZCBmb3JjZXMgc2xvdyBtb2RlLiAqLworICAgICAgICB9CisgICAg
PC9zdHlsZT4KKyAgICA8c2NyaXB0PgorICAgICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisg
ICAgICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgICBmdW5jdGlvbiBk
b1Rlc3QoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAod2luZG93LmludGVybmFscykgewor
ICAgICAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsYXllcnMnKS5pbm5lclRl
eHQgPSBpbnRlcm5hbHMuc2Nyb2xsaW5nU3RhdGVUcmVlQXNUZXh0KGRvY3VtZW50KTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGRvVGVzdCwgZmFsc2UpOworICAgIDwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8ZGl2
IGNsYXNzPSJib3giPgorPC9kaXY+Cis8cHJlIGlkPSJsYXllcnMiPlNjcm9sbGluZyB0cmVlIGdv
ZXMgaGVyZTwvcD4KKzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="186002"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
      

    </bug>

</bugzilla>