<?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>66641</bug_id>
          
          <creation_ts>2011-08-21 23:12:24 -0700</creation_ts>
          <short_desc>[CSSRegions] Fix Element::getBoundingClientRect and Element::getClientRects for content flow</short_desc>
          <delta_ts>2013-06-06 07:47:06 -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>Layout and Rendering</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>
          <dependson>117295</dependson>
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Chiculita">achicu</reporter>
          <assigned_to name="Alexandru Chiculita">achicu</assigned_to>
          <cc>mihnea</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>454465</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-21 23:12:24 -0700</bug_when>
    <thetext>Add tests and fix the following case: Element::getBoundingClientRect and Element::getClientRects return the correct values for elements inside a flow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456111</commentid>
    <comment_count>1</comment_count>
      <attachid>105000</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-24 08:26:13 -0700</bug_when>
    <thetext>Created attachment 105000
Patch V1

Inital patch was done by Mihnea, I&apos;ve just updated to use the RenderFlowThread::renderRegionForLine that was added in a previous patch and added some more tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456133</commentid>
    <comment_count>2</comment_count>
      <attachid>105000</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-24 09:27:42 -0700</bug_when>
    <thetext>Comment on attachment 105000
Patch V1

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

&gt; Source/WebCore/rendering/RenderFlowThread.cpp:536
&gt; +    // Transform state contains the coordinates of the original box in RenderFlowThread coordinates.
&gt; +    transformState.move(-flippedRegionRect.x() + renderRegion-&gt;borderAndPaddingLogicalLeft(),
&gt; +                        -flippedRegionRect.y() + renderRegion-&gt;borderAndPaddingLogicalTop());

This does not look correct to me. It looks like you&apos;re adding logical values to physical values here.

There are two tricky bits to worry about with writing modes. The first is when the writing mode is vertical. In that case the logicalXXX methods return horizontal values rather than vertical and vice versa. In other words x becomes y and y becomes x. The second thing you have to deal with is the &quot;flipped blocks&quot; writing modes. These are horizontal-bt and vertical-rl. For flipped writing modes, the x-axis for local block coordinates increases from right to left (so 0 is on the right), and for horizontal-bt the y-axis increases from bottom to top. This is inverted compared to the most common writing mode, horizontal-tb (most languages). flipForWritingMode is the method that deals with flipped blocks. It doesn&apos;t have anything to do with horizontal vs. vertical.

Therefore in the code above you grabbed the local region rect, which will be flipped if the RenderFlowThread is vertical-rl, so when you did flip for writing mode you put it in physical coordinates. Moving the transform state by logical values based off the region&apos;s writing mode doesn&apos;t make much sense to me, since you&apos;re adding logical values to physical values. It&apos;s not quite clear to me what this code is trying to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456141</commentid>
    <comment_count>3</comment_count>
      <attachid>105000</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-24 09:41:39 -0700</bug_when>
    <thetext>Comment on attachment 105000
Patch V1

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

&gt;&gt; Source/WebCore/rendering/RenderFlowThread.cpp:536
&gt;&gt; +                        -flippedRegionRect.y() + renderRegion-&gt;borderAndPaddingLogicalTop());
&gt; 
&gt; This does not look correct to me. It looks like you&apos;re adding logical values to physical values here.
&gt; 
&gt; There are two tricky bits to worry about with writing modes. The first is when the writing mode is vertical. In that case the logicalXXX methods return horizontal values rather than vertical and vice versa. In other words x becomes y and y becomes x. The second thing you have to deal with is the &quot;flipped blocks&quot; writing modes. These are horizontal-bt and vertical-rl. For flipped writing modes, the x-axis for local block coordinates increases from right to left (so 0 is on the right), and for horizontal-bt the y-axis increases from bottom to top. This is inverted compared to the most common writing mode, horizontal-tb (most languages). flipForWritingMode is the method that deals with flipped blocks. It doesn&apos;t have anything to do with horizontal vs. vertical.
&gt; 
&gt; Therefore in the code above you grabbed the local region rect, which will be flipped if the RenderFlowThread is vertical-rl, so when you did flip for writing mode you put it in physical coordinates. Moving the transform state by logical values based off the region&apos;s writing mode doesn&apos;t make much sense to me, since you&apos;re adding logical values to physical values. It&apos;s not quite clear to me what this code is trying to do.

Thanks for the explanation! I think this should work in a similar way as the repaint method, so I will refactor it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456305</commentid>
    <comment_count>4</comment_count>
      <attachid>105041</attachid>
    <who name="Alexandru Chiculita">achicu</who>
    <bug_when>2011-08-24 12:25:57 -0700</bug_when>
    <thetext>Created attachment 105041
Patch V2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456349</commentid>
    <comment_count>5</comment_count>
      <attachid>105041</attachid>
    <who name="Dave Hyatt">hyatt</who>
    <bug_when>2011-08-24 13:06:58 -0700</bug_when>
    <thetext>Comment on attachment 105041
Patch V2

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456365</commentid>
    <comment_count>6</comment_count>
      <attachid>105041</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 13:21:11 -0700</bug_when>
    <thetext>Comment on attachment 105041
Patch V2

Clearing flags on attachment: 105041

Committed r93728: &lt;http://trac.webkit.org/changeset/93728&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>456366</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-24 13:21:16 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105000</attachid>
            <date>2011-08-24 08:26:13 -0700</date>
            <delta_ts>2011-08-24 12:25:57 -0700</delta_ts>
            <desc>Patch V1</desc>
            <filename>bug66641.patch</filename>
            <type>text/plain</type>
            <size>20354</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkMzY4ZTIyLi5lMmIzYzU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgt
MjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBGaXggRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0IGFuZCBFbGVtZW50
OjpnZXRDbGllbnRSZWN0cyBmb3IgY29udGVudCBmbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY0MQorCisgICAgICAgIE9yaWdpbmFsIGF1dGhv
ciBvZiB0aGUgcGF0Y2ggaXMgTWlobmVhIE92aWRlbmllIDxtaWhuZWFAYWRvYmUuY29tPi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcmVn
aW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGll
bnQtcmVjdC1ob3Jpem9udGFsLWJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6b250YWwt
YnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJv
dW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRp
Y2FsLXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dl
ZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVj
dC12ZXJ0aWNhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2Zsb3dlZC1jb250ZW50LXRyYW5zZm9ybS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10
cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanM6IEFkZGVkLgorICAgICAgICAocmVjdFRvQXJy
YXkpOgorICAgICAgICAoYXJlRXF1YWxOdW1iZXJzKToKKyAgICAgICAgKGFyZUVxdWFsUmVjdHMp
OgorICAgICAgICAoYXNzZXJ0RXF1YWxSZWN0cyk6CisgICAgICAgICh0ZXN0Qm91bmRpbmdSZWN0
cyk6CisKIDIwMTEtMDgtMjMgIEJlbiBXZWxscyAgPGJlbndlbGxzQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBFeHRyYSBiYXNlbGluZSBmb3IgYnVnIDY2MDM2IChjYW52YXMgZmlsbCBjb21wb3Np
dGUgbW9kZXMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4
dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWYyMmU5Ci0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5n
LWNsaWVudC1yZWN0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNTCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50
LXJlY3QtaG9yaXpvbnRhbC1idC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtaG9yaXpvbnRhbC1idC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmMjJlOQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1i
b3VuZGluZy1jbGllbnQtcmVjdC1ob3Jpem9udGFsLWJ0LWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
IEBACitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtaG9yaXpvbnRhbC1idC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6
b250YWwtYnQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmJmMDU3
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250
ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6b250YWwtYnQuaHRtbApAQCAtMCwwICsxLDUz
IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvcmVnaW9uLXN0eWxlLmNzcyI+PC9saW5rPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0
PgorCis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiBob3Jpem9udGFs
LWJ0OyB9CisKKyAgICBib2R5IHsgbWFyZ2luOiAxMHB4OyB9CisKKyAgICAjcmVnaW9uMSB7Cisg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAg
IHRvcDogMTBweDsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDogMTAwcHg7
CisgICAgfQorCisgICAgI3JlZ2lvbjIgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7Cisg
ICAgICAgIHRvcDogMTBweDsKKyAgICAgICAgbGVmdDogMjAwcHg7CisgICAgICAgIHdpZHRoOiA1
MHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorICAgIAorICAgIC5maW5pc2hlZCAj
cmVnaW9uMSwgLmZpbmlzaGVkICNyZWdpb24yIHsKKyAgICAgICAgZGlzcGxheTogbm9uZTsKKyAg
ICB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJmbG93IiBjbGFzcz0iZmxvd0FydGljbGUiPgorICAg
IDxkaXYgaWQ9ImdyZWVuIiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2PgorICAgIDxkaXYgaWQ9ImJs
dWUiIGNsYXNzPSJibHVlQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJvcmFuZ2UiIGNsYXNzPSJv
cmFuZ2VCb3giPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdp
b25BcnRpY2xlIj48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb25BcnRpY2xl
Ij48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVy
KQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKKyAgICB2YXIg
ZXhwZWN0ZWRCb3VuZGluZ1JlY3RzID0geworICAgICAgICBncmVlbjogWzYwLCAxMDAsIDExMCwg
MTUwLCA1MCwgNTBdLAorICAgICAgICBibHVlOiBbMTAsIDEwMCwgNjAsIDE1MCwgNTAsIDUwXSwK
KyAgICAgICAgb3JhbmdlOiBbMTAsIDIwMCwgNjAsIDI1MCwgNTAsIDUwXQorICAgIH07CisgICAg
CisgICAgaWYgKHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRpbmdSZWN0cykpCisgICAg
ICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImZpbmlzaGVkIjsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5n
LWNsaWVudC1yZWN0LXZlcnRpY2FsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVn
aW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNhbC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmMjJlOQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3Vu
ZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNhbC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFT
UwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJv
dW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNh
bC1ybC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Vm
MjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQt
Y29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNhbC1ybC1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3Qt
dmVydGljYWwtcmwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTEy
NTZkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1j
b250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLmh0bWwKQEAgLTAsMCArMSw1
MSBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL3JlZ2lvbi1zdHlsZS5jc3MiPjwvbGluaz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKworPHN0eWxlPgorICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwt
cmw7IH0KKworICAgIGJvZHkgeyBtYXJnaW46IDEwcHg7IH0KKworICAgICNyZWdpb24xIHsKKyAg
ICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgICAg
d2lkdGg6IDEwMHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorCisgICAgI3JlZ2lv
bjIgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDIwMHB4Owor
ICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKyAgICAK
KyAgICAuZmluaXNoZWQgI3JlZ2lvbjEsIC5maW5pc2hlZCAjcmVnaW9uMiB7CisgICAgICAgIGRp
c3BsYXk6IG5vbmU7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iZmxvdyIgY2xhc3M9ImZs
b3dBcnRpY2xlIj4KKyAgICA8ZGl2IGlkPSJncmVlbiIgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJibHVlIiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
b3JhbmdlIiBjbGFzcz0ib3JhbmdlQm94Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJyZWdp
b24xIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24yIiBjbGFz
cz0icmVnaW9uQXJ0aWNsZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgdmFyIGV4cGVjdGVkQm91bmRpbmdSZWN0cyA9IHsKKyAgICAgICAgZ3JlZW46
IFsxMCwgMTUwLCA2MCwgMjAwLCA1MCwgNTBdLAorICAgICAgICBibHVlOiBbMTAsIDEwMCwgNjAs
IDE1MCwgNTAsIDUwXSwKKyAgICAgICAgb3JhbmdlOiBbMTAsIDIwMCwgNjAsIDI1MCwgNTAsIDUw
XQorICAgIH07CisgICAgCisgICAgaWYgKHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRp
bmdSZWN0cykpCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImZpbmlzaGVkIjsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1j
b250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLmh0bWwgYi9MYXlvdXRUZXN0cy9m
YXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTFlOWZhCi0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5k
aW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLmh0bWwKQEAgLTAsMCArMSw1MSBAQAorPCFET0NUWVBF
IGh0bWw+CisKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZ2lvbi1z
dHlsZS5jc3MiPjwvbGluaz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0
PSJ1dGYtOCIgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgor
ICAgIGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogdmVydGljYWwtbHI7IH0KKworICAgIGJv
ZHkgeyBtYXJnaW46IDEwcHg7IH0KKworICAgICNyZWdpb24xIHsKKyAgICAgICAgcG9zaXRpb246
IGFic29sdXRlOworICAgICAgICBsZWZ0OiAxMDBweDsKKyAgICAgICAgd2lkdGg6IDEwMHB4Owor
ICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorCisgICAgI3JlZ2lvbjIgeworICAgICAgICBw
b3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICB3aWR0aDog
NTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgIH0KKyAgICAKKyAgICAuZmluaXNoZWQg
I3JlZ2lvbjEsIC5maW5pc2hlZCAjcmVnaW9uMiB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7Cisg
ICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iZmxvdyIgY2xhc3M9ImZsb3dBcnRpY2xlIj4KKyAg
ICA8ZGl2IGlkPSJncmVlbiIgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
bHVlIiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0ib3JhbmdlIiBjbGFzcz0i
b3JhbmdlQm94Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJyZWdpb24xIiBjbGFzcz0icmVn
aW9uQXJ0aWNsZSI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uQXJ0aWNs
ZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxl
cikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisgICAgdmFy
IGV4cGVjdGVkQm91bmRpbmdSZWN0cyA9IHsKKyAgICAgICAgZ3JlZW46IFsxMCwgMTAwLCA2MCwg
MTUwLCA1MCwgNTBdLAorICAgICAgICBibHVlOiBbMTAsIDE1MCwgNjAsIDIwMCwgNTAsIDUwXSwK
KyAgICAgICAgb3JhbmdlOiBbMTAsIDIwMCwgNjAsIDI1MCwgNTAsIDUwXQorICAgIH07CisgICAg
CisgICAgaWYgKHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRpbmdSZWN0cykpCisgICAg
ICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImZpbmlzaGVkIjsKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5n
LWNsaWVudC1yZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRl
bnQtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi5hMGZjZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWwKQEAgLTAsMCArMSw2
MCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVz
b3VyY2VzL3JlZ2lvbi1zdHlsZS5jc3MiPjwvbGluaz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZh
c2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3Njcmlw
dD4KKworPHN0eWxlPgorICAgIGJvZHkgeyBtYXJnaW46IDEwcHg7IH0KKworICAgIC5ib3ggewor
ICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4OworICAgICAgICBmbG9h
dDogbGVmdDsKKyAgICB9CisKKyAgICAjcmVnaW9uMSB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgcGFkZGluZzogMTBweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMiB7Cisg
ICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMTAwcHg7CisgICAgICAg
IGJvcmRlcjogMTBweCBzb2xpZCBibGFjazsKKyAgICB9CisKKyAgICAjcmVnaW9uMyB7CisgICAg
ICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMjAwcHg7CisgICAgICAgIHBh
ZGRpbmc6IDEwcHg7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCBibGFjazsKKyAgICB9Cisg
ICAgCisgICAgLmZpbmlzaGVkICNyZWdpb24xLCAuZmluaXNoZWQgI3JlZ2lvbjIsIC5maW5pc2hl
ZCAjcmVnaW9uMyB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAgfQorPC9zdHlsZT4KKwor
PGRpdiBjbGFzcz0iZmxvd0FydGljbGUiPgorICAgIDxkaXYgaWQ9ImdyZWVuIiBjbGFzcz0iZ3Jl
ZW5Cb3giPjwvZGl2PgorICAgIDxkaXYgaWQ9ImJsdWUiIGNsYXNzPSJibHVlQm94Ij48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJvcmFuZ2UiIGNsYXNzPSJvcmFuZ2VCb3giPjwvZGl2PgorPC9kaXY+CisK
KzxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdpb25BcnRpY2xlIGJveCI+PC9kaXY+Cis8ZGl2
IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3giPjwvZGl2PgorPGRpdiBpZD0i
cmVnaW9uMyIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm94Ij48L2Rpdj4KKworPHNjcmlwdD4KKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29u
dHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgdmFyIGV4cGVjdGVkQm91bmRpbmdSZWN0
cyA9IHsKKyAgICAgICAgZ3JlZW46IFsyMCwgMjAsIDcwLCA3MCwgNTAsIDUwXSwKKyAgICAgICAg
Ymx1ZTogWzIwLCAxMTAsIDcwLCAxNjAsIDUwLCA1MF0sCisgICAgICAgIG9yYW5nZTogWzMwLCAy
MjAsIDgwLCAyNzAsIDUwLCA1MF0KKyAgICB9OworICAgIAorICAgIGlmICh0ZXN0Qm91bmRpbmdS
ZWN0cyhleHBlY3RlZEJvdW5kaW5nUmVjdHMpKQorICAgICAgICBkb2N1bWVudC5ib2R5LmNsYXNz
TmFtZSA9ICJmaW5pc2hlZCI7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3Qt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LXRy
YW5zZm9ybS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmMjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50
LXJlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0tYm91bmRpbmctY2xp
ZW50LXJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10
cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5hOTE4MmYzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LXRyYW5zZm9ybS1ib3VuZGluZy1jbGllbnQtcmVjdC5o
dG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8bGluayByZWw9InN0eWxl
c2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWdpb24tc3R5bGUuY3NzIj48L2xpbms+Cis8c2NyaXB0
IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIHNyYz0icmVzb3VyY2VzL2hl
bHBlci5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgICBib2R5IHsgbWFyZ2luOiAxMHB4OyB9
CisKKyAgICAuYm94IHsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAgICAgIGhlaWdodDogNTBw
eDsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgfQorCisgICAgI3JlZ2lvbjEgeyAtd2Via2l0
LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyB9CisgICAgI3JlZ2lvbjIgeyAtd2Vi
a2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgsIDIwcHgpIHJvdGF0ZSg0NWRlZyk7IH0KKyAg
ICAjcmVnaW9uMyB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNzBweCwgMzBweCkgc2Nh
bGUoMiwyKTsgfQorICAgIAorICAgIC5maW5pc2hlZCAjcmVnaW9uMSwgLmZpbmlzaGVkICNyZWdp
b24yLCAuZmluaXNoZWQgI3JlZ2lvbjMgeworICAgICAgICBkaXNwbGF5OiBub25lOworICAgIH0K
Kzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dBcnRpY2xlIj4KKyAgICA8ZGl2IGlkPSJncmVl
biIgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJibHVlIiBjbGFzcz0iYmx1
ZUJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0ib3JhbmdlIiBjbGFzcz0ib3JhbmdlQm94Ij48L2Rp
dj4KKzwvZGl2PgorPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm94Ij48
L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb25BcnRpY2xlIGJveCI+PC9kaXY+
Cis8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3giPjwvZGl2PgorCis8
c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpCisgICAgICAgIGxh
eW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgCisgICAgdmFyIGV4cGVjdGVkQm91bmRpbmdSZWN0cyA9IHsKKyAgICAgICAg
Z3JlZW46IFsyMCwgMjAsIDcwLCA3MCwgNTAsIDUwXSwKKyAgICAgICAgYmx1ZTogWzIwLCA4MCwg
OTAsIDE1MCwgNzAsIDcwXSwKKyAgICAgICAgb3JhbmdlOiBbMTUsIDE1NSwgMTE1LCAyNTUsIDEw
MCwgMTAwXQorICAgIH07CisgICAgCisgICAgaWYgKHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVk
Qm91bmRpbmdSZWN0cywgMSkpCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImZp
bmlzaGVkIjsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3Jlc291cmNlcy9oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvcmVzb3VyY2Vz
L2hlbHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDRlMGYwCi0t
LSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxw
ZXIuanMKQEAgLTAsMCArMSw0NSBAQAorZnVuY3Rpb24gcmVjdFRvQXJyYXkocmVjdCkgeworICAg
IHJldHVybiBbcmVjdC50b3AsIHJlY3QubGVmdCwgcmVjdC5ib3R0b20sIHJlY3QucmlnaHQsIHJl
Y3Qud2lkdGgsIHJlY3QuaGVpZ2h0XTsKK30KKworZnVuY3Rpb24gYXJlRXF1YWxOdW1iZXJzKGFj
dHVhbCwgZXhwZWN0ZWQsIHRvbGVyYW5jZSkgeworICAgIHZhciBkaWZmID0gTWF0aC5hYnMoYWN0
dWFsIC0gZXhwZWN0ZWQpOworICAgIHJldHVybiBkaWZmIDw9IHRvbGVyYW5jZTsKK30KKworZnVu
Y3Rpb24gYXJlRXF1YWxSZWN0cyhyMSwgcjIsIHRvbGVyYW5jZSkgeworICAgIGlmIChyMS5sZW5n
dGggIT0gcjIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCByMS5sZW5ndGg7ICsraSkKKyAgICAgICAgaWYgKCFhcmVFcXVhbE51bWJl
cnMocjFbaV0sIHIyW2ldLCB0b2xlcmFuY2UpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwor
ICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBhc3NlcnRFcXVhbFJlY3RzKHJl
c3VsdHMsIG5hbWUsIGFjdHVhbFJlY3QsIGV4cGVjdGVkUmVjdCwgdG9sZXJhbmNlKSB7CisgICAg
aWYgKGFyZUVxdWFsUmVjdHMoYWN0dWFsUmVjdCwgZXhwZWN0ZWRSZWN0LCB0b2xlcmFuY2UpKQor
ICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHRzLnB1c2goIkZBSUwoIiArIG5hbWUgKyAiIGJv
dW5kaW5nIHJlY3Qgd2FzOiBbIiArIGFjdHVhbFJlY3Quam9pbigiLCAiKSArICJdLCBleHBlY3Rl
ZDogWyIgKyBleHBlY3RlZFJlY3Quam9pbigiLCAiKSArICJdIik7Cit9CisKK2Z1bmN0aW9uIHRl
c3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRpbmdSZWN0cywgdG9sZXJhbmNlKQoreworICAg
IGlmICh0b2xlcmFuY2UgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdG9sZXJhbmNlID0gMDsKKwor
ICAgIHZhciByZXN1bHRzID0gW107CisKKyAgICBmb3IgKHZhciBuYW1lIGluIGV4cGVjdGVkQm91
bmRpbmdSZWN0cykgeworICAgICAgICBpZiAoIWV4cGVjdGVkQm91bmRpbmdSZWN0cy5oYXNPd25Q
cm9wZXJ0eShuYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB2YXIgcmVjdCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpOwor
ICAgICAgICBhc3NlcnRFcXVhbFJlY3RzKHJlc3VsdHMsIG5hbWUsIHJlY3RUb0FycmF5KHJlY3Qp
LCBleHBlY3RlZEJvdW5kaW5nUmVjdHNbbmFtZV0sIHRvbGVyYW5jZSk7CisgICAgfQorCisgICAg
ZG9jdW1lbnQud3JpdGUoIjxwPiIgKyAocmVzdWx0cy5sZW5ndGggPyByZXN1bHRzLmpvaW4oIjxi
ciAvPiIpIDogIlBBU1MiKSArICI8L3A+Iik7CisgICAgCisgICAgcmV0dXJuICFyZXN1bHRzLmxl
bmd0aDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDA5YjE1
Mi4uNWQ4NWFmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDExLTA4LTI0ICBBbGV4
YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAgICAgICBbQ1NTUmVnaW9u
c10gRml4IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQgRWxlbWVudDo6Z2V0Q2xp
ZW50UmVjdHMgZm9yIGNvbnRlbnQgZmxvdworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NDEKKworICAgICAgICBPcmlnaW5hbCBhdXRob3Igb2YgdGhl
IHBhdGNoIGlzIE1paG5lYSBPdmlkZW5pZSA8bWlobmVhQGFkb2JlLmNvbT4uCisKKyAgICAgICAg
UmVkaXJlY3RlZCB0aGUgbWFwTG9jYWxUb0NvbnRhaW5lciBtZXRob2QgdG8gdGhlIGFwcHJvcHJp
YXRlIFJlbmRlclJlZ2lvbi4KKworICAgICAgICBOb3RlOiBSZW5kZXJPYmplY3Q6OmFic29sdXRl
UXVhZHMgbWV0aG9kIG5lZWRzIHNvbWUgcmVmYWN0b3IgdG8gc3VwcG9ydCBtdWx0aXBsZSByZWdp
b25zLAorICAgICAgICB3aWxsIGRvIHRoYXQgaW4gYSBzZXBhcmF0ZSBidWcuCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVzdHM6IGZhc3QvcmVnaW9u
cy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1ob3Jpem9udGFsLWJ0Lmh0bWwK
KyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGll
bnQtcmVjdC12ZXJ0aWNhbC1ybC5odG1sCisgICAgICAgICAgICAgICBmYXN0L3JlZ2lvbnMvZmxv
d2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwuaHRtbAorICAgICAgICAg
ICAgICAgZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0
bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0t
Ym91bmRpbmctY2xpZW50LXJlY3QuaHRtbAorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckJv
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExvY2FsVG9Db250YWluZXIp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5oOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyQm94TW9kZWxPYmplY3Q6OmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsVG9w
KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZW5kZXJSZWdpb25Gb3JMaW5lKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6Om1hcEZyb21GbG93VG9SZWdpb24pOgorICAgICAg
ICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmg6CisKIDIwMTEtMDgtMjMgIE1hcmsgSGFo
bmVuYmVyZyAgPG1oYWhuZW5iZXJnQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgY2hlY2tzIHRv
IGVuc3VyZSBhbGxvY2F0aW9uIGRvZXMgbm90IHRha2UgcGxhY2UgZHVyaW5nIGluaXRpYWxpemF0
aW9uIG9mIEdDLW1hbmFnZWQgb2JqZWN0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94
LmNwcAppbmRleCBkMDE0OGQ2Li41MTUzZjc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyQm94LmNwcApAQCAtNDEsNiArNDEsNyBAQAogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRl
ICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2luY2x1ZGUgIlJlbmRl
ckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNpbmNsdWRlICJSZW5k
ZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKQEAgLTEyNTgsNyArMTI1OSwxNSBA
QCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2RlbE9iamVj
dCogcmVwYWludENvbnRhaW5lciwgYm9vbAogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5tb3ZlKC1j
b250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwgcHJlc2Vy
dmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNmb3JtU3Rh
dGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIAorCisg
ICAgaWYgKG8tPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIC8vIFRyYW5zZm9ybSBm
cm9tIHJlbmRlciBmbG93IGNvb3JkaW5hdGVzIGludG8gcmVnaW9uIGNvb3JkaW5hdGVzLgorICAg
ICAgICBSZW5kZXJPYmplY3QqIHJlZ2lvbiA9IHRvUmVuZGVyRmxvd1RocmVhZChvKS0+bWFwRnJv
bUZsb3dUb1JlZ2lvbih0cmFuc2Zvcm1TdGF0ZSk7CisgICAgICAgIGlmIChyZWdpb24pCisgICAg
ICAgICAgICByZWdpb24tPm1hcExvY2FsVG9Db250YWluZXIocmVnaW9uLT5jb250YWluZXJGb3JS
ZXBhaW50KCksIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgd2FzRml4ZWQp
OworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgby0+bWFwTG9jYWxUb0NvbnRhaW5lcihy
ZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3RhdGUsIHdh
c0ZpeGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ckJveE1vZGVsT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9k
ZWxPYmplY3QuaAppbmRleCBhZDg5YWQ3Li4wZjgxNzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuaApAQCAtOTUsNiArOTUsNyBAQCBwdWJs
aWM6CiAgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nTG9naWNhbEhlaWdodCgpIGNvbnN0
IHsgcmV0dXJuIGJvcmRlckJlZm9yZSgpICsgYm9yZGVyQWZ0ZXIoKSArIHBhZGRpbmdCZWZvcmUo
KSArIHBhZGRpbmdBZnRlcigpOyB9CiAgICAgTGF5b3V0VW5pdCBib3JkZXJBbmRQYWRkaW5nTG9n
aWNhbFdpZHRoKCkgY29uc3QgeyByZXR1cm4gYm9yZGVyU3RhcnQoKSArIGJvcmRlckVuZCgpICsg
cGFkZGluZ1N0YXJ0KCkgKyBwYWRkaW5nRW5kKCk7IH0KICAgICBMYXlvdXRVbml0IGJvcmRlckFu
ZFBhZGRpbmdMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpvbnRh
bFdyaXRpbmdNb2RlKCkgPyBib3JkZXJMZWZ0KCkgKyBwYWRkaW5nTGVmdCgpIDogYm9yZGVyVG9w
KCkgKyBwYWRkaW5nVG9wKCk7IH0KKyAgICBMYXlvdXRVbml0IGJvcmRlckFuZFBhZGRpbmdMb2dp
Y2FsVG9wKCkgY29uc3QgeyByZXR1cm4gc3R5bGUoKS0+aXNIb3Jpem9udGFsV3JpdGluZ01vZGUo
KSA/IGJvcmRlclRvcCgpICsgcGFkZGluZ1RvcCgpIDogYm9yZGVyTGVmdCgpICsgcGFkZGluZ0xl
ZnQoKTsgfSAgICAKIAogICAgIExheW91dFVuaXQgYm9yZGVyQW5kUGFkZGluZ1N0YXJ0KCkgY29u
c3QgeyByZXR1cm4gYm9yZGVyU3RhcnQoKSArIHBhZGRpbmdTdGFydCgpOyB9CiAgICAgTGF5b3V0
VW5pdCBib3JkZXJMb2dpY2FsTGVmdCgpIGNvbnN0IHsgcmV0dXJuIHN0eWxlKCktPmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCkgPyBib3JkZXJMZWZ0KCkgOiBib3JkZXJUb3AoKTsgfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCmluZGV4IDFjYjEzMDIu
LmEzZWQzY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVh
ZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1
ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJU
cmFuc2Zvcm1TdGF0ZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQ2Niw5ICs0Njcs
NiBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dUaHJlYWQ6OnJlbmRlclJlZ2lvbkZvckxpbmUo
TGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBleAogewogICAgIEFTU0VSVCghbV9yZWdpb25zSW52
YWxpZGF0ZWQpOwogICAgIAotICAgIC8vIEFsbCB0aGUgcmVnaW9ucyBzaG91bGQgc3RhcnQgYXQg
MC4KLSAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7Ci0gICAgCiAgICAgLy8gSWYgbm8gcmVnaW9u
IG1hdGNoZXMgdGhlIHBvc2l0aW9uIGFuZCBleHRlbmRMYXN0UmVnaW9uIGlzIHRydWUsIGl0IHdp
bGwgcmV0dXJuCiAgICAgLy8gdGhlIGxhc3QgdmFsaWQgcmVnaW9uLiBJdCBpcyBzaW1pbGFyIHRv
IGF1dG8gZXh0ZW5kaW5nIHRoZSBzaXplIG9mIHRoZSBsYXN0IHJlZ2lvbi4gCiAgICAgUmVuZGVy
UmVnaW9uKiBsYXN0VmFsaWRSZWdpb24gPSAwOwpAQCAtNDgwLDYgKzQ3OCw5IEBAIFJlbmRlclJl
Z2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVuZGVyUmVnaW9uRm9yTGluZShMYXlvdXRVbml0IHBv
c2l0aW9uLCBib29sIGV4CiAgICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKIAorICAgICAgICBpZiAocG9zaXRpb24gPD0gMCkKKyAgICAgICAgICAg
IHJldHVybiByZWdpb247CisKICAgICAgICAgTGF5b3V0UmVjdCByZWdpb25SZWN0ID0gcmVnaW9u
LT5yZWdpb25SZWN0KCk7CiAKICAgICAgICAgaWYgKHVzZUhvcml6b250YWxXcml0aW5nTW9kZSkg
ewpAQCAtNTA5LDQgKzUxMCwzMiBAQCBMYXlvdXRVbml0IFJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lv
bkxvZ2ljYWxXaWR0aEZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbikgY29ucwogfQogCiAKK1Jl
bmRlck9iamVjdCogUmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zv
cm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0Cit7CisgICAgaWYgKCFoYXNWYWxpZFJlZ2lv
bnMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBMYXlvdXRSZWN0IGJveFJlY3QgPSB0cmFu
c2Zvcm1TdGF0ZS5tYXBwZWRRdWFkKCkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKKyAgICBmbGlw
Rm9yV3JpdGluZ01vZGUoYm94UmVjdCk7CisKKyAgICAvLyBGSVhNRTogV2UgbmVlZCB0byByZWZh
Y3RvciBSZW5kZXJPYmplY3Q6OmFic29sdXRlUXVhZHMgdG8gYmUgYWJsZSB0byBzcGxpdCB0aGUg
cXVhZHMgYWNyb3NzIHJlZ2lvbnMsCisgICAgLy8gZm9yIG5vdyB3ZSBqdXN0IHRha2UgdGhlIGNl
bnRlciBvZiB0aGUgbWFwcGVkIGVuY2xvc2luZyBib3ggYW5kIG1hcCBpdCB0byBhIHJlZ2lvbi4K
KyAgICAvLyBOb3RlOiBVc2luZyB0aGUgY2VudGVyIGluIG9yZGVyIHRvIGF2b2lkIHJvdW5kaW5n
IGVycm9ycy4KKworICAgIGNvbnN0IGJvb2wgZXh0ZW5kTGFzdFJlZ2lvbiA9IHRydWU7CisgICAg
TGF5b3V0UG9pbnQgY2VudGVyID0gYm94UmVjdC5jZW50ZXIoKTsKKyAgICBSZW5kZXJSZWdpb24q
IHJlbmRlclJlZ2lvbiA9IHJlbmRlclJlZ2lvbkZvckxpbmUoaXNIb3Jpem9udGFsV3JpdGluZ01v
ZGUoKSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgpLCBleHRlbmRMYXN0UmVnaW9uKTsKKyAgICBp
ZiAoIXJlbmRlclJlZ2lvbikKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBMYXlvdXRSZWN0IGZs
aXBwZWRSZWdpb25SZWN0KHJlbmRlclJlZ2lvbi0+cmVnaW9uUmVjdCgpKTsKKyAgICBmbGlwRm9y
V3JpdGluZ01vZGUoZmxpcHBlZFJlZ2lvblJlY3QpOworCisgICAgLy8gVHJhbnNmb3JtIHN0YXRl
IGNvbnRhaW5zIHRoZSBjb29yZGluYXRlcyBvZiB0aGUgb3JpZ2luYWwgYm94IGluIFJlbmRlckZs
b3dUaHJlYWQgY29vcmRpbmF0ZXMuCisgICAgdHJhbnNmb3JtU3RhdGUubW92ZSgtZmxpcHBlZFJl
Z2lvblJlY3QueCgpICsgcmVuZGVyUmVnaW9uLT5ib3JkZXJBbmRQYWRkaW5nTG9naWNhbExlZnQo
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1mbGlwcGVkUmVnaW9uUmVjdC55KCkgKyByZW5k
ZXJSZWdpb24tPmJvcmRlckFuZFBhZGRpbmdMb2dpY2FsVG9wKCkpOworCisgICAgcmV0dXJuIHJl
bmRlclJlZ2lvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggMGI2NDI1Mi4uNDJiZTlkZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0xMDMsNiAr
MTAzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVJlZ2lvbkZpdHRpbmcoKSB7IG1fcmVn
aW9uRml0dGluZ0Rpc2FibGVDb3VudCsrOyB9CiAgICAgdm9pZCBlbmFibGVSZWdpb25GaXR0aW5n
KCkgeyBBU1NFUlQobV9yZWdpb25GaXR0aW5nRGlzYWJsZUNvdW50ID4gMCk7IG1fcmVnaW9uRml0
dGluZ0Rpc2FibGVDb3VudC0tOyB9CiAKKyAgICBSZW5kZXJPYmplY3QqIG1hcEZyb21GbG93VG9S
ZWdpb24oVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIGNv
bnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRmxvd1RocmVhZCI7
IH0KIAo=
</data>
<flag name="review"
          id="101025"
          type_id="1"
          status="-"
          setter="hyatt"
    />
    <flag name="commit-queue"
          id="101026"
          type_id="3"
          status="-"
          setter="hyatt"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>105041</attachid>
            <date>2011-08-24 12:25:57 -0700</date>
            <delta_ts>2011-08-24 13:21:11 -0700</delta_ts>
            <desc>Patch V2</desc>
            <filename>bug66641_2.patch</filename>
            <type>text/plain</type>
            <size>19163</size>
            <attacher name="Alexandru Chiculita">achicu</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2YjhiNTYwLi5mMzFjODZkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTEtMDgt
