<?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>157666</bug_id>
          
          <creation_ts>2016-05-12 23:03:08 -0700</creation_ts>
          <short_desc>Align window.scroll() / scrollTo() / scrollBy() with the CSSOM specification</short_desc>
          <delta_ts>2016-09-05 18:31:57 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>https://drafts.csswg.org/cssom-view/#extensions-to-the-window-interface</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eunmi Lee">enmi.lee</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>rniwa</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1192668</commentid>
    <comment_count>0</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2016-05-12 23:03:08 -0700</bug_when>
    <thetext>Safari can not scroll to the bottom area in the https://members.chosun.com/cms_subscribe/application/index.jsp which has &lt;body onScroll=&quot;scroll()&quot;&gt;,
because scroll() with no arguments treats as scroll(0, 0) in the WebKit.

It is regression of r100163, and IE 11, Firefox 46.0.1 and Chrome 50 can scroll this web page.
(Chrome can scroll after this patch: https://codereview.chromium.org/59863003/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192770</commentid>
    <comment_count>1</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 09:27:23 -0700</bug_when>
    <thetext>The bug report, as is stated, does not seem correct as per the spec:
https://drafts.csswg.org/cssom-view/#extensions-to-the-window-interface

The spec define 2 scroll() functions:
void scroll(optional ScrollToOptions options);
void scroll(unrestricted double x, unrestricted double y);

So if you call scroll() function without parameter, it should call the first one.
However, our behavior is incorrect in this case I believe. It looks like we are supposed to use the current&apos;s viewport position as x/y but we use 0/0 instead. So I think we should not scroll instead of scrolling to the top-left.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192806</commentid>
    <comment_count>2</comment_count>
      <attachid>278850</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 10:58:11 -0700</bug_when>
    <thetext>Created attachment 278850
WIP patch

Fixes the bug on https://members.chosun.com/cms_subscribe/application/index.jsp and aligns us with the spec but needs more testing.
It is leveraging Darin&apos;s recent support for dictionaries although I had to make it work for floating point typed members.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192815</commentid>
    <comment_count>3</comment_count>
      <attachid>278855</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 11:27:12 -0700</bug_when>
    <thetext>Created attachment 278855
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1192832</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-05-13 12:04:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/26272835&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193003</commentid>
    <comment_count>5</comment_count>
      <attachid>278855</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-05-13 19:00:47 -0700</bug_when>
    <thetext>Comment on attachment 278855
Patch

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

&gt; Source/WebCore/bindings/js/JSDOMConvert.h:35
&gt; +template&lt;typename T, typename Enable = void&gt; struct Converter;

I’m not familiar with this technique.

&gt; Source/WebCore/page/DOMWindow.cpp:1522
&gt; +    RefPtr&lt;FrameView&gt; view = m_frame-&gt;view();

Why is this RefPtr? Why not auto*? I guess this was copied from the function below, but I don’t think it needs to be.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193007</commentid>
    <comment_count>6</comment_count>
      <attachid>278855</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-05-13 19:05:30 -0700</bug_when>
    <thetext>Comment on attachment 278855
Patch

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

&gt;&gt; Source/WebCore/bindings/js/JSDOMConvert.h:35
&gt;&gt; +template&lt;typename T, typename Enable = void&gt; struct Converter;
&gt; 
&gt; I’m not familiar with this technique.

Found on http://en.cppreference.com/w/cpp/types/enable_if

I did not want to have to specialize for both float and double.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193008</commentid>
    <comment_count>7</comment_count>
      <attachid>278855</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 19:09:36 -0700</bug_when>
    <thetext>Comment on attachment 278855
Patch

Clearing flags on attachment: 278855

Committed r200907: &lt;http://trac.webkit.org/changeset/200907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193009</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-05-13 19:09:43 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1193067</commentid>
    <comment_count>9</comment_count>
    <who name="Eunmi Lee">enmi.lee</who>
    <bug_when>2016-05-14 01:26:42 -0700</bug_when>
    <thetext>I&apos;ve surprised at quick patch. Thank you very much Chris! :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1226533</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2016-09-05 18:31:57 -0700</bug_when>
    <thetext>Also need to match the spec for element scrolling: bug 161610.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278850</attachid>
            <date>2016-05-13 10:58:11 -0700</date>
            <delta_ts>2016-05-13 11:27:08 -0700</delta_ts>
            <desc>WIP patch</desc>
            <filename>157666_window_scroll_wip.patch</filename>
            <type>text/plain</type>
            <size>20139</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFy
Z3VtZW50cy5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwt
YXJndW1lbnRzLmh0bWwKaW5kZXggZmY1NThlYi4uYzVmOWRjOSAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLmh0bWwK
QEAgLTM5LDcgKzM5LDcgQEAKICAgICByZXNldCgpOwogCiAgICAgZGVidWcoIlRlc3RpbmcgLSBz
Y3JvbGxUbyB3aXRoIDEgYXJndW1lbnQiKTsKLSAgICB3aW5kb3cuc2Nyb2xsVG8oeCk7CisgICAg
d2luZG93LnNjcm9sbFRvKHsgbGVmdDogeCB9KTsKICAgICBzaG91bGRCZSgnd2luZG93LnNjcm9s
bFgnLCAncmVzZXRYICsgeCcpOwogICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWScsICdyZXNl
dFknKTsKICAgICByZXNldCgpOwpAQCAtNjIsNyArNjIsNyBAQAogICAgIHJlc2V0KCk7CiAKICAg
ICBkZWJ1ZygiVGVzdGluZyAtIHNjcm9sbCB3aXRoIDEgYXJndW1lbnQiKTsKLSAgICB3aW5kb3cu
c2Nyb2xsKHgpOworICAgIHdpbmRvdy5zY3JvbGwoeyBsZWZ0OiB4IH0pOwogICAgIHNob3VsZEJl
KCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFggKyB4Jyk7CiAgICAgc2hvdWxkQmUoJ3dpbmRvdy5z
Y3JvbGxZJywgJ3Jlc2V0WScpOwogICAgIHJlc2V0KCk7CkBAIC04NSw3ICs4NSw3IEBACiAgICAg
cmVzZXQoKTsKIAogICAgIGRlYnVnKCJUZXN0aW5nIC0gc2Nyb2xsQnkgd2l0aCAxIGFyZ3VtZW50
Iik7Ci0gICAgd2luZG93LnNjcm9sbEJ5KHgpOworICAgIHdpbmRvdy5zY3JvbGxCeSh7IGxlZnQ6
IHggfSk7CiAgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxYJywgJ3Jlc2V0WCArIHgnKTsKICAg
ICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFknLCAncmVzZXRZJyk7CiAgICAgcmVzZXQoKTsKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vbi1udW1lcmljLXZhbHVlcy1udW1lcmlj
LXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9uLW51bWVy
aWMtdmFsdWVzLW51bWVyaWMtcGFyYW1ldGVycy1leHBlY3RlZC50eHQKaW5kZXggZjI4OGQzNS4u
Y2JkYmM5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vbm9uLW51bWVyaWMtdmFs
dWVzLW51bWVyaWMtcGFyYW1ldGVycy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZmFz
dC9kb20vbm9uLW51bWVyaWMtdmFsdWVzLW51bWVyaWMtcGFyYW1ldGVycy1leHBlY3RlZC50eHQK
QEAgLTY2LDExICs2NiwxMSBAQCBQQVNTIG5vbk51bWVyaWNQb2xpY3koJ2RvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCJhIikuc3BsaXRUZXh0KHgpJykgaXMgJ2FueSB0eXBlCiBQQVNTIG5vbk51bWVy
aWNQb2xpY3koJ2RvY3VtZW50LmNyZWF0ZVRyZWVXYWxrZXIoZG9jdW1lbnQsIHgsIG51bGwsIGZh
bHNlKScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwogUEFTUyBub25OdW1lcmljUG9saWN5KCdkb2N1
bWVudC5jcmVhdGVFdmVudCgiVUlFdmVudCIpLmluaXRVSUV2ZW50KCJhIiwgZmFsc2UsIGZhbHNl
LCBudWxsLCB4KScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwogUEFTUyBub25OdW1lcmljUG9saWN5
KCd3aW5kb3cuc2Nyb2xsQnkoeCwgMCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcKLVBBU1Mgbm9u
TnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbEJ5KDAsIHgpJykgaXMgJ2FueSB0eXBlIGFsbG93
ZWQnCitQQVNTIG5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxCeSgwLCB4KScpIGlzICdh
bnkgdHlwZSBhbGxvd2VkIChidXQgbm90IG9taXR0ZWQpJwogUEFTUyBub25OdW1lcmljUG9saWN5
KCd3aW5kb3cuc2Nyb2xsVG8oeCwgMCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcKLVBBU1Mgbm9u
TnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbFRvKDAsIHgpJykgaXMgJ2FueSB0eXBlIGFsbG93
ZWQnCitQQVNTIG5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxUbygwLCB4KScpIGlzICdh
bnkgdHlwZSBhbGxvd2VkIChidXQgbm90IG9taXR0ZWQpJwogUEFTUyBub25OdW1lcmljUG9saWN5
KCd3aW5kb3cuc2Nyb2xsKHgsIDApJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCi1QQVNTIG5vbk51
bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGwoMCwgeCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcK
K1BBU1Mgbm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbCgwLCB4KScpIGlzICdhbnkgdHlw
ZSBhbGxvd2VkIChidXQgbm90IG9taXR0ZWQpJwogUEFTUyBub25OdW1lcmljUG9saWN5KCd3aW5k
b3cubW92ZUJ5KHgsIDApJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCiBQQVNTIG5vbk51bWVyaWNQ
b2xpY3koJ3dpbmRvdy5tb3ZlQnkoMCwgeCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcKIFBBU1Mg
bm9uTnVtZXJpY1BvbGljeSgnd2luZG93Lm1vdmVUbyh4LCAwKScpIGlzICdhbnkgdHlwZSBhbGxv
d2VkJwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL25vbi1u
dW1lcmljLXZhbHVlcy1udW1lcmljLXBhcmFtZXRlcnMuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2Rv
bS9zY3JpcHQtdGVzdHMvbm9uLW51bWVyaWMtdmFsdWVzLW51bWVyaWMtcGFyYW1ldGVycy5qcwpp
bmRleCA3NTRjNzUzLi45YWY0NGQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2RvbS9z
Y3JpcHQtdGVzdHMvbm9uLW51bWVyaWMtdmFsdWVzLW51bWVyaWMtcGFyYW1ldGVycy5qcworKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9zY3JpcHQtdGVzdHMvbm9uLW51bWVyaWMtdmFsdWVzLW51
bWVyaWMtcGFyYW1ldGVycy5qcwpAQCAtMzQ0LDExICszNDQsMTEgQEAgc2hvdWxkQmUoIm5vbk51
bWVyaWNQb2xpY3koJ2RvY3VtZW50LmNyZWF0ZUV2ZW50KFwiVUlFdmVudFwiKS5pbml0VUlFdmVu
dChcImFcIiwKIC8vIFdpbmRvdwogCiBzaG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93
LnNjcm9sbEJ5KHgsIDApJykiLCAiJ2FueSB0eXBlIGFsbG93ZWQnIik7Ci1zaG91bGRCZSgibm9u
TnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbEJ5KDAsIHgpJykiLCAiJ2FueSB0eXBlIGFsbG93
ZWQnIik7CitzaG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbEJ5KDAsIHgp
JykiLCAiJ2FueSB0eXBlIGFsbG93ZWQgKGJ1dCBub3Qgb21pdHRlZCknIik7CiBzaG91bGRCZSgi
bm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbFRvKHgsIDApJykiLCAiJ2FueSB0eXBlIGFs
bG93ZWQnIik7Ci1zaG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbFRvKDAs
IHgpJykiLCAiJ2FueSB0eXBlIGFsbG93ZWQnIik7CitzaG91bGRCZSgibm9uTnVtZXJpY1BvbGlj
eSgnd2luZG93LnNjcm9sbFRvKDAsIHgpJykiLCAiJ2FueSB0eXBlIGFsbG93ZWQgKGJ1dCBub3Qg
b21pdHRlZCknIik7CiBzaG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbCh4
LCAwKScpIiwgIidhbnkgdHlwZSBhbGxvd2VkJyIpOwotc2hvdWxkQmUoIm5vbk51bWVyaWNQb2xp
Y3koJ3dpbmRvdy5zY3JvbGwoMCwgeCknKSIsICInYW55IHR5cGUgYWxsb3dlZCciKTsKK3Nob3Vs
ZEJlKCJub25OdW1lcmljUG9saWN5KCd3aW5kb3cuc2Nyb2xsKDAsIHgpJykiLCAiJ2FueSB0eXBl
IGFsbG93ZWQgKGJ1dCBub3Qgb21pdHRlZCknIik7CiBzaG91bGRCZSgibm9uTnVtZXJpY1BvbGlj
eSgnd2luZG93Lm1vdmVCeSh4LCAwKScpIiwgIidhbnkgdHlwZSBhbGxvd2VkJyIpOwogc2hvdWxk
QmUoIm5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5tb3ZlQnkoMCwgeCknKSIsICInYW55IHR5cGUg
YWxsb3dlZCciKTsKIHNob3VsZEJlKCJub25OdW1lcmljUG9saWN5KCd3aW5kb3cubW92ZVRvKHgs
IDApJykiLCAiJ2FueSB0eXBlIGFsbG93ZWQnIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTRE9NQ29udmVydC5oCmluZGV4IGJiM2U2MmUyLi41NTQ0ODMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnQuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIGVudW0gY2xhc3MgU2hvdWxkQWxsb3dOb25GaW5pdGUgeyBObywgWWVzIH07
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXI7Cit0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBFbmFibGUgPSB2b2lkPiBzdHJ1Y3QgQ29udmVydGVyOwogCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUp
OwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpK
U1ZhbHVlLCBJbnRlZ2VyQ29udmVyc2lvbkNvbmZpZ3VyYXRpb24pOwpAQCAtNDEsNiArNDEsOSBA
QCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpT
VmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUg
Q29udmVydGVyPFQ+OjpPcHRpb25hbFZhbHVlIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0
ZSYsIEpTQzo6SlNWYWx1ZSk7CiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBUIGNv
bnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgVSYmIGRlZmF1bHRW
YWx1ZSk7CiAKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0
aW9uYWxWYWx1ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUs
IFNob3VsZEFsbG93Tm9uRmluaXRlKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+
IFQgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1ZhbHVlLCBTaG91bGRB
bGxvd05vbkZpbml0ZSwgVSYmIGRlZmF1bHRWYWx1ZSk7CisKIC8vIFRoaXMgaXMgd2hlcmUgdGhl
IGltcGxlbWVudGF0aW9uIG9mIHRoZSB0aGluZ3MgZGVjbGFyZWQgYWJvdmUgYmVnaW5zOgogCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBUIGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6
OkpTVmFsdWUgdmFsdWUpCkBAIC01NiwxMCArNTksNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBU
IGNvbnZlcnQoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIEludGVn
ZQogdGVtcGxhdGU8dHlwZW5hbWUgVD4gaW5saW5lIFQgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGUgYWxsb3cpCiB7
CiAgICAgc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8VCwgZmxvYXQ+Ojp2YWx1ZSB8fCBzdGQ6
OmlzX3NhbWU8VCwgZG91YmxlPjo6dmFsdWUsICJTaG91bGRBbGxvd05vbkZpbml0ZSBjYW4gb25s
eSBiZSB1c2VkIHdpdGggZmxvYXQgb3IgZG91YmxlIik7Ci0gICAgZG91YmxlIG51bWJlciA9IHZh
bHVlLnRvTnVtYmVyKCZzdGF0ZSk7Ci0gICAgaWYgKGFsbG93ID09IFNob3VsZEFsbG93Tm9uRmlu
aXRlOjpObyAmJiBVTkxJS0VMWSghc3RkOjppc2Zpbml0ZShudW1iZXIpKSkKLSAgICAgICAgdGhy
b3dOb25GaW5pdGVUeXBlRXJyb3Ioc3RhdGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihu
dW1iZXIpOworICAgIHJldHVybiBDb252ZXJ0ZXI8VD46OmNvbnZlcnQoc3RhdGUsIHZhbHVlLCBh
bGxvdyk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6
T3B0aW9uYWxWYWx1ZSBpbmxpbmUgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlKQpAQCAtNzIsMTEgKzcyLDIxIEBAIHRlbXBsYXRlPHR5cGVu
YW1lIFQsIHR5cGVuYW1lIFU+IGlubGluZSBUIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0
ZSYgc3RhdGUsCiAgICAgcmV0dXJuIHZhbHVlLmlzVW5kZWZpbmVkKCkgPyBzdGQ6OmZvcndhcmQ8
VT4oZGVmYXVsdFZhbHVlKSA6IGNvbnZlcnQ8VD4oc3RhdGUsIHZhbHVlKTsKIH0KIAordGVtcGxh
dGU8dHlwZW5hbWUgVD4gdHlwZW5hbWUgQ29udmVydGVyPFQ+OjpPcHRpb25hbFZhbHVlIGlubGlu
ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFs
dWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93KQoreworICAgIHJldHVybiB2YWx1ZS5pc1Vu
ZGVmaW5lZCgpID8gdHlwZW5hbWUgQ29udmVydGVyPFQ+OjpPcHRpb25hbFZhbHVlKCkgOiBjb252
ZXJ0PFQ+KHN0YXRlLCB2YWx1ZSwgYWxsb3cpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0
eXBlbmFtZSBVPiBpbmxpbmUgVCBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmIHN0YXRl
LCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93LCBVJiYgZGVm
YXVsdFZhbHVlKQoreworICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8gc3RkOjpmb3J3
YXJkPFU+KGRlZmF1bHRWYWx1ZSkgOiBjb252ZXJ0PFQ+KHN0YXRlLCB2YWx1ZSwgYWxsb3cpOwor
fQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgRGVmYXVsdENvbnZlcnRlciB7CiAgICAg
dXNpbmcgT3B0aW9uYWxWYWx1ZSA9IE9wdGlvbmFsPFQ+OwogfTsKIAotdGVtcGxhdGU8dHlwZW5h
bWUgVD4gc3RydWN0IENvbnZlcnRlciA6IERlZmF1bHRDb252ZXJ0ZXI8VD4gewordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlPiBzdHJ1Y3QgQ29udmVydGVyIDogRGVmYXVsdENv
bnZlcnRlcjxUPiB7CiB9OwogCiB0ZW1wbGF0ZTw+IHN0cnVjdCBDb252ZXJ0ZXI8Ym9vbD4gOiBE
ZWZhdWx0Q29udmVydGVyPGJvb2w+IHsKQEAgLTIyOCw0ICsyMzgsMTQgQEAgdGVtcGxhdGU8PiBz
dHJ1Y3QgQ29udmVydGVyPHVpbnQ2NF90PiA6IERlZmF1bHRDb252ZXJ0ZXI8dWludDY0X3Q+IHsK
ICAgICB9CiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyPFQsIHR5
cGVuYW1lIHN0ZDo6ZW5hYmxlX2lmPHN0ZDo6aXNfZmxvYXRpbmdfcG9pbnQ8VD46OnZhbHVlPjo6
dHlwZT4gOiBEZWZhdWx0Q29udmVydGVyPFQ+IHsKKyAgICBzdGF0aWMgVCBjb252ZXJ0KEpTQzo6
RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0
ZSBhbGxvdykKKyAgICB7CisgICAgICAgIGRvdWJsZSBudW1iZXIgPSB2YWx1ZS50b051bWJlcigm
c3RhdGUpOworICAgICAgICBpZiAoYWxsb3cgPT0gU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vICYm
IFVOTElLRUxZKCFzdGQ6OmlzZmluaXRlKG51bWJlcikpKQorICAgICAgICAgICAgdGhyb3dOb25G
aW5pdGVUeXBlRXJyb3Ioc3RhdGUpOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8VD4obnVt
YmVyKTsKKyAgICB9Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDVmNjVk
MWUuLmZjZjFmYmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvckpTLnBtCkBAIC05NTgsNiArOTU4LDI1IEBAIHN1YiBHZW5lcmF0ZURlZmF1
bHRWYWx1ZQogICAgIHJldHVybiAkdmFsdWU7CiB9CiAKK3N1YiBTaG91bGRBbGxvd05vbkZpbml0
ZUZvckZsb2F0aW5nUG9pbnRUeXBlCit7CisgICAgbXkgJHR5cGUgPSBzaGlmdDsKKworICAgIGRp
ZSAiQ2FuIG9ubHkgYmUgY2FsbGVkIHdpdGggZmxvYXRpbmcgcG9pbnQgdHlwZXMiIHVubGVzcyAk
Y29kZUdlbmVyYXRvci0+SXNGbG9hdGluZ1BvaW50VHlwZSgkdHlwZSk7CisgICAgcmV0dXJuICR0
eXBlIGVxICJ1bnJlc3RyaWN0ZWQgZG91YmxlIiB8fCAkdHlwZSBlcSAidW5yZXN0cmljdGVkIGZs
b2F0IjsKK30KKworc3ViIEdlbmVyYXRlQ29udmVyc2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hCit7
CisgICAgbXkgKCRpbnRlcmZhY2UsICRtZW1iZXIpID0gQF87CisKKyAgICBpZiAoJGNvZGVHZW5l
cmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJG1lbWJlci0+dHlwZSkpIHsKKyAgICAgICAgcmV0
dXJuICIsICIgLiAoU2hvdWxkQWxsb3dOb25GaW5pdGVGb3JGbG9hdGluZ1BvaW50VHlwZSgkbWVt
YmVyLT50eXBlKSA/ICJTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzIiA6ICJTaG91bGRBbGxvd05v
bkZpbml0ZTo6Tm8iKTsKKyAgICB9CisgICAgIyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGludGVn
ZXIgdHlwZXMuCisgICAgcmV0dXJuICIiOworfQorCiBzdWIgR2VuZXJhdGVEZWZhdWx0VmFsdWVX
aXRoTGVhZGluZ0NvbW1hCiB7CiAgICAgbXkgKCRpbnRlcmZhY2UsICRtZW1iZXIpID0gQF87CkBA
IC0xMDExLDkgKzEwMzAsOSBAQCBzdWIgR2VuZXJhdGVEaWN0aW9uYXJ5SW1wbGVtZW50YXRpb25D
b250ZW50CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAjIEZJWE1FOiBFdmVudHVhbGx5IHdl
IHdpbGwgd2FudCB0aGlzIHRvIHNoYXJlIGEgbG90IG1vcmUgY29kZSB3aXRoIEpTVmFsdWVUb05h
dGl2ZS4KICAgICAgICAgICAgIG15ICRmdW5jdGlvbiA9ICRtZW1iZXItPmlzT3B0aW9uYWwgPyAi
Y29udmVydE9wdGlvbmFsIiA6ICJjb252ZXJ0IjsKLSAgICAgICAgICAgIG15ICRkZWZhdWx0VmFs
dWVXaXRoTGVhZGluZ0NvbW1hID0gJG1lbWJlci0+aXNPcHRpb25hbCAmJiBkZWZpbmVkICRtZW1i
ZXItPmRlZmF1bHQgPyAiLCAiIC4gJG1lbWJlci0+ZGVmYXVsdCA6ICIiOwogICAgICAgICAgICAg
JHJlc3VsdCAuPSAiICAgIGF1dG8gIiAuICRtZW1iZXItPm5hbWUgLiAiID0gIiAuICRmdW5jdGlv
biAuICI8IiAuIEdldE5hdGl2ZVR5cGVGcm9tU2lnbmF0dXJlKCRpbnRlcmZhY2UsICRtZW1iZXIp
IC4gIj4iCiAgICAgICAgICAgICAgICAgLiAiKHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCBcIiIgLiAkbWVtYmVyLT5uYW1lIC4gIlwiKSki
CisgICAgICAgICAgICAgICAgLiBHZW5lcmF0ZUNvbnZlcnNpb25SdWxlV2l0aExlYWRpbmdDb21t
YSgkaW50ZXJmYWNlLCAkbWVtYmVyKQogICAgICAgICAgICAgICAgIC4gR2VuZXJhdGVEZWZhdWx0
VmFsdWVXaXRoTGVhZGluZ0NvbW1hKCRpbnRlcmZhY2UsICRtZW1iZXIpIC4gIik7XG4iOwogICAg
ICAgICAgICAgJG5lZWRFeGNlcHRpb25DaGVjayA9IDE7CiAgICAgICAgIH0KQEAgLTQ0MjUsMTEg
KzQ0NDQsOSBAQCBzdWIgSlNWYWx1ZVRvTmF0aXZlCiAKICAgICBpZiAoJGNvZGVHZW5lcmF0b3It
PklzRmxvYXRpbmdQb2ludFR5cGUoJHR5cGUpKSB7CiAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVz
KCJKU0RPTUNvbnZlcnQuaCIpOwotICAgICAgICByZXR1cm4gKCJjb252ZXJ0PGRvdWJsZT4oKnN0
YXRlLCAkdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObykiLCAxKSBpZiAkdHlwZSBlcSAi
ZG91YmxlIjsKLSAgICAgICAgcmV0dXJuICgiY29udmVydDxkb3VibGU+KCpzdGF0ZSwgJHZhbHVl
LCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKSIsIDEpIGlmICR0eXBlIGVxICJ1bnJlc3RyaWN0
ZWQgZG91YmxlIjsKLSAgICAgICAgcmV0dXJuICgiY29udmVydDxmbG9hdD4oKnN0YXRlLCAkdmFs
dWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObykiLCAxKSBpZiAkdHlwZSBlcSAiZmxvYXQiOwot
ICAgICAgICByZXR1cm4gKCJjb252ZXJ0PGZsb2F0Pigqc3RhdGUsICR2YWx1ZSwgU2hvdWxkQWxs
b3dOb25GaW5pdGU6OlllcykiLCAxKSBpZiAkdHlwZSBlcSAidW5yZXN0cmljdGVkIGZsb2F0IjsK
LSAgICAgICAgZGllICJVbmhhbmRsZWQgZmxvYXRpbmcgcG9pbnQgdHlwZTogIiAuICR0eXBlOwor
ICAgICAgICBteSAkYWxsb3dOb25GaW5pdGUgPSBTaG91bGRBbGxvd05vbkZpbml0ZUZvckZsb2F0
aW5nUG9pbnRUeXBlKCR0eXBlKSA/ICJTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzIiA6ICJTaG91
bGRBbGxvd05vbkZpbml0ZTo6Tm8iOworICAgICAgICBteSAkbmF0aXZlVHlwZSA9IEdldE5hdGl2
ZVR5cGUoJGludGVyZmFjZSwgJHR5cGUpOworICAgICAgICByZXR1cm4gKCJjb252ZXJ0PCRuYXRp
dmVUeXBlPigqc3RhdGUsICR2YWx1ZSwgJGFsbG93Tm9uRmluaXRlKSIsIDEpOwogICAgIH0KIAog
ICAgIHJldHVybiAoInZhbHVlVG9EYXRlKHN0YXRlLCAkdmFsdWUpIiwgMSkgaWYgJHR5cGUgZXEg
IkRhdGUiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0T2JqLmNwcAppbmRleCA5YTI0ZjE1Li5lY2JmNzgwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0T2JqLmNwcApAQCAt
NDU1LDcgKzQ1NSw3IEBAIHRlbXBsYXRlPD4gaW5saW5lIGNvbnN0IGNoYXIqIGV4cGVjdGVkRW51
bWVyYXRpb25WYWx1ZXM8VGVzdE9iajo6Q29uZmlkZW5jZT4oKQogdGVtcGxhdGU8PiBUZXN0T2Jq
OjpEaWN0aW9uYXJ5IGNvbnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeT4oRXhlY1N0YXRlJiBzdGF0
ZSwgSlNWYWx1ZSB2YWx1ZSkKIHsKICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWRPck51bGwoKSkK
LSAgICAgICAgcmV0dXJuIHsgeyB9LCBUZXN0T2JqOjpFbnVtVHlwZTo6RW51bVZhbHVlMSwgVGVz
dE9iajo6RW51bVR5cGU6OkVtcHR5U3RyaW5nLCAiZGVmYXVsdFN0cmluZyIsIHsgfSwgZmFsc2Us
IHsgfSwgeyB9IH07CisgICAgICAgIHJldHVybiB7IHsgfSwgVGVzdE9iajo6RW51bVR5cGU6OkVu
dW1WYWx1ZTEsIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZywgImRlZmF1bHRTdHJpbmci
LCB7IH0sIGZhbHNlLCB7IH0sIHsgfSwgeyB9LCB7IH0sIDAsIDAsIHsgfSwgeyB9LCAwLCAwIH07
CiAgICAgYXV0byogb2JqZWN0ID0gdmFsdWUuZ2V0T2JqZWN0KCk7CiAgICAgaWYgKFVOTElLRUxZ
KCFvYmplY3QgfHwgb2JqZWN0LT50eXBlKCkgPT0gUmVnRXhwT2JqZWN0VHlwZSkpIHsKICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoJnN0YXRlKTsKQEAgLTQ4Myw3ICs0ODMsMzEgQEAgdGVtcGxhdGU8
PiBUZXN0T2JqOjpEaWN0aW9uYXJ5IGNvbnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeT4oRXhlY1N0
YXRlJiBzdGF0ZSwgSlMKICAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQog
ICAgICAgICByZXR1cm4geyB9OwogICAgIGF1dG8gc2VxdWVuY2VPZlN0cmluZ3MgPSBjb252ZXJ0
T3B0aW9uYWw8VmVjdG9yPFN0cmluZz4+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50
aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAic2VxdWVuY2VPZlN0cmluZ3MiKSkpOwotICAgIHJl
dHVybiB7IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShl
bnVtZXJhdGlvblZhbHVlV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRo
RW1wdHlTdHJpbmdEZWZhdWx0KSwgV1RGTW92ZShzdHJpbmdXaXRoRGVmYXVsdCksIFdURk1vdmUo
c3RyaW5nV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRoRGVmYXVsdCksIFdURk1v
dmUoYm9vbGVhbldpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShzZXF1ZW5jZU9mU3RyaW5ncykgfTsK
KyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4g
eyB9OworICAgIGF1dG8gcmVzdHJpY3RlZERvdWJsZSA9IGNvbnZlcnRPcHRpb25hbDxkb3VibGU+
KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRl
LCAicmVzdHJpY3RlZERvdWJsZSIpKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vKTsKKyAgICBp
ZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9Owor
ICAgIGF1dG8gdW5yZXN0cmljdGVkRG91YmxlID0gY29udmVydE9wdGlvbmFsPGRvdWJsZT4oc3Rh
dGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1
bnJlc3RyaWN0ZWREb3VibGUiKSksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpOworICAgIGlm
IChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRpb24oKSkpCisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgYXV0byByZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0aW9uYWw8ZG91
YmxlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZz
dGF0ZSwgInJlc3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKSwgU2hvdWxkQWxsb3dOb25GaW5p
dGU6Ok5vLCAwKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAg
ICAgICByZXR1cm4geyB9OworICAgIGF1dG8gdW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQg
PSBjb252ZXJ0T3B0aW9uYWw8ZG91YmxlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0
IikpLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzLCAwKTsKKyAgICBpZiAoVU5MSUtFTFkoc3Rh
dGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gcmVzdHJp
Y3RlZEZsb2F0ID0gY29udmVydE9wdGlvbmFsPGZsb2F0PihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0
YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWRGbG9hdCIpKSwg
U2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhj
ZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gdW5yZXN0cmljdGVkRmxv
YXQgPSBjb252ZXJ0T3B0aW9uYWw8ZmxvYXQ+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRmxvYXQiKSksIFNob3Vs
ZEFsbG93Tm9uRmluaXRlOjpZZXMpOworICAgIGlmIChVTkxJS0VMWShzdGF0ZS5oYWRFeGNlcHRp
b24oKSkpCisgICAgICAgIHJldHVybiB7IH07CisgICAgYXV0byByZXN0cmljdGVkRmxvYXRXaXRo
RGVmYXVsdCA9IGNvbnZlcnRPcHRpb25hbDxmbG9hdD4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0
ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJyZXN0cmljdGVkRmxvYXRXaXRoRGVm
YXVsdCIpKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vLCAwKTsKKyAgICBpZiAoVU5MSUtFTFko
c3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gdW5y
ZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IGNvbnZlcnRPcHRpb25hbDxmbG9hdD4oc3RhdGUs
IG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJl
c3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0IikpLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzLCAw
KTsKKyAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRob3V0RGVmYXVsdCks
IFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KSwgV1RGTW92ZShlbnVtZXJhdGlv
blZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdURk1vdmUoc3RyaW5nV2l0aERlZmF1bHQp
LCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0aERlZmF1
bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVsdCksIFdURk1vdmUoc2VxdWVuY2VPZlN0
cmluZ3MpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZERv
dWJsZSksIFdURk1vdmUocmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJl
c3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0KSwgV1RG
TW92ZSh1bnJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUocmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1
bHQpLCBXVEZNb3ZlKHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQpIH07CiB9CiAKIHRlbXBs
YXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgY29udmVy
dDxUZXN0T2JqOjpEaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVsbD4oRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSB2YWx1ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9UZXN0T2JqLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbAppbmRleCA5ZmFlMzZlLi5lOWNiYjZlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCkBAIC0zOTEs
NiArMzkxLDE0IEBAIGRpY3Rpb25hcnkgVGVzdERpY3Rpb25hcnkgewogICAgIGJvb2xlYW4gYm9v
bGVhbldpdGhEZWZhdWx0ID0gZmFsc2U7CiAgICAgYm9vbGVhbiBib29sZWFuV2l0aG91dERlZmF1
bHQ7CiAgICAgc2VxdWVuY2U8RE9NU3RyaW5nPiBzZXF1ZW5jZU9mU3RyaW5nczsKKyAgICBkb3Vi
bGUgcmVzdHJpY3RlZERvdWJsZTsKKyAgICB1bnJlc3RyaWN0ZWQgZG91YmxlIHVucmVzdHJpY3Rl
ZERvdWJsZTsKKyAgICBkb3VibGUgcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0ID0gMDsKKyAg
ICB1bnJlc3RyaWN0ZWQgZG91YmxlIHVucmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0ID0gMDsK
KyAgICBmbG9hdCByZXN0cmljdGVkRmxvYXQ7CisgICAgdW5yZXN0cmljdGVkIGZsb2F0IHVucmVz
dHJpY3RlZEZsb2F0OworICAgIGZsb2F0IHJlc3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0ID0gMDsK
KyAgICB1bnJlc3RyaWN0ZWQgZmxvYXQgdW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IDA7
CiB9OwogCiBkaWN0aW9uYXJ5IFRlc3REaWN0aW9uYXJ5VGhhdFNob3VsZE5vdFRvbGVyYXRlTnVs
bCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggMmI1OWEzMy4uMjlmODcwYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtMTQ5Myw3ICsxNDkzLDEyIEBAIGRvdWJsZSBE
T01XaW5kb3c6OmRldmljZVBpeGVsUmF0aW8oKSBjb25zdAogICAgIHJldHVybiBwYWdlLT5kZXZp
Y2VTY2FsZUZhY3RvcigpOwogfQogCi12b2lkIERPTVdpbmRvdzo6c2Nyb2xsQnkoaW50IHgsIGlu
dCB5KSBjb25zdAordm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGNvbnN0IFNjcm9sbFRvT3B0aW9u
cyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICByZXR1cm4gc2Nyb2xsQnkob3B0aW9ucy5sZWZ0LnZh
bHVlT3IoMCksIG9wdGlvbnMudG9wLnZhbHVlT3IoMCkpOworfQorCit2b2lkIERPTVdpbmRvdzo6
c2Nyb2xsQnkoZG91YmxlIHgsIGRvdWJsZSB5KSBjb25zdAogewogICAgIGlmICghaXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1MDQsMTEgKzE1MDks
MjYgQEAgdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3QKICAgICBp
ZiAoIXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE5vcm1hbGl6ZSBub24tZmluaXRl
IHZhbHVlcyAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI25vcm1hbGl6ZS1u
b24tZmluaXRlLXZhbHVlcykuCisgICAgeCA9IHN0ZDo6aXNmaW5pdGUoeCkgPyB4IDogMDsKKyAg
ICB5ID0gc3RkOjppc2Zpbml0ZSh5KSA/IHkgOiAwOworCiAgICAgSW50U2l6ZSBzY2FsZWRPZmZz
ZXQodmlldy0+bWFwRnJvbUNTU1RvTGF5b3V0VW5pdHMoeCksIHZpZXctPm1hcEZyb21DU1NUb0xh
eW91dFVuaXRzKHkpKTsKICAgICB2aWV3LT5zZXRDb250ZW50c1Njcm9sbFBvc2l0aW9uKHZpZXct
PmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKSArIHNjYWxlZE9mZnNldCk7CiB9CiAKLXZvaWQgRE9N
V2luZG93OjpzY3JvbGxUbyhpbnQgeCwgaW50IHkpIGNvbnN0Cit2b2lkIERPTVdpbmRvdzo6c2Ny
b2xsVG8oY29uc3QgU2Nyb2xsVG9PcHRpb25zJiBvcHRpb25zKSBjb25zdAoreworICAgIFJlZlB0
cjxGcmFtZVZpZXc+IHZpZXcgPSBtX2ZyYW1lLT52aWV3KCk7CisgICAgaWYgKCF2aWV3KQorICAg
ICAgICByZXR1cm47CisKKyAgICBkb3VibGUgeCA9IG9wdGlvbnMubGVmdCA/IG9wdGlvbnMubGVm
dC52YWx1ZSgpIDogdmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpLngoKTsKKyAgICBkb3Vi
bGUgeSA9IG9wdGlvbnMudG9wID8gb3B0aW9ucy50b3AudmFsdWUoKSA6IHZpZXctPmNvbnRlbnRz
U2Nyb2xsUG9zaXRpb24oKS55KCk7CisgICAgcmV0dXJuIHNjcm9sbFRvKHgsIHkpOworfQorCit2
b2lkIERPTVdpbmRvdzo6c2Nyb2xsVG8oZG91YmxlIHgsIGRvdWJsZSB5KSBjb25zdAogewogICAg
IGlmICghaXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTE1MTcsNiArMTUzNywxMCBAQCB2b2lkIERPTVdpbmRvdzo6c2Nyb2xsVG8oaW50IHgsIGludCB5
KSBjb25zdAogICAgIGlmICghdmlldykKICAgICAgICAgcmV0dXJuOwogCisgICAgLy8gTm9ybWFs
aXplIG5vbi1maW5pdGUgdmFsdWVzIChodHRwczovL2RyYWZ0cy5jc3N3Zy5vcmcvY3Nzb20tdmll
dy8jbm9ybWFsaXplLW5vbi1maW5pdGUtdmFsdWVzKS4KKyAgICB4ID0gc3RkOjppc2Zpbml0ZSh4
KSA/IHggOiAwOworICAgIHkgPSBzdGQ6OmlzZmluaXRlKHkpID8geSA6IDA7CisKICAgICBpZiAo
IXggJiYgIXkgJiYgdmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpID09IEludFBvaW50KDAs
IDApKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCmluZGV4IGQ1M2Uy
YTMuLjRiMjRiOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaApAQCAtMjQ4LDkgKzI0OCwxNSBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZvaWQgcG9zdE1lc3NhZ2VUaW1lckZpcmVk
KFBvc3RNZXNzYWdlVGltZXImKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaE1lc3NhZ2VFdmVudFdp
dGhPcmlnaW5DaGVjayhTZWN1cml0eU9yaWdpbiogaW50ZW5kZWRUYXJnZXRPcmlnaW4sIEV2ZW50
JiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlNjcmlwdENhbGxTdGFjaz4pOwogCi0gICAgICAgIHZv
aWQgc2Nyb2xsQnkoaW50IHgsIGludCB5KSBjb25zdDsKLSAgICAgICAgdm9pZCBzY3JvbGxUbyhp
bnQgeCwgaW50IHkpIGNvbnN0OwotICAgICAgICB2b2lkIHNjcm9sbChpbnQgeCwgaW50IHkpIGNv
bnN0IHsgc2Nyb2xsVG8oeCwgeSk7IH0KKyAgICAgICAgc3RydWN0IFNjcm9sbFRvT3B0aW9ucyB7
CisgICAgICAgICAgICBPcHRpb25hbDxkb3VibGU+IGxlZnQ7CisgICAgICAgICAgICBPcHRpb25h
bDxkb3VibGU+IHRvcDsKKyAgICAgICAgfTsKKworICAgICAgICB2b2lkIHNjcm9sbEJ5KGNvbnN0
IFNjcm9sbFRvT3B0aW9ucyYpIGNvbnN0OworICAgICAgICB2b2lkIHNjcm9sbEJ5KGRvdWJsZSB4
LCBkb3VibGUgeSkgY29uc3Q7CisgICAgICAgIHZvaWQgc2Nyb2xsVG8oY29uc3QgU2Nyb2xsVG9P
cHRpb25zJikgY29uc3Q7CisgICAgICAgIHZvaWQgc2Nyb2xsVG8oZG91YmxlIHgsIGRvdWJsZSB5
KSBjb25zdDsKIAogICAgICAgICB2b2lkIG1vdmVCeShmbG9hdCB4LCBmbG9hdCB5KSBjb25zdDsK
ICAgICAgICAgdm9pZCBtb3ZlVG8oZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0RPTVdpbmRvdy5pZGwKaW5kZXggZTc3ODFhMy4uODUyNzFhNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmlkbApAQCAtMTAyLDkgKzEwMiwxMiBAQAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBs
b25nIHBhZ2VYT2Zmc2V0OwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHBhZ2VZT2Zmc2V0
OwogCi0gICAgdm9pZCBzY3JvbGxCeShvcHRpb25hbCBsb25nIHggPSAwLCBvcHRpb25hbCBsb25n
IHkgPSAwKTsKLSAgICB2b2lkIHNjcm9sbFRvKG9wdGlvbmFsIGxvbmcgeCA9IDAsIG9wdGlvbmFs
IGxvbmcgeSA9IDApOwotICAgIHZvaWQgc2Nyb2xsKG9wdGlvbmFsIGxvbmcgeCA9IDAsIG9wdGlv
bmFsIGxvbmcgeSA9IDApOworICAgIHZvaWQgc2Nyb2xsQnkob3B0aW9uYWwgU2Nyb2xsVG9PcHRp
b25zIG9wdGlvbik7CisgICAgdm9pZCBzY3JvbGxCeSh1bnJlc3RyaWN0ZWQgZG91YmxlIHgsIHVu
cmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgdm9pZCBzY3JvbGxUbyhvcHRpb25hbCBTY3JvbGxU
b09wdGlvbnMgb3B0aW9ucyk7CisgICAgdm9pZCBzY3JvbGxUbyh1bnJlc3RyaWN0ZWQgZG91Ymxl
IHgsIHVucmVzdHJpY3RlZCBkb3VibGUgeSk7CisgICAgW0ltcGxlbWVudGVkQXM9c2Nyb2xsVG9d
IHZvaWQgc2Nyb2xsKG9wdGlvbmFsIFNjcm9sbFRvT3B0aW9ucyBvcHRpb25zKTsKKyAgICBbSW1w
bGVtZW50ZWRBcz1zY3JvbGxUb10gdm9pZCBzY3JvbGwodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1
bnJlc3RyaWN0ZWQgZG91YmxlIHkpOwogICAgIHZvaWQgbW92ZUJ5KG9wdGlvbmFsIHVucmVzdHJp
Y3RlZCBmbG9hdCB4ID0gTmFOLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSA9IE5hTik7
IC8vIEZJWE1FOiB0aGlzIHNob3VsZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMuCiAgICAgdm9pZCBt
b3ZlVG8ob3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHggPSBOYU4sIG9wdGlvbmFsIHVucmVz
dHJpY3RlZCBmbG9hdCB5ID0gTmFOKTsgLy8gRklYTUU6IHRoaXMgc2hvdWxkIHRha2UgbG9uZ3Mg
bm90IGZsb2F0cy4KICAgICB2b2lkIHJlc2l6ZUJ5KG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9h
dCB4ID0gTmFOLCBvcHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSA9IE5hTik7IC8vIEZJWE1F
OiB0aGlzIHNob3VsZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMuCkBAIC0yMTcsNiArMjIwLDEyIEBA
CiAgICAgW05vdEVudW1lcmFibGUsIENvbmRpdGlvbmFsPVBST1hJTUlUWV9FVkVOVFNdIGF0dHJp
YnV0ZSBFdmVudEhhbmRsZXIgb253ZWJraXRkZXZpY2Vwcm94aW1pdHk7CiB9OwogCisvLyBGSVhN
RTogU3VwcG9ydCBTY3JvbGxCZWhhdmlvci4KK2RpY3Rpb25hcnkgU2Nyb2xsVG9PcHRpb25zIHsK
KyAgICB1bnJlc3RyaWN0ZWQgZG91YmxlIGxlZnQ7CisgICAgdW5yZXN0cmljdGVkIGRvdWJsZSB0
b3A7Cit9OworCiBET01XaW5kb3cgaW1wbGVtZW50cyBHbG9iYWxFdmVudEhhbmRsZXJzOwogRE9N
V2luZG93IGltcGxlbWVudHMgV2luZG93QmFzZTY0OwogRE9NV2luZG93IGltcGxlbWVudHMgV2lu
ZG93RXZlbnRIYW5kbGVyczsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>278855</attachid>
            <date>2016-05-13 11:27:12 -0700</date>
            <delta_ts>2016-05-13 19:09:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157666-20160513112804.patch</filename>
            <type>text/plain</type>
            <size>30815</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjAwODU4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2VkMjc5NjMwMTY5NmU1
ZTA2ZTM1M2Q1ODliMWRjNjkyYmQyMDcwMi4uOGNiY2NiNzUzOTY1NDYxM2IxZmI0OTc4Yjg0NTQ4
Y2M0YjJlOTFjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU3IEBACiAyMDE2LTA1LTEzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWxpZ24gd2luZG93LnNjcm9s
bCgpIC8gc2Nyb2xsVG8oKSAvIHNjcm9sbEJ5KCkgd2l0aCB0aGUgQ1NTT00gc3BlY2lmaWNhdGlv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY2
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxpZ24g
d2luZG93LnNjcm9sbCgpIC8gc2Nyb2xsVG8oKSAvIHNjcm9sbEJ5KCkgd2l0aCBGaXJlZm94IGFu
ZCB0aGUgQ1NTT00KKyAgICAgICAgc3BlY2lmaWNhdGlvbjoKKyAgICAgICAgaHR0cHM6Ly9kcmFm
dHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI2V4dGVuc2lvbnMtdG8tdGhlLXdpbmRvdy1pbnRlcmZh
Y2UKKworICAgICAgICBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9sbG93aW5nIGNoYW5nZXMgd2VyZSBt
YWRlOgorICAgICAgICAxLiBNYWtlIHBhcmFtZXRlcnMgdG8gc2Nyb2xsKCkgLyBzY3JvbGxUbygp
IC8gc2Nyb2xsQnkoKSBtYW5kYXRvcnkuCisgICAgICAgIDIuIEFkZCBvdmVybG9hZHMgZm9yIHNj
cm9sbCgpIC8gc2Nyb2xsVG8oKSAvIHNjcm9sbEJ5KCkgdGhhdCB0YWtlIGFuCisgICAgICAgICAg
IG9wdGlvbmFsIFNjcm9sbFRvT3B0aW9ucyBkaWN0aW9uYXJ5LgorICAgICAgICAzLiBVcGRhdGUg
QVBJIHRvIHVzZSAidW5yZXN0cmljdGVkIGRvdWJsZSIgdHlwaW5nIGZvciB4L3kgaW5zdGVhZCBv
ZgorICAgICAgICAgICAibG9uZyIuIFRoaXMgbWF0Y2hlcyB0aGUgc3BlY2lmaWNhdGlvbiBidXQg
aXQgZG9lcyBub3QgcmVhbGx5IGNoYW5nZQorICAgICAgICAgICBvdXIgYmVoYXZpb3IgYXQgdGhp
cyBwb2ludCBiZWNhdXNlIHRoZSB2YWx1ZXMgYXJlIHN0aWxsIGNhc3RlZCB0bworICAgICAgICAg
ICBpbnQgaW4gb3VyIGltcGxlbWVudGF0aW9uLgorCisgICAgICAgIFdlYi1FeHBvc2VkIGJlaGF2
aW9yIGNoYW5nZXM6CisgICAgICAgIDEuIEpTIGNhbiBub3cgcGFzcyBhIGRpY3Rpb25hcnkgdG8g
c2Nyb2xsKCkgLyBzY3JvbGxUbygpIC8gc2Nyb2xsQnkoKS4KKyAgICAgICAgICAgVGhpcyBhIG5l
dyBmZWF0dXJlIHRoYXQgRmlyZWZveCBhbHJlYWR5IHN1cHBvcnRzIChDaHJvbWUgZG9lcyBub3Qp
LgorICAgICAgICAyLiBQYXNzaW5nIG9ubHkgMSBwYXJhbWV0ZXIgdG8gc2Nyb2xsKCkgLyBzY3Jv
bGxUbygpIC8gc2Nyb2xsQnkoKSB0aGF0CisgICAgICAgICAgIGlzIG5vdCBhIGRpY3Rpb25hcnkg
d2lsbCBub3cgdGhyb3cgYSBUeXBlRXJyb3IuIFRoZSBjb21wYXRpYmlsaXR5CisgICAgICAgICAg
IHJpc2t5IHNob3VsZCBiZSBsb3cgYmVjYXVzZSBGaXJlZm94IGFuZCBDaHJvbWUgYWxyZWFkeSB0
aHJvdyBpbiB0aGlzCisgICAgICAgICAgIGNhc2UgKENocm9tZSBoYXMgYmVlbiB0aHJvd2luZyBm
b3IgMiB5ZWFycyBhbmQgYSBoYWxmKS4KKyAgICAgICAgMy4gQ2FsbGluZyBzY3JvbGxUbygpIC8g
c2Nyb2xsKCkgd2l0aG91dCBhbnkgcGFyYW1ldGVyIG5vIGxvbmdlcgorICAgICAgICAgICBzY3Jv
bGxzIHRvIDAuIEluc3RlYWQgd2UgdXNlIHRoZSBjdXJyZW50IHZpZXdwb3J0J3MgeC95IHdoaWNo
IG1lYW5zCisgICAgICAgICAgIHdlIGRvbid0IHNjcm9sbCBhdCBhbGwuIFRoZSBuZXcgYmVoYXZp
b3IgbWF0Y2hlcyBGaXJlZm94LCBDaHJvbWUgYW5kCisgICAgICAgICAgIElFIDExLiBUaGlzIGZp
eGVzIHNjcm9sbGluZyBvbiB0aGUgZm9sbG93aW5nIFdlYnNpdGU6CisgICAgICAgICAgIGh0dHBz
Oi8vbWVtYmVycy5jaG9zdW4uY29tL2Ntc19zdWJzY3JpYmUvYXBwbGljYXRpb24vaW5kZXguanNw
CisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBleHRlbmRlZCBleGlzdGluZyB0ZXN0aW5nLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0Lmg6CisgICAgICAgIChXZWJDb3JlOjpj
b252ZXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRPcHRpb25hbCk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgIChTaG91bGRBbGxv
d05vbkZpbml0ZUZvckZsb2F0aW5nUG9pbnRUeXBlKToKKyAgICAgICAgKEdlbmVyYXRlQ29udmVy
c2lvblJ1bGVXaXRoTGVhZGluZ0NvbW1hKToKKyAgICAgICAgKEdlbmVyYXRlRGljdGlvbmFyeUlt
cGxlbWVudGF0aW9uQ29udGVudCk6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Y29udmVydDxUZXN0T2JqOjpEaWN0aW9uYXJ5Pik6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsQnkpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NV2luZG93OjpzY3JvbGxUbyk6CisgICAgICAgICogcGFnZS9ET01XaW5kb3cuaDoKKyAg
ICAgICAgKiBwYWdlL0RPTVdpbmRvdy5pZGw6CisKKzIwMTYtMDUtMTMgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KKwogICAgICAgICBIYXZlIHRoZSBXb3JrZXJHbG9iYWxTY29wZSBB
UEkgcmV0dXJuIG1vcmUgcmVmZXJlbmNlcwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjYzCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRE9NQ29udmVydC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
T01Db252ZXJ0LmgKaW5kZXggYmIzZTYyZTJiZjc5MmNjYzNmZTdjMWNmNjk0Y2UxYjA5MzZjYWVi
YS4uNTU0NDgzMjk3MDhkY2MxOTcxMmNlNmJiZGVhZjIyYWU2M2NlYmUxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0LmgKQEAgLTMyLDcgKzMyLDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBlbnVtIGNsYXNzIFNob3VsZEFsbG93Tm9uRmluaXRlIHsgTm8sIFll
cyB9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiBzdHJ1Y3QgQ29udmVydGVyOwordGVtcGxhdGU8
dHlwZW5hbWUgVCwgdHlwZW5hbWUgRW5hYmxlID0gdm9pZD4gc3RydWN0IENvbnZlcnRlcjsKIAog
dGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlKTsKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFQgY29udmVydChKU0M6OkV4ZWNTdGF0ZSYsIEpT
Qzo6SlNWYWx1ZSwgSW50ZWdlckNvbnZlcnNpb25Db25maWd1cmF0aW9uKTsKQEAgLTQxLDYgKzQx
LDkgQEAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiwgSlND
OjpKU1ZhbHVlLCBTaG91bGRBbGxvd05vbkZpbmkKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVu
YW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVj
U3RhdGUmLCBKU0M6OkpTVmFsdWUpOwogdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4g
VCBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVjU3RhdGUmLCBKU0M6OkpTVmFsdWUsIFUmJiBkZWZh
dWx0VmFsdWUpOwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBDb252ZXJ0ZXI8VD46
Ok9wdGlvbmFsVmFsdWUgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiwgSlNDOjpKU1Zh
bHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSk7Cit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBVPiBUIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYsIEpTQzo6SlNWYWx1ZSwgU2hv
dWxkQWxsb3dOb25GaW5pdGUsIFUmJiBkZWZhdWx0VmFsdWUpOworCiAvLyBUaGlzIGlzIHdoZXJl
IHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgdGhpbmdzIGRlY2xhcmVkIGFib3ZlIGJlZ2luczoK
IAogdGVtcGxhdGU8dHlwZW5hbWUgVD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwg
SlNDOjpKU1ZhbHVlIHZhbHVlKQpAQCAtNTYsMTAgKzU5LDcgQEAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gVCBjb252ZXJ0KEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBJ
bnRlZ2UKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGlubGluZSBUIGNvbnZlcnQoSlNDOjpFeGVjU3Rh
dGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgdmFsdWUsIFNob3VsZEFsbG93Tm9uRmluaXRlIGFsbG93
KQogewogICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19zYW1lPFQsIGZsb2F0Pjo6dmFsdWUgfHwg
c3RkOjppc19zYW1lPFQsIGRvdWJsZT46OnZhbHVlLCAiU2hvdWxkQWxsb3dOb25GaW5pdGUgY2Fu
IG9ubHkgYmUgdXNlZCB3aXRoIGZsb2F0IG9yIGRvdWJsZSIpOwotICAgIGRvdWJsZSBudW1iZXIg
PSB2YWx1ZS50b051bWJlcigmc3RhdGUpOwotICAgIGlmIChhbGxvdyA9PSBTaG91bGRBbGxvd05v
bkZpbml0ZTo6Tm8gJiYgVU5MSUtFTFkoIXN0ZDo6aXNmaW5pdGUobnVtYmVyKSkpCi0gICAgICAg
IHRocm93Tm9uRmluaXRlVHlwZUVycm9yKHN0YXRlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
VD4obnVtYmVyKTsKKyAgICByZXR1cm4gQ29udmVydGVyPFQ+Ojpjb252ZXJ0KHN0YXRlLCB2YWx1
ZSwgYWxsb3cpOwogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0eXBlbmFtZSBDb252ZXJ0ZXI8
VD46Ok9wdGlvbmFsVmFsdWUgaW5saW5lIGNvbnZlcnRPcHRpb25hbChKU0M6OkV4ZWNTdGF0ZSYg
c3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSkKQEAgLTcyLDExICs3MiwyMSBAQCB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPiBpbmxpbmUgVCBjb252ZXJ0T3B0aW9uYWwoSlNDOjpFeGVj
U3RhdGUmIHN0YXRlLAogICAgIHJldHVybiB2YWx1ZS5pc1VuZGVmaW5lZCgpID8gc3RkOjpmb3J3
YXJkPFU+KGRlZmF1bHRWYWx1ZSkgOiBjb252ZXJ0PFQ+KHN0YXRlLCB2YWx1ZSk7CiB9CiAKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSBp
bmxpbmUgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBzdGF0ZSwgSlNDOjpKU1ZhbHVl
IHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdykKK3sKKyAgICByZXR1cm4gdmFsdWUu
aXNVbmRlZmluZWQoKSA/IHR5cGVuYW1lIENvbnZlcnRlcjxUPjo6T3B0aW9uYWxWYWx1ZSgpIDog
Y29udmVydDxUPihzdGF0ZSwgdmFsdWUsIGFsbG93KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUg
VCwgdHlwZW5hbWUgVT4gaW5saW5lIFQgY29udmVydE9wdGlvbmFsKEpTQzo6RXhlY1N0YXRlJiBz
dGF0ZSwgSlNDOjpKU1ZhbHVlIHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZSBhbGxvdywgVSYm
IGRlZmF1bHRWYWx1ZSkKK3sKKyAgICByZXR1cm4gdmFsdWUuaXNVbmRlZmluZWQoKSA/IHN0ZDo6
Zm9yd2FyZDxVPihkZWZhdWx0VmFsdWUpIDogY29udmVydDxUPihzdGF0ZSwgdmFsdWUsIGFsbG93
KTsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IERlZmF1bHRDb252ZXJ0ZXIgewog
ICAgIHVzaW5nIE9wdGlvbmFsVmFsdWUgPSBPcHRpb25hbDxUPjsKIH07CiAKLXRlbXBsYXRlPHR5
cGVuYW1lIFQ+IHN0cnVjdCBDb252ZXJ0ZXIgOiBEZWZhdWx0Q29udmVydGVyPFQ+IHsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEVuYWJsZT4gc3RydWN0IENvbnZlcnRlciA6IERlZmF1
bHRDb252ZXJ0ZXI8VD4gewogfTsKIAogdGVtcGxhdGU8PiBzdHJ1Y3QgQ29udmVydGVyPGJvb2w+
IDogRGVmYXVsdENvbnZlcnRlcjxib29sPiB7CkBAIC0yMjgsNCArMjM4LDE0IEBAIHRlbXBsYXRl
PD4gc3RydWN0IENvbnZlcnRlcjx1aW50NjRfdD4gOiBEZWZhdWx0Q29udmVydGVyPHVpbnQ2NF90
PiB7CiAgICAgfQogfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVD4gc3RydWN0IENvbnZlcnRlcjxU
LCB0eXBlbmFtZSBzdGQ6OmVuYWJsZV9pZjxzdGQ6OmlzX2Zsb2F0aW5nX3BvaW50PFQ+Ojp2YWx1
ZT46OnR5cGU+IDogRGVmYXVsdENvbnZlcnRlcjxUPiB7CisgICAgc3RhdGljIFQgY29udmVydChK
U0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSB2YWx1ZSwgU2hvdWxkQWxsb3dOb25G
aW5pdGUgYWxsb3cpCisgICAgeworICAgICAgICBkb3VibGUgbnVtYmVyID0gdmFsdWUudG9OdW1i
ZXIoJnN0YXRlKTsKKyAgICAgICAgaWYgKGFsbG93ID09IFNob3VsZEFsbG93Tm9uRmluaXRlOjpO
byAmJiBVTkxJS0VMWSghc3RkOjppc2Zpbml0ZShudW1iZXIpKSkKKyAgICAgICAgICAgIHRocm93
Tm9uRmluaXRlVHlwZUVycm9yKHN0YXRlKTsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQ+
KG51bWJlcik7CisgICAgfQorfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQppbmRleCA1
ZjY1ZDFlYzRlZjIxYjU4MjgwMDQ4YWQ2ZTY0YzE5ZDRkMWI0Njc3Li5mY2YxZmJjZGRkNWRhNTIw
NGI5YjJlMmY4NzgwNmM4ZjRkN2Q3OTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbQpAQCAtOTU4LDYgKzk1OCwyNSBAQCBzdWIg
R2VuZXJhdGVEZWZhdWx0VmFsdWUKICAgICByZXR1cm4gJHZhbHVlOwogfQogCitzdWIgU2hvdWxk
QWxsb3dOb25GaW5pdGVGb3JGbG9hdGluZ1BvaW50VHlwZQoreworICAgIG15ICR0eXBlID0gc2hp
ZnQ7CisKKyAgICBkaWUgIkNhbiBvbmx5IGJlIGNhbGxlZCB3aXRoIGZsb2F0aW5nIHBvaW50IHR5
cGVzIiB1bmxlc3MgJGNvZGVHZW5lcmF0b3ItPklzRmxvYXRpbmdQb2ludFR5cGUoJHR5cGUpOwor
ICAgIHJldHVybiAkdHlwZSBlcSAidW5yZXN0cmljdGVkIGRvdWJsZSIgfHwgJHR5cGUgZXEgInVu
cmVzdHJpY3RlZCBmbG9hdCI7Cit9CisKK3N1YiBHZW5lcmF0ZUNvbnZlcnNpb25SdWxlV2l0aExl
YWRpbmdDb21tYQoreworICAgIG15ICgkaW50ZXJmYWNlLCAkbWVtYmVyKSA9IEBfOworCisgICAg
aWYgKCRjb2RlR2VuZXJhdG9yLT5Jc0Zsb2F0aW5nUG9pbnRUeXBlKCRtZW1iZXItPnR5cGUpKSB7
CisgICAgICAgIHJldHVybiAiLCAiIC4gKFNob3VsZEFsbG93Tm9uRmluaXRlRm9yRmxvYXRpbmdQ
b2ludFR5cGUoJG1lbWJlci0+dHlwZSkgPyAiU2hvdWxkQWxsb3dOb25GaW5pdGU6OlllcyIgOiAi
U2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vIik7CisgICAgfQorICAgICMgRklYTUU6IEFkZCBzdXBw
b3J0IGZvciBpbnRlZ2VyIHR5cGVzLgorICAgIHJldHVybiAiIjsKK30KKwogc3ViIEdlbmVyYXRl
RGVmYXVsdFZhbHVlV2l0aExlYWRpbmdDb21tYQogewogICAgIG15ICgkaW50ZXJmYWNlLCAkbWVt
YmVyKSA9IEBfOwpAQCAtMTAxMSw5ICsxMDMwLDkgQEAgc3ViIEdlbmVyYXRlRGljdGlvbmFyeUlt
cGxlbWVudGF0aW9uQ29udGVudAogICAgICAgICAgICAgfQogICAgICAgICAgICAgIyBGSVhNRTog
RXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdGhpcyB0byBzaGFyZSBhIGxvdCBtb3JlIGNvZGUgd2l0
aCBKU1ZhbHVlVG9OYXRpdmUuCiAgICAgICAgICAgICBteSAkZnVuY3Rpb24gPSAkbWVtYmVyLT5p
c09wdGlvbmFsID8gImNvbnZlcnRPcHRpb25hbCIgOiAiY29udmVydCI7Ci0gICAgICAgICAgICBt
eSAkZGVmYXVsdFZhbHVlV2l0aExlYWRpbmdDb21tYSA9ICRtZW1iZXItPmlzT3B0aW9uYWwgJiYg
ZGVmaW5lZCAkbWVtYmVyLT5kZWZhdWx0ID8gIiwgIiAuICRtZW1iZXItPmRlZmF1bHQgOiAiIjsK
ICAgICAgICAgICAgICRyZXN1bHQgLj0gIiAgICBhdXRvICIgLiAkbWVtYmVyLT5uYW1lIC4gIiA9
ICIgLiAkZnVuY3Rpb24gLiAiPCIgLiBHZXROYXRpdmVUeXBlRnJvbVNpZ25hdHVyZSgkaW50ZXJm
YWNlLCAkbWVtYmVyKSAuICI+IgogICAgICAgICAgICAgICAgIC4gIihzdGF0ZSwgb2JqZWN0LT5n
ZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgXCIiIC4gJG1lbWJlci0+
bmFtZSAuICJcIikpIgorICAgICAgICAgICAgICAgIC4gR2VuZXJhdGVDb252ZXJzaW9uUnVsZVdp
dGhMZWFkaW5nQ29tbWEoJGludGVyZmFjZSwgJG1lbWJlcikKICAgICAgICAgICAgICAgICAuIEdl
bmVyYXRlRGVmYXVsdFZhbHVlV2l0aExlYWRpbmdDb21tYSgkaW50ZXJmYWNlLCAkbWVtYmVyKSAu
ICIpO1xuIjsKICAgICAgICAgICAgICRuZWVkRXhjZXB0aW9uQ2hlY2sgPSAxOwogICAgICAgICB9
CkBAIC00NDI1LDExICs0NDQ0LDkgQEAgc3ViIEpTVmFsdWVUb05hdGl2ZQogCiAgICAgaWYgKCRj
b2RlR2VuZXJhdG9yLT5Jc0Zsb2F0aW5nUG9pbnRUeXBlKCR0eXBlKSkgewogICAgICAgICBBZGRU
b0ltcGxJbmNsdWRlcygiSlNET01Db252ZXJ0LmgiKTsKLSAgICAgICAgcmV0dXJuICgiY29udmVy
dDxkb3VibGU+KCpzdGF0ZSwgJHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pIiwgMSkg
aWYgJHR5cGUgZXEgImRvdWJsZSI7Ci0gICAgICAgIHJldHVybiAoImNvbnZlcnQ8ZG91YmxlPigq
c3RhdGUsICR2YWx1ZSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6OlllcykiLCAxKSBpZiAkdHlwZSBl
cSAidW5yZXN0cmljdGVkIGRvdWJsZSI7Ci0gICAgICAgIHJldHVybiAoImNvbnZlcnQ8ZmxvYXQ+
KCpzdGF0ZSwgJHZhbHVlLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6Tm8pIiwgMSkgaWYgJHR5cGUg
ZXEgImZsb2F0IjsKLSAgICAgICAgcmV0dXJuICgiY29udmVydDxmbG9hdD4oKnN0YXRlLCAkdmFs
dWUsIFNob3VsZEFsbG93Tm9uRmluaXRlOjpZZXMpIiwgMSkgaWYgJHR5cGUgZXEgInVucmVzdHJp
Y3RlZCBmbG9hdCI7Ci0gICAgICAgIGRpZSAiVW5oYW5kbGVkIGZsb2F0aW5nIHBvaW50IHR5cGU6
ICIgLiAkdHlwZTsKKyAgICAgICAgbXkgJGFsbG93Tm9uRmluaXRlID0gU2hvdWxkQWxsb3dOb25G
aW5pdGVGb3JGbG9hdGluZ1BvaW50VHlwZSgkdHlwZSkgPyAiU2hvdWxkQWxsb3dOb25GaW5pdGU6
OlllcyIgOiAiU2hvdWxkQWxsb3dOb25GaW5pdGU6Ok5vIjsKKyAgICAgICAgbXkgJG5hdGl2ZVR5
cGUgPSBHZXROYXRpdmVUeXBlKCRpbnRlcmZhY2UsICR0eXBlKTsKKyAgICAgICAgcmV0dXJuICgi
Y29udmVydDwkbmF0aXZlVHlwZT4oKnN0YXRlLCAkdmFsdWUsICRhbGxvd05vbkZpbml0ZSkiLCAx
KTsKICAgICB9CiAKICAgICByZXR1cm4gKCJ2YWx1ZVRvRGF0ZShzdGF0ZSwgJHZhbHVlKSIsIDEp
IGlmICR0eXBlIGVxICJEYXRlIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggOWEyNGYxNWNjY2RmZWVjZjY3ZWY4
MGI2NzZmMjk3NDMwMDQyNjExMy4uZWNiZjc4MDBiMzI1Y2IyNTE3Mzc2MzkwZTU3NzdjYWI5YWQ0
Yzk1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pT
L0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L0pTL0pTVGVzdE9iai5jcHAKQEAgLTQ1NSw3ICs0NTUsNyBAQCB0ZW1wbGF0ZTw+IGlubGluZSBj
b25zdCBjaGFyKiBleHBlY3RlZEVudW1lcmF0aW9uVmFsdWVzPFRlc3RPYmo6OkNvbmZpZGVuY2U+
KCkKIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0PFRlc3RPYmo6OkRpY3Rp
b25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCiB7CiAgICAgaWYgKHZhbHVl
LmlzVW5kZWZpbmVkT3JOdWxsKCkpCi0gICAgICAgIHJldHVybiB7IHsgfSwgVGVzdE9iajo6RW51
bVR5cGU6OkVudW1WYWx1ZTEsIFRlc3RPYmo6OkVudW1UeXBlOjpFbXB0eVN0cmluZywgImRlZmF1
bHRTdHJpbmciLCB7IH0sIGZhbHNlLCB7IH0sIHsgfSB9OworICAgICAgICByZXR1cm4geyB7IH0s
IFRlc3RPYmo6OkVudW1UeXBlOjpFbnVtVmFsdWUxLCBUZXN0T2JqOjpFbnVtVHlwZTo6RW1wdHlT
dHJpbmcsICJkZWZhdWx0U3RyaW5nIiwgeyB9LCBmYWxzZSwgeyB9LCB7IH0sIHsgfSwgeyB9LCAw
LCAwLCB7IH0sIHsgfSwgMCwgMCB9OwogICAgIGF1dG8qIG9iamVjdCA9IHZhbHVlLmdldE9iamVj
dCgpOwogICAgIGlmIChVTkxJS0VMWSghb2JqZWN0IHx8IG9iamVjdC0+dHlwZSgpID09IFJlZ0V4
cE9iamVjdFR5cGUpKSB7CiAgICAgICAgIHRocm93VHlwZUVycm9yKCZzdGF0ZSk7CkBAIC00ODMs
NyArNDgzLDMxIEBAIHRlbXBsYXRlPD4gVGVzdE9iajo6RGljdGlvbmFyeSBjb252ZXJ0PFRlc3RP
Ymo6OkRpY3Rpb25hcnk+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTCiAgICAgaWYgKFVOTElLRUxZKHN0
YXRlLmhhZEV4Y2VwdGlvbigpKSkKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBhdXRvIHNlcXVl
bmNlT2ZTdHJpbmdzID0gY29udmVydE9wdGlvbmFsPFZlY3RvcjxTdHJpbmc+PihzdGF0ZSwgb2Jq
ZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInNlcXVlbmNl
T2ZTdHJpbmdzIikpKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRo
b3V0RGVmYXVsdCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhEZWZhdWx0KSwgV1RGTW92
ZShlbnVtZXJhdGlvblZhbHVlV2l0aEVtcHR5U3RyaW5nRGVmYXVsdCksIFdURk1vdmUoc3RyaW5n
V2l0aERlZmF1bHQpLCBXVEZNb3ZlKHN0cmluZ1dpdGhvdXREZWZhdWx0KSwgV1RGTW92ZShib29s
ZWFuV2l0aERlZmF1bHQpLCBXVEZNb3ZlKGJvb2xlYW5XaXRob3V0RGVmYXVsdCksIFdURk1vdmUo
c2VxdWVuY2VPZlN0cmluZ3MpIH07CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlv
bigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHJlc3RyaWN0ZWREb3VibGUgPSBj
b252ZXJ0T3B0aW9uYWw8ZG91YmxlPihzdGF0ZSwgb2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInJlc3RyaWN0ZWREb3VibGUiKSksIFNob3VsZEFsbG93
Tm9uRmluaXRlOjpObyk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkK
KyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHVucmVzdHJpY3RlZERvdWJsZSA9IGNvbnZl
cnRPcHRpb25hbDxkb3VibGU+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6
OmZyb21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRG91YmxlIikpLCBTaG91bGRBbGxvd05v
bkZpbml0ZTo6WWVzKTsKKyAgICBpZiAoVU5MSUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQor
ICAgICAgICByZXR1cm4geyB9OworICAgIGF1dG8gcmVzdHJpY3RlZERvdWJsZVdpdGhEZWZhdWx0
ID0gY29udmVydE9wdGlvbmFsPGRvdWJsZT4oc3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJyZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQi
KSksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObywgMCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRl
LmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICBhdXRvIHVucmVzdHJp
Y3RlZERvdWJsZVdpdGhEZWZhdWx0ID0gY29udmVydE9wdGlvbmFsPGRvdWJsZT4oc3RhdGUsIG9i
amVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUsICJ1bnJlc3Ry
aWN0ZWREb3VibGVXaXRoRGVmYXVsdCIpKSwgU2hvdWxkQWxsb3dOb25GaW5pdGU6OlllcywgMCk7
CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICBhdXRvIHJlc3RyaWN0ZWRGbG9hdCA9IGNvbnZlcnRPcHRpb25hbDxmbG9hdD4o
c3RhdGUsIG9iamVjdC0+Z2V0KCZzdGF0ZSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZygmc3RhdGUs
ICJyZXN0cmljdGVkRmxvYXQiKSksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObyk7CisgICAgaWYg
KFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0ID0gY29udmVydE9wdGlvbmFsPGZsb2F0PihzdGF0ZSwg
b2JqZWN0LT5nZXQoJnN0YXRlLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKCZzdGF0ZSwgInVucmVz
dHJpY3RlZEZsb2F0IikpLCBTaG91bGRBbGxvd05vbkZpbml0ZTo6WWVzKTsKKyAgICBpZiAoVU5M
SUtFTFkoc3RhdGUuaGFkRXhjZXB0aW9uKCkpKQorICAgICAgICByZXR1cm4geyB9OworICAgIGF1
dG8gcmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0T3B0aW9uYWw8ZmxvYXQ+KHN0
YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZyb21TdHJpbmcoJnN0YXRlLCAi
cmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQiKSksIFNob3VsZEFsbG93Tm9uRmluaXRlOjpObywg
MCk7CisgICAgaWYgKFVOTElLRUxZKHN0YXRlLmhhZEV4Y2VwdGlvbigpKSkKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICBhdXRvIHVucmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSBjb252ZXJ0
T3B0aW9uYWw8ZmxvYXQ+KHN0YXRlLCBvYmplY3QtPmdldCgmc3RhdGUsIElkZW50aWZpZXI6OmZy
b21TdHJpbmcoJnN0YXRlLCAidW5yZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCIpKSwgU2hvdWxk
QWxsb3dOb25GaW5pdGU6OlllcywgMCk7CisgICAgcmV0dXJuIHsgV1RGTW92ZShlbnVtZXJhdGlv
blZhbHVlV2l0aG91dERlZmF1bHQpLCBXVEZNb3ZlKGVudW1lcmF0aW9uVmFsdWVXaXRoRGVmYXVs
dCksIFdURk1vdmUoZW51bWVyYXRpb25WYWx1ZVdpdGhFbXB0eVN0cmluZ0RlZmF1bHQpLCBXVEZN
b3ZlKHN0cmluZ1dpdGhEZWZhdWx0KSwgV1RGTW92ZShzdHJpbmdXaXRob3V0RGVmYXVsdCksIFdU
Rk1vdmUoYm9vbGVhbldpdGhEZWZhdWx0KSwgV1RGTW92ZShib29sZWFuV2l0aG91dERlZmF1bHQp
LCBXVEZNb3ZlKHNlcXVlbmNlT2ZTdHJpbmdzKSwgV1RGTW92ZShyZXN0cmljdGVkRG91YmxlKSwg
V1RGTW92ZSh1bnJlc3RyaWN0ZWREb3VibGUpLCBXVEZNb3ZlKHJlc3RyaWN0ZWREb3VibGVXaXRo
RGVmYXVsdCksIFdURk1vdmUodW5yZXN0cmljdGVkRG91YmxlV2l0aERlZmF1bHQpLCBXVEZNb3Zl
KHJlc3RyaWN0ZWRGbG9hdCksIFdURk1vdmUodW5yZXN0cmljdGVkRmxvYXQpLCBXVEZNb3ZlKHJl
c3RyaWN0ZWRGbG9hdFdpdGhEZWZhdWx0KSwgV1RGTW92ZSh1bnJlc3RyaWN0ZWRGbG9hdFdpdGhE
ZWZhdWx0KSB9OwogfQogCiB0ZW1wbGF0ZTw+IFRlc3RPYmo6OkRpY3Rpb25hcnlUaGF0U2hvdWxk
Tm90VG9sZXJhdGVOdWxsIGNvbnZlcnQ8VGVzdE9iajo6RGljdGlvbmFyeVRoYXRTaG91bGROb3RU
b2xlcmF0ZU51bGw+KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgdmFsdWUpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVGVzdE9iai5pZGwKaW5kZXggOWZhZTM2
ZThiNzJkNThhM2RlODI5ZTJiNWJmYmFmODY4NWUyYWRlMC4uZTljYmI2ZTBkOTJkNjU1MjViZTE5
NGIxNmIwMjZjMDg3NTE3N2FjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Rlc3RPYmouaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9UZXN0T2JqLmlkbApAQCAtMzkxLDYgKzM5MSwxNCBAQCBkaWN0aW9uYXJ5IFRl
c3REaWN0aW9uYXJ5IHsKICAgICBib29sZWFuIGJvb2xlYW5XaXRoRGVmYXVsdCA9IGZhbHNlOwog
ICAgIGJvb2xlYW4gYm9vbGVhbldpdGhvdXREZWZhdWx0OwogICAgIHNlcXVlbmNlPERPTVN0cmlu
Zz4gc2VxdWVuY2VPZlN0cmluZ3M7CisgICAgZG91YmxlIHJlc3RyaWN0ZWREb3VibGU7CisgICAg
dW5yZXN0cmljdGVkIGRvdWJsZSB1bnJlc3RyaWN0ZWREb3VibGU7CisgICAgZG91YmxlIHJlc3Ry
aWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IDA7CisgICAgdW5yZXN0cmljdGVkIGRvdWJsZSB1bnJl
c3RyaWN0ZWREb3VibGVXaXRoRGVmYXVsdCA9IDA7CisgICAgZmxvYXQgcmVzdHJpY3RlZEZsb2F0
OworICAgIHVucmVzdHJpY3RlZCBmbG9hdCB1bnJlc3RyaWN0ZWRGbG9hdDsKKyAgICBmbG9hdCBy
ZXN0cmljdGVkRmxvYXRXaXRoRGVmYXVsdCA9IDA7CisgICAgdW5yZXN0cmljdGVkIGZsb2F0IHVu
cmVzdHJpY3RlZEZsb2F0V2l0aERlZmF1bHQgPSAwOwogfTsKIAogZGljdGlvbmFyeSBUZXN0RGlj
dGlvbmFyeVRoYXRTaG91bGROb3RUb2xlcmF0ZU51bGwgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cu
Y3BwCmluZGV4IDJiNTlhMzMyNGFmNzNjZDY1NTZlOWM2Yzc4ZGJlOTE4YmYwYzJjZWEuLjI5Zjg3
MGI1YjYyZmM4YzJmODRlMWRhMjBjNmIzYzc1M2Q5ZjZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdp
bmRvdy5jcHAKQEAgLTE0OTMsNyArMTQ5MywxMiBAQCBkb3VibGUgRE9NV2luZG93OjpkZXZpY2VQ
aXhlbFJhdGlvKCkgY29uc3QKICAgICByZXR1cm4gcGFnZS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsK
IH0KIAotdm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGludCB4LCBpbnQgeSkgY29uc3QKK3ZvaWQg
RE9NV2luZG93OjpzY3JvbGxCeShjb25zdCBTY3JvbGxUb09wdGlvbnMmIG9wdGlvbnMpIGNvbnN0
Cit7CisgICAgcmV0dXJuIHNjcm9sbEJ5KG9wdGlvbnMubGVmdC52YWx1ZU9yKDApLCBvcHRpb25z
LnRvcC52YWx1ZU9yKDApKTsKK30KKwordm9pZCBET01XaW5kb3c6OnNjcm9sbEJ5KGRvdWJsZSB4
LCBkb3VibGUgeSkgY29uc3QKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5RGlzcGxheWVkSW5GcmFt
ZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTA0LDExICsxNTA5LDI2IEBAIHZvaWQgRE9NV2lu
ZG93OjpzY3JvbGxCeShpbnQgeCwgaW50IHkpIGNvbnN0CiAgICAgaWYgKCF2aWV3KQogICAgICAg
ICByZXR1cm47CiAKKyAgICAvLyBOb3JtYWxpemUgbm9uLWZpbml0ZSB2YWx1ZXMgKGh0dHBzOi8v
ZHJhZnRzLmNzc3dnLm9yZy9jc3NvbS12aWV3LyNub3JtYWxpemUtbm9uLWZpbml0ZS12YWx1ZXMp
LgorICAgIHggPSBzdGQ6OmlzZmluaXRlKHgpID8geCA6IDA7CisgICAgeSA9IHN0ZDo6aXNmaW5p
dGUoeSkgPyB5IDogMDsKKwogICAgIEludFNpemUgc2NhbGVkT2Zmc2V0KHZpZXctPm1hcEZyb21D
U1NUb0xheW91dFVuaXRzKHgpLCB2aWV3LT5tYXBGcm9tQ1NTVG9MYXlvdXRVbml0cyh5KSk7CiAg
ICAgdmlldy0+c2V0Q29udGVudHNTY3JvbGxQb3NpdGlvbih2aWV3LT5jb250ZW50c1Njcm9sbFBv
c2l0aW9uKCkgKyBzY2FsZWRPZmZzZXQpOwogfQogCi12b2lkIERPTVdpbmRvdzo6c2Nyb2xsVG8o
aW50IHgsIGludCB5KSBjb25zdAordm9pZCBET01XaW5kb3c6OnNjcm9sbFRvKGNvbnN0IFNjcm9s
bFRvT3B0aW9ucyYgb3B0aW9ucykgY29uc3QKK3sKKyAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3
ID0gbV9mcmFtZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuOworCisg
ICAgZG91YmxlIHggPSBvcHRpb25zLmxlZnQgPyBvcHRpb25zLmxlZnQudmFsdWUoKSA6IHZpZXct
PmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAgZG91YmxlIHkgPSBvcHRpb25zLnRv
cCA/IG9wdGlvbnMudG9wLnZhbHVlKCkgOiB2aWV3LT5jb250ZW50c1Njcm9sbFBvc2l0aW9uKCku
eSgpOworICAgIHJldHVybiBzY3JvbGxUbyh4LCB5KTsKK30KKwordm9pZCBET01XaW5kb3c6OnNj
cm9sbFRvKGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3QKIHsKICAgICBpZiAoIWlzQ3VycmVudGx5
RGlzcGxheWVkSW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTE3LDYgKzE1MzcsMTAg
QEAgdm9pZCBET01XaW5kb3c6OnNjcm9sbFRvKGludCB4LCBpbnQgeSkgY29uc3QKICAgICBpZiAo
IXZpZXcpCiAgICAgICAgIHJldHVybjsKIAorICAgIC8vIE5vcm1hbGl6ZSBub24tZmluaXRlIHZh
bHVlcyAoaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzc29tLXZpZXcvI25vcm1hbGl6ZS1ub24t
ZmluaXRlLXZhbHVlcykuCisgICAgeCA9IHN0ZDo6aXNmaW5pdGUoeCkgPyB4IDogMDsKKyAgICB5
ID0gc3RkOjppc2Zpbml0ZSh5KSA/IHkgOiAwOworCiAgICAgaWYgKCF4ICYmICF5ICYmIHZpZXct
PmNvbnRlbnRzU2Nyb2xsUG9zaXRpb24oKSA9PSBJbnRQb2ludCgwLCAwKSkKICAgICAgICAgcmV0
dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaAppbmRleCBkNTNlMmEzODJkMDYyNDdlMWE5NjM0
OGYzNWQ4ZjRhOThjMmU3ZWE2Li40YjI0Yjk5ODEzNzczMjc2MzhiNjRlNjg3ZDc1ZmUyZmQ4ZDg3
MmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmgKQEAgLTI0OCw5ICsyNDgsMTUgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2b2lkIHBvc3RNZXNzYWdlVGltZXJGaXJlZChQb3N0TWVz
c2FnZVRpbWVyJik7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hNZXNzYWdlRXZlbnRXaXRoT3JpZ2lu
Q2hlY2soU2VjdXJpdHlPcmlnaW4qIGludGVuZGVkVGFyZ2V0T3JpZ2luLCBFdmVudCYsIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpTY3JpcHRDYWxsU3RhY2s+KTsKIAotICAgICAgICB2b2lkIHNjcm9s
bEJ5KGludCB4LCBpbnQgeSkgY29uc3Q7Ci0gICAgICAgIHZvaWQgc2Nyb2xsVG8oaW50IHgsIGlu
dCB5KSBjb25zdDsKLSAgICAgICAgdm9pZCBzY3JvbGwoaW50IHgsIGludCB5KSBjb25zdCB7IHNj
cm9sbFRvKHgsIHkpOyB9CisgICAgICAgIHN0cnVjdCBTY3JvbGxUb09wdGlvbnMgeworICAgICAg
ICAgICAgT3B0aW9uYWw8ZG91YmxlPiBsZWZ0OworICAgICAgICAgICAgT3B0aW9uYWw8ZG91Ymxl
PiB0b3A7CisgICAgICAgIH07CisKKyAgICAgICAgdm9pZCBzY3JvbGxCeShjb25zdCBTY3JvbGxU
b09wdGlvbnMmKSBjb25zdDsKKyAgICAgICAgdm9pZCBzY3JvbGxCeShkb3VibGUgeCwgZG91Ymxl
IHkpIGNvbnN0OworICAgICAgICB2b2lkIHNjcm9sbFRvKGNvbnN0IFNjcm9sbFRvT3B0aW9ucyYp
IGNvbnN0OworICAgICAgICB2b2lkIHNjcm9sbFRvKGRvdWJsZSB4LCBkb3VibGUgeSkgY29uc3Q7
CiAKICAgICAgICAgdm9pZCBtb3ZlQnkoZmxvYXQgeCwgZmxvYXQgeSkgY29uc3Q7CiAgICAgICAg
IHZvaWQgbW92ZVRvKGZsb2F0IHgsIGZsb2F0IHkpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5k
b3cuaWRsCmluZGV4IGU3NzgxYTM5YjM5ODVhNTliOWE4YmEwMTAwYWMyOTg3ZDNmNTA3N2MuLjI3
YzQ4NDZlNzY0NjYzMGY3ZTEyMmVmOWZlYmE5ODU4YzE0N2IyNjUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvdy5pZGwKQEAgLTEwMiw5ICsxMDIsMTYgQEAKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
bG9uZyBwYWdlWE9mZnNldDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBwYWdlWU9mZnNl
dDsKIAotICAgIHZvaWQgc2Nyb2xsQnkob3B0aW9uYWwgbG9uZyB4ID0gMCwgb3B0aW9uYWwgbG9u
ZyB5ID0gMCk7Ci0gICAgdm9pZCBzY3JvbGxUbyhvcHRpb25hbCBsb25nIHggPSAwLCBvcHRpb25h
bCBsb25nIHkgPSAwKTsKLSAgICB2b2lkIHNjcm9sbChvcHRpb25hbCBsb25nIHggPSAwLCBvcHRp
b25hbCBsb25nIHkgPSAwKTsKKyAgICB2b2lkIHNjcm9sbEJ5KHVucmVzdHJpY3RlZCBkb3VibGUg
eCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICB2b2lkIHNjcm9sbFRvKHVucmVzdHJpY3Rl
ZCBkb3VibGUgeCwgdW5yZXN0cmljdGVkIGRvdWJsZSB5KTsKKyAgICBbSW1wbGVtZW50ZWRBcz1z
Y3JvbGxUb10gdm9pZCBzY3JvbGwodW5yZXN0cmljdGVkIGRvdWJsZSB4LCB1bnJlc3RyaWN0ZWQg
ZG91YmxlIHkpOworCisjaWYgZGVmaW5lZChMQU5HVUFHRV9KQVZBU0NSSVBUKSAmJiBMQU5HVUFH
RV9KQVZBU0NSSVBUCisgICAgdm9pZCBzY3JvbGxCeShvcHRpb25hbCBTY3JvbGxUb09wdGlvbnMg
b3B0aW9uKTsKKyAgICB2b2lkIHNjcm9sbFRvKG9wdGlvbmFsIFNjcm9sbFRvT3B0aW9ucyBvcHRp
b25zKTsKKyAgICBbSW1wbGVtZW50ZWRBcz1zY3JvbGxUb10gdm9pZCBzY3JvbGwob3B0aW9uYWwg
U2Nyb2xsVG9PcHRpb25zIG9wdGlvbnMpOworI2VuZGlmCisKICAgICB2b2lkIG1vdmVCeShvcHRp
b25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgeCA9IE5hTiwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZs
b2F0IHkgPSBOYU4pOyAvLyBGSVhNRTogdGhpcyBzaG91bGQgdGFrZSBsb25ncyBub3QgZmxvYXRz
LgogICAgIHZvaWQgbW92ZVRvKG9wdGlvbmFsIHVucmVzdHJpY3RlZCBmbG9hdCB4ID0gTmFOLCBv
cHRpb25hbCB1bnJlc3RyaWN0ZWQgZmxvYXQgeSA9IE5hTik7IC8vIEZJWE1FOiB0aGlzIHNob3Vs
ZCB0YWtlIGxvbmdzIG5vdCBmbG9hdHMuCiAgICAgdm9pZCByZXNpemVCeShvcHRpb25hbCB1bnJl
c3RyaWN0ZWQgZmxvYXQgeCA9IE5hTiwgb3B0aW9uYWwgdW5yZXN0cmljdGVkIGZsb2F0IHkgPSBO
YU4pOyAvLyBGSVhNRTogdGhpcyBzaG91bGQgdGFrZSBsb25ncyBub3QgZmxvYXRzLgpAQCAtMjE3
LDYgKzIyNCwxMiBAQAogICAgIFtOb3RFbnVtZXJhYmxlLCBDb25kaXRpb25hbD1QUk9YSU1JVFlf
RVZFTlRTXSBhdHRyaWJ1dGUgRXZlbnRIYW5kbGVyIG9ud2Via2l0ZGV2aWNlcHJveGltaXR5Owog
fTsKIAorLy8gRklYTUU6IFN1cHBvcnQgU2Nyb2xsQmVoYXZpb3IuCitkaWN0aW9uYXJ5IFNjcm9s
bFRvT3B0aW9ucyB7CisgICAgdW5yZXN0cmljdGVkIGRvdWJsZSBsZWZ0OworICAgIHVucmVzdHJp
Y3RlZCBkb3VibGUgdG9wOworfTsKKwogRE9NV2luZG93IGltcGxlbWVudHMgR2xvYmFsRXZlbnRI
YW5kbGVyczsKIERPTVdpbmRvdyBpbXBsZW1lbnRzIFdpbmRvd0Jhc2U2NDsKIERPTVdpbmRvdyBp
bXBsZW1lbnRzIFdpbmRvd0V2ZW50SGFuZGxlcnM7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOWZlMjljZDI3OWY3MjE1MTYy
YzUwOTk2MWNjZmY0OTQ0ZjVhMWVlZC4uYjkzYzQxM2Q0NTBiMTU4MWVlZmNlMTNkYjU2OTBmNWNj
OWEwOWUxNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE2LTA1LTEzICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWxpZ24gd2luZG93LnNjcm9sbCgpIC8gc2Ny
b2xsVG8oKSAvIHNjcm9sbEJ5KCkgd2l0aCB0aGUgQ1NTT00gc3BlY2lmaWNhdGlvbgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NjY2CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIC8gaW1wcm92
ZSB0ZXN0aW5nIGNvdmVyYWdlIGZvciB0aGUgQVBJLgorCisgICAgICAgICogZmFzdC9kb20vV2lu
ZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0
L2RvbS9XaW5kb3cvd2luZG93LXNjcm9sbC1hcmd1bWVudHMuaHRtbDoKKyAgICAgICAgKiBmYXN0
L2RvbS9ub24tbnVtZXJpYy12YWx1ZXMtbnVtZXJpYy1wYXJhbWV0ZXJzLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBmYXN0L2RvbS9zY3JpcHQtdGVzdHMvbm9uLW51bWVyaWMtdmFsdWVzLW51bWVy
aWMtcGFyYW1ldGVycy5qczoKKwogMjAxNi0wNS0xMyAgU2thY2hrb3YgT2xla3NhbmRyICA8Z3Nr
YWNoa292QGdtYWlsLmNvbT4KIAogICAgICAgICBBc3NlcnRpb24gZmFpbHVyZSBmb3Igc3VwZXIo
KSBjYWxsIGluIGFycm93IGZ1bmN0aW9uIGRlZmF1bHQgcGFyYW1ldGVycwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFyZ3Vt
ZW50cy1leHBlY3RlZC50eHQKaW5kZXggYjA0NDUyZDYwZjI3YTcyZWFiNDllNDAyN2RjMzNkN2Zj
NDAyMDM3Yi4uMWFmNTM2MDY0MTliZmY1ZjUxOTk2NmFlOWI4N2YzMWI1ODRlMzVmYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRz
LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvd2luZG93LXNj
cm9sbC1hcmd1bWVudHMtZXhwZWN0ZWQudHh0CkBAIC0xLDQgKzEsNCBAQAotVGhpcyB0ZXN0IG1h
a2VzIHN1cmUgdGhhdCBjYWxsaW5nIHRoZSB3aW5kb3cgc2Nyb2xsaW5nIG1ldGhvZHMgd2l0aCBs
ZXNzIHRoYW4gMiBhcmd1bWVudHMgdHJlYXRzIHRoZSBtaXNzaW5nIGFyZ3VtZW50cyBhcyAwLgor
VGhpcyB0ZXN0cyBjYWxsaW5nIHRoZSB3aW5kb3cgc2Nyb2xsaW5nIHdpdGggb25seSAxIGFyZ3Vt
ZW50CiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2Fn
ZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApAQCAtOSw5ICs5LDE5IEBAIHdpbmRv
dy5zY3JvbGxUbyBUZXN0cwogVGVzdGluZyAtIHNjcm9sbFRvIHdpdGggMCBhcmd1bWVudHMKIFBB
U1Mgd2luZG93LnNjcm9sbFggaXMgcmVzZXRYCiBQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHJlc2V0
WQotVGVzdGluZyAtIHNjcm9sbFRvIHdpdGggMSBhcmd1bWVudAotUEFTUyB3aW5kb3cuc2Nyb2xs
WCBpcyByZXNldFggKyB4CitQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHgKK1BBU1Mgd2luZG93LnNj
cm9sbFkgaXMgeQorVGVzdGluZyAtIHNjcm9sbFRvIHdpdGggMSBub24tZGljdGlvbmFyeSBhcmd1
bWVudAorUEFTUyBzY3JvbGxUbygwKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVy
cm9yLgorVGVzdGluZyAtIHNjcm9sbFRvIHdpdGggMSBkaWN0aW9uYXJ5IGFyZ3VtZW50CitQQVNT
IHdpbmRvdy5zY3JvbGxYIGlzIHgKIFBBU1Mgd2luZG93LnNjcm9sbFkgaXMgcmVzZXRZCitQQVNT
IHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WAorUEFTUyB3aW5kb3cuc2Nyb2xsWSBpcyB5CitQQVNT
IHdpbmRvdy5zY3JvbGxYIGlzIHgKK1BBU1Mgd2luZG93LnNjcm9sbFkgaXMgeQorUEFTUyB3aW5k
b3cuc2Nyb2xsWCBpcyAwCitQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIDAKIFRlc3RpbmcgLSBzY3Jv
bGxUbyB3aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cwogUEFTUyB3aW5kb3cuc2Nyb2xsWCBpcyB4
CiBQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHkKQEAgLTIxLDkgKzMxLDE5IEBAIHdpbmRvdy5zY3Jv
bGwgVGVzdHMKIFRlc3RpbmcgLSBzY3JvbGwgd2l0aCAwIGFyZ3VtZW50cwogUEFTUyB3aW5kb3cu
c2Nyb2xsWCBpcyByZXNldFgKIFBBU1Mgd2luZG93LnNjcm9sbFkgaXMgcmVzZXRZCi1UZXN0aW5n
IC0gc2Nyb2xsIHdpdGggMSBhcmd1bWVudAotUEFTUyB3aW5kb3cuc2Nyb2xsWCBpcyByZXNldFgg
KyB4CitQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHgKK1BBU1Mgd2luZG93LnNjcm9sbFkgaXMgeQor
VGVzdGluZyAtIHNjcm9sbCB3aXRoIDEgbm9uLWRpY3Rpb25hcnkgYXJndW1lbnQKK1BBU1Mgc2Ny
b2xsKDApIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCitUZXN0aW5nIC0g
c2Nyb2xsIHdpdGggMSBkaWN0aW9uYXJ5IGFyZ3VtZW50CitQQVNTIHdpbmRvdy5zY3JvbGxYIGlz
IHgKIFBBU1Mgd2luZG93LnNjcm9sbFkgaXMgcmVzZXRZCitQQVNTIHdpbmRvdy5zY3JvbGxYIGlz
IHJlc2V0WAorUEFTUyB3aW5kb3cuc2Nyb2xsWSBpcyB5CitQQVNTIHdpbmRvdy5zY3JvbGxYIGlz
IHgKK1BBU1Mgd2luZG93LnNjcm9sbFkgaXMgeQorUEFTUyB3aW5kb3cuc2Nyb2xsWCBpcyAwCitQ
QVNTIHdpbmRvdy5zY3JvbGxZIGlzIDAKIFRlc3RpbmcgLSBzY3JvbGwgd2l0aCBtb3JlIHRoYW4g
MiBhcmd1bWVudHMKIFBBU1Mgd2luZG93LnNjcm9sbFggaXMgeAogUEFTUyB3aW5kb3cuc2Nyb2xs
WSBpcyB5CkBAIC0zMyw5ICs1MywxOSBAQCB3aW5kb3cuc2Nyb2xsQnkgVGVzdHMKIFRlc3Rpbmcg
LSBzY3JvbGxCeSB3aXRoIDAgYXJndW1lbnRzCiBQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0
WAogUEFTUyB3aW5kb3cuc2Nyb2xsWSBpcyByZXNldFkKK1BBU1Mgd2luZG93LnNjcm9sbFggaXMg
eAorUEFTUyB3aW5kb3cuc2Nyb2xsWSBpcyB5CitUZXN0aW5nIC0gc2Nyb2xsQnkgd2l0aCAxIG5v
bi1kaWN0aW9uYXJ5IGFyZ3VtZW50CitQQVNTIHNjcm9sbEJ5KDApIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCiBUZXN0aW5nIC0gc2Nyb2xsQnkgd2l0aCAxIGFyZ3VtZW50
CiBQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WCArIHgKIFBBU1Mgd2luZG93LnNjcm9sbFkg
aXMgcmVzZXRZCitQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WAorUEFTUyB3aW5kb3cuc2Ny
b2xsWSBpcyByZXNldFkgKyB5CitQQVNTIHdpbmRvdy5zY3JvbGxYIGlzIHJlc2V0WCArIHgKK1BB
U1Mgd2luZG93LnNjcm9sbFkgaXMgcmVzZXRZICsgeQorUEFTUyB3aW5kb3cuc2Nyb2xsWCBpcyBy
ZXNldFggKyB4CitQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHJlc2V0WSArIHkKIFRlc3RpbmcgLSBz
Y3JvbGxCeSB3aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cwogUEFTUyB3aW5kb3cuc2Nyb2xsWCBp
cyByZXNldFggKyB4CiBQQVNTIHdpbmRvdy5zY3JvbGxZIGlzIHJlc2V0WSArIHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy93aW5kb3ctc2Nyb2xsLWFyZ3VtZW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRz
Lmh0bWwKaW5kZXggZmY1NThlYmVjN2EzMGUwMTgwYzY0NTQxMDljOGU1MDlkNTA0M2YwMy4uMjc1
MWE5YTQ5MDhlMTIzYzI5Nzc2MTk1MmI3Yjg1MTM2MjgzNWFkNyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLmh0bWwKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L3dpbmRvdy1zY3JvbGwtYXJndW1lbnRzLmh0bWwK
QEAgLTI0LDggKzI0LDcgQEAKIAogICAgIHJlc2V0KCk7CiAKLSAgICBkZXNjcmlwdGlvbigiVGhp
cyB0ZXN0IG1ha2VzIHN1cmUgdGhhdCBjYWxsaW5nIHRoZSB3aW5kb3cgc2Nyb2xsaW5nXAotICAg
IG1ldGhvZHMgd2l0aCBsZXNzIHRoYW4gMiBhcmd1bWVudHMgdHJlYXRzIHRoZSBtaXNzaW5nIGFy
Z3VtZW50cyBhcyAwLiIpOworICAgIGRlc2NyaXB0aW9uKCJUaGlzIHRlc3RzIGNhbGxpbmcgdGhl
IHdpbmRvdyBzY3JvbGxpbmcgd2l0aCBvbmx5IDEgYXJndW1lbnQiKTsKIAogICAgIC8vIHNjcm9s
bFRvIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICBkZWJ1ZygnJyk7CkBAIC0zNywxMiAr
MzYsMzQgQEAKICAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAncmVzZXRYJyk7CiAgICAg
c2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxZJywgJ3Jlc2V0WScpOwogICAgIHJlc2V0KCk7CisgICAg
d2luZG93LnNjcm9sbFRvKHgsIHkpOworICAgIHdpbmRvdy5zY3JvbGxUbygpOworICAgIHNob3Vs
ZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICd4Jyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxZ
JywgJ3knKTsKKyAgICByZXNldCgpOwogCi0gICAgZGVidWcoIlRlc3RpbmcgLSBzY3JvbGxUbyB3
aXRoIDEgYXJndW1lbnQiKTsKLSAgICB3aW5kb3cuc2Nyb2xsVG8oeCk7Ci0gICAgc2hvdWxkQmUo
J3dpbmRvdy5zY3JvbGxYJywgJ3Jlc2V0WCArIHgnKTsKKyAgICBkZWJ1ZygiVGVzdGluZyAtIHNj
cm9sbFRvIHdpdGggMSBub24tZGljdGlvbmFyeSBhcmd1bWVudCIpOworICAgIHNob3VsZFRocm93
KCJzY3JvbGxUbygwKSIpOworICAgIHJlc2V0KCk7CisKKyAgICBkZWJ1ZygiVGVzdGluZyAtIHNj
cm9sbFRvIHdpdGggMSBkaWN0aW9uYXJ5IGFyZ3VtZW50Iik7CisgICAgd2luZG93LnNjcm9sbFRv
KHsgbGVmdDogeCB9KTsKKyAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAneCcpOwogICAg
IHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWScsICdyZXNldFknKTsKICAgICByZXNldCgpOworICAg
IHdpbmRvdy5zY3JvbGxUbyh7IHRvcDogeSB9KTsKKyAgICBzaG91bGRCZSgnd2luZG93LnNjcm9s
bFgnLCAncmVzZXRYJyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxZJywgJ3knKTsKKyAg
ICByZXNldCgpOworICAgIHdpbmRvdy5zY3JvbGxUbyh7IGxlZnQ6IHgsIHRvcDogeSB9KTsKKyAg
ICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAneCcpOworICAgIHNob3VsZEJlKCd3aW5kb3cu
c2Nyb2xsWScsICd5Jyk7CisgICAgcmVzZXQoKTsKKyAgICB3aW5kb3cuc2Nyb2xsVG8oeCwgeSk7
CisgICAgd2luZG93LnNjcm9sbFRvKHsgbGVmdDogTmFOLCB0b3A6IE5hTiB9KTsKKyAgICBzaG91
bGRCZSgnd2luZG93LnNjcm9sbFgnLCAnMCcpOworICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xs
WScsICcwJyk7CisgICAgcmVzZXQoKTsKIAogICAgIGRlYnVnKCJUZXN0aW5nIC0gc2Nyb2xsVG8g
d2l0aCBtb3JlIHRoYW4gMiBhcmd1bWVudHMiKTsKICAgICB3aW5kb3cuc2Nyb2xsVG8oeCwgeSwg
MjAwLCAidGV4dCIpOwpAQCAtNjAsMTIgKzgxLDM0IEBACiAgICAgc2hvdWxkQmUoJ3dpbmRvdy5z
Y3JvbGxYJywgJ3Jlc2V0WCcpOwogICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWScsICdyZXNl
dFknKTsKICAgICByZXNldCgpOworICAgIHdpbmRvdy5zY3JvbGwoeCwgeSk7CisgICAgd2luZG93
LnNjcm9sbCgpOworICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICd4Jyk7CisgICAgc2hv
dWxkQmUoJ3dpbmRvdy5zY3JvbGxZJywgJ3knKTsKKyAgICByZXNldCgpOwogCi0gICAgZGVidWco
IlRlc3RpbmcgLSBzY3JvbGwgd2l0aCAxIGFyZ3VtZW50Iik7Ci0gICAgd2luZG93LnNjcm9sbCh4
KTsKLSAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAncmVzZXRYICsgeCcpOworICAgIGRl
YnVnKCJUZXN0aW5nIC0gc2Nyb2xsIHdpdGggMSBub24tZGljdGlvbmFyeSBhcmd1bWVudCIpOwor
ICAgIHNob3VsZFRocm93KCJzY3JvbGwoMCkiKTsKKyAgICByZXNldCgpOworCisgICAgZGVidWco
IlRlc3RpbmcgLSBzY3JvbGwgd2l0aCAxIGRpY3Rpb25hcnkgYXJndW1lbnQiKTsKKyAgICB3aW5k
b3cuc2Nyb2xsKHsgbGVmdDogeCB9KTsKKyAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFgnLCAn
eCcpOwogICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWScsICdyZXNldFknKTsKICAgICByZXNl
dCgpOworICAgIHdpbmRvdy5zY3JvbGwoeyB0b3A6IHkgfSk7CisgICAgc2hvdWxkQmUoJ3dpbmRv
dy5zY3JvbGxYJywgJ3Jlc2V0WCcpOworICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWScsICd5
Jyk7CisgICAgcmVzZXQoKTsKKyAgICB3aW5kb3cuc2Nyb2xsKHsgbGVmdDogeCwgdG9wOiB5IH0p
OworICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICd4Jyk7CisgICAgc2hvdWxkQmUoJ3dp
bmRvdy5zY3JvbGxZJywgJ3knKTsKKyAgICByZXNldCgpOworICAgIHdpbmRvdy5zY3JvbGwoeCwg
eSk7CisgICAgd2luZG93LnNjcm9sbCh7IGxlZnQ6IE5hTiwgdG9wOiBOYU4gfSk7CisgICAgc2hv
dWxkQmUoJ3dpbmRvdy5zY3JvbGxYJywgJzAnKTsKKyAgICBzaG91bGRCZSgnd2luZG93LnNjcm9s
bFknLCAnMCcpOworICAgIHJlc2V0KCk7CiAKICAgICBkZWJ1ZygiVGVzdGluZyAtIHNjcm9sbCB3
aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cyIpOwogICAgIHdpbmRvdy5zY3JvbGwoeCwgeSwgMjAw
LCAidGV4dCIpOwpAQCAtODMsMTIgKzEyNiwzNCBAQAogICAgIHNob3VsZEJlKCd3aW5kb3cuc2Ny
b2xsWCcsICdyZXNldFgnKTsKICAgICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFknLCAncmVzZXRZ
Jyk7CiAgICAgcmVzZXQoKTsKKyAgICB3aW5kb3cuc2Nyb2xsQnkoeCwgeSk7CisgICAgd2luZG93
LnNjcm9sbEJ5KCk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5zY3JvbGxYJywgJ3gnKTsKKyAgICBz
aG91bGRCZSgnd2luZG93LnNjcm9sbFknLCAneScpOworICAgIHJlc2V0KCk7CisKKyAgICBkZWJ1
ZygiVGVzdGluZyAtIHNjcm9sbEJ5IHdpdGggMSBub24tZGljdGlvbmFyeSBhcmd1bWVudCIpOwor
ICAgIHNob3VsZFRocm93KCJzY3JvbGxCeSgwKSIpOworICAgIHJlc2V0KCk7CiAKICAgICBkZWJ1
ZygiVGVzdGluZyAtIHNjcm9sbEJ5IHdpdGggMSBhcmd1bWVudCIpOwotICAgIHdpbmRvdy5zY3Jv
bGxCeSh4KTsKKyAgICB3aW5kb3cuc2Nyb2xsQnkoeyBsZWZ0OiB4IH0pOwogICAgIHNob3VsZEJl
KCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFggKyB4Jyk7CiAgICAgc2hvdWxkQmUoJ3dpbmRvdy5z
Y3JvbGxZJywgJ3Jlc2V0WScpOwogICAgIHJlc2V0KCk7CisgICAgd2luZG93LnNjcm9sbEJ5KHsg
dG9wOiB5IH0pOworICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFgnKTsKKyAg
ICBzaG91bGRCZSgnd2luZG93LnNjcm9sbFknLCAncmVzZXRZICsgeScpOworICAgIHJlc2V0KCk7
CisgICAgd2luZG93LnNjcm9sbEJ5KHsgbGVmdDogeCwgdG9wOiB5IH0pOworICAgIHNob3VsZEJl
KCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFggKyB4Jyk7CisgICAgc2hvdWxkQmUoJ3dpbmRvdy5z
Y3JvbGxZJywgJ3Jlc2V0WSArIHknKTsKKyAgICByZXNldCgpOworICAgIHdpbmRvdy5zY3JvbGxC
eSh4LCB5KTsKKyAgICB3aW5kb3cuc2Nyb2xsQnkoeyBsZWZ0OiBOYU4sIHRvcDogTmFOIH0pOwor
ICAgIHNob3VsZEJlKCd3aW5kb3cuc2Nyb2xsWCcsICdyZXNldFggKyB4Jyk7CisgICAgc2hvdWxk
QmUoJ3dpbmRvdy5zY3JvbGxZJywgJ3Jlc2V0WSArIHknKTsKKyAgICByZXNldCgpOwogCiAgICAg
ZGVidWcoIlRlc3RpbmcgLSBzY3JvbGxCeSB3aXRoIG1vcmUgdGhhbiAyIGFyZ3VtZW50cyIpOwog
ICAgIHdpbmRvdy5zY3JvbGxCeSh4LCB5LCAyMDAsICJ0ZXh0Iik7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2RvbS9ub24tbnVtZXJpYy12YWx1ZXMtbnVtZXJpYy1wYXJhbWV0ZXJzLWV4
cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vbi1udW1lcmljLXZhbHVlcy1udW1l
cmljLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CmluZGV4IGYyODhkMzU4MzcyY2MxZTNhOTBjNThl
NzgyMjMyMjkwOGE1NjU2YmMuLmNiZGJjOWM5YWRmMWFiNTUyODFkODAyZGIzNGU1YzNmNjkxNWQ2
MjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL25vbi1udW1lcmljLXZhbHVlcy1u
dW1lcmljLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9t
L25vbi1udW1lcmljLXZhbHVlcy1udW1lcmljLXBhcmFtZXRlcnMtZXhwZWN0ZWQudHh0CkBAIC02
NiwxMSArNjYsMTEgQEAgUEFTUyBub25OdW1lcmljUG9saWN5KCdkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZSgiYSIpLnNwbGl0VGV4dCh4KScpIGlzICdhbnkgdHlwZQogUEFTUyBub25OdW1lcmljUG9s
aWN5KCdkb2N1bWVudC5jcmVhdGVUcmVlV2Fsa2VyKGRvY3VtZW50LCB4LCBudWxsLCBmYWxzZSkn
KSBpcyAnYW55IHR5cGUgYWxsb3dlZCcKIFBBU1Mgbm9uTnVtZXJpY1BvbGljeSgnZG9jdW1lbnQu
Y3JlYXRlRXZlbnQoIlVJRXZlbnQiKS5pbml0VUlFdmVudCgiYSIsIGZhbHNlLCBmYWxzZSwgbnVs
bCwgeCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcKIFBBU1Mgbm9uTnVtZXJpY1BvbGljeSgnd2lu
ZG93LnNjcm9sbEJ5KHgsIDApJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCi1QQVNTIG5vbk51bWVy
aWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxCeSgwLCB4KScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwor
UEFTUyBub25OdW1lcmljUG9saWN5KCd3aW5kb3cuc2Nyb2xsQnkoMCwgeCknKSBpcyAnYW55IHR5
cGUgYWxsb3dlZCAoYnV0IG5vdCBvbWl0dGVkKScKIFBBU1Mgbm9uTnVtZXJpY1BvbGljeSgnd2lu
ZG93LnNjcm9sbFRvKHgsIDApJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCi1QQVNTIG5vbk51bWVy
aWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxUbygwLCB4KScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwor
UEFTUyBub25OdW1lcmljUG9saWN5KCd3aW5kb3cuc2Nyb2xsVG8oMCwgeCknKSBpcyAnYW55IHR5
cGUgYWxsb3dlZCAoYnV0IG5vdCBvbWl0dGVkKScKIFBBU1Mgbm9uTnVtZXJpY1BvbGljeSgnd2lu
ZG93LnNjcm9sbCh4LCAwKScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwotUEFTUyBub25OdW1lcmlj
UG9saWN5KCd3aW5kb3cuc2Nyb2xsKDAsIHgpJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCitQQVNT
IG5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGwoMCwgeCknKSBpcyAnYW55IHR5cGUgYWxs
b3dlZCAoYnV0IG5vdCBvbWl0dGVkKScKIFBBU1Mgbm9uTnVtZXJpY1BvbGljeSgnd2luZG93Lm1v
dmVCeSh4LCAwKScpIGlzICdhbnkgdHlwZSBhbGxvd2VkJwogUEFTUyBub25OdW1lcmljUG9saWN5
KCd3aW5kb3cubW92ZUJ5KDAsIHgpJykgaXMgJ2FueSB0eXBlIGFsbG93ZWQnCiBQQVNTIG5vbk51
bWVyaWNQb2xpY3koJ3dpbmRvdy5tb3ZlVG8oeCwgMCknKSBpcyAnYW55IHR5cGUgYWxsb3dlZCcK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvZG9tL3NjcmlwdC10ZXN0cy9ub24tbnVtZXJp
Yy12YWx1ZXMtbnVtZXJpYy1wYXJhbWV0ZXJzLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2Ny
aXB0LXRlc3RzL25vbi1udW1lcmljLXZhbHVlcy1udW1lcmljLXBhcmFtZXRlcnMuanMKaW5kZXgg
NzU0Yzc1MzEwYmUzZmEzMjk2YWI0YjIwOTY0NmVjYjJhYjYyODg0Ni4uOWFmNDRkNGRjMjFkMTFi
YzI0MDA3NDdkOWMxYjBlMDYyY2FkYzQwNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9k
b20vc2NyaXB0LXRlc3RzL25vbi1udW1lcmljLXZhbHVlcy1udW1lcmljLXBhcmFtZXRlcnMuanMK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vc2NyaXB0LXRlc3RzL25vbi1udW1lcmljLXZhbHVl
cy1udW1lcmljLXBhcmFtZXRlcnMuanMKQEAgLTM0NCwxMSArMzQ0LDExIEBAIHNob3VsZEJlKCJu
b25OdW1lcmljUG9saWN5KCdkb2N1bWVudC5jcmVhdGVFdmVudChcIlVJRXZlbnRcIikuaW5pdFVJ
RXZlbnQoXCJhXCIsCiAvLyBXaW5kb3cKIAogc2hvdWxkQmUoIm5vbk51bWVyaWNQb2xpY3koJ3dp
bmRvdy5zY3JvbGxCeSh4LCAwKScpIiwgIidhbnkgdHlwZSBhbGxvd2VkJyIpOwotc2hvdWxkQmUo
Im5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxCeSgwLCB4KScpIiwgIidhbnkgdHlwZSBh
bGxvd2VkJyIpOworc2hvdWxkQmUoIm5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxCeSgw
LCB4KScpIiwgIidhbnkgdHlwZSBhbGxvd2VkIChidXQgbm90IG9taXR0ZWQpJyIpOwogc2hvdWxk
QmUoIm5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxUbyh4LCAwKScpIiwgIidhbnkgdHlw
ZSBhbGxvd2VkJyIpOwotc2hvdWxkQmUoIm5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3JvbGxU
bygwLCB4KScpIiwgIidhbnkgdHlwZSBhbGxvd2VkJyIpOworc2hvdWxkQmUoIm5vbk51bWVyaWNQ
b2xpY3koJ3dpbmRvdy5zY3JvbGxUbygwLCB4KScpIiwgIidhbnkgdHlwZSBhbGxvd2VkIChidXQg
bm90IG9taXR0ZWQpJyIpOwogc2hvdWxkQmUoIm5vbk51bWVyaWNQb2xpY3koJ3dpbmRvdy5zY3Jv
bGwoeCwgMCknKSIsICInYW55IHR5cGUgYWxsb3dlZCciKTsKLXNob3VsZEJlKCJub25OdW1lcmlj
UG9saWN5KCd3aW5kb3cuc2Nyb2xsKDAsIHgpJykiLCAiJ2FueSB0eXBlIGFsbG93ZWQnIik7Citz
aG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93LnNjcm9sbCgwLCB4KScpIiwgIidhbnkg
dHlwZSBhbGxvd2VkIChidXQgbm90IG9taXR0ZWQpJyIpOwogc2hvdWxkQmUoIm5vbk51bWVyaWNQ
b2xpY3koJ3dpbmRvdy5tb3ZlQnkoeCwgMCknKSIsICInYW55IHR5cGUgYWxsb3dlZCciKTsKIHNo
b3VsZEJlKCJub25OdW1lcmljUG9saWN5KCd3aW5kb3cubW92ZUJ5KDAsIHgpJykiLCAiJ2FueSB0
eXBlIGFsbG93ZWQnIik7CiBzaG91bGRCZSgibm9uTnVtZXJpY1BvbGljeSgnd2luZG93Lm1vdmVU
byh4LCAwKScpIiwgIidhbnkgdHlwZSBhbGxvd2VkJyIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>