MjQgIEFsZXhhbmRydSBDaGljdWxpdGEgIDxhY2hpY3VAYWRvYmUuY29tPgorCisgICAgICAgIFtD
U1NSZWdpb25zXSBGaXggRWxlbWVudDo6Z2V0Qm91bmRpbmdDbGllbnRSZWN0IGFuZCBFbGVtZW50
OjpnZXRDbGllbnRSZWN0cyBmb3IgY29udGVudCBmbG93CisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NjY0MQorCisgICAgICAgIE9yaWdpbmFsIGF1dGhv
ciBvZiB0aGUgcGF0Y2ggaXMgTWlobmVhIE92aWRlbmllIDxtaWhuZWFAYWRvYmUuY29tPi4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGZhc3QvcmVn
aW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGll
bnQtcmVjdC1ob3Jpem9udGFsLWJ0LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6b250YWwt
YnQuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJv
dW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRp
Y2FsLXJsLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9yZWdpb25zL2Zsb3dl
ZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVj
dC12ZXJ0aWNhbC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9y
ZWdpb25zL2Zsb3dlZC1jb250ZW50LXRyYW5zZm9ybS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBl
Y3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10
cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFz
dC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanM6IEFkZGVkLgorICAgICAgICAocmVjdFRvQXJy
YXkpOgorICAgICAgICAoYXJlRXF1YWxOdW1iZXJzKToKKyAgICAgICAgKGFyZUVxdWFsUmVjdHMp
OgorICAgICAgICAoYXNzZXJ0RXF1YWxSZWN0cyk6CisgICAgICAgICh0ZXN0Qm91bmRpbmdSZWN0
cyk6CisKIDIwMTEtMDgtMjMgIERhdmlkIExldmluICA8bGV2aW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIE1lc3NhZ2VFdmVudC5wb3J0cyBzaG91bGRuJ3QgZXZlciBiZSBudWxsLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNs
aWVudC1yZWN0LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQt
Y29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmMjJlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBl
Y3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFz
dC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6b250YWwt
YnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50
LWJvdW5kaW5nLWNsaWVudC1yZWN0LWhvcml6b250YWwtYnQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlZjIyZTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJl
Y3QtaG9yaXpvbnRhbC1idC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorUEFTUwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNs
aWVudC1yZWN0LWhvcml6b250YWwtYnQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9m
bG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1ob3Jpem9udGFsLWJ0Lmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhhNDYwZAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGll
bnQtcmVjdC1ob3Jpem9udGFsLWJ0Lmh0bWwKQEAgLTAsMCArMSw1NSBAQAorPCFET0NUWVBFIGh0
bWw+CisKKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZ2lvbi1zdHls
ZS5jc3MiPjwvbGluaz4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1
dGYtOCIgc3JjPSJyZXNvdXJjZXMvaGVscGVyLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAg
IGh0bWwgeyAtd2Via2l0LXdyaXRpbmctbW9kZTogaG9yaXpvbnRhbC1idDsgfQorCisgICAgYm9k
eSB7IG1hcmdpbjogMTBweDsgfQorCisgICAgI3JlZ2lvbjEgeworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICB0b3A6IDEwcHg7CisgICAg
ICAgIHdpZHRoOiA1MHB4OworICAgICAgICBoZWlnaHQ6IDEwMHB4OworICAgIH0KKworICAgICNy
ZWdpb24yIHsKKyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB0b3A6IDEwcHg7
CisgICAgICAgIGxlZnQ6IDIwMHB4OworICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVp
Z2h0OiA1MHB4OworICAgICAgICBwYWRkaW5nOiAxMHB4IDIwcHggMzBweCA0MHB4OworICAgICAg
ICBib3JkZXI6IDFweCBzb2xpZCBibGFjazsKKyAgICB9CisgICAgCisgICAgLmZpbmlzaGVkICNy
ZWdpb24xLCAuZmluaXNoZWQgI3JlZ2lvbjIgeworICAgICAgICBkaXNwbGF5OiBub25lOworICAg
IH0KKzwvc3R5bGU+CisKKzxkaXYgaWQ9ImZsb3ciIGNsYXNzPSJmbG93QXJ0aWNsZSI+CisgICAg
PGRpdiBpZD0iZ3JlZW4iIGNsYXNzPSJncmVlbkJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0iYmx1
ZSIgY2xhc3M9ImJsdWVCb3giPjwvZGl2PgorICAgIDxkaXYgaWQ9Im9yYW5nZSIgY2xhc3M9Im9y
YW5nZUJveCI+PC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lv
bkFydGljbGUiPjwvZGl2PgorPGRpdiBpZD0icmVnaW9uMiIgY2xhc3M9InJlZ2lvbkFydGljbGUi
PjwvZGl2PgorCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKworICAgIHZhciBl
eHBlY3RlZEJvdW5kaW5nUmVjdHMgPSB7CisgICAgICAgIGdyZWVuOiBbNjAsIDEwMCwgMTEwLCAx
NTAsIDUwLCA1MF0sCisgICAgICAgIGJsdWU6IFsxMCwgMTAwLCA2MCwgMTUwLCA1MCwgNTBdLAor
ICAgICAgICBvcmFuZ2U6IFsyMSwgMjQxLCA3MSwgMjkxLCA1MCwgNTBdCisgICAgfTsKKyAgICAK
KyAgICBpZiAodGVzdEJvdW5kaW5nUmVjdHMoZXhwZWN0ZWRCb3VuZGluZ1JlY3RzKSkKKyAgICAg
ICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAiZmluaXNoZWQiOworPC9zY3JpcHQ+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmct
Y2xpZW50LXJlY3QtdmVydGljYWwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdp
b25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWYyMmU5Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5k
aW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitQQVNT
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91
bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwtcmwtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2Fs
LXJsLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWYy
MmU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1j
b250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0LXZlcnRpY2FsLXJsLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxIEBACitQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxv
d2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwtcmwuaHRtbCBiL0xheW91
dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC12
ZXJ0aWNhbC1ybC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MTI1
NmQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwtcmwuaHRtbApAQCAtMCwwICsxLDUx
IEBACis8IURPQ1RZUEUgaHRtbD4KKworPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNv
dXJjZXMvcmVnaW9uLXN0eWxlLmNzcyI+PC9saW5rPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiIGNoYXJzZXQ9InV0Zi04IiBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0
PgorCis8c3R5bGU+CisgICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1y
bDsgfQorCisgICAgYm9keSB7IG1hcmdpbjogMTBweDsgfQorCisgICAgI3JlZ2lvbjEgeworICAg
ICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICB3
aWR0aDogMTAwcHg7CisgICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAjcmVnaW9u
MiB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMjAwcHg7Cisg
ICAgICAgIHdpZHRoOiA1MHB4OworICAgICAgICBoZWlnaHQ6IDUwcHg7CisgICAgfQorICAgIAor
ICAgIC5maW5pc2hlZCAjcmVnaW9uMSwgLmZpbmlzaGVkICNyZWdpb24yIHsKKyAgICAgICAgZGlz
cGxheTogbm9uZTsKKyAgICB9Cis8L3N0eWxlPgorCis8ZGl2IGlkPSJmbG93IiBjbGFzcz0iZmxv
d0FydGljbGUiPgorICAgIDxkaXYgaWQ9ImdyZWVuIiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2Pgor
ICAgIDxkaXYgaWQ9ImJsdWUiIGNsYXNzPSJibHVlQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJv
cmFuZ2UiIGNsYXNzPSJvcmFuZ2VCb3giPjwvZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lv
bjEiIGNsYXNzPSJyZWdpb25BcnRpY2xlIj48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNz
PSJyZWdpb25BcnRpY2xlIj48L2Rpdj4KKworPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91
dFRlc3RDb250cm9sbGVyKQorICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0
KCk7CisKKyAgICB2YXIgZXhwZWN0ZWRCb3VuZGluZ1JlY3RzID0geworICAgICAgICBncmVlbjog
WzEwLCAxNTAsIDYwLCAyMDAsIDUwLCA1MF0sCisgICAgICAgIGJsdWU6IFsxMCwgMTAwLCA2MCwg
MTUwLCA1MCwgNTBdLAorICAgICAgICBvcmFuZ2U6IFsxMCwgMjAwLCA2MCwgMjUwLCA1MCwgNTBd
CisgICAgfTsKKyAgICAKKyAgICBpZiAodGVzdEJvdW5kaW5nUmVjdHMoZXhwZWN0ZWRCb3VuZGlu
Z1JlY3RzKSkKKyAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc05hbWUgPSAiZmluaXNoZWQiOwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNv
bnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwuaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNhbC5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzNDRmZDEKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRp
bmctY2xpZW50LXJlY3QtdmVydGljYWwuaHRtbApAQCAtMCwwICsxLDUzIEBACis8IURPQ1RZUEUg
aHRtbD4KKworPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJyZXNvdXJjZXMvcmVnaW9uLXN0
eWxlLmNzcyI+PC9saW5rPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIGNoYXJzZXQ9
InV0Zi04IiBzcmM9InJlc291cmNlcy9oZWxwZXIuanMiPjwvc2NyaXB0PgorCis8c3R5bGU+Cisg
ICAgaHRtbCB7IC13ZWJraXQtd3JpdGluZy1tb2RlOiB2ZXJ0aWNhbC1scjsgfQorCisgICAgYm9k
eSB7IG1hcmdpbjogMTBweDsgfQorCisgICAgI3JlZ2lvbjEgeworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIGxlZnQ6IDEwMHB4OworICAgICAgICB3aWR0aDogMTAwcHg7Cisg
ICAgICAgIGhlaWdodDogNTBweDsKKyAgICB9CisKKyAgICAjcmVnaW9uMiB7CisgICAgICAgIHBv
c2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMjQwcHg7CisgICAgICAgIHdpZHRoOiA2
MHB4OworICAgICAgICBoZWlnaHQ6IDcwcHg7CisgICAgICAgIHBhZGRpbmc6IDEwcHggMjBweCAz
MHB4IDQwcHg7CisgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworICAgIH0KKyAgICAK
KyAgICAuZmluaXNoZWQgI3JlZ2lvbjEsIC5maW5pc2hlZCAjcmVnaW9uMiB7CisgICAgICAgIGRp
c3BsYXk6IG5vbmU7CisgICAgfQorPC9zdHlsZT4KKworPGRpdiBpZD0iZmxvdyIgY2xhc3M9ImZs
b3dBcnRpY2xlIj4KKyAgICA8ZGl2IGlkPSJncmVlbiIgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4K
KyAgICA8ZGl2IGlkPSJibHVlIiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0i
b3JhbmdlIiBjbGFzcz0ib3JhbmdlQm94Ij48L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPSJyZWdp
b24xIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24yIiBjbGFz
cz0icmVnaW9uQXJ0aWNsZSI+PC9kaXY+CisKKzxzY3JpcHQ+CisgICAgaWYgKHdpbmRvdy5sYXlv
dXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworCisgICAgdmFyIGV4cGVjdGVkQm91bmRpbmdSZWN0cyA9IHsKKyAgICAgICAgZ3JlZW46
IFsxMCwgMTAwLCA2MCwgMTUwLCA1MCwgNTBdLAorICAgICAgICBibHVlOiBbMTAsIDE1MCwgNjAs
IDIwMCwgNTAsIDUwXSwKKyAgICAgICAgb3JhbmdlOiBbMjEsIDI4MSwgNzEsIDMzMSwgNTAsIDUw
XQorICAgIH07CisgICAgCisgICAgaWYgKHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRp
bmdSZWN0cykpCisgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NOYW1lID0gImZpbmlzaGVkIjsK
Kzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1j
b250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGZjZDRjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5nLWNsaWVudC1yZWN0Lmh0
bWwKQEAgLTAsMCArMSw2MCBAQAorPCFET0NUWVBFIGh0bWw+CisKKzxsaW5rIHJlbD0ic3R5bGVz
aGVldCIgaHJlZj0icmVzb3VyY2VzL3JlZ2lvbi1zdHlsZS5jc3MiPjwvbGluaz4KKzxzY3JpcHQg
dHlwZT0idGV4dC9qYXZhc2NyaXB0IiBjaGFyc2V0PSJ1dGYtOCIgc3JjPSJyZXNvdXJjZXMvaGVs
cGVyLmpzIj48L3NjcmlwdD4KKworPHN0eWxlPgorICAgIGJvZHkgeyBtYXJnaW46IDEwcHg7IH0K
KworICAgIC5ib3ggeworICAgICAgICB3aWR0aDogNTBweDsKKyAgICAgICAgaGVpZ2h0OiA1MHB4
OworICAgICAgICBmbG9hdDogbGVmdDsKKyAgICB9CisKKyAgICAjcmVnaW9uMSB7CisgICAgICAg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgcGFkZGluZzogMTBweDsKKyAgICB9CisKKyAg
ICAjcmVnaW9uMiB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDog
MTAwcHg7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCBibGFjazsKKyAgICB9CisKKyAgICAj
cmVnaW9uMyB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgICAgICAgbGVmdDogMjAw
cHg7CisgICAgICAgIHBhZGRpbmc6IDEwcHg7CisgICAgICAgIGJvcmRlcjogMTBweCBzb2xpZCBi
bGFjazsKKyAgICB9CisgICAgCisgICAgLmZpbmlzaGVkICNyZWdpb24xLCAuZmluaXNoZWQgI3Jl
Z2lvbjIsIC5maW5pc2hlZCAjcmVnaW9uMyB7CisgICAgICAgIGRpc3BsYXk6IG5vbmU7CisgICAg
fQorPC9zdHlsZT4KKworPGRpdiBjbGFzcz0iZmxvd0FydGljbGUiPgorICAgIDxkaXYgaWQ9Imdy
ZWVuIiBjbGFzcz0iZ3JlZW5Cb3giPjwvZGl2PgorICAgIDxkaXYgaWQ9ImJsdWUiIGNsYXNzPSJi
bHVlQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJvcmFuZ2UiIGNsYXNzPSJvcmFuZ2VCb3giPjwv
ZGl2PgorPC9kaXY+CisKKzxkaXYgaWQ9InJlZ2lvbjEiIGNsYXNzPSJyZWdpb25BcnRpY2xlIGJv
eCI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24yIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBib3giPjwv
ZGl2PgorPGRpdiBpZD0icmVnaW9uMyIgY2xhc3M9InJlZ2lvbkFydGljbGUgYm94Ij48L2Rpdj4K
KworPHNjcmlwdD4KKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQorICAgICAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgCisgICAgdmFyIGV4cGVj
dGVkQm91bmRpbmdSZWN0cyA9IHsKKyAgICAgICAgZ3JlZW46IFsyMCwgMjAsIDcwLCA3MCwgNTAs
IDUwXSwKKyAgICAgICAgYmx1ZTogWzIwLCAxMTAsIDcwLCAxNjAsIDUwLCA1MF0sCisgICAgICAg
IG9yYW5nZTogWzMwLCAyMjAsIDgwLCAyNzAsIDUwLCA1MF0KKyAgICB9OworICAgIAorICAgIGlm
ICh0ZXN0Qm91bmRpbmdSZWN0cyhleHBlY3RlZEJvdW5kaW5nUmVjdHMpKQorICAgICAgICBkb2N1
bWVudC5ib2R5LmNsYXNzTmFtZSA9ICJmaW5pc2hlZCI7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0tYm91bmRp
bmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zs
b3dlZC1jb250ZW50LXRyYW5zZm9ybS1ib3VuZGluZy1jbGllbnQtcmVjdC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VmMjJlOQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zvcm0t
Ym91bmRpbmctY2xpZW50LXJlY3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1BBU1MKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC10cmFuc2Zv
cm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9m
bG93ZWQtY29udGVudC10cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTE4MmYzCi0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LXRyYW5zZm9ybS1ib3VuZGlu
Zy1jbGllbnQtcmVjdC5odG1sCkBAIC0wLDAgKzEsNDUgQEAKKzwhRE9DVFlQRSBodG1sPgorCis8
bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InJlc291cmNlcy9yZWdpb24tc3R5bGUuY3NzIj48
L2xpbms+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgY2hhcnNldD0idXRmLTgiIHNy
Yz0icmVzb3VyY2VzL2hlbHBlci5qcyI+PC9zY3JpcHQ+CisKKzxzdHlsZT4KKyAgICBib2R5IHsg
bWFyZ2luOiAxMHB4OyB9CisKKyAgICAuYm94IHsKKyAgICAgICAgd2lkdGg6IDUwcHg7CisgICAg
ICAgIGhlaWdodDogNTBweDsKKyAgICAgICAgZmxvYXQ6IGxlZnQ7CisgICAgfQorCisgICAgI3Jl
Z2lvbjEgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDEwcHgsIDEwcHgpOyB9CisgICAg
I3JlZ2lvbjIgeyAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDMwcHgsIDIwcHgpIHJvdGF0
ZSg0NWRlZyk7IH0KKyAgICAjcmVnaW9uMyB7IC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUo
NzBweCwgMzBweCkgc2NhbGUoMiwyKTsgfQorICAgIAorICAgIC5maW5pc2hlZCAjcmVnaW9uMSwg
LmZpbmlzaGVkICNyZWdpb24yLCAuZmluaXNoZWQgI3JlZ2lvbjMgeworICAgICAgICBkaXNwbGF5
OiBub25lOworICAgIH0KKzwvc3R5bGU+CisKKzxkaXYgY2xhc3M9ImZsb3dBcnRpY2xlIj4KKyAg
ICA8ZGl2IGlkPSJncmVlbiIgY2xhc3M9ImdyZWVuQm94Ij48L2Rpdj4KKyAgICA8ZGl2IGlkPSJi
bHVlIiBjbGFzcz0iYmx1ZUJveCI+PC9kaXY+CisgICAgPGRpdiBpZD0ib3JhbmdlIiBjbGFzcz0i
b3JhbmdlQm94Ij48L2Rpdj4KKzwvZGl2PgorPGRpdiBpZD0icmVnaW9uMSIgY2xhc3M9InJlZ2lv
bkFydGljbGUgYm94Ij48L2Rpdj4KKzxkaXYgaWQ9InJlZ2lvbjIiIGNsYXNzPSJyZWdpb25BcnRp
Y2xlIGJveCI+PC9kaXY+Cis8ZGl2IGlkPSJyZWdpb24zIiBjbGFzcz0icmVnaW9uQXJ0aWNsZSBi
b3giPjwvZGl2PgorCis8c2NyaXB0PgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdmFyIGV4cGVjdGVkQm91bmRpbmdSZWN0
cyA9IHsKKyAgICAgICAgZ3JlZW46IFsyMCwgMjAsIDcwLCA3MCwgNTAsIDUwXSwKKyAgICAgICAg
Ymx1ZTogWzIwLCA4MCwgOTAsIDE1MCwgNzAsIDcwXSwKKyAgICAgICAgb3JhbmdlOiBbMTUsIDE1
NSwgMTE1LCAyNTUsIDEwMCwgMTAwXQorICAgIH07CisgICAgCisgICAgaWYgKHRlc3RCb3VuZGlu
Z1JlY3RzKGV4cGVjdGVkQm91bmRpbmdSZWN0cywgMSkpCisgICAgICAgIGRvY3VtZW50LmJvZHku
Y2xhc3NOYW1lID0gImZpbmlzaGVkIjsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvZmFzdC9yZWdpb25zL3Jlc291cmNlcy9oZWxwZXIuanMgYi9MYXlvdXRUZXN0cy9mYXN0L3Jl
Z2lvbnMvcmVzb3VyY2VzL2hlbHBlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi41MDRlMGYwCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25z
L3Jlc291cmNlcy9oZWxwZXIuanMKQEAgLTAsMCArMSw0NSBAQAorZnVuY3Rpb24gcmVjdFRvQXJy
YXkocmVjdCkgeworICAgIHJldHVybiBbcmVjdC50b3AsIHJlY3QubGVmdCwgcmVjdC5ib3R0b20s
IHJlY3QucmlnaHQsIHJlY3Qud2lkdGgsIHJlY3QuaGVpZ2h0XTsKK30KKworZnVuY3Rpb24gYXJl
RXF1YWxOdW1iZXJzKGFjdHVhbCwgZXhwZWN0ZWQsIHRvbGVyYW5jZSkgeworICAgIHZhciBkaWZm
ID0gTWF0aC5hYnMoYWN0dWFsIC0gZXhwZWN0ZWQpOworICAgIHJldHVybiBkaWZmIDw9IHRvbGVy
YW5jZTsKK30KKworZnVuY3Rpb24gYXJlRXF1YWxSZWN0cyhyMSwgcjIsIHRvbGVyYW5jZSkgewor
ICAgIGlmIChyMS5sZW5ndGggIT0gcjIubGVuZ3RoKQorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgCisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCByMS5sZW5ndGg7ICsraSkKKyAgICAgICAgaWYg
KCFhcmVFcXVhbE51bWJlcnMocjFbaV0sIHIyW2ldLCB0b2xlcmFuY2UpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIAorICAgIHJldHVybiB0cnVlOworfQorCitmdW5jdGlvbiBhc3Nl
cnRFcXVhbFJlY3RzKHJlc3VsdHMsIG5hbWUsIGFjdHVhbFJlY3QsIGV4cGVjdGVkUmVjdCwgdG9s
ZXJhbmNlKSB7CisgICAgaWYgKGFyZUVxdWFsUmVjdHMoYWN0dWFsUmVjdCwgZXhwZWN0ZWRSZWN0
LCB0b2xlcmFuY2UpKQorICAgICAgICByZXR1cm47CisKKyAgICByZXN1bHRzLnB1c2goIkZBSUwo
IiArIG5hbWUgKyAiIGJvdW5kaW5nIHJlY3Qgd2FzOiBbIiArIGFjdHVhbFJlY3Quam9pbigiLCAi
KSArICJdLCBleHBlY3RlZDogWyIgKyBleHBlY3RlZFJlY3Quam9pbigiLCAiKSArICJdIik7Cit9
CisKK2Z1bmN0aW9uIHRlc3RCb3VuZGluZ1JlY3RzKGV4cGVjdGVkQm91bmRpbmdSZWN0cywgdG9s
ZXJhbmNlKQoreworICAgIGlmICh0b2xlcmFuY2UgPT09IHVuZGVmaW5lZCkKKyAgICAgICAgdG9s
ZXJhbmNlID0gMDsKKworICAgIHZhciByZXN1bHRzID0gW107CisKKyAgICBmb3IgKHZhciBuYW1l
IGluIGV4cGVjdGVkQm91bmRpbmdSZWN0cykgeworICAgICAgICBpZiAoIWV4cGVjdGVkQm91bmRp
bmdSZWN0cy5oYXNPd25Qcm9wZXJ0eShuYW1lKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAg
ICAgICB2YXIgcmVjdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKG5hbWUpLmdldEJvdW5kaW5n
Q2xpZW50UmVjdCgpOworICAgICAgICBhc3NlcnRFcXVhbFJlY3RzKHJlc3VsdHMsIG5hbWUsIHJl
Y3RUb0FycmF5KHJlY3QpLCBleHBlY3RlZEJvdW5kaW5nUmVjdHNbbmFtZV0sIHRvbGVyYW5jZSk7
CisgICAgfQorCisgICAgZG9jdW1lbnQud3JpdGUoIjxwPiIgKyAocmVzdWx0cy5sZW5ndGggPyBy
ZXN1bHRzLmpvaW4oIjxiciAvPiIpIDogIlBBU1MiKSArICI8L3A+Iik7CisgICAgCisgICAgcmV0
dXJuICFyZXN1bHRzLmxlbmd0aDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cKaW5kZXggNTM0ZGUyZC4uMDM3MjQ4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisy
MDExLTA4LTI0ICBBbGV4YW5kcnUgQ2hpY3VsaXRhICA8YWNoaWN1QGFkb2JlLmNvbT4KKworICAg
ICAgICBbQ1NTUmVnaW9uc10gRml4IEVsZW1lbnQ6OmdldEJvdW5kaW5nQ2xpZW50UmVjdCBhbmQg
RWxlbWVudDo6Z2V0Q2xpZW50UmVjdHMgZm9yIGNvbnRlbnQgZmxvdworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjY2NDEKKworICAgICAgICBPcmlnaW5h
bCBhdXRob3Igb2YgdGhlIHBhdGNoIGlzIE1paG5lYSBPdmlkZW5pZSA8bWlobmVhQGFkb2JlLmNv
bT4uCisKKyAgICAgICAgUmVkaXJlY3RlZCB0aGUgbWFwTG9jYWxUb0NvbnRhaW5lciBtZXRob2Qg
dG8gdGhlIGFwcHJvcHJpYXRlIFJlbmRlclJlZ2lvbi4KKworICAgICAgICBOb3RlOiBSZW5kZXJP
YmplY3Q6OmFic29sdXRlUXVhZHMgbWV0aG9kIG5lZWRzIHNvbWUgcmVmYWN0b3IgdG8gc3VwcG9y
dCBtdWx0aXBsZSByZWdpb25zLAorICAgICAgICB3aWxsIGRvIHRoYXQgaW4gYSBzZXBhcmF0ZSBi
dWcuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGVz
dHM6IGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVudC1ib3VuZGluZy1jbGllbnQtcmVjdC1ob3Jp
em9udGFsLWJ0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29udGVu
dC1ib3VuZGluZy1jbGllbnQtcmVjdC12ZXJ0aWNhbC1ybC5odG1sCisgICAgICAgICAgICAgICBm
YXN0L3JlZ2lvbnMvZmxvd2VkLWNvbnRlbnQtYm91bmRpbmctY2xpZW50LXJlY3QtdmVydGljYWwu
aHRtbAorICAgICAgICAgICAgICAgZmFzdC9yZWdpb25zL2Zsb3dlZC1jb250ZW50LWJvdW5kaW5n
LWNsaWVudC1yZWN0Lmh0bWwKKyAgICAgICAgICAgICAgIGZhc3QvcmVnaW9ucy9mbG93ZWQtY29u
dGVudC10cmFuc2Zvcm0tYm91bmRpbmctY2xpZW50LXJlY3QuaHRtbAorCisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJCb3g6Om1hcExv
Y2FsVG9Db250YWluZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlbmRlclJlZ2lvbkZvckxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bWFwRnJvbUZsb3dUb1Jl
Z2lvbik6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaDoKKwogMjAxMS0w
OC0yMyAgRGF2aWQgTGV2aW4gIDxsZXZpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTWVzc2Fn
ZUV2ZW50LnBvcnRzIHNob3VsZG4ndCBldmVyIGJlIG51bGwuCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3guY3BwCmluZGV4IGQwMTQ4ZDYuLjhlNjVkMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3guY3BwCkBAIC00MSw5ICs0MSwxMSBAQAogI2luY2x1ZGUgIlBhZ2Uu
aCIKICNpbmNsdWRlICJQYWludEluZm8uaCIKICNpbmNsdWRlICJSZW5kZXJBcmVuYS5oIgorI2lu
Y2x1ZGUgIlJlbmRlckZsb3dUaHJlYWQuaCIKICNpbmNsdWRlICJSZW5kZXJJbmxpbmUuaCIKICNp
bmNsdWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclBhcnQuaCIKKyNpbmNsdWRl
ICJSZW5kZXJSZWdpb24uaCIKICNpbmNsdWRlICJSZW5kZXJUYWJsZUNlbGwuaCIKICNpbmNsdWRl
ICJSZW5kZXJUaGVtZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKQEAgLTEyNTgsNyArMTI2
MCwxNSBAQCB2b2lkIFJlbmRlckJveDo6bWFwTG9jYWxUb0NvbnRhaW5lcihSZW5kZXJCb3hNb2Rl
bE9iamVjdCogcmVwYWludENvbnRhaW5lciwgYm9vbAogICAgICAgICB0cmFuc2Zvcm1TdGF0ZS5t
b3ZlKC1jb250YWluZXJPZmZzZXQud2lkdGgoKSwgLWNvbnRhaW5lck9mZnNldC5oZWlnaHQoKSwg
cHJlc2VydmUzRCA/IFRyYW5zZm9ybVN0YXRlOjpBY2N1bXVsYXRlVHJhbnNmb3JtIDogVHJhbnNm
b3JtU3RhdGU6OkZsYXR0ZW5UcmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IAorCisgICAgaWYgKG8tPmlzUmVuZGVyRmxvd1RocmVhZCgpKSB7CisgICAgICAgIC8vIFRyYW5z
Zm9ybSBmcm9tIHJlbmRlciBmbG93IGNvb3JkaW5hdGVzIGludG8gcmVnaW9uIGNvb3JkaW5hdGVz
LgorICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9IHRvUmVuZGVyRmxvd1RocmVhZChvKS0+
bWFwRnJvbUZsb3dUb1JlZ2lvbih0cmFuc2Zvcm1TdGF0ZSk7CisgICAgICAgIGlmIChyZWdpb24p
CisgICAgICAgICAgICByZWdpb24tPm1hcExvY2FsVG9Db250YWluZXIocmVnaW9uLT5jb250YWlu
ZXJGb3JSZXBhaW50KCksIGZpeGVkLCB1c2VUcmFuc2Zvcm1zLCB0cmFuc2Zvcm1TdGF0ZSwgd2Fz
Rml4ZWQpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgby0+bWFwTG9jYWxUb0NvbnRh
aW5lcihyZXBhaW50Q29udGFpbmVyLCBmaXhlZCwgdXNlVHJhbnNmb3JtcywgdHJhbnNmb3JtU3Rh
dGUsIHdhc0ZpeGVkKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckZsb3dUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZs
b3dUaHJlYWQuY3BwCmluZGV4IGZlODVhODIuLmIxMzI0NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNs
dWRlICJSZW5kZXJMYXllci5oIgogI2luY2x1ZGUgIlJlbmRlclJlZ2lvbi5oIgogI2luY2x1ZGUg
IlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJUcmFuc2Zvcm1TdGF0ZS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKQEAgLTQ3MSw5ICs0NzIsNiBAQCBSZW5kZXJSZWdpb24qIFJlbmRlckZsb3dU
aHJlYWQ6OnJlbmRlclJlZ2lvbkZvckxpbmUoTGF5b3V0VW5pdCBwb3NpdGlvbiwgYm9vbCBleAog
ewogICAgIEFTU0VSVCghbV9yZWdpb25zSW52YWxpZGF0ZWQpOwogICAgIAotICAgIC8vIEFsbCB0
aGUgcmVnaW9ucyBzaG91bGQgc3RhcnQgYXQgMC4KLSAgICBBU1NFUlQocG9zaXRpb24gPj0gMCk7
Ci0gICAgCiAgICAgLy8gSWYgbm8gcmVnaW9uIG1hdGNoZXMgdGhlIHBvc2l0aW9uIGFuZCBleHRl
bmRMYXN0UmVnaW9uIGlzIHRydWUsIGl0IHdpbGwgcmV0dXJuCiAgICAgLy8gdGhlIGxhc3QgdmFs
aWQgcmVnaW9uLiBJdCBpcyBzaW1pbGFyIHRvIGF1dG8gZXh0ZW5kaW5nIHRoZSBzaXplIG9mIHRo
ZSBsYXN0IHJlZ2lvbi4gCiAgICAgUmVuZGVyUmVnaW9uKiBsYXN0VmFsaWRSZWdpb24gPSAwOwpA
QCAtNDg1LDYgKzQ4Myw5IEBAIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6cmVuZGVy
UmVnaW9uRm9yTGluZShMYXlvdXRVbml0IHBvc2l0aW9uLCBib29sIGV4CiAgICAgICAgIGlmICgh
cmVnaW9uLT5pc1ZhbGlkKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAorICAgICAgICBpZiAo
cG9zaXRpb24gPD0gMCkKKyAgICAgICAgICAgIHJldHVybiByZWdpb247CisKICAgICAgICAgTGF5
b3V0UmVjdCByZWdpb25SZWN0ID0gcmVnaW9uLT5yZWdpb25SZWN0KCk7CiAKICAgICAgICAgaWYg
KHVzZUhvcml6b250YWxXcml0aW5nTW9kZSkgewpAQCAtNTE0LDQgKzUxNSwzMCBAQCBMYXlvdXRV
bml0IFJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkxvZ2ljYWxXaWR0aEZvckxpbmUoTGF5b3V0VW5p
dCBwb3NpdGlvbikgY29ucwogfQogCiAKK1JlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1RocmVhZDo6
bWFwRnJvbUZsb3dUb1JlZ2lvbihUcmFuc2Zvcm1TdGF0ZSYgdHJhbnNmb3JtU3RhdGUpIGNvbnN0
Cit7CisgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbnMoKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAg
ICBMYXlvdXRSZWN0IGJveFJlY3QgPSB0cmFuc2Zvcm1TdGF0ZS5tYXBwZWRRdWFkKCkuZW5jbG9z
aW5nQm91bmRpbmdCb3goKTsKKyAgICBmbGlwRm9yV3JpdGluZ01vZGUoYm94UmVjdCk7CisKKyAg
ICAvLyBGSVhNRTogV2UgbmVlZCB0byByZWZhY3RvciBSZW5kZXJPYmplY3Q6OmFic29sdXRlUXVh
ZHMgdG8gYmUgYWJsZSB0byBzcGxpdCB0aGUgcXVhZHMgYWNyb3NzIHJlZ2lvbnMsCisgICAgLy8g
Zm9yIG5vdyB3ZSBqdXN0IHRha2UgdGhlIGNlbnRlciBvZiB0aGUgbWFwcGVkIGVuY2xvc2luZyBi
b3ggYW5kIG1hcCBpdCB0byBhIHJlZ2lvbi4KKyAgICAvLyBOb3RlOiBVc2luZyB0aGUgY2VudGVy
IGluIG9yZGVyIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KKworICAgIGNvbnN0IGJvb2wgZXh0
ZW5kTGFzdFJlZ2lvbiA9IHRydWU7CisgICAgTGF5b3V0UG9pbnQgY2VudGVyID0gYm94UmVjdC5j
ZW50ZXIoKTsKKyAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9IHJlbmRlclJlZ2lvbkZv
ckxpbmUoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IGNlbnRlci55KCkgOiBjZW50ZXIueCgp
LCBleHRlbmRMYXN0UmVnaW9uKTsKKyAgICBpZiAoIXJlbmRlclJlZ2lvbikKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICBMYXlvdXRSZWN0IGZsaXBwZWRSZWdpb25SZWN0KHJlbmRlclJlZ2lvbi0+
cmVnaW9uUmVjdCgpKTsKKyAgICBmbGlwRm9yV3JpdGluZ01vZGUoZmxpcHBlZFJlZ2lvblJlY3Qp
OworCisgICAgdHJhbnNmb3JtU3RhdGUubW92ZShyZW5kZXJSZWdpb24tPmNvbnRlbnRCb3hSZWN0
KCkubG9jYXRpb24oKSAtIGZsaXBwZWRSZWdpb25SZWN0LmxvY2F0aW9uKCkpOworCisgICAgcmV0
dXJuIHJlbmRlclJlZ2lvbjsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmgKaW5kZXggZTE1OTdjZS4uMDRkNGM3
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCkBAIC0x
MDMsNiArMTAzLDggQEAgcHVibGljOgogICAgIHZvaWQgZGlzYWJsZVJlZ2lvbkZpdHRpbmcoKSB7
IG1fcmVnaW9uRml0dGluZ0Rpc2FibGVDb3VudCsrOyB9CiAgICAgdm9pZCBlbmFibGVSZWdpb25G
aXR0aW5nKCkgeyBBU1NFUlQobV9yZWdpb25GaXR0aW5nRGlzYWJsZUNvdW50ID4gMCk7IG1fcmVn
aW9uRml0dGluZ0Rpc2FibGVDb3VudC0tOyB9CiAKKyAgICBSZW5kZXJSZWdpb24qIG1hcEZyb21G
bG93VG9SZWdpb24oVHJhbnNmb3JtU3RhdGUmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2aXJ0
dWFsIGNvbnN0IGNoYXIqIHJlbmRlck5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVuZGVyRmxvd1Ro
cmVhZCI7IH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>