<?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>164627</bug_id>
          
          <creation_ts>2016-11-10 17:31:38 -0800</creation_ts>
          <short_desc>[DOMJIT] Document#body should have DOMJIT patchpoint</short_desc>
          <delta_ts>2016-11-10 22:11:28 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</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></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162544</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1250080</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 17:31:38 -0800</bug_when>
    <thetext>It should be easy!
It requires some traversal things in ASM. But, it is what we did in CSSJIT!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250086</commentid>
    <comment_count>1</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 17:52:14 -0800</bug_when>
    <thetext>Ugh, autocorrection makes patchpoint =&gt; watchpoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250099</commentid>
    <comment_count>2</comment_count>
      <attachid>294455</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 18:15:30 -0800</bug_when>
    <thetext>Created attachment 294455
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250104</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-11-10 18:19:11 -0800</bug_when>
    <thetext>Attachment 294455 did not pass style-queue:


ERROR: Source/WebCore/ChangeLog:8:  You should remove the &apos;No new tests&apos; and either add and list tests, or explain why no new tests were possible.  [changelog/nonewtests] [5]
Total errors found: 1 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250126</commentid>
    <comment_count>4</comment_count>
      <attachid>294463</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 19:54:29 -0800</bug_when>
    <thetext>Created attachment 294463
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250152</commentid>
    <comment_count>5</comment_count>
      <attachid>294471</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 21:23:43 -0800</bug_when>
    <thetext>Created attachment 294471
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250153</commentid>
    <comment_count>6</comment_count>
      <attachid>294471</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-10 21:31:11 -0800</bug_when>
    <thetext>Comment on attachment 294471
Patch

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

&gt; Source/WebCore/dom/Document.idl:104
&gt; +    [DOMJIT, CEReactions, ImplementedAs=bodyOrFrameset, SetterMayThrowException] attribute HTMLElement? body;

I have been trying to keep these extended attributes in alphabetical order. This means I would have put DOMJIT after CEReactions. Not sure if you have been doing this when adding DOMJIT to other attributes.

It’s a bit annoying that DOMJIT implicitly means the getter, not the setter.

&gt; Source/WebCore/domjit/DOMJITHelpers.h:31
&gt; +#include &quot;Node.h&quot;
&gt;  #include &quot;ScriptWrappable.h&quot;

Now that we are including Node.h we don’t need to include ScriptWrappable.h any more.

&gt; Source/WebCore/domjit/JSDocumentDOMJIT.cpp:114
&gt; +        RELEASE_ASSERT(!CAST_OFFSET(Node*, ContainerNode*));
&gt; +        RELEASE_ASSERT(!CAST_OFFSET(Node*, Element*));
&gt; +        RELEASE_ASSERT(!CAST_OFFSET(Node*, HTMLElement*));

I know I asked this on a previous patch: These can’t be compile-time assertions instead of runtime assertions?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250158</commentid>
    <comment_count>7</comment_count>
      <attachid>294471</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 21:40:26 -0800</bug_when>
    <thetext>Comment on attachment 294471
Patch

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

&gt;&gt; Source/WebCore/dom/Document.idl:104
&gt;&gt; +    [DOMJIT, CEReactions, ImplementedAs=bodyOrFrameset, SetterMayThrowException] attribute HTMLElement? body;
&gt; 
&gt; I have been trying to keep these extended attributes in alphabetical order. This means I would have put DOMJIT after CEReactions. Not sure if you have been doing this when adding DOMJIT to other attributes.
&gt; 
&gt; It’s a bit annoying that DOMJIT implicitly means the getter, not the setter.

&quot;It’s a bit annoying that DOMJIT implicitly means the getter, not the setter.&quot; Yeah, right.
We should rename it to something like, `DOMJIT=Getter` thing. I&apos;ll upload the patch for that.

&gt;&gt; Source/WebCore/domjit/DOMJITHelpers.h:31
&gt;&gt;  #include &quot;ScriptWrappable.h&quot;
&gt; 
&gt; Now that we are including Node.h we don’t need to include ScriptWrappable.h any more.

Dropped.

&gt;&gt; Source/WebCore/domjit/JSDocumentDOMJIT.cpp:114
&gt;&gt; +        RELEASE_ASSERT(!CAST_OFFSET(Node*, HTMLElement*));
&gt; 
&gt; I know I asked this on a previous patch: These can’t be compile-time assertions instead of runtime assertions?

Yeah, unfortunately. Since CAST_OFFSET uses reinterpret_cast, it cannot be evaluated at compile time.
(And OBJECT_OFFSETOF is the same. That&apos;s why we cannot make XXX::offsetOfXXX() constexpr...) That&apos;s sad.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250162</commentid>
    <comment_count>8</comment_count>
      <attachid>294472</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 21:49:38 -0800</bug_when>
    <thetext>Created attachment 294472
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1250165</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2016-11-10 22:11:28 -0800</bug_when>
    <thetext>Committed r208579: &lt;http://trac.webkit.org/changeset/208579&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294455</attachid>
            <date>2016-11-10 18:15:30 -0800</date>
            <delta_ts>2016-11-10 19:54:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164627-20161110181117.patch</filename>
            <type>text/plain</type>
            <size>15148</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUyMDA0YmZjMWM5MDFi
Yjk3ZDUxODJlNzA3ZDQwOTQxOGVkMjQ3Zi4uNTdmYjBmNWQ4ODhiOTRkN2VjODc3MDA5NWI4ZDg3
ZDAyYzdiODhhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDE2LTExLTEwICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIERv
Y3VtZW50I2JvZHkgc2hvdWxkIGhhdmUgRE9NSklUIHBhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgor
CisgICAgICAgICogY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtU
b1BhcmVudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2Vs
ZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9y
OjpnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVt
ZW50QXR0cmlidXRlTWF0Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxl
cjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4
YWN0TWF0Y2hpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0
b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1
ZU1hdGNoaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6Omp1bXBJZkVs
ZW1lbnRJc05vdEVtcHR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNl
bGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZSk6CisgICAgICAg
IChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjp0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZSk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNvbXBpbGVyOjp0ZXN0SXNIVE1MRmxh
Z09uTm9kZSk6IERlbGV0ZWQuCisgICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAg
KiBkb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sOgorICAgICAgICAqIGRv
bWppdC9ET01KSVRIZWxwZXJzLmg6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaFRl
c3RJc0VsZW1lbnRGbGFnT25Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6YnJhbmNo
VGVzdEhUTUxGbGFnT25Ob2RlKToKKyAgICAgICAgKiBkb21qaXQvSlNEb2N1bWVudERPTUpJVC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEJvZHlET01KSVQ6OmNoZWNrRE9NKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Qm9keURPTUpJVDo6Y2FsbERPTUdldHRlcik6CisKIDIw
MTYtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIElu
ZGV4ZWREQiAyLjAgU3VwcG9ydCB0aGUgSURCRGF0YWJhc2Uub25jbG9zZSBldmVudC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcAppbmRleCAzOTMyNDQ1OWFiOTlj
YjcwMzEyMjgwNjUzOTE2NmFhOGUxZjQxZjY0Li4wMzBkYmRjN2Y4MDgwOGI0NTNjMTI2ZmQ5ZDI1
NzNjNjVjN2IwOTM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JD
b21waWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIu
Y3BwCkBAIC0yMDIxLDExICsyMDIxLDYgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6Omdl
bmVyYXRlRWxlbWVudE1hdGNoZXNTZWxlY3Rvckxpc3QoQXNzZW1ibGVyOjpKdW1wTGkKICAgICB9
CiB9CiAKLXN0YXRpYyBpbmxpbmUgQXNzZW1ibGVyOjpKdW1wIHRlc3RJc0VsZW1lbnRGbGFnT25O
b2RlKEFzc2VtYmxlcjo6UmVzdWx0Q29uZGl0aW9uIGNvbmRpdGlvbiwgQXNzZW1ibGVyJiBhc3Nl
bWJsZXIsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBub2RlQWRkcmVzcykKLXsKLSAgICByZXR1cm4g
YXNzZW1ibGVyLmJyYW5jaFRlc3QzMihjb25kaXRpb24sIEFzc2VtYmxlcjo6QWRkcmVzcyhub2Rl
QWRkcmVzcywgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0
ZWRJbW0zMihOb2RlOjpmbGFnSXNFbGVtZW50KCkpKTsKLX0KLQogdm9pZCBTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlUmlnaHRtb3N0VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0
JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQogewogICAg
IGdlbmVyYXRlRWxlbWVudE1hdGNoaW5nKGZhaWx1cmVDYXNlcywgZmFpbHVyZUNhc2VzLCBmcmFn
bWVudCk7CkBAIC0yMDQzLDcgKzIwMzgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVXYWxrVG9QYXJlbnRFbGVtZW50KEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaQogICAg
IC8vICAgICAgICAgZmFpbHVyZQogICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50Tm9kZSh0YXJnZXRS
ZWdpc3Rlcik7CiAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0
UHRyKEFzc2VtYmxlcjo6WmVybywgdGFyZ2V0UmVnaXN0ZXIpKTsKLSAgICBmYWlsdXJlQ2FzZXMu
YXBwZW5kKHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJs
ZXIsIHRhcmdldFJlZ2lzdGVyKSk7CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6OmJy
YW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8s
IHRhcmdldFJlZ2lzdGVyKSk7CiB9CiAKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZVBhcmVudEVsZW1lbnRUcmVlV2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVD
YXNlcywgY29uc3QgU2VsZWN0b3JGcmFnbWVudCYgZnJhZ21lbnQpCkBAIC0yMDk2LDcgKzIwOTEs
NyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvTmV4
dEFkamFjZW50RWxlbWVudChBc3NlbWJsZXI6OgogICAgIEFzc2VtYmxlcjo6TGFiZWwgbG9vcFN0
YXJ0ID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2Vt
Ymxlcjo6QWRkcmVzcyh3b3JrUmVnaXN0ZXIsIE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0
KCkpLCB3b3JrUmVnaXN0ZXIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIu
YnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3RlcikpOwotICAgIHRlc3RJ
c0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHdvcmtSZWdp
c3RlcikubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKKyAgICBET01KSVQ6OmJyYW5j
aFRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIHdv
cmtSZWdpc3RlcikubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKIH0KIAogaW5saW5l
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNl
bnRFbGVtZW50KEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIHdvcmtSZWdpc3RlcikKQEAgLTIxMDQsNyArMjA5OSw3IEBAIGlubGluZSB2b2lk
IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxl
bWVudChBc3NlbWJsCiAgICAgQXNzZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQgPSBtX2Fzc2VtYmxl
ci5sYWJlbCgpOwogICAgIG1fYXNzZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKHdv
cmtSZWdpc3RlciwgTm9kZTo6cHJldmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCkpLCB3b3JrUmVn
aXN0ZXIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0
cihBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3RlcikpOwotICAgIHRlc3RJc0VsZW1lbnRGbGFn
T25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHdvcmtSZWdpc3RlcikubGlua1Rv
KGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKKyAgICBET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1l
bnRGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3Rlciku
bGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKIH0KIAogdm9pZCBTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudChBc3NlbWJsZXI6Okp1bXBM
aXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQpAQCAt
MjY1MSwxMSArMjY0Niw2IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRMaW5rTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpCiAgICAgICAgIGdlbmVy
YXRlRWxlbWVudElzTGluayhmYWlsdXJlQ2FzZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIEFzc2Vt
Ymxlcjo6SnVtcCB0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlv
biBjb25kaXRpb24sIEFzc2VtYmxlciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQg
bm9kZUFkZHJlc3MpCi17Ci0gICAgcmV0dXJuIGFzc2VtYmxlci5icmFuY2hUZXN0MzIoY29uZGl0
aW9uLCBBc3NlbWJsZXI6OkFkZHJlc3Mobm9kZUFkZHJlc3MsIE5vZGU6Om5vZGVGbGFnc01lbW9y
eU9mZnNldCgpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lzSFRNTCgpKSk7
Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9vbCBjYW5NYXRjaFN0eWxlQXR0cmlidXRlKGNvbnN0IFNl
bGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBmcmFnbWVudC5hdHRyaWJ1dGVzLnNpemUoKTsgKytpKSB7CkBAIC0yNzk4LDcgKzI3ODgsNyBA
QCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0
Y2hpbmcoQXNzZW1ibGVyOjpKdW1wTGlzdAogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2Vt
Ymxlcjo6VHJ1c3RlZEltbVB0cihjYW5vbmljYWxMb2NhbE5hbWUpLCBsb2NhbE5hbWVUb01hdGNo
KTsKICAgICBlbHNlIHsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0
ZWRJbW1QdHIoY2Fub25pY2FsTG9jYWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7Ci0gICAgICAg
IEFzc2VtYmxlcjo6SnVtcCBlbGVtZW50SXNIVE1MID0gdGVzdElzSFRNTEZsYWdPbk5vZGUoQXNz
ZW1ibGVyOjpOb25aZXJvLCBtX2Fzc2VtYmxlciwgZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7Cisg
ICAgICAgIEFzc2VtYmxlcjo6SnVtcCBlbGVtZW50SXNIVE1MID0gRE9NSklUOjpicmFuY2hUZXN0
SXNIVE1MRmxhZ09uTm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpOb25aZXJvLCBlbGVtZW50
QWRkcmVzc1JlZ2lzdGVyKTsKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRy
dXN0ZWRJbW1QdHIobG9jYWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgICAgIGVsZW1l
bnRJc0hUTUwubGluaygmbV9hc3NlbWJsZXIpOwogICAgIH0KQEAgLTI5ODAsNyArMjk3MCw3IEBA
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1
ZUV4YWN0TWF0Y2hpbmcoQXNzZW1ibGVyCiAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGFu
IEhUTUwgZWxlbWVudCwgaW4gYSBIVE1MIGRjb3VtZW50IChub3QgaW5jbHVkaW5nIFhIVE1MKSwg
dmFsdWUgbWF0Y2hpbmcgaXMgY2FzZSBpbnNlbnNpdGl2ZS4KICAgICAgICAgLy8gVGFraW5nIHRo
ZSBjb250cmFwb3NpdGl2ZSwgaWYgd2UgZmluZCB0aGUgZWxlbWVudCBpcyBub3QgSFRNTCBvciBp
cyBub3QgaW4gYSBIVE1MIGRvY3VtZW50LCB0aGUgY29uZGl0aW9uIGFib3ZlCiAgICAgICAgIC8v
IHNvdWxkIGJlIHN1ZmZpY2llbnQgYW5kIHdlIGNhbiBmYWlsIGVhcmx5LgotICAgICAgICBmYWls
dXJlQ2FzZXMuYXBwZW5kKHRlc3RJc0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9h
c3NlbWJsZXIsIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIpKTsKKyAgICAgICAgZmFpbHVyZUNhc2Vz
LmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0hUTUxGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBB
c3NlbWJsZXI6Olplcm8sIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIpKTsKIAogICAgICAgICB7CiAg
ICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIGRvY3VtZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwpA
QCAtMzAzMCw3ICszMDIwLDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRl
RWxlbWVudEF0dHJpYnV0ZUZ1bmN0aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoQXMKICAgICB9CiAgICAg
Y2FzZSBBdHRyaWJ1dGVDYXNlU2Vuc2l0aXZpdHk6OkhUTUxMZWdhY3lDYXNlSW5zZW5zaXRpdmU6
IHsKICAgICAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBzaG91bGRVc2VDYXNlU2Vuc2l0aXZlQ29t
cGFyaXNvbjsKLSAgICAgICAgc2hvdWxkVXNlQ2FzZVNlbnNpdGl2ZUNvbXBhcmlzb24uYXBwZW5k
KHRlc3RJc0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIGVsZW1l
bnRBZGRyZXNzUmVnaXN0ZXIpKTsKKyAgICAgICAgc2hvdWxkVXNlQ2FzZVNlbnNpdGl2ZUNvbXBh
cmlzb24uYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUobV9hc3NlbWJs
ZXIsIEFzc2VtYmxlcjo6WmVybywgZWxlbWVudEFkZHJlc3NSZWdpc3RlcikpOwogICAgICAgICB7
CiAgICAgICAgICAgICBMb2NhbFJlZ2lzdGVyIHNjcmF0Y2hSZWdpc3RlcihtX3JlZ2lzdGVyQWxs
b2NhdG9yKTsKICAgICAgICAgICAgIC8vIHNjcmF0Y2hSZWdpc3RlciA9IHBvaW50ZXIgdG8gdHJl
ZVNjb3BlLgpAQCAtMzExNiw3ICszMTA2LDcgQEAgc3RhdGljIHZvaWQganVtcElmRWxlbWVudElz
Tm90RW1wdHkoQXNzZW1ibGVyJiBhc3NlbWJsZXIsIFJlZ2lzdGVyQWxsb2NhdG9yJiByZWcKICAg
ICBBc3NlbWJsZXI6OkxhYmVsIGxvb3BTdGFydChhc3NlbWJsZXIubGFiZWwoKSk7CiAgICAgQXNz
ZW1ibGVyOjpKdW1wIG5vTW9yZUNoaWxkcmVuID0gYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNz
ZW1ibGVyOjpaZXJvLCBjdXJyZW50Q2hpbGQpOwogCi0gICAgbm90RW1wdHlDYXNlcy5hcHBlbmQo
dGVzdElzRWxlbWVudEZsYWdPbk5vZGUoQXNzZW1ibGVyOjpOb25aZXJvLCBhc3NlbWJsZXIsIGN1
cnJlbnRDaGlsZCkpOworICAgIG5vdEVtcHR5Q2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVz
dElzRWxlbWVudEZsYWdPbk5vZGUobV9hc3NlbWJsZXIsIEFzc2VtYmxlcjo6Tm9uWmVybywgY3Vy
cmVudENoaWxkKSk7CiAKICAgICB7CiAgICAgICAgIEFzc2VtYmxlcjo6SnVtcCBza2lwVGV4dE5v
ZGVDaGVjayA9IGFzc2VtYmxlci5icmFuY2hUZXN0MzIoQXNzZW1ibGVyOjpaZXJvLCBBc3NlbWJs
ZXI6OkFkZHJlc3MoY3VycmVudENoaWxkLCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSks
IEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc1RleHQoKSkpOwpAQCAtMzQxMSw3
ICszNDAxLDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVs
ZW1lbnRIYXNUYWdOYW1lKEFzc2VtYmxlcjo6SnVtcExpc3QKICAgICAgICAgICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1YWwsIEFz
c2VtYmxlcjo6QWRkcmVzcyhxdWFsaWZpZWROYW1lSW1wbCwgUXVhbGlmaWVkTmFtZTo6UXVhbGlm
aWVkTmFtZUltcGw6OmxvY2FsTmFtZU1lbW9yeU9mZnNldCgpKSwgY29uc3RhbnRSZWdpc3Rlcikp
OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgQXNzZW1ibGVyOjpKdW1wTGlzdCBjYXNl
U2Vuc2l0aXZlQ2FzZXM7Ci0gICAgICAgICAgICBjYXNlU2Vuc2l0aXZlQ2FzZXMuYXBwZW5kKHRl
c3RJc0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIGVsZW1lbnRB
ZGRyZXNzUmVnaXN0ZXIpKTsKKyAgICAgICAgICAgIGNhc2VTZW5zaXRpdmVDYXNlcy5hcHBlbmQo
RE9NSklUOjpicmFuY2hUZXN0SXNIVE1MRmxhZ09uTm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVy
OjpaZXJvLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7CiAgICAgICAgICAgICB7CiAgICAgICAg
ICAgICAgICAgTG9jYWxSZWdpc3RlciBkb2N1bWVudChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAg
ICAgICAgICAgICAgICBET01KSVQ6OmxvYWREb2N1bWVudChtX2Fzc2VtYmxlciwgZWxlbWVudEFk
ZHJlc3NSZWdpc3RlciwgZG9jdW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmlkbCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKaW5kZXggM2Ix
ZmRkMzJkYzlkYmNmYmM4YmJhMzQwMTdiYTdkYjVjN2RiMjMxOC4uNGI2MWJhM2U2YjY1NjNmY2Rm
YjI1OTAyMTk4M2QzOWJjMGE5ODI3ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCkBAIC0xMDEs
NyArMTAxLDcgQEAKIAogICAgIFtHZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbiwgU2V0dGVyTWF5VGhy
b3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBVU1ZTdHJpbmcgY29va2llOwogCi0gICAgW0NFUmVhY3Rp
b25zLCBJbXBsZW1lbnRlZEFzPWJvZHlPckZyYW1lc2V0LCBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlv
bl0gYXR0cmlidXRlIEhUTUxFbGVtZW50PyBib2R5OworICAgIFtET01KSVQsIENFUmVhY3Rpb25z
LCBJbXBsZW1lbnRlZEFzPWJvZHlPckZyYW1lc2V0LCBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0g
YXR0cmlidXRlIEhUTUxFbGVtZW50PyBib2R5OwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEhU
TUxIZWFkRWxlbWVudD8gaGVhZDsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTENvbGxlY3Rp
b24gaW1hZ2VzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkueWFtbCBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0
cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKaW5kZXggNTJjNTg0NWUwNzg2NzBkZGRhYzk3NzI5OTlj
Y2I4ZWE3ZDAxYmRmMy4uMWIxNTZlZTFiNzI2ODdhOTU4NmJkZGQ5YWZlMzk4OWI1YjJmZGM0MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9z
aXRvcnkueWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS55YW1sCkBAIC05LDMgKzksNCBAQCBET006CiAgICAgICAgICAgICAtIE5vZGVf
b3duZXJEb2N1bWVudAogICAgICAgICBEb2N1bWVudDoKICAgICAgICAgICAgIC0gRG9jdW1lbnRf
ZG9jdW1lbnRFbGVtZW50CisgICAgICAgICAgICAtIERvY3VtZW50X2JvZHkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUSGVscGVycy5oCmluZGV4IGIyYTM2ODM1OTQ1NTU3ZDMyMzg5MTA2ZGVmZDMw
MmIwMWRmMjFiZTQuLjllOTZlOGEwZWQ3MzNjYTM0M2ZhOWJmYmMzM2ZlNTI2NzMwNzg5ZTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApAQCAtMjcsNiArMjcsNyBAQAogI3By
YWdtYSBvbmNlCiAKICNpbmNsdWRlICJKU0RPTVdyYXBwZXIuaCIKKyNpbmNsdWRlICJOb2RlLmgi
CiAjaW5jbHVkZSAiU2NyaXB0V3JhcHBhYmxlLmgiCiAjaW5jbHVkZSA8ZG9taml0L0RPTUpJVFBh
dGNocG9pbnQuaD4KICNpbmNsdWRlIDxkb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oPgpA
QCAtMTc1LDYgKzE3NiwxNiBAQCBpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaElmTm90
RG9jdW1lbnRXcmFwcGVyKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgdAogdm9pZCBsb2FkRG9j
dW1lbnQoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgbm9kZSwgR1BSUmVnIG91dHB1dCk7CiB2b2lk
IGxvYWREb2N1bWVudEVsZW1lbnQoTWFjcm9Bc3NlbWJsZXImLCBHUFJSZWcgZG9jdW1lbnQsIEdQ
UlJlZyBvdXRwdXQpOwogCitpbmxpbmUgQ0NhbGxIZWxwZXJzOjpKdW1wIGJyYW5jaFRlc3RJc0Vs
ZW1lbnRGbGFnT25Ob2RlKE1hY3JvQXNzZW1ibGVyJiBqaXQsIENDYWxsSGVscGVyczo6UmVzdWx0
Q29uZGl0aW9uIGNvbmRpdGlvbiwgR1BSUmVnIG5vZGVBZGRyZXNzKQoreworICAgIHJldHVybiBq
aXQuYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKG5vZGVBZGRy
ZXNzLCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSksIENDYWxsSGVscGVyczo6VHJ1c3Rl
ZEltbTMyKE5vZGU6OmZsYWdJc0VsZW1lbnQoKSkpOworfQorCitpbmxpbmUgQ0NhbGxIZWxwZXJz
OjpKdW1wIGJyYW5jaFRlc3RIVE1MRmxhZ09uTm9kZShNYWNyb0Fzc2VtYmxlciYgaml0LCBDQ2Fs
bEhlbHBlcnM6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEdQUlJlZyBub2RlQWRkcmVzcykK
K3sKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3QzMihjb25kaXRpb24sIENDYWxsSGVscGVyczo6
QWRkcmVzcyhub2RlQWRkcmVzcywgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNIVE1MKCkpKTsKK30KKwogfSB9CiAK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01K
SVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCmluZGV4
IGJiZmVlN2RjNGJiNzgyZTczY2YyN2M5NzdiYzE4Mjk0YTU5NGI2ZDguLmNjZDIxYzNhOWNhMzdl
YTQzNzA1ODVjNjBmYjZlM2NiNzgwMzEzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9KU0RvY3VtZW50RE9NSklULmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNE
b2N1bWVudERPTUpJVC5jcHAKQEAgLTczLDYgKzczLDY5IEBAIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50RE9NSklUOjpjYWxs
RE9NCiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKK1JlZjxKU0M6OkRPTUpJVDo6UGF0Y2hw
b2ludD4gRG9jdW1lbnRCb2R5RE9NSklUOjpjaGVja0RPTSgpCit7CisgICAgcmV0dXJuIERPTUpJ
VDo6Y2hlY2tET008RG9jdW1lbnQ+KCk7Cit9CisKK1JlZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdl
dHRlclBhdGNocG9pbnQ+IERvY3VtZW50Qm9keURPTUpJVDo6Y2FsbERPTUdldHRlcigpCit7Cisg
ICAgUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludD4gcGF0Y2hwb2ludCA9
IEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2ludDo6Y3JlYXRlKCk7CisgICAgcGF0
Y2hwb2ludC0+bnVtR1BTY3JhdGNoUmVnaXN0ZXJzID0gMjsKKyAgICBwYXRjaHBvaW50LT5zZXRH
ZW5lcmF0b3IoWz1dKENDYWxsSGVscGVycyYgaml0LCBKU0M6OkRPTUpJVDo6UGF0Y2hwb2ludFBh
cmFtcyYgcGFyYW1zKSB7CisgICAgICAgIEpTVmFsdWVSZWdzIHJlc3VsdCA9IHBhcmFtc1swXS5q
c1ZhbHVlUmVncygpOworICAgICAgICBHUFJSZWcgZG9jdW1lbnQgPSBwYXJhbXNbMV0uZ3ByKCk7
CisgICAgICAgIEdQUlJlZyBnbG9iYWxPYmplY3QgPSBwYXJhbXNbMl0uZ3ByKCk7CisgICAgICAg
IEpTVmFsdWUgZ2xvYmFsT2JqZWN0VmFsdWUgPSBwYXJhbXNbMl0udmFsdWUoKTsKKyAgICAgICAg
R1BSUmVnIHNjcmF0Y2gxID0gcGFyYW1zLmdwU2NyYXRjaCgwKTsKKyAgICAgICAgR1BSUmVnIHNj
cmF0Y2gyID0gcGFyYW1zLmdwU2NyYXRjaCgxKTsKKworICAgICAgICBqaXQubG9hZFB0cihDQ2Fs
bEhlbHBlcnM6OkFkZHJlc3MoZG9jdW1lbnQsIEpTRG9jdW1lbnQ6Om9mZnNldE9mV3JhcHBlZCgp
KSwgc2NyYXRjaDEpOworICAgICAgICBET01KSVQ6OmxvYWREb2N1bWVudEVsZW1lbnQoaml0LCBz
Y3JhdGNoMSwgc2NyYXRjaDEpOworCisgICAgICAgIENDYWxsSGVscGVyczo6SnVtcExpc3QgbnVs
bENhc2VzOworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IHN1Y2Nlc3NDYXNlczsKKyAg
ICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQuYnJhbmNoVGVzdFB0cihDQ2FsbEhlbHBlcnM6Olpl
cm8sIHNjcmF0Y2gxKSk7CisgICAgICAgIG51bGxDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFuY2hU
ZXN0SXNIVE1MRmxhZ09uTm9kZShqaXQsIENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaDEpKTsK
KworICAgICAgICBSRUxFQVNFX0FTU0VSVCghQ0FTVF9PRkZTRVQoTm9kZSosIENvbnRhaW5lck5v
ZGUqKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFDQVNUX09GRlNFVChOb2RlKiwgRWxlbWVu
dCopKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUNBU1RfT0ZGU0VUKE5vZGUqLCBIVE1MRWxl
bWVudCopKTsKKworICAgICAgICAvLyBOb2RlKiBub2RlID0gY3VycmVudC5maXJzdENoaWxkKCk7
CisgICAgICAgIC8vIHdoaWxlIChub2RlICYmICFpczxIVE1MRWxlbWVudD4oKm5vZGUpKQorICAg
ICAgICAvLyAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CisgICAgICAgIC8vIHJldHVy
biBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxs
SGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgQ29udGFpbmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9y
eU9mZnNldCgpKSwgc2NyYXRjaDEpOworCisgICAgICAgIENDYWxsSGVscGVyczo6TGFiZWwgbG9v
cFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAgIG51bGxDYXNlcy5hcHBlbmQoaml0LmJyYW5j
aFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMSkpOworICAgICAgICBhdXRvIG5v
dEhUTUxFbGVtZW50Q2FzZSA9IERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUoaml0
LCBDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxKTsKKyAgICAgICAgLy8gTm93LCB3ZSBlbnN1
cmVkIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgaXMgSFRNTCBxdWFsaWZpZWQu
CisgICAgICAgIC8vIEl0IGFsbG93cyB1cyB0byBwZXJmb3JtIGxvY2FsIG5hbWUgY29tcGFyaXNv
biEKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBF
bGVtZW50Ojp0YWdRTmFtZU1lbW9yeU9mZnNldCgpICsgUXVhbGlmaWVkTmFtZTo6aW1wbE1lbW9y
eU9mZnNldCgpKSwgc2NyYXRjaDIpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6
OkFkZHJlc3Moc2NyYXRjaDIsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2Nh
bE5hbWVNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2gyKTsKKyAgICAgICAgc3VjY2Vzc0Nhc2VzLmFw
cGVuZChqaXQuYnJhbmNoUHRyKEFzc2VtYmxlcjo6RXF1YWwsIHNjcmF0Y2gyLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW1QdHIoSFRNTE5hbWVzOjpib2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSkp
KTsKKyAgICAgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoUHRyKEFzc2VtYmxlcjo6
RXF1YWwsIHNjcmF0Y2gyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoSFRNTE5hbWVzOjpm
cmFtZXNldFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpKSk7CisKKyAgICAgICAgbm90SFRNTEVsZW1l
bnRDYXNlLmxpbmsoJmppdCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhzY3JhdGNoMSwgTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2gx
KTsKKyAgICAgICAgaml0Lmp1bXAoKS5saW5rVG8obG9vcFN0YXJ0LCAmaml0KTsKKworICAgICAg
ICBzdWNjZXNzQ2FzZXMubGluaygmaml0KTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8SFRN
TEVsZW1lbnQ+KGppdCwgcGFyYW1zLCBzY3JhdGNoMSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQsIERP
TUpJVDo6dG9XcmFwcGVyU2xvdzxIVE1MRWxlbWVudD4sIGdsb2JhbE9iamVjdFZhbHVlKTsKKyAg
ICAgICAgYXV0byBkb25lID0gaml0Lmp1bXAoKTsKKworICAgICAgICBudWxsQ2FzZXMubGluaygm
aml0KTsKKyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc051bGwoKSwgcmVzdWx0KTsKKyAgICAgICAg
ZG9uZS5saW5rKCZqaXQpOworCisgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0
KCk7CisgICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVj
dDo6Zm9yRGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RG9jdW1lbnRfYm9keSk7
CisgICAgcmV0dXJuIHBhdGNocG9pbnQ7Cit9CisKIH0KIAogI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294463</attachid>
            <date>2016-11-10 19:54:29 -0800</date>
            <delta_ts>2016-11-10 21:23:38 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164627-20161110195016.patch</filename>
            <type>text/plain</type>
            <size>19640</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTY4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDUyMDA0YmZjMWM5MDFi
Yjk3ZDUxODJlNzA3ZDQwOTQxOGVkMjQ3Zi4uN2RjNDBmZmVjMjA3YzlmOTNlZmNkODY3MjA1NTA0
NGZhZTc2OTczNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTExLTEwICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIERv
Y3VtZW50I2JvZHkgc2hvdWxkIGhhdmUgRE9NSklUIHBhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBk
b2N1bWVudC5ib2R5IGFjY2Vzc29yLiBUbyBpbXBsZW1lbnQgaXQsIHdlIG5lZWQsCisKKyAgICAg
ICAgMS4gRE9NIHRyYXZlcnNpbmcgYWJpbGl0eSBmcm9tIEFTTS4KKyAgICAgICAgMi4gQ2hlY2tp
bmcgSFRNTEVsZW1lbnQuCisgICAgICAgIDMuIENoZWNraW5nIEhUTUxFbGVtZW50J3MgbG9jYWxO
YW1lLgorCisgICAgICAgIFRoZSBhYm92ZSBmZWF0dXJlcyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRl
ZCBpbiBDU1NKSVQuCisgICAgICAgIFdlIGV4dHJhY3Qgc29tZSBvZiB1dGlsaXRpZXMgZnJvbSBD
U1NKSVQgdG8gc2hhcmUgdGhlbSB3aXRoIERPTUpJVC4KKworICAgICAgICBUZXN0OiBqcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHkuaHRtbAorCisgICAgICAgICogY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1BhcmVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZp
b3VzQWRqYWNlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6Omp1bXBJZkVsZW1lbnRJc05vdEVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjp0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNvbXBpbGVyOjp0ZXN0SXNIVE1MRmxhZ09uTm9kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS55YW1sOgorICAgICAgICAqIGRvbWppdC9ET01KSVRIZWxwZXJzLmg6
CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUp
OgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Qm9keURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6bG9h
ZExvY2FsTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEJvZHlET01KSVQ6OmNhbGxE
T01HZXR0ZXIpOgorCiAyMDE2LTExLTEwICBCcmFkeSBFaWRzb24gIDxiZWlkc29uQGFwcGxlLmNv
bT4KIAogICAgICAgICBJbmRleGVkREIgMi4wIFN1cHBvcnQgdGhlIElEQkRhdGFiYXNlLm9uY2xv
c2UgZXZlbnQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21w
aWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKaW5k
ZXggMzkzMjQ0NTlhYjk5Y2I3MDMxMjI4MDY1MzkxNjZhYThlMWY0MWY2NC4uMDMwZGJkYzdmODA4
MDhiNDUzYzEyNmZkOWQyNTczYzY1YzdiMDkzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Y3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9T
ZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtMjAyMSwxMSArMjAyMSw2IEBAIHZvaWQgU2VsZWN0b3JD
b2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRNYXRjaGVzU2VsZWN0b3JMaXN0KEFzc2VtYmxl
cjo6SnVtcExpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0
SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24s
IEFzc2VtYmxlciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgbm9kZUFkZHJlc3Mp
Ci17Ci0gICAgcmV0dXJuIGFzc2VtYmxlci5icmFuY2hUZXN0MzIoY29uZGl0aW9uLCBBc3NlbWJs
ZXI6OkFkZHJlc3Mobm9kZUFkZHJlc3MsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgpKSwg
QXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lzRWxlbWVudCgpKSk7Ci19Ci0KIHZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJpZ2h0bW9zdFRyZWVXYWxrZXIoQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50JiBm
cmFnbWVudCkKIHsKICAgICBnZW5lcmF0ZUVsZW1lbnRNYXRjaGluZyhmYWlsdXJlQ2FzZXMsIGZh
aWx1cmVDYXNlcywgZnJhZ21lbnQpOwpAQCAtMjA0Myw3ICsyMDM4LDcgQEAgdm9pZCBTZWxlY3Rv
ckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUGFyZW50RWxlbWVudChBc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWkKICAgICAvLyAgICAgICAgIGZhaWx1cmUKICAgICBnZW5lcmF0ZVdhbGtUb1Bh
cmVudE5vZGUodGFyZ2V0UmVnaXN0ZXIpOwogICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3Nl
bWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIHRhcmdldFJlZ2lzdGVyKSk7Ci0g
ICAgZmFpbHVyZUNhc2VzLmFwcGVuZCh0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6
Olplcm8sIG1fYXNzZW1ibGVyLCB0YXJnZXRSZWdpc3RlcikpOworICAgIGZhaWx1cmVDYXNlcy5h
cHBlbmQoRE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShtX2Fzc2VtYmxlciwg
QXNzZW1ibGVyOjpaZXJvLCB0YXJnZXRSZWdpc3RlcikpOwogfQogCiB2b2lkIFNlbGVjdG9yQ29k
ZUdlbmVyYXRvcjo6Z2VuZXJhdGVQYXJlbnRFbGVtZW50VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1
bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQpA
QCAtMjA5Niw3ICsyMDkxLDcgQEAgaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQoQXNzZW1ibGVyOjoKICAgICBBc3NlbWJs
ZXI6OkxhYmVsIGxvb3BTdGFydCA9IG1fYXNzZW1ibGVyLmxhYmVsKCk7CiAgICAgbV9hc3NlbWJs
ZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3Mod29ya1JlZ2lzdGVyLCBOb2RlOjpuZXh0U2li
bGluZ01lbW9yeU9mZnNldCgpKSwgd29ya1JlZ2lzdGVyKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBw
ZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCB3b3JrUmVnaXN0
ZXIpKTsKLSAgICB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1fYXNz
ZW1ibGVyLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7Cisg
ICAgRE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShtX2Fzc2VtYmxlciwgQXNz
ZW1ibGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxl
cik7CiB9CiAKIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVXYWxr
VG9QcmV2aW91c0FkamFjZW50RWxlbWVudChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2Fz
ZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCB3b3JrUmVnaXN0ZXIpCkBAIC0yMTA0LDcgKzIwOTks
NyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUHJl
dmlvdXNBZGphY2VudEVsZW1lbnQoQXNzZW1ibAogICAgIEFzc2VtYmxlcjo6TGFiZWwgbG9vcFN0
YXJ0ID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2Vt
Ymxlcjo6QWRkcmVzcyh3b3JrUmVnaXN0ZXIsIE5vZGU6OnByZXZpb3VzU2libGluZ01lbW9yeU9m
ZnNldCgpKSwgd29ya1JlZ2lzdGVyKTsKICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1i
bGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpKTsKLSAgICB0
ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCB3b3Jr
UmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CisgICAgRE9NSklUOjpi
cmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpaZXJv
LCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKIHZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnQo
QXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25zdCBTZWxlY3RvckZyYWdtZW50
JiBmcmFnbWVudCkKQEAgLTI2NTEsMTEgKzI2NDYsNiBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGVFbGVtZW50TGlua01hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZh
aQogICAgICAgICBnZW5lcmF0ZUVsZW1lbnRJc0xpbmsoZmFpbHVyZUNhc2VzKTsKIH0KIAotc3Rh
dGljIGlubGluZSBBc3NlbWJsZXI6Okp1bXAgdGVzdElzSFRNTEZsYWdPbk5vZGUoQXNzZW1ibGVy
OjpSZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBBc3NlbWJsZXImIGFzc2VtYmxlciwgQXNzZW1i
bGVyOjpSZWdpc3RlcklEIG5vZGVBZGRyZXNzKQotewotICAgIHJldHVybiBhc3NlbWJsZXIuYnJh
bmNoVGVzdDMyKGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpBZGRyZXNzKG5vZGVBZGRyZXNzLCBOb2Rl
Ojpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKE5vZGU6
OmZsYWdJc0hUTUwoKSkpOwotfQotCiBzdGF0aWMgaW5saW5lIGJvb2wgY2FuTWF0Y2hTdHlsZUF0
dHJpYnV0ZShjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnQuYXR0cmlidXRlcy5zaXplKCk7ICsraSkgewpAQCAt
Mjc5OCw3ICsyNzg4LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxl
bWVudEF0dHJpYnV0ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVtcExpc3QKICAgICAgICAgbV9hc3Nl
bWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fub25pY2FsTG9jYWxOYW1lKSwg
bG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgZWxzZSB7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1vdmUo
QXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbm9uaWNhbExvY2FsTmFtZSksIGxvY2FsTmFtZVRv
TWF0Y2gpOwotICAgICAgICBBc3NlbWJsZXI6Okp1bXAgZWxlbWVudElzSFRNTCA9IHRlc3RJc0hU
TUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6Tm9uWmVybywgbV9hc3NlbWJsZXIsIGVsZW1lbnRBZGRy
ZXNzUmVnaXN0ZXIpOworICAgICAgICBBc3NlbWJsZXI6Okp1bXAgZWxlbWVudElzSFRNTCA9IERP
TUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUobV9hc3NlbWJsZXIsIEFzc2VtYmxlcjo6
Tm9uWmVybywgZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CiAgICAgICAgIG1fYXNzZW1ibGVyLm1v
dmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGxvY2FsTmFtZSksIGxvY2FsTmFtZVRvTWF0Y2gp
OwogICAgICAgICBlbGVtZW50SXNIVE1MLmxpbmsoJm1fYXNzZW1ibGVyKTsKICAgICB9CkBAIC0y
OTgwLDcgKzI5NzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVt
ZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKEFzc2VtYmxlcgogICAgICAgICAvLyBJZiB0
aGUgZWxlbWVudCBpcyBhbiBIVE1MIGVsZW1lbnQsIGluIGEgSFRNTCBkY291bWVudCAobm90IGlu
Y2x1ZGluZyBYSFRNTCksIHZhbHVlIG1hdGNoaW5nIGlzIGNhc2UgaW5zZW5zaXRpdmUuCiAgICAg
ICAgIC8vIFRha2luZyB0aGUgY29udHJhcG9zaXRpdmUsIGlmIHdlIGZpbmQgdGhlIGVsZW1lbnQg
aXMgbm90IEhUTUwgb3IgaXMgbm90IGluIGEgSFRNTCBkb2N1bWVudCwgdGhlIGNvbmRpdGlvbiBh
Ym92ZQogICAgICAgICAvLyBzb3VsZCBiZSBzdWZmaWNpZW50IGFuZCB3ZSBjYW4gZmFpbCBlYXJs
eS4KLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCh0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3Nl
bWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7CisgICAg
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFuY2hUZXN0SXNIVE1MRmxhZ09uTm9k
ZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpaZXJvLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7
CiAKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBkb2N1bWVudChtX3JlZ2lz
dGVyQWxsb2NhdG9yKTsKQEAgLTMwMzAsNyArMzAyMCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5n
KEFzCiAgICAgfQogICAgIGNhc2UgQXR0cmlidXRlQ2FzZVNlbnNpdGl2aXR5OjpIVE1MTGVnYWN5
Q2FzZUluc2Vuc2l0aXZlOiB7CiAgICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3Qgc2hvdWxkVXNl
Q2FzZVNlbnNpdGl2ZUNvbXBhcmlzb247Ci0gICAgICAgIHNob3VsZFVzZUNhc2VTZW5zaXRpdmVD
b21wYXJpc29uLmFwcGVuZCh0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1f
YXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7CisgICAgICAgIHNob3VsZFVzZUNh
c2VTZW5zaXRpdmVDb21wYXJpc29uLmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0hUTUxGbGFn
T25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRBZGRyZXNzUmVnaXN0
ZXIpKTsKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxSZWdpc3RlciBzY3JhdGNoUmVnaXN0
ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgICAgICAvLyBzY3JhdGNoUmVnaXN0ZXIg
PSBwb2ludGVyIHRvIHRyZWVTY29wZS4KQEAgLTMxMTYsNyArMzEwNiw3IEBAIHN0YXRpYyB2b2lk
IGp1bXBJZkVsZW1lbnRJc05vdEVtcHR5KEFzc2VtYmxlciYgYXNzZW1ibGVyLCBSZWdpc3RlckFs
bG9jYXRvciYgcmVnCiAgICAgQXNzZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQoYXNzZW1ibGVyLmxh
YmVsKCkpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBub01vcmVDaGlsZHJlbiA9IGFzc2VtYmxlci5i
cmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywgY3VycmVudENoaWxkKTsKIAotICAgIG5vdEVt
cHR5Q2FzZXMuYXBwZW5kKHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6Tm9uWmVy
bywgYXNzZW1ibGVyLCBjdXJyZW50Q2hpbGQpKTsKKyAgICBub3RFbXB0eUNhc2VzLmFwcGVuZChE
T01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJs
ZXI6Ok5vblplcm8sIGN1cnJlbnRDaGlsZCkpOwogCiAgICAgewogICAgICAgICBBc3NlbWJsZXI6
Okp1bXAgc2tpcFRleHROb2RlQ2hlY2sgPSBhc3NlbWJsZXIuYnJhbmNoVGVzdDMyKEFzc2VtYmxl
cjo6WmVybywgQXNzZW1ibGVyOjpBZGRyZXNzKGN1cnJlbnRDaGlsZCwgTm9kZTo6bm9kZUZsYWdz
TWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNUZXh0
KCkpKTsKQEAgLTM0MTEsNyArMzQwMSw3IEBAIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVy
YXRvcjo6Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZShBc3NlbWJsZXI6Okp1bXBMaXN0CiAgICAg
ICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFB0cihBc3NlbWJs
ZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MocXVhbGlmaWVkTmFtZUltcGwsIFF1YWxp
ZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2NhbE5hbWVNZW1vcnlPZmZzZXQoKSksIGNv
bnN0YW50UmVnaXN0ZXIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEFzc2VtYmxl
cjo6SnVtcExpc3QgY2FzZVNlbnNpdGl2ZUNhc2VzOwotICAgICAgICAgICAgY2FzZVNlbnNpdGl2
ZUNhc2VzLmFwcGVuZCh0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1fYXNz
ZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7CisgICAgICAgICAgICBjYXNlU2Vuc2l0
aXZlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUobV9hc3Nl
bWJsZXIsIEFzc2VtYmxlcjo6WmVybywgZWxlbWVudEFkZHJlc3NSZWdpc3RlcikpOwogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIgZG9jdW1lbnQobV9yZWdpc3Rl
ckFsbG9jYXRvcik7CiAgICAgICAgICAgICAgICAgRE9NSklUOjpsb2FkRG9jdW1lbnQobV9hc3Nl
bWJsZXIsIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIsIGRvY3VtZW50KTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuaWRsCmluZGV4IDNiMWZkZDMyZGM5ZGJjZmJjOGJiYTM0MDE3YmE3ZGI1YzdkYjIzMTguLjRi
NjFiYTNlNmI2NTYzZmNkZmIyNTkwMjE5ODNkMzliYzBhOTgyN2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3Vt
ZW50LmlkbApAQCAtMTAxLDcgKzEwMSw3IEBACiAKICAgICBbR2V0dGVyTWF5VGhyb3dFeGNlcHRp
b24sIFNldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgVVNWU3RyaW5nIGNvb2tpZTsK
IAotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1ib2R5T3JGcmFtZXNldCwgU2V0dGVy
TWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBIVE1MRWxlbWVudD8gYm9keTsKKyAgICBbRE9N
SklULCBDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1ib2R5T3JGcmFtZXNldCwgU2V0dGVyTWF5
VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBIVE1MRWxlbWVudD8gYm9keTsKIAogICAgIHJlYWRv
bmx5IGF0dHJpYnV0ZSBIVE1MSGVhZEVsZW1lbnQ/IGhlYWQ7CiAgICAgcmVhZG9ubHkgYXR0cmli
dXRlIEhUTUxDb2xsZWN0aW9uIGltYWdlczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwgYi9Tb3VyY2UvV2ViQ29yZS9k
b21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sCmluZGV4IDUyYzU4NDVlMDc4
NjcwZGRkYWM5NzcyOTk5Y2NiOGVhN2QwMWJkZjMuLjFiMTU2ZWUxYjcyNjg3YTk1ODZiZGRkOWFm
ZTM5ODliNWIyZmRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RP
TUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtOSwzICs5LDQgQEAgRE9NOgogICAg
ICAgICAgICAgLSBOb2RlX293bmVyRG9jdW1lbnQKICAgICAgICAgRG9jdW1lbnQ6CiAgICAgICAg
ICAgICAtIERvY3VtZW50X2RvY3VtZW50RWxlbWVudAorICAgICAgICAgICAgLSBEb2N1bWVudF9i
b2R5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oIGIv
U291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAppbmRleCBiMmEzNjgzNTk0NTU1
N2QzMjM4OTEwNmRlZmQzMDJiMDFkZjIxYmU0Li45M2MzNjllNDI0NzY1MTQ3ZjkxNDE1MGRiMDM5
MzBhYTMxM2NmYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVs
cGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKQEAgLTI3
LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNET01XcmFwcGVyLmgiCisj
aW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBwYWJsZS5oIgogI2luY2x1ZGUg
PGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg+CiAjaW5jbHVkZSA8ZG9taml0L0RPTUpJVFBhdGNo
cG9pbnRQYXJhbXMuaD4KQEAgLTE3NSw2ICsxNzYsMTYgQEAgaW5saW5lIENDYWxsSGVscGVyczo6
SnVtcCBicmFuY2hJZk5vdERvY3VtZW50V3JhcHBlcihDQ2FsbEhlbHBlcnMmIGppdCwgR1BSUmVn
IHQKIHZvaWQgbG9hZERvY3VtZW50KE1hY3JvQXNzZW1ibGVyJiwgR1BSUmVnIG5vZGUsIEdQUlJl
ZyBvdXRwdXQpOwogdm9pZCBsb2FkRG9jdW1lbnRFbGVtZW50KE1hY3JvQXNzZW1ibGVyJiwgR1BS
UmVnIGRvY3VtZW50LCBHUFJSZWcgb3V0cHV0KTsKIAoraW5saW5lIENDYWxsSGVscGVyczo6SnVt
cCBicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShNYWNyb0Fzc2VtYmxlciYgaml0LCBDQ2Fs
bEhlbHBlcnM6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEdQUlJlZyBub2RlQWRkcmVzcykK
K3sKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3QzMihjb25kaXRpb24sIENDYWxsSGVscGVyczo6
QWRkcmVzcyhub2RlQWRkcmVzcywgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBDQ2Fs
bEhlbHBlcnM6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNFbGVtZW50KCkpKTsKK30KKworaW5s
aW5lIENDYWxsSGVscGVyczo6SnVtcCBicmFuY2hUZXN0SXNIVE1MRmxhZ09uTm9kZShNYWNyb0Fz
c2VtYmxlciYgaml0LCBDQ2FsbEhlbHBlcnM6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEdQ
UlJlZyBub2RlQWRkcmVzcykKK3sKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3QzMihjb25kaXRp
b24sIENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlQWRkcmVzcywgTm9kZTo6bm9kZUZsYWdzTWVt
b3J5T2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNIVE1M
KCkpKTsKK30KKwogfSB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
aml0L0pTRG9jdW1lbnRET01KSVQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1l
bnRET01KSVQuY3BwCmluZGV4IGJiZmVlN2RjNGJiNzgyZTczY2YyN2M5NzdiYzE4Mjk0YTU5NGI2
ZDguLjVlZDI1ZmZmYzhmMTMzNjYzZGI2OTUxMGQ2ZGJmZDc3MDg2ZTg1YTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKQEAgLTczLDYgKzczLDc4IEBAIFJl
ZjxKU0M6OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRF
bGVtZW50RE9NSklUOjpjYWxsRE9NCiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKK1JlZjxK
U0M6OkRPTUpJVDo6UGF0Y2hwb2ludD4gRG9jdW1lbnRCb2R5RE9NSklUOjpjaGVja0RPTSgpCit7
CisgICAgcmV0dXJuIERPTUpJVDo6Y2hlY2tET008RG9jdW1lbnQ+KCk7Cit9CisKK3N0YXRpYyB2
b2lkIGxvYWRMb2NhbE5hbWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBodG1sRWxlbWVudCwg
R1BSUmVnIGxvY2FsTmFtZUltcGwpCit7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpB
ZGRyZXNzKGh0bWxFbGVtZW50LCBFbGVtZW50Ojp0YWdRTmFtZU1lbW9yeU9mZnNldCgpICsgUXVh
bGlmaWVkTmFtZTo6aW1wbE1lbW9yeU9mZnNldCgpKSwgbG9jYWxOYW1lSW1wbCk7CisgICAgaml0
LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGxvY2FsTmFtZUltcGwsIFF1YWxpZmllZE5h
bWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2NhbE5hbWVNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFt
ZUltcGwpOworfQorCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBE
b2N1bWVudEJvZHlET01KSVQ6OmNhbGxET01HZXR0ZXIoKQoreworICAgIFJlZjxKU0M6OkRPTUpJ
VDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPm51bUdQU2Ny
YXRjaFJlZ2lzdGVycyA9IDI7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2Fs
bEhlbHBlcnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgewor
ICAgICAgICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAg
ICAgICAgR1BSUmVnIGRvY3VtZW50ID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICBHUFJSZWcg
Z2xvYmFsT2JqZWN0ID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICBKU1ZhbHVlIGdsb2JhbE9i
amVjdFZhbHVlID0gcGFyYW1zWzJdLnZhbHVlKCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9
IHBhcmFtcy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHBhcmFtcy5n
cFNjcmF0Y2goMSk7CisKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGRvY3VtZW50LCBKU0RvY3VtZW50OjpvZmZzZXRPZldyYXBwZWQoKSksIHNjcmF0Y2gxKTsKKyAg
ICAgICAgRE9NSklUOjpsb2FkRG9jdW1lbnRFbGVtZW50KGppdCwgc2NyYXRjaDEsIHNjcmF0Y2gx
KTsKKworICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG51bGxDYXNlczsKKyAgICAgICAg
Q0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZXM7CisgICAgICAgIG51bGxDYXNlcy5h
cHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMSkpOwor
ICAgICAgICBudWxsQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5v
ZGUoaml0LCBDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxKSk7CisgICAgICAgIC8vIFdlIGVu
c3VyZWQgdGhhdCB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBIVE1MIHF1YWxpZmll
ZC4KKyAgICAgICAgLy8gSXQgYWxsb3dzIHVzIHRvIHBlcmZvcm0gbG9jYWwgbmFtZSBjb21wYXJp
c29uIQorICAgICAgICBsb2FkTG9jYWxOYW1lKGppdCwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAg
ICAgICAgbnVsbENhc2VzLmFwcGVuZChqaXQuYnJhbmNoUHRyKEFzc2VtYmxlcjo6Tm90RXF1YWws
IHNjcmF0Y2gyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoSFRNTE5hbWVzOjpodG1sVGFn
LmxvY2FsTmFtZSgpLmltcGwoKSkpKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghQ0FTVF9P
RkZTRVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFD
QVNUX09GRlNFVChOb2RlKiwgRWxlbWVudCopKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUNB
U1RfT0ZGU0VUKE5vZGUqLCBIVE1MRWxlbWVudCopKTsKKworICAgICAgICAvLyBOb2RlKiBub2Rl
ID0gY3VycmVudC5maXJzdENoaWxkKCk7CisgICAgICAgIC8vIHdoaWxlIChub2RlICYmICFpczxI
VE1MRWxlbWVudD4oKm5vZGUpKQorICAgICAgICAvLyAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJs
aW5nKCk7CisgICAgICAgIC8vIHJldHVybiBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7Cisg
ICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgQ29udGFp
bmVyTm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpKSwgc2NyYXRjaDEpOworCisgICAgICAg
IENDYWxsSGVscGVyczo6TGFiZWwgbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAgIG51
bGxDYXNlcy5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3Jh
dGNoMSkpOworICAgICAgICBhdXRvIG5vdEhUTUxFbGVtZW50Q2FzZSA9IERPTUpJVDo6YnJhbmNo
VGVzdElzSFRNTEZsYWdPbk5vZGUoaml0LCBDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxKTsK
KyAgICAgICAgLy8gV2UgZW5zdXJlZCB0aGF0IHRoZSBuYW1lIG9mIHRoZSBnaXZlbiBlbGVtZW50
IGlzIEhUTUwgcXVhbGlmaWVkLgorICAgICAgICAvLyBJdCBhbGxvd3MgdXMgdG8gcGVyZm9ybSBs
b2NhbCBuYW1lIGNvbXBhcmlzb24hCisgICAgICAgIGxvYWRMb2NhbE5hbWUoaml0LCBzY3JhdGNo
MSwgc2NyYXRjaDIpOworICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKGppdC5icmFuY2hQdHIo
QXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaDIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihI
VE1MTmFtZXM6OmJvZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgpKSkpOworICAgICAgICBzdWNjZXNz
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoQXNzZW1ibGVyOjpFcXVhbCwgc2NyYXRjaDIsIEND
YWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihIVE1MTmFtZXM6OmZyYW1lc2V0VGFnLmxvY2FsTmFt
ZSgpLmltcGwoKSkpKTsKKworICAgICAgICBub3RIVE1MRWxlbWVudENhc2UubGluaygmaml0KTsK
KyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBOb2Rl
OjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICBqaXQuanVt
cCgpLmxpbmtUbyhsb29wU3RhcnQsICZqaXQpOworCisgICAgICAgIHN1Y2Nlc3NDYXNlcy5saW5r
KCZqaXQpOworICAgICAgICBET01KSVQ6OnRvV3JhcHBlcjxIVE1MRWxlbWVudD4oaml0LCBwYXJh
bXMsIHNjcmF0Y2gxLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgRE9NSklUOjp0b1dyYXBwZXJTbG93
PEhUTUxFbGVtZW50PiwgZ2xvYmFsT2JqZWN0VmFsdWUpOworICAgICAgICBhdXRvIGRvbmUgPSBq
aXQuanVtcCgpOworCisgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOworICAgICAgICBqaXQu
bW92ZVZhbHVlKGpzTnVsbCgpLCByZXN1bHQpOworICAgICAgICBkb25lLmxpbmsoJmppdCk7CisK
KyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKyAgICB9KTsKKyAgICBw
YXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklUOjpB
YnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9ib2R5KTsKKyAgICByZXR1cm4gcGF0Y2hw
b2ludDsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAxNTY0NGFlMDI1OTk2NDZiZDVjOTliZTU3
ODRmNDZkNDlmODg4MWQ4Li45MjU3Mzg4Y2Q0NTk3NGE2N2EyNmQ5NWZlZDkyNWYwZDgxZmFiMThm
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMTYtMTEtMTAgIFl1c3VrZSBTdXp1a2kgIDx1dGF0
YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gRG9jdW1lbnQjYm9keSBzaG91
bGQgaGF2ZSBET01KSVQgcGF0Y2hwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHku
aHRtbDogQWRkZWQuCisKIDIwMTYtMTEtMTAgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUu
Y29tPgogCiAgICAgICAgIEluZGV4ZWREQiAyLjAgU3VwcG9ydCB0aGUgSURCRGF0YWJhc2Uub25j
bG9zZSBldmVudC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNz
b3ItZG9jdW1lbnQtYm9keS5odG1sIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nv
ci1kb2N1bWVudC1ib2R5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNDIxNzRlNWM3NGJjODUwYzBkOTVjZTli
ZTgzYmMzNzU4ZjY3MzZjYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2pzL2RvbS9k
b21qaXQtYWNjZXNzb3ItZG9jdW1lbnQtYm9keS5odG1sCkBAIC0wLDAgKzEsNzggQEAKKzwhRE9D
VFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8aWZyYW1lIGlkPSJ4
bWxmcmFtZSIgb25sb2FkPSJmcmFtZUxvYWRlZCgpIiBzdHlsZT0iaGVpZ2h0OjBweCIgc3JjPSJk
YXRhOmFwcGxpY2F0aW9uL3hodG1sK3htbCw8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdV
VEYtOCc/Pjxib2R5Lz4iPjwvaWZyYW1lPgorPGlmcmFtZSBpZD0ieG1sZnJhbWUyIiBvbmxvYWQ9
ImZyYW1lTG9hZGVkKCkiIHN0eWxlPSJoZWlnaHQ6MHB4IiBzcmM9ImRhdGE6YXBwbGljYXRpb24v
eGh0bWwreG1sLDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04Jz8+PGJvZHkvPiI+
PC9pZnJhbWU+Cis8c2NyaXB0PgorZGVzY3JpcHRpb24oJ1Rlc3QgRE9NSklUIGRvY3VtZW50LmJv
ZHkgYWNjZXNzb3Igd29ya3MuJyk7CisKK2lmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICB0ZXN0
UnVubmVyLndhaXRVbnRpbERvbmUoKTsKKwordmFyIHRhcmdldCA9IG51bGw7Cit2YXIgcmVzdWx0
ID0gbnVsbDsKK2Z1bmN0aW9uIHJ1blRlc3QoKQoreworICAgIHZhciB4bWxEb2N1bWVudCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCd4bWxmcmFtZScpLmNvbnRlbnREb2N1bWVudDsKKyAgICB2
YXIgeG1sRG9jdW1lbnQyID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3htbGZyYW1lMicpLmNv
bnRlbnREb2N1bWVudDsKKyAgICB2YXIgaHRtbCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2h0
bWwnKTsKKyAgICB2YXIgYm9keSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2JvZHknKTsKKwor
ICAgIHZhciBodG1sT25seSA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50
KCcnLCBudWxsLCBudWxsKTsKKyAgICBodG1sT25seS5hcHBlbmRDaGlsZChodG1sT25seS5jcmVh
dGVFbGVtZW50KCdodG1sJykpOworCisgICAgdmFyIG5vSFRNTCA9IGRvY3VtZW50LmltcGxlbWVu
dGF0aW9uLmNyZWF0ZURvY3VtZW50KCcnLCBudWxsLCBudWxsKTsKKyAgICB2YXIgZmlyc3QgPSBu
b0hUTUwuY3JlYXRlRWxlbWVudCgnbm9odG1sJyk7CisgICAgZmlyc3QuYXBwZW5kQ2hpbGQobm9I
VE1MLmNyZWF0ZUVsZW1lbnQoJ2JvZHknKSk7CisgICAgbm9IVE1MLmFwcGVuZENoaWxkKGZpcnN0
KTsKKworICAgIHZhciBmcmFtZXNldERvYyA9IGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0
ZURvY3VtZW50KCcnLCBudWxsLCBudWxsKTsKKyAgICB2YXIgZmlyc3QgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdodG1sJyk7CisgICAgdmFyIGZyYW1lc2V0ID0gZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnZnJhbWVzZXQnKTsKKyAgICBmaXJzdC5hcHBlbmRDaGlsZChmcmFtZXNldCk7CisgICAg
ZnJhbWVzZXREb2MuYXBwZW5kQ2hpbGQoZmlyc3QpOworCisgICAgdmFyIHRhcmdldHMgPSBbCisg
ICAgICAgIFsnSFRNTERvY3VtZW50JywgZG9jdW1lbnQsIGRvY3VtZW50LmdldEVsZW1lbnRzQnlU
YWdOYW1lKCdib2R5JylbMF1dLAorICAgICAgICBbJ1hNTERvY3VtZW50JywgeG1sRG9jdW1lbnQs
IG51bGxdLAorICAgICAgICBbJ1hNTERvY3VtZW50MicsIHhtbERvY3VtZW50MiwgYm9keV0sCisg
ICAgICAgIFsnTnVsbCcsIGRvY3VtZW50LmltcGxlbWVudGF0aW9uLmNyZWF0ZURvY3VtZW50KCcn
LCBudWxsLCBudWxsKSwgbnVsbF0sCisgICAgICAgIFsnSFRNTEVsZW1lbnQnLCBodG1sT25seSwg
bnVsbF0sCisgICAgICAgIFsnTm9IVE1MJywgbm9IVE1MLCBudWxsXSwKKyAgICAgICAgWydGcmFt
ZXNldCcsIGZyYW1lc2V0RG9jLCBmcmFtZXNldF0sCisgICAgXTsKKworICAgIC8vIFB1dCBIVE1M
Qm9keUVsZW1lbnQgaW4gWE1MRG9jdW1lbnQhCisgICAgaHRtbC5hcHBlbmRDaGlsZChib2R5KTsK
KyAgICB4bWxEb2N1bWVudDIucmVwbGFjZUNoaWxkKGh0bWwsIHhtbERvY3VtZW50Mi5maXJzdENo
aWxkKTsKKworICAgIGZvciAoW25hbWUsIHRhcmdldCwgcmVzdWx0XSBvZiB0YXJnZXRzKSB7Cisg
ICAgICAgIHZhciB0ZXh0ID0gYAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdCR7bmFtZX0oZWxl
bWVudCwgcmVzdWx0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYm9k
eSAhPT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgYDsKKyAgICAgICAgc2hvdWxkQmVUcnVlKGAoJHt0ZXh0fSkodGFyZ2V0LCBy
ZXN1bHQpYCk7CisgICAgfQorCisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICB0
ZXN0UnVubmVyLm5vdGlmeURvbmUoKTsKK30KK3ZhciBjb3VudCA9IDA7CitmdW5jdGlvbiBmcmFt
ZUxvYWRlZCgpCit7CisgICAgaWYgKCsrY291bnQgPT09IDIpCisgICAgICAgIHJ1blRlc3QoKTsK
K30KKzwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3Qu
anMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294471</attachid>
            <date>2016-11-10 21:23:43 -0800</date>
            <delta_ts>2016-11-10 21:31:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-164627-20161111141930.patch</filename>
            <type>text/plain</type>
            <size>22761</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJkOTgwZmFhMzRmZDc1
YTliY2Y2MDljMGZkNDhjZTdkMWRkYmE0YS4uZjQxM2E1ZGU5YzlkZTE2OGI5MjM5ZTBjOTljYWUz
Y2UxNjA0NTZiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDE2LTExLTEwICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIERv
Y3VtZW50I2JvZHkgc2hvdWxkIGhhdmUgRE9NSklUIHBhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBk
b2N1bWVudC5ib2R5IGFjY2Vzc29yLiBUbyBpbXBsZW1lbnQgaXQsIHdlIG5lZWQsCisKKyAgICAg
ICAgMS4gRE9NIHRyYXZlcnNpbmcgYWJpbGl0eSBmcm9tIEFTTS4KKyAgICAgICAgMi4gQ2hlY2tp
bmcgSFRNTEVsZW1lbnQuCisgICAgICAgIDMuIENoZWNraW5nIEhUTUxFbGVtZW50J3MgbG9jYWxO
YW1lLgorCisgICAgICAgIFRoZSBhYm92ZSBmZWF0dXJlcyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRl
ZCBpbiBDU1NKSVQuCisgICAgICAgIFdlIGV4dHJhY3Qgc29tZSBvZiB1dGlsaXRpZXMgZnJvbSBD
U1NKSVQgdG8gc2hhcmUgdGhlbSB3aXRoIERPTUpJVC4KKworICAgICAgICBUZXN0OiBqcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHkuaHRtbAorCisgICAgICAgICogY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1BhcmVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZp
b3VzQWRqYWNlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6Omp1bXBJZkVsZW1lbnRJc05vdEVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjp0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNvbXBpbGVyOjp0ZXN0SXNIVE1MRmxhZ09uTm9kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUQWJzdHJh
Y3RIZWFwUmVwb3NpdG9yeS55YW1sOgorICAgICAgICAqIGRvbWppdC9ET01KSVRIZWxwZXJzLmg6
CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2Rl
KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUp
OgorICAgICAgICAqIGRvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50Qm9keURPTUpJVDo6Y2hlY2tET00pOgorICAgICAgICAoV2ViQ29yZTo6bG9h
ZExvY2FsTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudEJvZHlET01KSVQ6OmNhbGxE
T01HZXR0ZXIpOgorCiAyMDE2LTExLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3
YUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTihyMjA3MTgyKTogW2lPU10gQ3Jhc2gg
YmVjYXVzZSBvZiBwYXNzaW5nIGZyZWVkIENGRGljdGlvbmFyeVJlZiB0byBDRyB3aGVuIGRlY29k
aW5nIGEgc3ViLXNhbXBsZWQgbGFyZ2UgaW1hZ2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxl
Y3RvckNvbXBpbGVyLmNwcAppbmRleCAzOTMyNDQ1OWFiOTljYjcwMzEyMjgwNjUzOTE2NmFhOGUx
ZjQxZjY0Li5lNDg0ODQ5YjkyZjlkNmNjYzYzZGFhODkzMDg0ZTFmZTQ0NzYyMzBlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCkBAIC0yMDIxLDExICsyMDIx
LDYgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudE1hdGNoZXNT
ZWxlY3Rvckxpc3QoQXNzZW1ibGVyOjpKdW1wTGkKICAgICB9CiB9CiAKLXN0YXRpYyBpbmxpbmUg
QXNzZW1ibGVyOjpKdW1wIHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6UmVzdWx0
Q29uZGl0aW9uIGNvbmRpdGlvbiwgQXNzZW1ibGVyJiBhc3NlbWJsZXIsIEFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCBub2RlQWRkcmVzcykKLXsKLSAgICByZXR1cm4gYXNzZW1ibGVyLmJyYW5jaFRlc3Qz
Mihjb25kaXRpb24sIEFzc2VtYmxlcjo6QWRkcmVzcyhub2RlQWRkcmVzcywgTm9kZTo6bm9kZUZs
YWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNF
bGVtZW50KCkpKTsKLX0KLQogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlUmln
aHRtb3N0VHJlZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0
IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQogewogICAgIGdlbmVyYXRlRWxlbWVudE1hdGNo
aW5nKGZhaWx1cmVDYXNlcywgZmFpbHVyZUNhc2VzLCBmcmFnbWVudCk7CkBAIC0yMDQzLDcgKzIw
MzgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVXYWxrVG9QYXJlbnRF
bGVtZW50KEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaQogICAgIC8vICAgICAgICAgZmFpbHVyZQog
ICAgIGdlbmVyYXRlV2Fsa1RvUGFyZW50Tm9kZSh0YXJnZXRSZWdpc3Rlcik7CiAgICAgZmFpbHVy
ZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxlci5icmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywg
dGFyZ2V0UmVnaXN0ZXIpKTsKLSAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHRlc3RJc0VsZW1lbnRG
bGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHRhcmdldFJlZ2lzdGVyKSk7
CisgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFn
T25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIHRhcmdldFJlZ2lzdGVyKSk7CiB9
CiAKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVBhcmVudEVsZW1lbnRUcmVl
V2Fsa2VyKEFzc2VtYmxlcjo6SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgY29uc3QgU2VsZWN0b3JG
cmFnbWVudCYgZnJhZ21lbnQpCkBAIC0yMDk2LDcgKzIwOTEsNyBAQCBpbmxpbmUgdm9pZCBTZWxl
Y3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvTmV4dEFkamFjZW50RWxlbWVudChBc3Nl
bWJsZXI6OgogICAgIEFzc2VtYmxlcjo6TGFiZWwgbG9vcFN0YXJ0ID0gbV9hc3NlbWJsZXIubGFi
ZWwoKTsKICAgICBtX2Fzc2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyh3b3JrUmVn
aXN0ZXIsIE5vZGU6Om5leHRTaWJsaW5nTWVtb3J5T2Zmc2V0KCkpLCB3b3JrUmVnaXN0ZXIpOwog
ICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJs
ZXI6Olplcm8sIHdvcmtSZWdpc3RlcikpOwotICAgIHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFz
c2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIHdvcmtSZWdpc3RlcikubGlua1RvKGxvb3BTdGFy
dCwgJm1fYXNzZW1ibGVyKTsKKyAgICBET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25O
b2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3RlcikubGlua1RvKGxv
b3BTdGFydCwgJm1fYXNzZW1ibGVyKTsKIH0KIAogaW5saW5lIHZvaWQgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZpb3VzQWRqYWNlbnRFbGVtZW50KEFzc2VtYmxlcjo6
SnVtcExpc3QmIGZhaWx1cmVDYXNlcywgQXNzZW1ibGVyOjpSZWdpc3RlcklEIHdvcmtSZWdpc3Rl
cikKQEAgLTIxMDQsNyArMjA5OSw3IEBAIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRv
cjo6Z2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVudChBc3NlbWJsCiAgICAgQXNz
ZW1ibGVyOjpMYWJlbCBsb29wU3RhcnQgPSBtX2Fzc2VtYmxlci5sYWJlbCgpOwogICAgIG1fYXNz
ZW1ibGVyLmxvYWRQdHIoQXNzZW1ibGVyOjpBZGRyZXNzKHdvcmtSZWdpc3RlciwgTm9kZTo6cHJl
dmlvdXNTaWJsaW5nTWVtb3J5T2Zmc2V0KCkpLCB3b3JrUmVnaXN0ZXIpOwogICAgIGZhaWx1cmVD
YXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8sIHdv
cmtSZWdpc3RlcikpOwotICAgIHRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVy
bywgbV9hc3NlbWJsZXIsIHdvcmtSZWdpc3RlcikubGlua1RvKGxvb3BTdGFydCwgJm1fYXNzZW1i
bGVyKTsKKyAgICBET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2RlKG1fYXNzZW1i
bGVyLCBBc3NlbWJsZXI6Olplcm8sIHdvcmtSZWdpc3RlcikubGlua1RvKGxvb3BTdGFydCwgJm1f
YXNzZW1ibGVyKTsKIH0KIAogdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fs
a1RvUHJldmlvdXNBZGphY2VudChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNv
bnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdtZW50KQpAQCAtMjY1MSwxMSArMjY0Niw2IEBAIHZv
aWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRMaW5rTWF0Y2hpbmcoQXNz
ZW1ibGVyOjpKdW1wTGlzdCYgZmFpCiAgICAgICAgIGdlbmVyYXRlRWxlbWVudElzTGluayhmYWls
dXJlQ2FzZXMpOwogfQogCi1zdGF0aWMgaW5saW5lIEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNIVE1M
RmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEFzc2VtYmxl
ciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJlZ2lzdGVySUQgbm9kZUFkZHJlc3MpCi17Ci0gICAg
cmV0dXJuIGFzc2VtYmxlci5icmFuY2hUZXN0MzIoY29uZGl0aW9uLCBBc3NlbWJsZXI6OkFkZHJl
c3Mobm9kZUFkZHJlc3MsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgpKSwgQXNzZW1ibGVy
OjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lzSFRNTCgpKSk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUg
Ym9vbCBjYW5NYXRjaFN0eWxlQXR0cmlidXRlKGNvbnN0IFNlbGVjdG9yRnJhZ21lbnQmIGZyYWdt
ZW50KQogewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmcmFnbWVudC5hdHRyaWJ1dGVz
LnNpemUoKTsgKytpKSB7CkBAIC0yNzk4LDcgKzI3ODgsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcoQXNzZW1ibGVyOjpKdW1w
TGlzdAogICAgICAgICBtX2Fzc2VtYmxlci5tb3ZlKEFzc2VtYmxlcjo6VHJ1c3RlZEltbVB0cihj
YW5vbmljYWxMb2NhbE5hbWUpLCBsb2NhbE5hbWVUb01hdGNoKTsKICAgICBlbHNlIHsKICAgICAg
ICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIoY2Fub25pY2FsTG9j
YWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7Ci0gICAgICAgIEFzc2VtYmxlcjo6SnVtcCBlbGVt
ZW50SXNIVE1MID0gdGVzdElzSFRNTEZsYWdPbk5vZGUoQXNzZW1ibGVyOjpOb25aZXJvLCBtX2Fz
c2VtYmxlciwgZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CisgICAgICAgIEFzc2VtYmxlcjo6SnVt
cCBlbGVtZW50SXNIVE1MID0gRE9NSklUOjpicmFuY2hUZXN0SXNIVE1MRmxhZ09uTm9kZShtX2Fz
c2VtYmxlciwgQXNzZW1ibGVyOjpOb25aZXJvLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIobG9jYWxOYW1l
KSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgICAgIGVsZW1lbnRJc0hUTUwubGluaygmbV9hc3Nl
bWJsZXIpOwogICAgIH0KQEAgLTI5ODAsNyArMjk3MCw3IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2Vu
ZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcoQXNzZW1i
bGVyCiAgICAgICAgIC8vIElmIHRoZSBlbGVtZW50IGlzIGFuIEhUTUwgZWxlbWVudCwgaW4gYSBI
VE1MIGRjb3VtZW50IChub3QgaW5jbHVkaW5nIFhIVE1MKSwgdmFsdWUgbWF0Y2hpbmcgaXMgY2Fz
ZSBpbnNlbnNpdGl2ZS4KICAgICAgICAgLy8gVGFraW5nIHRoZSBjb250cmFwb3NpdGl2ZSwgaWYg
d2UgZmluZCB0aGUgZWxlbWVudCBpcyBub3QgSFRNTCBvciBpcyBub3QgaW4gYSBIVE1MIGRvY3Vt
ZW50LCB0aGUgY29uZGl0aW9uIGFib3ZlCiAgICAgICAgIC8vIHNvdWxkIGJlIHN1ZmZpY2llbnQg
YW5kIHdlIGNhbiBmYWlsIGVhcmx5LgotICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKHRlc3RJ
c0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIGVsZW1lbnRBZGRy
ZXNzUmVnaXN0ZXIpKTsKKyAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5j
aFRlc3RJc0hUTUxGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIGVsZW1l
bnRBZGRyZXNzUmVnaXN0ZXIpKTsKIAogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbFJlZ2lz
dGVyIGRvY3VtZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwpAQCAtMzAzMCw3ICszMDIwLDcgQEAg
dm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZUZ1bmN0
aW9uQ2FsbFZhbHVlTWF0Y2hpbmcoQXMKICAgICB9CiAgICAgY2FzZSBBdHRyaWJ1dGVDYXNlU2Vu
c2l0aXZpdHk6OkhUTUxMZWdhY3lDYXNlSW5zZW5zaXRpdmU6IHsKICAgICAgICAgQXNzZW1ibGVy
OjpKdW1wTGlzdCBzaG91bGRVc2VDYXNlU2Vuc2l0aXZlQ29tcGFyaXNvbjsKLSAgICAgICAgc2hv
dWxkVXNlQ2FzZVNlbnNpdGl2ZUNvbXBhcmlzb24uYXBwZW5kKHRlc3RJc0hUTUxGbGFnT25Ob2Rl
KEFzc2VtYmxlcjo6WmVybywgbV9hc3NlbWJsZXIsIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIpKTsK
KyAgICAgICAgc2hvdWxkVXNlQ2FzZVNlbnNpdGl2ZUNvbXBhcmlzb24uYXBwZW5kKERPTUpJVDo6
YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUobV9hc3NlbWJsZXIsIEFzc2VtYmxlcjo6WmVybywg
ZWxlbWVudEFkZHJlc3NSZWdpc3RlcikpOwogICAgICAgICB7CiAgICAgICAgICAgICBMb2NhbFJl
Z2lzdGVyIHNjcmF0Y2hSZWdpc3RlcihtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKICAgICAgICAgICAg
IC8vIHNjcmF0Y2hSZWdpc3RlciA9IHBvaW50ZXIgdG8gdHJlZVNjb3BlLgpAQCAtMzExNiw3ICsz
MTA2LDcgQEAgc3RhdGljIHZvaWQganVtcElmRWxlbWVudElzTm90RW1wdHkoQXNzZW1ibGVyJiBh
c3NlbWJsZXIsIFJlZ2lzdGVyQWxsb2NhdG9yJiByZWcKICAgICBBc3NlbWJsZXI6OkxhYmVsIGxv
b3BTdGFydChhc3NlbWJsZXIubGFiZWwoKSk7CiAgICAgQXNzZW1ibGVyOjpKdW1wIG5vTW9yZUNo
aWxkcmVuID0gYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCBjdXJyZW50
Q2hpbGQpOwogCi0gICAgbm90RW1wdHlDYXNlcy5hcHBlbmQodGVzdElzRWxlbWVudEZsYWdPbk5v
ZGUoQXNzZW1ibGVyOjpOb25aZXJvLCBhc3NlbWJsZXIsIGN1cnJlbnRDaGlsZCkpOworICAgIG5v
dEVtcHR5Q2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzRWxlbWVudEZsYWdPbk5vZGUo
YXNzZW1ibGVyLCBBc3NlbWJsZXI6Ok5vblplcm8sIGN1cnJlbnRDaGlsZCkpOwogCiAgICAgewog
ICAgICAgICBBc3NlbWJsZXI6Okp1bXAgc2tpcFRleHROb2RlQ2hlY2sgPSBhc3NlbWJsZXIuYnJh
bmNoVGVzdDMyKEFzc2VtYmxlcjo6WmVybywgQXNzZW1ibGVyOjpBZGRyZXNzKGN1cnJlbnRDaGls
ZCwgTm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBBc3NlbWJsZXI6OlRydXN0ZWRJbW0z
MihOb2RlOjpmbGFnSXNUZXh0KCkpKTsKQEAgLTM0MTEsNyArMzQwMSw3IEBAIGlubGluZSB2b2lk
IFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZShBc3NlbWJs
ZXI6Okp1bXBMaXN0CiAgICAgICAgICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVy
LmJyYW5jaFB0cihBc3NlbWJsZXI6Ok5vdEVxdWFsLCBBc3NlbWJsZXI6OkFkZHJlc3MocXVhbGlm
aWVkTmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1YWxpZmllZE5hbWVJbXBsOjpsb2NhbE5hbWVN
ZW1vcnlPZmZzZXQoKSksIGNvbnN0YW50UmVnaXN0ZXIpKTsKICAgICAgICAgfSBlbHNlIHsKICAg
ICAgICAgICAgIEFzc2VtYmxlcjo6SnVtcExpc3QgY2FzZVNlbnNpdGl2ZUNhc2VzOwotICAgICAg
ICAgICAgY2FzZVNlbnNpdGl2ZUNhc2VzLmFwcGVuZCh0ZXN0SXNIVE1MRmxhZ09uTm9kZShBc3Nl
bWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7CisgICAg
ICAgICAgICBjYXNlU2Vuc2l0aXZlQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzSFRN
TEZsYWdPbk5vZGUobV9hc3NlbWJsZXIsIEFzc2VtYmxlcjo6WmVybywgZWxlbWVudEFkZHJlc3NS
ZWdpc3RlcikpOwogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIExvY2FsUmVnaXN0ZXIg
ZG9jdW1lbnQobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgICAgICAgICAgRE9NSklUOjps
b2FkRG9jdW1lbnQobV9hc3NlbWJsZXIsIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIsIGRvY3VtZW50
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCmluZGV4IDNiMWZkZDMyZGM5ZGJjZmJjOGJiYTM0MDE3
YmE3ZGI1YzdkYjIzMTguLjRiNjFiYTNlNmI2NTYzZmNkZmIyNTkwMjE5ODNkMzliYzBhOTgyN2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbApAQCAtMTAxLDcgKzEwMSw3IEBACiAKICAgICBbR2V0
dGVyTWF5VGhyb3dFeGNlcHRpb24sIFNldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUg
VVNWU3RyaW5nIGNvb2tpZTsKIAotICAgIFtDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1ib2R5
T3JGcmFtZXNldCwgU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBIVE1MRWxlbWVu
dD8gYm9keTsKKyAgICBbRE9NSklULCBDRVJlYWN0aW9ucywgSW1wbGVtZW50ZWRBcz1ib2R5T3JG
cmFtZXNldCwgU2V0dGVyTWF5VGhyb3dFeGNlcHRpb25dIGF0dHJpYnV0ZSBIVE1MRWxlbWVudD8g
Ym9keTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MSGVhZEVsZW1lbnQ/IGhlYWQ7CiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEhUTUxDb2xsZWN0aW9uIGltYWdlczsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1s
CmluZGV4IDUyYzU4NDVlMDc4NjcwZGRkYWM5NzcyOTk5Y2NiOGVhN2QwMWJkZjMuLjFiMTU2ZWUx
YjcyNjg3YTk1ODZiZGRkOWFmZTM5ODliNWIyZmRjNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRBYnN0cmFjdEhlYXBSZXBvc2l0b3J5LnlhbWwKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9taml0L0RPTUpJVEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbApAQCAtOSwz
ICs5LDQgQEAgRE9NOgogICAgICAgICAgICAgLSBOb2RlX293bmVyRG9jdW1lbnQKICAgICAgICAg
RG9jdW1lbnQ6CiAgICAgICAgICAgICAtIERvY3VtZW50X2RvY3VtZW50RWxlbWVudAorICAgICAg
ICAgICAgLSBEb2N1bWVudF9ib2R5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQv
RE9NSklUSGVscGVycy5oIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaApp
bmRleCBiMmEzNjgzNTk0NTU1N2QzMjM4OTEwNmRlZmQzMDJiMDFkZjIxYmU0Li45M2MzNjllNDI0
NzY1MTQ3ZjkxNDE1MGRiMDM5MzBhYTMxM2NmYmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb21qaXQvRE9NSklUSGVscGVycy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01K
SVRIZWxwZXJzLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAi
SlNET01XcmFwcGVyLmgiCisjaW5jbHVkZSAiTm9kZS5oIgogI2luY2x1ZGUgIlNjcmlwdFdyYXBw
YWJsZS5oIgogI2luY2x1ZGUgPGRvbWppdC9ET01KSVRQYXRjaHBvaW50Lmg+CiAjaW5jbHVkZSA8
ZG9taml0L0RPTUpJVFBhdGNocG9pbnRQYXJhbXMuaD4KQEAgLTE3NSw2ICsxNzYsMTYgQEAgaW5s
aW5lIENDYWxsSGVscGVyczo6SnVtcCBicmFuY2hJZk5vdERvY3VtZW50V3JhcHBlcihDQ2FsbEhl
bHBlcnMmIGppdCwgR1BSUmVnIHQKIHZvaWQgbG9hZERvY3VtZW50KE1hY3JvQXNzZW1ibGVyJiwg
R1BSUmVnIG5vZGUsIEdQUlJlZyBvdXRwdXQpOwogdm9pZCBsb2FkRG9jdW1lbnRFbGVtZW50KE1h
Y3JvQXNzZW1ibGVyJiwgR1BSUmVnIGRvY3VtZW50LCBHUFJSZWcgb3V0cHV0KTsKIAoraW5saW5l
IENDYWxsSGVscGVyczo6SnVtcCBicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShNYWNyb0Fz
c2VtYmxlciYgaml0LCBDQ2FsbEhlbHBlcnM6OlJlc3VsdENvbmRpdGlvbiBjb25kaXRpb24sIEdQ
UlJlZyBub2RlQWRkcmVzcykKK3sKKyAgICByZXR1cm4gaml0LmJyYW5jaFRlc3QzMihjb25kaXRp
b24sIENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlQWRkcmVzcywgTm9kZTo6bm9kZUZsYWdzTWVt
b3J5T2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0zMihOb2RlOjpmbGFnSXNFbGVt
ZW50KCkpKTsKK30KKworaW5saW5lIENDYWxsSGVscGVyczo6SnVtcCBicmFuY2hUZXN0SXNIVE1M
RmxhZ09uTm9kZShNYWNyb0Fzc2VtYmxlciYgaml0LCBDQ2FsbEhlbHBlcnM6OlJlc3VsdENvbmRp
dGlvbiBjb25kaXRpb24sIEdQUlJlZyBub2RlQWRkcmVzcykKK3sKKyAgICByZXR1cm4gaml0LmJy
YW5jaFRlc3QzMihjb25kaXRpb24sIENDYWxsSGVscGVyczo6QWRkcmVzcyhub2RlQWRkcmVzcywg
Tm9kZTo6bm9kZUZsYWdzTWVtb3J5T2Zmc2V0KCkpLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW0z
MihOb2RlOjpmbGFnSXNIVE1MKCkpKTsKK30KKwogfSB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9taml0L0pTRG9jdW1lbnRET01KSVQuY3BwCmluZGV4IGJiZmVlN2RjNGJiNzgyZTczY2Yy
N2M5NzdiYzE4Mjk0YTU5NGI2ZDguLmQxYTI1OGZiOTBmMjE1OWUwNGM3MTcxZmVkMThiOWQ3ZmVm
MDQ4NTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklU
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKQEAg
LTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkpTRE9NV3Jh
cHBlci5oIgogI2luY2x1ZGUgIkpTRWxlbWVudC5oIgorI2luY2x1ZGUgIkpTSFRNTEVsZW1lbnQu
aCIKICNpbmNsdWRlIDxkb21qaXQvRE9NSklUUGF0Y2hwb2ludC5oPgogI2luY2x1ZGUgPGRvbWpp
dC9ET01KSVRQYXRjaHBvaW50UGFyYW1zLmg+CiAKQEAgLTczLDYgKzc0LDc4IEBAIFJlZjxKU0M6
OkRPTUpJVDo6Q2FsbERPTUdldHRlclBhdGNocG9pbnQ+IERvY3VtZW50RG9jdW1lbnRFbGVtZW50
RE9NSklUOjpjYWxsRE9NCiAgICAgcmV0dXJuIHBhdGNocG9pbnQ7CiB9CiAKK1JlZjxKU0M6OkRP
TUpJVDo6UGF0Y2hwb2ludD4gRG9jdW1lbnRCb2R5RE9NSklUOjpjaGVja0RPTSgpCit7CisgICAg
cmV0dXJuIERPTUpJVDo6Y2hlY2tET008RG9jdW1lbnQ+KCk7Cit9CisKK3N0YXRpYyB2b2lkIGxv
YWRMb2NhbE5hbWUoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyBodG1sRWxlbWVudCwgR1BSUmVn
IGxvY2FsTmFtZUltcGwpCit7CisgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNz
KGh0bWxFbGVtZW50LCBFbGVtZW50Ojp0YWdRTmFtZU1lbW9yeU9mZnNldCgpICsgUXVhbGlmaWVk
TmFtZTo6aW1wbE1lbW9yeU9mZnNldCgpKSwgbG9jYWxOYW1lSW1wbCk7CisgICAgaml0LmxvYWRQ
dHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGxvY2FsTmFtZUltcGwsIFF1YWxpZmllZE5hbWU6OlF1
YWxpZmllZE5hbWVJbXBsOjpsb2NhbE5hbWVNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFtZUltcGwp
OworfQorCitSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVu
dEJvZHlET01KSVQ6OmNhbGxET01HZXR0ZXIoKQoreworICAgIFJlZjxKU0M6OkRPTUpJVDo6Q2Fs
bERPTUdldHRlclBhdGNocG9pbnQ+IHBhdGNocG9pbnQgPSBKU0M6OkRPTUpJVDo6Q2FsbERPTUdl
dHRlclBhdGNocG9pbnQ6OmNyZWF0ZSgpOworICAgIHBhdGNocG9pbnQtPm51bUdQU2NyYXRjaFJl
Z2lzdGVycyA9IDI7CisgICAgcGF0Y2hwb2ludC0+c2V0R2VuZXJhdG9yKFs9XShDQ2FsbEhlbHBl
cnMmIGppdCwgSlNDOjpET01KSVQ6OlBhdGNocG9pbnRQYXJhbXMmIHBhcmFtcykgeworICAgICAg
ICBKU1ZhbHVlUmVncyByZXN1bHQgPSBwYXJhbXNbMF0uanNWYWx1ZVJlZ3MoKTsKKyAgICAgICAg
R1BSUmVnIGRvY3VtZW50ID0gcGFyYW1zWzFdLmdwcigpOworICAgICAgICBHUFJSZWcgZ2xvYmFs
T2JqZWN0ID0gcGFyYW1zWzJdLmdwcigpOworICAgICAgICBKU1ZhbHVlIGdsb2JhbE9iamVjdFZh
bHVlID0gcGFyYW1zWzJdLnZhbHVlKCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMSA9IHBhcmFt
cy5ncFNjcmF0Y2goMCk7CisgICAgICAgIEdQUlJlZyBzY3JhdGNoMiA9IHBhcmFtcy5ncFNjcmF0
Y2goMSk7CisKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKGRvY3Vt
ZW50LCBKU0RvY3VtZW50OjpvZmZzZXRPZldyYXBwZWQoKSksIHNjcmF0Y2gxKTsKKyAgICAgICAg
RE9NSklUOjpsb2FkRG9jdW1lbnRFbGVtZW50KGppdCwgc2NyYXRjaDEsIHNjcmF0Y2gxKTsKKwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0IG51bGxDYXNlczsKKyAgICAgICAgQ0NhbGxI
ZWxwZXJzOjpKdW1wTGlzdCBzdWNjZXNzQ2FzZXM7CisgICAgICAgIG51bGxDYXNlcy5hcHBlbmQo
aml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMSkpOworICAgICAg
ICBudWxsQ2FzZXMuYXBwZW5kKERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUoaml0
LCBDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxKSk7CisgICAgICAgIC8vIFdlIGVuc3VyZWQg
dGhhdCB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4gZWxlbWVudCBpcyBIVE1MIHF1YWxpZmllZC4KKyAg
ICAgICAgLy8gSXQgYWxsb3dzIHVzIHRvIHBlcmZvcm0gbG9jYWwgbmFtZSBjb21wYXJpc29uIQor
ICAgICAgICBsb2FkTG9jYWxOYW1lKGppdCwgc2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAgICAgICAg
bnVsbENhc2VzLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6Tm90RXF1YWwsIHNj
cmF0Y2gyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoSFRNTE5hbWVzOjpodG1sVGFnLmxv
Y2FsTmFtZSgpLmltcGwoKSkpKTsKKworICAgICAgICBSRUxFQVNFX0FTU0VSVCghQ0FTVF9PRkZT
RVQoTm9kZSosIENvbnRhaW5lck5vZGUqKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFDQVNU
X09GRlNFVChOb2RlKiwgRWxlbWVudCopKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUNBU1Rf
T0ZGU0VUKE5vZGUqLCBIVE1MRWxlbWVudCopKTsKKworICAgICAgICAvLyBOb2RlKiBub2RlID0g
Y3VycmVudC5maXJzdENoaWxkKCk7CisgICAgICAgIC8vIHdoaWxlIChub2RlICYmICFpczxIVE1M
RWxlbWVudD4oKm5vZGUpKQorICAgICAgICAvLyAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCk7CisgICAgICAgIC8vIHJldHVybiBkb3duY2FzdDxIVE1MRWxlbWVudD4obm9kZSk7CisgICAg
ICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhzY3JhdGNoMSwgQ29udGFpbmVy
Tm9kZTo6Zmlyc3RDaGlsZE1lbW9yeU9mZnNldCgpKSwgc2NyYXRjaDEpOworCisgICAgICAgIEND
YWxsSGVscGVyczo6TGFiZWwgbG9vcFN0YXJ0ID0gaml0LmxhYmVsKCk7CisgICAgICAgIG51bGxD
YXNlcy5hcHBlbmQoaml0LmJyYW5jaFRlc3RQdHIoQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNo
MSkpOworICAgICAgICBhdXRvIG5vdEhUTUxFbGVtZW50Q2FzZSA9IERPTUpJVDo6YnJhbmNoVGVz
dElzSFRNTEZsYWdPbk5vZGUoaml0LCBDQ2FsbEhlbHBlcnM6Olplcm8sIHNjcmF0Y2gxKTsKKyAg
ICAgICAgLy8gV2UgZW5zdXJlZCB0aGF0IHRoZSBuYW1lIG9mIHRoZSBnaXZlbiBlbGVtZW50IGlz
IEhUTUwgcXVhbGlmaWVkLgorICAgICAgICAvLyBJdCBhbGxvd3MgdXMgdG8gcGVyZm9ybSBsb2Nh
bCBuYW1lIGNvbXBhcmlzb24hCisgICAgICAgIGxvYWRMb2NhbE5hbWUoaml0LCBzY3JhdGNoMSwg
c2NyYXRjaDIpOworICAgICAgICBzdWNjZXNzQ2FzZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoQ0Nh
bGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaDIsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihI
VE1MTmFtZXM6OmJvZHlUYWcubG9jYWxOYW1lKCkuaW1wbCgpKSkpOworICAgICAgICBzdWNjZXNz
Q2FzZXMuYXBwZW5kKGppdC5icmFuY2hQdHIoQ0NhbGxIZWxwZXJzOjpFcXVhbCwgc2NyYXRjaDIs
IENDYWxsSGVscGVyczo6VHJ1c3RlZEltbVB0cihIVE1MTmFtZXM6OmZyYW1lc2V0VGFnLmxvY2Fs
TmFtZSgpLmltcGwoKSkpKTsKKworICAgICAgICBub3RIVE1MRWxlbWVudENhc2UubGluaygmaml0
KTsKKyAgICAgICAgaml0LmxvYWRQdHIoQ0NhbGxIZWxwZXJzOjpBZGRyZXNzKHNjcmF0Y2gxLCBO
b2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpKSwgc2NyYXRjaDEpOworICAgICAgICBqaXQu
anVtcCgpLmxpbmtUbyhsb29wU3RhcnQsICZqaXQpOworCisgICAgICAgIHN1Y2Nlc3NDYXNlcy5s
aW5rKCZqaXQpOworICAgICAgICBET01KSVQ6OnRvV3JhcHBlcjxIVE1MRWxlbWVudD4oaml0LCBw
YXJhbXMsIHNjcmF0Y2gxLCBnbG9iYWxPYmplY3QsIHJlc3VsdCwgRE9NSklUOjp0b1dyYXBwZXJT
bG93PEhUTUxFbGVtZW50PiwgZ2xvYmFsT2JqZWN0VmFsdWUpOworICAgICAgICBhdXRvIGRvbmUg
PSBqaXQuanVtcCgpOworCisgICAgICAgIG51bGxDYXNlcy5saW5rKCZqaXQpOworICAgICAgICBq
aXQubW92ZVZhbHVlKGpzTnVsbCgpLCByZXN1bHQpOworICAgICAgICBkb25lLmxpbmsoJmppdCk7
CisKKyAgICAgICAgcmV0dXJuIENDYWxsSGVscGVyczo6SnVtcExpc3QoKTsKKyAgICB9KTsKKyAg
ICBwYXRjaHBvaW50LT5lZmZlY3QgPSBKU0M6OkRPTUpJVDo6RWZmZWN0Ojpmb3JEZWYoRE9NSklU
OjpBYnN0cmFjdEhlYXBSZXBvc2l0b3J5OjpEb2N1bWVudF9ib2R5KTsKKyAgICByZXR1cm4gcGF0
Y2hwb2ludDsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBkMzdhMzVhMDUwZWNjZTI3ODNlODg0
OTE3N2I0NWIyZWU0OGIyYWNhLi5jMGVmZWM2YjAyYmI4MDE0YWJiZTBkNWQ5NTJmYTQ2NWUyMDA4
MDQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTYtMTEtMTAgIFl1c3VrZSBTdXp1a2kgIDx1
dGF0YW5lLnRlYUBnbWFpbC5jb20+CisKKyAgICAgICAgW0RPTUpJVF0gRG9jdW1lbnQjYm9keSBz
aG91bGQgaGF2ZSBET01KSVQgcGF0Y2hwb2ludAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0NjI3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJv
ZHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBqcy9kb20vZG9taml0LWFjY2Vzc29y
LWRvY3VtZW50LWJvZHkuaHRtbDogQWRkZWQuCisKIDIwMTYtMTEtMTAgIENocmlzIER1bWV6ICA8
Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjA4NTIyKTogTGF5b3V0
VGVzdCBmYXN0L2xvYWRlci9yZWxvYWQtemVyby1ieXRlLXBsdWdpbi5odG1sIGlzIGEgZmxha3kg
ZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1k
b2N1bWVudC1ib2R5LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNj
ZXNzb3ItZG9jdW1lbnQtYm9keS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGE1MWZlMzNlOGI1
MDVmM2JjNzcxYTg4ZGE3NTA2ZmZjYTNlYmE4NAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZG9jdW1lbnQtYm9keS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw3OSBAQAorVGVzdCBET01KSVQgZG9jdW1lbnQuYm9keSBhY2Nlc3NvciB3b3Jrcy4K
KworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywg
Zm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2Vk
IGlzIHRydWUKKworVEVTVCBDT01QTEVURQorUEFTUyAoCisgICAgICAgICAgICBmdW5jdGlvbiB0
ZXN0SFRNTERvY3VtZW50KGVsZW1lbnQsIHJlc3VsdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50LmJvZHkgIT09IHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICkodGFyZ2V0LCByZXN1bHQpIGlzIHRydWUK
K1BBU1MgKAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdFhNTERvY3VtZW50KGVsZW1lbnQsIHJl
c3VsdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IDFlNDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmJvZHkgIT09IHJl
c3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAg
ICAgICkodGFyZ2V0LCByZXN1bHQpIGlzIHRydWUKK1BBU1MgKAorICAgICAgICAgICAgZnVuY3Rp
b24gdGVzdFhNTERvY3VtZW50MihlbGVtZW50LCByZXN1bHQpCisgICAgICAgICAgICB7CisgICAg
ICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAg
ICAgICAgICBpZiAoZWxlbWVudC5ib2R5ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICApKHRhcmdldCwgcmVzdWx0KSBpcyB0
cnVlCitQQVNTICgKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROdWxsKGVsZW1lbnQsIHJlc3Vs
dCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFl
NDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmJvZHkgIT09IHJlc3Vs
dCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAg
ICkodGFyZ2V0LCByZXN1bHQpIGlzIHRydWUKK1BBU1MgKAorICAgICAgICAgICAgZnVuY3Rpb24g
dGVzdEhUTUxFbGVtZW50KGVsZW1lbnQsIHJlc3VsdCkKKyAgICAgICAgICAgIHsKKyAgICAgICAg
ICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChlbGVtZW50LmJvZHkgIT09IHJlc3VsdCkKKyAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICkodGFyZ2V0LCByZXN1bHQpIGlzIHRydWUK
K1BBU1MgKAorICAgICAgICAgICAgZnVuY3Rpb24gdGVzdE5vSFRNTChlbGVtZW50LCByZXN1bHQp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ib2R5ICE9PSByZXN1bHQp
CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAp
KHRhcmdldCwgcmVzdWx0KSBpcyB0cnVlCitQQVNTICgKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRl
c3RGcmFtZXNldChlbGVtZW50LCByZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBp
ZiAoZWxlbWVudC5ib2R5ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVl
OworICAgICAgICAgICAgfQorICAgICAgICApKHRhcmdldCwgcmVzdWx0KSBpcyB0cnVlCisgCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJv
ZHkuaHRtbCBiL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQtYWNjZXNzb3ItZG9jdW1lbnQtYm9k
eS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjQyMTc0ZTVjNzRiYzg1MGMwZDk1Y2U5YmU4M2JjMzc1OGY2NzM2
Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29y
LWRvY3VtZW50LWJvZHkuaHRtbApAQCAtMCwwICsxLDc4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxo
dG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPGlmcmFtZSBpZD0ieG1sZnJhbWUiIG9ubG9h
ZD0iZnJhbWVMb2FkZWQoKSIgc3R5bGU9ImhlaWdodDowcHgiIHNyYz0iZGF0YTphcHBsaWNhdGlv
bi94aHRtbCt4bWwsPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48Ym9keS8+
Ij48L2lmcmFtZT4KKzxpZnJhbWUgaWQ9InhtbGZyYW1lMiIgb25sb2FkPSJmcmFtZUxvYWRlZCgp
IiBzdHlsZT0iaGVpZ2h0OjBweCIgc3JjPSJkYXRhOmFwcGxpY2F0aW9uL3hodG1sK3htbCw8P3ht
bCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSdVVEYtOCc/Pjxib2R5Lz4iPjwvaWZyYW1lPgorPHNj
cmlwdD4KK2Rlc2NyaXB0aW9uKCdUZXN0IERPTUpJVCBkb2N1bWVudC5ib2R5IGFjY2Vzc29yIHdv
cmtzLicpOworCitpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgdGVzdFJ1bm5lci53YWl0VW50
aWxEb25lKCk7CisKK3ZhciB0YXJnZXQgPSBudWxsOwordmFyIHJlc3VsdCA9IG51bGw7CitmdW5j
dGlvbiBydW5UZXN0KCkKK3sKKyAgICB2YXIgeG1sRG9jdW1lbnQgPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgneG1sZnJhbWUnKS5jb250ZW50RG9jdW1lbnQ7CisgICAgdmFyIHhtbERvY3VtZW50
MiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd4bWxmcmFtZTInKS5jb250ZW50RG9jdW1lbnQ7
CisgICAgdmFyIGh0bWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdodG1sJyk7CisgICAgdmFy
IGJvZHkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdib2R5Jyk7CisKKyAgICB2YXIgaHRtbE9u
bHkgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgbnVsbCwgbnVs
bCk7CisgICAgaHRtbE9ubHkuYXBwZW5kQ2hpbGQoaHRtbE9ubHkuY3JlYXRlRWxlbWVudCgnaHRt
bCcpKTsKKworICAgIHZhciBub0hUTUwgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVE
b2N1bWVudCgnJywgbnVsbCwgbnVsbCk7CisgICAgdmFyIGZpcnN0ID0gbm9IVE1MLmNyZWF0ZUVs
ZW1lbnQoJ25vaHRtbCcpOworICAgIGZpcnN0LmFwcGVuZENoaWxkKG5vSFRNTC5jcmVhdGVFbGVt
ZW50KCdib2R5JykpOworICAgIG5vSFRNTC5hcHBlbmRDaGlsZChmaXJzdCk7CisKKyAgICB2YXIg
ZnJhbWVzZXREb2MgPSBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywg
bnVsbCwgbnVsbCk7CisgICAgdmFyIGZpcnN0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHRt
bCcpOworICAgIHZhciBmcmFtZXNldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ZyYW1lc2V0
Jyk7CisgICAgZmlyc3QuYXBwZW5kQ2hpbGQoZnJhbWVzZXQpOworICAgIGZyYW1lc2V0RG9jLmFw
cGVuZENoaWxkKGZpcnN0KTsKKworICAgIHZhciB0YXJnZXRzID0gWworICAgICAgICBbJ0hUTUxE
b2N1bWVudCcsIGRvY3VtZW50LCBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYm9keScp
WzBdXSwKKyAgICAgICAgWydYTUxEb2N1bWVudCcsIHhtbERvY3VtZW50LCBudWxsXSwKKyAgICAg
ICAgWydYTUxEb2N1bWVudDInLCB4bWxEb2N1bWVudDIsIGJvZHldLAorICAgICAgICBbJ051bGwn
LCBkb2N1bWVudC5pbXBsZW1lbnRhdGlvbi5jcmVhdGVEb2N1bWVudCgnJywgbnVsbCwgbnVsbCks
IG51bGxdLAorICAgICAgICBbJ0hUTUxFbGVtZW50JywgaHRtbE9ubHksIG51bGxdLAorICAgICAg
ICBbJ05vSFRNTCcsIG5vSFRNTCwgbnVsbF0sCisgICAgICAgIFsnRnJhbWVzZXQnLCBmcmFtZXNl
dERvYywgZnJhbWVzZXRdLAorICAgIF07CisKKyAgICAvLyBQdXQgSFRNTEJvZHlFbGVtZW50IGlu
IFhNTERvY3VtZW50IQorICAgIGh0bWwuYXBwZW5kQ2hpbGQoYm9keSk7CisgICAgeG1sRG9jdW1l
bnQyLnJlcGxhY2VDaGlsZChodG1sLCB4bWxEb2N1bWVudDIuZmlyc3RDaGlsZCk7CisKKyAgICBm
b3IgKFtuYW1lLCB0YXJnZXQsIHJlc3VsdF0gb2YgdGFyZ2V0cykgeworICAgICAgICB2YXIgdGV4
dCA9IGAKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3Qke25hbWV9KGVsZW1lbnQsIHJlc3VsdCkK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LmJvZHkgIT09IHJlc3VsdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIGA7
CisgICAgICAgIHNob3VsZEJlVHJ1ZShgKCR7dGV4dH0pKHRhcmdldCwgcmVzdWx0KWApOworICAg
IH0KKworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgdGVzdFJ1bm5lci5ub3Rp
ZnlEb25lKCk7Cit9Cit2YXIgY291bnQgPSAwOworZnVuY3Rpb24gZnJhbWVMb2FkZWQoKQorewor
ICAgIGlmICgrK2NvdW50ID09PSAyKQorICAgICAgICBydW5UZXN0KCk7Cit9Cis8L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
KzwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="317150"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>294472</attachid>
            <date>2016-11-10 21:49:38 -0800</date>
            <delta_ts>2016-11-10 21:49:38 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-164627-20161111144524.patch</filename>
            <type>text/plain</type>
            <size>24994</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjA4NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjJkOTgwZmFhMzRmZDc1
YTliY2Y2MDljMGZkNDhjZTdkMWRkYmE0YS4uYWYwNGQ5MGQ4ZGM4MTNmMzRmNGQ5NzAxZmRmNDQ1
YTNiZWQ5YTNiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDE2LTExLTEwICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIERv
Y3VtZW50I2JvZHkgc2hvdWxkIGhhdmUgRE9NSklUIHBhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYyNworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBk
b2N1bWVudC5ib2R5IGFjY2Vzc29yLiBUbyBpbXBsZW1lbnQgaXQsIHdlIG5lZWQsCisKKyAgICAg
ICAgMS4gRE9NIHRyYXZlcnNpbmcgYWJpbGl0eSBmcm9tIEFTTS4KKyAgICAgICAgMi4gQ2hlY2tp
bmcgSFRNTEVsZW1lbnQuCisgICAgICAgIDMuIENoZWNraW5nIEhUTUxFbGVtZW50J3MgbG9jYWxO
YW1lLgorCisgICAgICAgIFRoZSBhYm92ZSBmZWF0dXJlcyBhcmUgYWxyZWFkeSBpbXBsZW1lbnRl
ZCBpbiBDU1NKSVQuCisgICAgICAgIFdlIGV4dHJhY3Qgc29tZSBvZiB1dGlsaXRpZXMgZnJvbSBD
U1NKSVQgdG8gc2hhcmUgdGhlbSB3aXRoIERPTUpJVC4KKworICAgICAgICBUZXN0OiBqcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHkuaHRtbAorCisgICAgICAgICogY3Nzaml0L1Nl
bGVjdG9yQ29tcGlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6
U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1BhcmVudEVsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpn
ZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vs
ZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb1ByZXZp
b3VzQWRqYWNlbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6
OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlTWF0Y2hpbmcp
OgorICAgICAgICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJh
dG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVWYWx1ZUV4YWN0TWF0Y2hpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6U2VsZWN0b3JDb21waWxlcjo6U2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5l
cmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5jdGlvbkNhbGxWYWx1ZU1hdGNoaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6Omp1bXBJZkVsZW1lbnRJc05vdEVtcHR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OlNlbGVjdG9yQ29tcGlsZXI6OlNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6
Z2VuZXJhdGVFbGVtZW50SGFzVGFnTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpTZWxlY3RvckNv
bXBpbGVyOjp0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTZWxlY3RvckNvbXBpbGVyOjp0ZXN0SXNIVE1MRmxhZ09uTm9kZSk6IERlbGV0ZWQuCisg
ICAgICAgICogZG9tL0RvY3VtZW50LmlkbDoKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAg
ICAgICAqIGRvbS9RdWFsaWZpZWROYW1lLmg6CisgICAgICAgICogZG9taml0L0RPTUpJVEFic3Ry
YWN0SGVhcFJlcG9zaXRvcnkueWFtbDoKKyAgICAgICAgKiBkb21qaXQvRE9NSklUSGVscGVycy5o
OgorICAgICAgICAoV2ViQ29yZTo6RE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpET01KSVQ6OmJyYW5jaFRlc3RJc0hUTUxGbGFnT25Ob2Rl
KToKKyAgICAgICAgKiBkb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudEJvZHlET01KSVQ6OmNoZWNrRE9NKToKKyAgICAgICAgKFdlYkNvcmU6Omxv
YWRMb2NhbE5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRCb2R5RE9NSklUOjpjYWxs
RE9NR2V0dGVyKToKKwogMjAxNi0xMS0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWJvdWhhbGxh
d2FAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjIwNzE4Mik6IFtpT1NdIENyYXNo
IGJlY2F1c2Ugb2YgcGFzc2luZyBmcmVlZCBDRkRpY3Rpb25hcnlSZWYgdG8gQ0cgd2hlbiBkZWNv
ZGluZyBhIHN1Yi1zYW1wbGVkIGxhcmdlIGltYWdlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3NqaXQvU2VsZWN0b3JDb21waWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU2Vs
ZWN0b3JDb21waWxlci5jcHAKaW5kZXggMzkzMjQ0NTlhYjk5Y2I3MDMxMjI4MDY1MzkxNjZhYThl
MWY0MWY2NC4uZTQ4NDg0OWI5MmY5ZDZjY2M2M2RhYTg5MzA4NGUxZmU0NDc2MjMwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvY3Nzaml0L1NlbGVjdG9yQ29tcGlsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2Nzc2ppdC9TZWxlY3RvckNvbXBpbGVyLmNwcApAQCAtMjAyMSwxMSArMjAy
MSw2IEBAIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRNYXRjaGVz
U2VsZWN0b3JMaXN0KEFzc2VtYmxlcjo6SnVtcExpCiAgICAgfQogfQogCi1zdGF0aWMgaW5saW5l
IEFzc2VtYmxlcjo6SnVtcCB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6OlJlc3Vs
dENvbmRpdGlvbiBjb25kaXRpb24sIEFzc2VtYmxlciYgYXNzZW1ibGVyLCBBc3NlbWJsZXI6OlJl
Z2lzdGVySUQgbm9kZUFkZHJlc3MpCi17Ci0gICAgcmV0dXJuIGFzc2VtYmxlci5icmFuY2hUZXN0
MzIoY29uZGl0aW9uLCBBc3NlbWJsZXI6OkFkZHJlc3Mobm9kZUFkZHJlc3MsIE5vZGU6Om5vZGVG
bGFnc01lbW9yeU9mZnNldCgpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lz
RWxlbWVudCgpKSk7Ci19Ci0KIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVJp
Z2h0bW9zdFRyZWVXYWxrZXIoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBjb25z
dCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKIHsKICAgICBnZW5lcmF0ZUVsZW1lbnRNYXRj
aGluZyhmYWlsdXJlQ2FzZXMsIGZhaWx1cmVDYXNlcywgZnJhZ21lbnQpOwpAQCAtMjA0Myw3ICsy
MDM4LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlV2Fsa1RvUGFyZW50
RWxlbWVudChBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWkKICAgICAvLyAgICAgICAgIGZhaWx1cmUK
ICAgICBnZW5lcmF0ZVdhbGtUb1BhcmVudE5vZGUodGFyZ2V0UmVnaXN0ZXIpOwogICAgIGZhaWx1
cmVDYXNlcy5hcHBlbmQobV9hc3NlbWJsZXIuYnJhbmNoVGVzdFB0cihBc3NlbWJsZXI6Olplcm8s
IHRhcmdldFJlZ2lzdGVyKSk7Ci0gICAgZmFpbHVyZUNhc2VzLmFwcGVuZCh0ZXN0SXNFbGVtZW50
RmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCB0YXJnZXRSZWdpc3Rlcikp
OworICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50Rmxh
Z09uTm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpaZXJvLCB0YXJnZXRSZWdpc3RlcikpOwog
fQogCiB2b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVQYXJlbnRFbGVtZW50VHJl
ZVdhbGtlcihBc3NlbWJsZXI6Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIGNvbnN0IFNlbGVjdG9y
RnJhZ21lbnQmIGZyYWdtZW50KQpAQCAtMjA5Niw3ICsyMDkxLDcgQEAgaW5saW5lIHZvaWQgU2Vs
ZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdhbGtUb05leHRBZGphY2VudEVsZW1lbnQoQXNz
ZW1ibGVyOjoKICAgICBBc3NlbWJsZXI6OkxhYmVsIGxvb3BTdGFydCA9IG1fYXNzZW1ibGVyLmxh
YmVsKCk7CiAgICAgbV9hc3NlbWJsZXIubG9hZFB0cihBc3NlbWJsZXI6OkFkZHJlc3Mod29ya1Jl
Z2lzdGVyLCBOb2RlOjpuZXh0U2libGluZ01lbW9yeU9mZnNldCgpKSwgd29ya1JlZ2lzdGVyKTsK
ICAgICBmYWlsdXJlQ2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1i
bGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpKTsKLSAgICB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShB
c3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3Rh
cnQsICZtX2Fzc2VtYmxlcik7CisgICAgRE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09u
Tm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhs
b29wU3RhcnQsICZtX2Fzc2VtYmxlcik7CiB9CiAKIGlubGluZSB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVXYWxrVG9QcmV2aW91c0FkamFjZW50RWxlbWVudChBc3NlbWJsZXI6
Okp1bXBMaXN0JiBmYWlsdXJlQ2FzZXMsIEFzc2VtYmxlcjo6UmVnaXN0ZXJJRCB3b3JrUmVnaXN0
ZXIpCkBAIC0yMTA0LDcgKzIwOTksNyBAQCBpbmxpbmUgdm9pZCBTZWxlY3RvckNvZGVHZW5lcmF0
b3I6OmdlbmVyYXRlV2Fsa1RvUHJldmlvdXNBZGphY2VudEVsZW1lbnQoQXNzZW1ibAogICAgIEFz
c2VtYmxlcjo6TGFiZWwgbG9vcFN0YXJ0ID0gbV9hc3NlbWJsZXIubGFiZWwoKTsKICAgICBtX2Fz
c2VtYmxlci5sb2FkUHRyKEFzc2VtYmxlcjo6QWRkcmVzcyh3b3JrUmVnaXN0ZXIsIE5vZGU6OnBy
ZXZpb3VzU2libGluZ01lbW9yeU9mZnNldCgpKSwgd29ya1JlZ2lzdGVyKTsKICAgICBmYWlsdXJl
Q2FzZXMuYXBwZW5kKG1fYXNzZW1ibGVyLmJyYW5jaFRlc3RQdHIoQXNzZW1ibGVyOjpaZXJvLCB3
b3JrUmVnaXN0ZXIpKTsKLSAgICB0ZXN0SXNFbGVtZW50RmxhZ09uTm9kZShBc3NlbWJsZXI6Olpl
cm8sIG1fYXNzZW1ibGVyLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZtX2Fzc2Vt
Ymxlcik7CisgICAgRE9NSklUOjpicmFuY2hUZXN0SXNFbGVtZW50RmxhZ09uTm9kZShtX2Fzc2Vt
YmxlciwgQXNzZW1ibGVyOjpaZXJvLCB3b3JrUmVnaXN0ZXIpLmxpbmtUbyhsb29wU3RhcnQsICZt
X2Fzc2VtYmxlcik7CiB9CiAKIHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZVdh
bGtUb1ByZXZpb3VzQWRqYWNlbnQoQXNzZW1ibGVyOjpKdW1wTGlzdCYgZmFpbHVyZUNhc2VzLCBj
b25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFnbWVudCkKQEAgLTI2NTEsMTEgKzI2NDYsNiBAQCB2
b2lkIFNlbGVjdG9yQ29kZUdlbmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50TGlua01hdGNoaW5nKEFz
c2VtYmxlcjo6SnVtcExpc3QmIGZhaQogICAgICAgICBnZW5lcmF0ZUVsZW1lbnRJc0xpbmsoZmFp
bHVyZUNhc2VzKTsKIH0KIAotc3RhdGljIGlubGluZSBBc3NlbWJsZXI6Okp1bXAgdGVzdElzSFRN
TEZsYWdPbk5vZGUoQXNzZW1ibGVyOjpSZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBBc3NlbWJs
ZXImIGFzc2VtYmxlciwgQXNzZW1ibGVyOjpSZWdpc3RlcklEIG5vZGVBZGRyZXNzKQotewotICAg
IHJldHVybiBhc3NlbWJsZXIuYnJhbmNoVGVzdDMyKGNvbmRpdGlvbiwgQXNzZW1ibGVyOjpBZGRy
ZXNzKG5vZGVBZGRyZXNzLCBOb2RlOjpub2RlRmxhZ3NNZW1vcnlPZmZzZXQoKSksIEFzc2VtYmxl
cjo6VHJ1c3RlZEltbTMyKE5vZGU6OmZsYWdJc0hUTUwoKSkpOwotfQotCiBzdGF0aWMgaW5saW5l
IGJvb2wgY2FuTWF0Y2hTdHlsZUF0dHJpYnV0ZShjb25zdCBTZWxlY3RvckZyYWdtZW50JiBmcmFn
bWVudCkKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZnJhZ21lbnQuYXR0cmlidXRl
cy5zaXplKCk7ICsraSkgewpAQCAtMjc5OCw3ICsyNzg4LDcgQEAgdm9pZCBTZWxlY3RvckNvZGVH
ZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEF0dHJpYnV0ZU1hdGNoaW5nKEFzc2VtYmxlcjo6SnVt
cExpc3QKICAgICAgICAgbV9hc3NlbWJsZXIubW92ZShBc3NlbWJsZXI6OlRydXN0ZWRJbW1QdHIo
Y2Fub25pY2FsTG9jYWxOYW1lKSwgbG9jYWxOYW1lVG9NYXRjaCk7CiAgICAgZWxzZSB7CiAgICAg
ICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGNhbm9uaWNhbExv
Y2FsTmFtZSksIGxvY2FsTmFtZVRvTWF0Y2gpOwotICAgICAgICBBc3NlbWJsZXI6Okp1bXAgZWxl
bWVudElzSFRNTCA9IHRlc3RJc0hUTUxGbGFnT25Ob2RlKEFzc2VtYmxlcjo6Tm9uWmVybywgbV9h
c3NlbWJsZXIsIGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIpOworICAgICAgICBBc3NlbWJsZXI6Okp1
bXAgZWxlbWVudElzSFRNTCA9IERPTUpJVDo6YnJhbmNoVGVzdElzSFRNTEZsYWdPbk5vZGUobV9h
c3NlbWJsZXIsIEFzc2VtYmxlcjo6Tm9uWmVybywgZWxlbWVudEFkZHJlc3NSZWdpc3Rlcik7CiAg
ICAgICAgIG1fYXNzZW1ibGVyLm1vdmUoQXNzZW1ibGVyOjpUcnVzdGVkSW1tUHRyKGxvY2FsTmFt
ZSksIGxvY2FsTmFtZVRvTWF0Y2gpOwogICAgICAgICBlbGVtZW50SXNIVE1MLmxpbmsoJm1fYXNz
ZW1ibGVyKTsKICAgICB9CkBAIC0yOTgwLDcgKzI5NzAsNyBAQCB2b2lkIFNlbGVjdG9yQ29kZUdl
bmVyYXRvcjo6Z2VuZXJhdGVFbGVtZW50QXR0cmlidXRlVmFsdWVFeGFjdE1hdGNoaW5nKEFzc2Vt
YmxlcgogICAgICAgICAvLyBJZiB0aGUgZWxlbWVudCBpcyBhbiBIVE1MIGVsZW1lbnQsIGluIGEg
SFRNTCBkY291bWVudCAobm90IGluY2x1ZGluZyBYSFRNTCksIHZhbHVlIG1hdGNoaW5nIGlzIGNh
c2UgaW5zZW5zaXRpdmUuCiAgICAgICAgIC8vIFRha2luZyB0aGUgY29udHJhcG9zaXRpdmUsIGlm
IHdlIGZpbmQgdGhlIGVsZW1lbnQgaXMgbm90IEhUTUwgb3IgaXMgbm90IGluIGEgSFRNTCBkb2N1
bWVudCwgdGhlIGNvbmRpdGlvbiBhYm92ZQogICAgICAgICAvLyBzb3VsZCBiZSBzdWZmaWNpZW50
IGFuZCB3ZSBjYW4gZmFpbCBlYXJseS4KLSAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZCh0ZXN0
SXNIVE1MRmxhZ09uTm9kZShBc3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCBlbGVtZW50QWRk
cmVzc1JlZ2lzdGVyKSk7CisgICAgICAgIGZhaWx1cmVDYXNlcy5hcHBlbmQoRE9NSklUOjpicmFu
Y2hUZXN0SXNIVE1MRmxhZ09uTm9kZShtX2Fzc2VtYmxlciwgQXNzZW1ibGVyOjpaZXJvLCBlbGVt
ZW50QWRkcmVzc1JlZ2lzdGVyKSk7CiAKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxSZWdp
c3RlciBkb2N1bWVudChtX3JlZ2lzdGVyQWxsb2NhdG9yKTsKQEAgLTMwMzAsNyArMzAyMCw3IEBA
IHZvaWQgU2VsZWN0b3JDb2RlR2VuZXJhdG9yOjpnZW5lcmF0ZUVsZW1lbnRBdHRyaWJ1dGVGdW5j
dGlvbkNhbGxWYWx1ZU1hdGNoaW5nKEFzCiAgICAgfQogICAgIGNhc2UgQXR0cmlidXRlQ2FzZVNl
bnNpdGl2aXR5OjpIVE1MTGVnYWN5Q2FzZUluc2Vuc2l0aXZlOiB7CiAgICAgICAgIEFzc2VtYmxl
cjo6SnVtcExpc3Qgc2hvdWxkVXNlQ2FzZVNlbnNpdGl2ZUNvbXBhcmlzb247Ci0gICAgICAgIHNo
b3VsZFVzZUNhc2VTZW5zaXRpdmVDb21wYXJpc29uLmFwcGVuZCh0ZXN0SXNIVE1MRmxhZ09uTm9k
ZShBc3NlbWJsZXI6Olplcm8sIG1fYXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyKSk7
CisgICAgICAgIHNob3VsZFVzZUNhc2VTZW5zaXRpdmVDb21wYXJpc29uLmFwcGVuZChET01KSVQ6
OmJyYW5jaFRlc3RJc0hUTUxGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8s
IGVsZW1lbnRBZGRyZXNzUmVnaXN0ZXIpKTsKICAgICAgICAgewogICAgICAgICAgICAgTG9jYWxS
ZWdpc3RlciBzY3JhdGNoUmVnaXN0ZXIobV9yZWdpc3RlckFsbG9jYXRvcik7CiAgICAgICAgICAg
ICAvLyBzY3JhdGNoUmVnaXN0ZXIgPSBwb2ludGVyIHRvIHRyZWVTY29wZS4KQEAgLTMxMTYsNyAr
MzEwNiw3IEBAIHN0YXRpYyB2b2lkIGp1bXBJZkVsZW1lbnRJc05vdEVtcHR5KEFzc2VtYmxlciYg
YXNzZW1ibGVyLCBSZWdpc3RlckFsbG9jYXRvciYgcmVnCiAgICAgQXNzZW1ibGVyOjpMYWJlbCBs
b29wU3RhcnQoYXNzZW1ibGVyLmxhYmVsKCkpOwogICAgIEFzc2VtYmxlcjo6SnVtcCBub01vcmVD
aGlsZHJlbiA9IGFzc2VtYmxlci5icmFuY2hUZXN0UHRyKEFzc2VtYmxlcjo6WmVybywgY3VycmVu
dENoaWxkKTsKIAotICAgIG5vdEVtcHR5Q2FzZXMuYXBwZW5kKHRlc3RJc0VsZW1lbnRGbGFnT25O
b2RlKEFzc2VtYmxlcjo6Tm9uWmVybywgYXNzZW1ibGVyLCBjdXJyZW50Q2hpbGQpKTsKKyAgICBu
b3RFbXB0eUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0VsZW1lbnRGbGFnT25Ob2Rl
KGFzc2VtYmxlciwgQXNzZW1ibGVyOjpOb25aZXJvLCBjdXJyZW50Q2hpbGQpKTsKIAogICAgIHsK
ICAgICAgICAgQXNzZW1ibGVyOjpKdW1wIHNraXBUZXh0Tm9kZUNoZWNrID0gYXNzZW1ibGVyLmJy
YW5jaFRlc3QzMihBc3NlbWJsZXI6Olplcm8sIEFzc2VtYmxlcjo6QWRkcmVzcyhjdXJyZW50Q2hp
bGQsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgpKSwgQXNzZW1ibGVyOjpUcnVzdGVkSW1t
MzIoTm9kZTo6ZmxhZ0lzVGV4dCgpKSk7CkBAIC0zNDExLDcgKzM0MDEsNyBAQCBpbmxpbmUgdm9p
ZCBTZWxlY3RvckNvZGVHZW5lcmF0b3I6OmdlbmVyYXRlRWxlbWVudEhhc1RhZ05hbWUoQXNzZW1i
bGVyOjpKdW1wTGlzdAogICAgICAgICAgICAgZmFpbHVyZUNhc2VzLmFwcGVuZChtX2Fzc2VtYmxl
ci5icmFuY2hQdHIoQXNzZW1ibGVyOjpOb3RFcXVhbCwgQXNzZW1ibGVyOjpBZGRyZXNzKHF1YWxp
ZmllZE5hbWVJbXBsLCBRdWFsaWZpZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6bG9jYWxOYW1l
TWVtb3J5T2Zmc2V0KCkpLCBjb25zdGFudFJlZ2lzdGVyKSk7CiAgICAgICAgIH0gZWxzZSB7CiAg
ICAgICAgICAgICBBc3NlbWJsZXI6Okp1bXBMaXN0IGNhc2VTZW5zaXRpdmVDYXNlczsKLSAgICAg
ICAgICAgIGNhc2VTZW5zaXRpdmVDYXNlcy5hcHBlbmQodGVzdElzSFRNTEZsYWdPbk5vZGUoQXNz
ZW1ibGVyOjpaZXJvLCBtX2Fzc2VtYmxlciwgZWxlbWVudEFkZHJlc3NSZWdpc3RlcikpOworICAg
ICAgICAgICAgY2FzZVNlbnNpdGl2ZUNhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0hU
TUxGbGFnT25Ob2RlKG1fYXNzZW1ibGVyLCBBc3NlbWJsZXI6Olplcm8sIGVsZW1lbnRBZGRyZXNz
UmVnaXN0ZXIpKTsKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBMb2NhbFJlZ2lzdGVy
IGRvY3VtZW50KG1fcmVnaXN0ZXJBbGxvY2F0b3IpOwogICAgICAgICAgICAgICAgIERPTUpJVDo6
bG9hZERvY3VtZW50KG1fYXNzZW1ibGVyLCBlbGVtZW50QWRkcmVzc1JlZ2lzdGVyLCBkb2N1bWVu
dCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmlkbAppbmRleCAzYjFmZGQzMmRjOWRiY2ZiYzhiYmEzNDAx
N2JhN2RiNWM3ZGIyMzE4Li4wMTE3MDRkMWMwMzQ1MjE1ODNiZmViY2FkNDZhNjU3Njk1ZDk5ODFk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaWRsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5pZGwKQEAgLTEwMSw3ICsxMDEsNyBAQAogCiAgICAgW0dl
dHRlck1heVRocm93RXhjZXB0aW9uLCBTZXR0ZXJNYXlUaHJvd0V4Y2VwdGlvbl0gYXR0cmlidXRl
IFVTVlN0cmluZyBjb29raWU7CiAKLSAgICBbQ0VSZWFjdGlvbnMsIEltcGxlbWVudGVkQXM9Ym9k
eU9yRnJhbWVzZXQsIFNldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgSFRNTEVsZW1l
bnQ/IGJvZHk7CisgICAgW0NFUmVhY3Rpb25zLCBET01KSVQsIEltcGxlbWVudGVkQXM9Ym9keU9y
RnJhbWVzZXQsIFNldHRlck1heVRocm93RXhjZXB0aW9uXSBhdHRyaWJ1dGUgSFRNTEVsZW1lbnQ/
IGJvZHk7CiAKICAgICByZWFkb25seSBhdHRyaWJ1dGUgSFRNTEhlYWRFbGVtZW50PyBoZWFkOwog
ICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBIVE1MQ29sbGVjdGlvbiBpbWFnZXM7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnQuaAppbmRleCA2MWE2Mzc0ZDVmODZiNWJjNDgyOGZhYTQ2N2Y0MzNhYWNmNGJiMGJlLi41YWRl
ZDllYjAyM2EyOTA4MTY5NTMxM2U0N2MyMTdhZGZlMmNjOWE0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgK
QEAgLTIwMiw5ICsyMDIsOSBAQCBjbGFzcyBFbGVtZW50IDogcHVibGljIENvbnRhaW5lck5vZGUg
ewogICAgIHZpcnR1YWwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogY3Nzb21TdHlsZSgpOwogCiAgICAg
Y29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnUU5hbWUoKSBjb25zdCB7IHJldHVybiBtX3RhZ05hbWU7
IH0KLSNpZiBFTkFCTEUoQ1NTX1NFTEVDVE9SX0pJVCkKKyNpZiBFTkFCTEUoSklUKQogICAgIHN0
YXRpYyBwdHJkaWZmX3QgdGFnUU5hbWVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoRWxlbWVudCwgbV90YWdOYW1lKTsgfQotI2VuZGlmIC8vIEVOQUJMRShDU1NfU0VMRUNU
T1JfSklUKQorI2VuZGlmIC8vIEVOQUJMRShKSVQpCiAgICAgU3RyaW5nIHRhZ05hbWUoKSBjb25z
dCB7IHJldHVybiBub2RlTmFtZSgpOyB9CiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIHRhZ05hbWUpIGNvbnN0IHsgcmV0dXJuIG1fdGFnTmFtZS5tYXRjaGVzKHRhZ05h
bWUpOyB9CiAgICAgYm9vbCBoYXNUYWdOYW1lKGNvbnN0IEhUTUxRdWFsaWZpZWROYW1lJiB0YWdO
YW1lKSBjb25zdCB7IHJldHVybiBDb250YWluZXJOb2RlOjpoYXNUYWdOYW1lKHRhZ05hbWUpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL1F1YWxpZmllZE5hbWUuaAppbmRleCBhYmNhN2Y0NmZhMGRhODAwY2VkODM0
YTM3ODFkNmZmZTU5ODQ3OGUyLi40MmMwZTJkMWU4ZTM0YWY5Mzc2M2RhY2E4NjA3YTFlODc0ZmY4
MTg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vUXVhbGlmaWVkTmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9RdWFsaWZpZWROYW1lLmgKQEAgLTUzLDEwICs1MywxMCBAQCBj
bGFzcyBRdWFsaWZpZWROYW1lIHsKICAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG1fbmFtZXNw
YWNlOwogICAgICAgICBtdXRhYmxlIEF0b21pY1N0cmluZyBtX2xvY2FsTmFtZVVwcGVyOwogCi0j
aWYgRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisjaWYgRU5BQkxFKEpJVCkKICAgICAgICAgc3Rh
dGljIHB0cmRpZmZfdCBsb2NhbE5hbWVNZW1vcnlPZmZzZXQoKSB7IHJldHVybiBPQkpFQ1RfT0ZG
U0VUT0YoUXVhbGlmaWVkTmFtZUltcGwsIG1fbG9jYWxOYW1lKTsgfQogICAgICAgICBzdGF0aWMg
cHRyZGlmZl90IG5hbWVzcGFjZU1lbW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRP
RihRdWFsaWZpZWROYW1lSW1wbCwgbV9uYW1lc3BhY2UpOyB9Ci0jZW5kaWYgLy8gRU5BQkxFKENT
U19TRUxFQ1RPUl9KSVQpCisjZW5kaWYgLy8gRU5BQkxFKEpJVCkKIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIFF1YWxpZmllZE5hbWVJbXBsKGNvbnN0IEF0b21pY1N0cmluZyYgcHJlZml4LCBjb25z
dCBBdG9taWNTdHJpbmcmIGxvY2FsTmFtZSwgY29uc3QgQXRvbWljU3RyaW5nJiBuYW1lc3BhY2VV
UkkpCkBAIC05NCw5ICs5NCw5IEBAIGNsYXNzIFF1YWxpZmllZE5hbWUgewogICAgIFdFQkNPUkVf
RVhQT1JUIFN0cmluZyB0b1N0cmluZygpIGNvbnN0OwogCiAgICAgUXVhbGlmaWVkTmFtZUltcGwq
IGltcGwoKSBjb25zdCB7IHJldHVybiBtX2ltcGwuZ2V0KCk7IH0KLSNpZiBFTkFCTEUoQ1NTX1NF
TEVDVE9SX0pJVCkKKyNpZiBFTkFCTEUoSklUKQogICAgIHN0YXRpYyBwdHJkaWZmX3QgaW1wbE1l
bW9yeU9mZnNldCgpIHsgcmV0dXJuIE9CSkVDVF9PRkZTRVRPRihRdWFsaWZpZWROYW1lLCBtX2lt
cGwpOyB9Ci0jZW5kaWYgLy8gRU5BQkxFKENTU19TRUxFQ1RPUl9KSVQpCisjZW5kaWYgLy8gRU5B
QkxFKEpJVCkKICAgICAKICAgICAvLyBJbml0IHJvdXRpbmUgZm9yIGdsb2JhbHMKICAgICBzdGF0
aWMgdm9pZCBpbml0KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklU
QWJzdHJhY3RIZWFwUmVwb3NpdG9yeS55YW1sIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJ
VEFic3RyYWN0SGVhcFJlcG9zaXRvcnkueWFtbAppbmRleCA1MmM1ODQ1ZTA3ODY3MGRkZGFjOTc3
Mjk5OWNjYjhlYTdkMDFiZGYzLi4xYjE1NmVlMWI3MjY4N2E5NTg2YmRkZDlhZmUzOTg5YjViMmZk
YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUQWJzdHJhY3RIZWFw
UmVwb3NpdG9yeS55YW1sCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9ET01KSVRBYnN0cmFj
dEhlYXBSZXBvc2l0b3J5LnlhbWwKQEAgLTksMyArOSw0IEBAIERPTToKICAgICAgICAgICAgIC0g
Tm9kZV9vd25lckRvY3VtZW50CiAgICAgICAgIERvY3VtZW50OgogICAgICAgICAgICAgLSBEb2N1
bWVudF9kb2N1bWVudEVsZW1lbnQKKyAgICAgICAgICAgIC0gRG9jdW1lbnRfYm9keQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbWppdC9ET01KSVRIZWxwZXJzLmgKaW5kZXggYjJhMzY4MzU5NDU1NTdkMzIzODkxMDZk
ZWZkMzAyYjAxZGYyMWJlNC4uMTM3MGU1NjI5NzcwODY4ZWY2MWJjYWU3NzM5MTY0ZjgxYTJhMjk4
YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9taml0L0RPTUpJVEhlbHBlcnMuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvRE9NSklUSGVscGVycy5oCkBAIC0yNyw3ICsyNyw3IEBA
CiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTRE9NV3JhcHBlci5oIgotI2luY2x1ZGUgIlNj
cmlwdFdyYXBwYWJsZS5oIgorI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlIDxkb21qaXQvRE9N
SklUUGF0Y2hwb2ludC5oPgogI2luY2x1ZGUgPGRvbWppdC9ET01KSVRQYXRjaHBvaW50UGFyYW1z
Lmg+CiAjaW5jbHVkZSA8aW50ZXJwcmV0ZXIvRnJhbWVUcmFjZXJzLmg+CkBAIC0xNzUsNiArMTc1
LDE2IEBAIGlubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNoSWZOb3REb2N1bWVudFdyYXBw
ZXIoQ0NhbGxIZWxwZXJzJiBqaXQsIEdQUlJlZyB0CiB2b2lkIGxvYWREb2N1bWVudChNYWNyb0Fz
c2VtYmxlciYsIEdQUlJlZyBub2RlLCBHUFJSZWcgb3V0cHV0KTsKIHZvaWQgbG9hZERvY3VtZW50
RWxlbWVudChNYWNyb0Fzc2VtYmxlciYsIEdQUlJlZyBkb2N1bWVudCwgR1BSUmVnIG91dHB1dCk7
CiAKK2lubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNoVGVzdElzRWxlbWVudEZsYWdPbk5v
ZGUoTWFjcm9Bc3NlbWJsZXImIGppdCwgQ0NhbGxIZWxwZXJzOjpSZXN1bHRDb25kaXRpb24gY29u
ZGl0aW9uLCBHUFJSZWcgbm9kZUFkZHJlc3MpCit7CisgICAgcmV0dXJuIGppdC5icmFuY2hUZXN0
MzIoY29uZGl0aW9uLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9kZUFkZHJlc3MsIE5vZGU6Om5v
ZGVGbGFnc01lbW9yeU9mZnNldCgpKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIoTm9kZTo6
ZmxhZ0lzRWxlbWVudCgpKSk7Cit9CisKK2lubGluZSBDQ2FsbEhlbHBlcnM6Okp1bXAgYnJhbmNo
VGVzdElzSFRNTEZsYWdPbk5vZGUoTWFjcm9Bc3NlbWJsZXImIGppdCwgQ0NhbGxIZWxwZXJzOjpS
ZXN1bHRDb25kaXRpb24gY29uZGl0aW9uLCBHUFJSZWcgbm9kZUFkZHJlc3MpCit7CisgICAgcmV0
dXJuIGppdC5icmFuY2hUZXN0MzIoY29uZGl0aW9uLCBDQ2FsbEhlbHBlcnM6OkFkZHJlc3Mobm9k
ZUFkZHJlc3MsIE5vZGU6Om5vZGVGbGFnc01lbW9yeU9mZnNldCgpKSwgQ0NhbGxIZWxwZXJzOjpU
cnVzdGVkSW1tMzIoTm9kZTo6ZmxhZ0lzSFRNTCgpKSk7Cit9CisKIH0gfQogCiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2RvbWppdC9KU0RvY3VtZW50RE9NSklULmNwcAppbmRleCBiYmZlZTdkYzRi
Yjc4MmU3M2NmMjdjOTc3YmMxODI5NGE1OTRiNmQ4Li5kMWEyNThmYjkwZjIxNTllMDRjNzE3MWZl
ZDE4YjlkN2ZlZjA0ODU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb21qaXQvSlNEb2N1
bWVudERPTUpJVC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9taml0L0pTRG9jdW1lbnRET01K
SVQuY3BwCkBAIC0zNCw2ICszNCw3IEBACiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRl
ICJKU0RPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJKU0VsZW1lbnQuaCIKKyNpbmNsdWRlICJKU0hU
TUxFbGVtZW50LmgiCiAjaW5jbHVkZSA8ZG9taml0L0RPTUpJVFBhdGNocG9pbnQuaD4KICNpbmNs
dWRlIDxkb21qaXQvRE9NSklUUGF0Y2hwb2ludFBhcmFtcy5oPgogCkBAIC03Myw2ICs3NCw3OCBA
QCBSZWY8SlNDOjpET01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBEb2N1bWVudERvY3Vt
ZW50RWxlbWVudERPTUpJVDo6Y2FsbERPTQogICAgIHJldHVybiBwYXRjaHBvaW50OwogfQogCitS
ZWY8SlNDOjpET01KSVQ6OlBhdGNocG9pbnQ+IERvY3VtZW50Qm9keURPTUpJVDo6Y2hlY2tET00o
KQoreworICAgIHJldHVybiBET01KSVQ6OmNoZWNrRE9NPERvY3VtZW50PigpOworfQorCitzdGF0
aWMgdm9pZCBsb2FkTG9jYWxOYW1lKENDYWxsSGVscGVycyYgaml0LCBHUFJSZWcgaHRtbEVsZW1l
bnQsIEdQUlJlZyBsb2NhbE5hbWVJbXBsKQoreworICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVy
czo6QWRkcmVzcyhodG1sRWxlbWVudCwgRWxlbWVudDo6dGFnUU5hbWVNZW1vcnlPZmZzZXQoKSAr
IFF1YWxpZmllZE5hbWU6OmltcGxNZW1vcnlPZmZzZXQoKSksIGxvY2FsTmFtZUltcGwpOworICAg
IGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhsb2NhbE5hbWVJbXBsLCBRdWFsaWZp
ZWROYW1lOjpRdWFsaWZpZWROYW1lSW1wbDo6bG9jYWxOYW1lTWVtb3J5T2Zmc2V0KCkpLCBsb2Nh
bE5hbWVJbXBsKTsKK30KKworUmVmPEpTQzo6RE9NSklUOjpDYWxsRE9NR2V0dGVyUGF0Y2hwb2lu
dD4gRG9jdW1lbnRCb2R5RE9NSklUOjpjYWxsRE9NR2V0dGVyKCkKK3sKKyAgICBSZWY8SlNDOjpE
T01KSVQ6OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50PiBwYXRjaHBvaW50ID0gSlNDOjpET01KSVQ6
OkNhbGxET01HZXR0ZXJQYXRjaHBvaW50OjpjcmVhdGUoKTsKKyAgICBwYXRjaHBvaW50LT5udW1H
UFNjcmF0Y2hSZWdpc3RlcnMgPSAyOworICAgIHBhdGNocG9pbnQtPnNldEdlbmVyYXRvcihbPV0o
Q0NhbGxIZWxwZXJzJiBqaXQsIEpTQzo6RE9NSklUOjpQYXRjaHBvaW50UGFyYW1zJiBwYXJhbXMp
IHsKKyAgICAgICAgSlNWYWx1ZVJlZ3MgcmVzdWx0ID0gcGFyYW1zWzBdLmpzVmFsdWVSZWdzKCk7
CisgICAgICAgIEdQUlJlZyBkb2N1bWVudCA9IHBhcmFtc1sxXS5ncHIoKTsKKyAgICAgICAgR1BS
UmVnIGdsb2JhbE9iamVjdCA9IHBhcmFtc1syXS5ncHIoKTsKKyAgICAgICAgSlNWYWx1ZSBnbG9i
YWxPYmplY3RWYWx1ZSA9IHBhcmFtc1syXS52YWx1ZSgpOworICAgICAgICBHUFJSZWcgc2NyYXRj
aDEgPSBwYXJhbXMuZ3BTY3JhdGNoKDApOworICAgICAgICBHUFJSZWcgc2NyYXRjaDIgPSBwYXJh
bXMuZ3BTY3JhdGNoKDEpOworCisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRk
cmVzcyhkb2N1bWVudCwgSlNEb2N1bWVudDo6b2Zmc2V0T2ZXcmFwcGVkKCkpLCBzY3JhdGNoMSk7
CisgICAgICAgIERPTUpJVDo6bG9hZERvY3VtZW50RWxlbWVudChqaXQsIHNjcmF0Y2gxLCBzY3Jh
dGNoMSk7CisKKyAgICAgICAgQ0NhbGxIZWxwZXJzOjpKdW1wTGlzdCBudWxsQ2FzZXM7CisgICAg
ICAgIENDYWxsSGVscGVyczo6SnVtcExpc3Qgc3VjY2Vzc0Nhc2VzOworICAgICAgICBudWxsQ2Fz
ZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVybywgc2NyYXRjaDEp
KTsKKyAgICAgICAgbnVsbENhc2VzLmFwcGVuZChET01KSVQ6OmJyYW5jaFRlc3RJc0hUTUxGbGFn
T25Ob2RlKGppdCwgQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3JhdGNoMSkpOworICAgICAgICAvLyBX
ZSBlbnN1cmVkIHRoYXQgdGhlIG5hbWUgb2YgdGhlIGdpdmVuIGVsZW1lbnQgaXMgSFRNTCBxdWFs
aWZpZWQuCisgICAgICAgIC8vIEl0IGFsbG93cyB1cyB0byBwZXJmb3JtIGxvY2FsIG5hbWUgY29t
cGFyaXNvbiEKKyAgICAgICAgbG9hZExvY2FsTmFtZShqaXQsIHNjcmF0Y2gxLCBzY3JhdGNoMik7
CisgICAgICAgIG51bGxDYXNlcy5hcHBlbmQoaml0LmJyYW5jaFB0cihDQ2FsbEhlbHBlcnM6Ok5v
dEVxdWFsLCBzY3JhdGNoMiwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tUHRyKEhUTUxOYW1lczo6
aHRtbFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpKSk7CisKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQo
IUNBU1RfT0ZGU0VUKE5vZGUqLCBDb250YWluZXJOb2RlKikpOworICAgICAgICBSRUxFQVNFX0FT
U0VSVCghQ0FTVF9PRkZTRVQoTm9kZSosIEVsZW1lbnQqKSk7CisgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFDQVNUX09GRlNFVChOb2RlKiwgSFRNTEVsZW1lbnQqKSk7CisKKyAgICAgICAgLy8gTm9k
ZSogbm9kZSA9IGN1cnJlbnQuZmlyc3RDaGlsZCgpOworICAgICAgICAvLyB3aGlsZSAobm9kZSAm
JiAhaXM8SFRNTEVsZW1lbnQ+KCpub2RlKSkKKyAgICAgICAgLy8gICAgIG5vZGUgPSBub2RlLT5u
ZXh0U2libGluZygpOworICAgICAgICAvLyByZXR1cm4gZG93bmNhc3Q8SFRNTEVsZW1lbnQ+KG5v
ZGUpOworICAgICAgICBqaXQubG9hZFB0cihDQ2FsbEhlbHBlcnM6OkFkZHJlc3Moc2NyYXRjaDEs
IENvbnRhaW5lck5vZGU6OmZpcnN0Q2hpbGRNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKwor
ICAgICAgICBDQ2FsbEhlbHBlcnM6OkxhYmVsIGxvb3BTdGFydCA9IGppdC5sYWJlbCgpOworICAg
ICAgICBudWxsQ2FzZXMuYXBwZW5kKGppdC5icmFuY2hUZXN0UHRyKENDYWxsSGVscGVyczo6WmVy
bywgc2NyYXRjaDEpKTsKKyAgICAgICAgYXV0byBub3RIVE1MRWxlbWVudENhc2UgPSBET01KSVQ6
OmJyYW5jaFRlc3RJc0hUTUxGbGFnT25Ob2RlKGppdCwgQ0NhbGxIZWxwZXJzOjpaZXJvLCBzY3Jh
dGNoMSk7CisgICAgICAgIC8vIFdlIGVuc3VyZWQgdGhhdCB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4g
ZWxlbWVudCBpcyBIVE1MIHF1YWxpZmllZC4KKyAgICAgICAgLy8gSXQgYWxsb3dzIHVzIHRvIHBl
cmZvcm0gbG9jYWwgbmFtZSBjb21wYXJpc29uIQorICAgICAgICBsb2FkTG9jYWxOYW1lKGppdCwg
c2NyYXRjaDEsIHNjcmF0Y2gyKTsKKyAgICAgICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChqaXQuYnJh
bmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWwsIHNjcmF0Y2gyLCBDQ2FsbEhlbHBlcnM6OlRydXN0
ZWRJbW1QdHIoSFRNTE5hbWVzOjpib2R5VGFnLmxvY2FsTmFtZSgpLmltcGwoKSkpKTsKKyAgICAg
ICAgc3VjY2Vzc0Nhc2VzLmFwcGVuZChqaXQuYnJhbmNoUHRyKENDYWxsSGVscGVyczo6RXF1YWws
IHNjcmF0Y2gyLCBDQ2FsbEhlbHBlcnM6OlRydXN0ZWRJbW1QdHIoSFRNTE5hbWVzOjpmcmFtZXNl
dFRhZy5sb2NhbE5hbWUoKS5pbXBsKCkpKSk7CisKKyAgICAgICAgbm90SFRNTEVsZW1lbnRDYXNl
LmxpbmsoJmppdCk7CisgICAgICAgIGppdC5sb2FkUHRyKENDYWxsSGVscGVyczo6QWRkcmVzcyhz
Y3JhdGNoMSwgTm9kZTo6bmV4dFNpYmxpbmdNZW1vcnlPZmZzZXQoKSksIHNjcmF0Y2gxKTsKKyAg
ICAgICAgaml0Lmp1bXAoKS5saW5rVG8obG9vcFN0YXJ0LCAmaml0KTsKKworICAgICAgICBzdWNj
ZXNzQ2FzZXMubGluaygmaml0KTsKKyAgICAgICAgRE9NSklUOjp0b1dyYXBwZXI8SFRNTEVsZW1l
bnQ+KGppdCwgcGFyYW1zLCBzY3JhdGNoMSwgZ2xvYmFsT2JqZWN0LCByZXN1bHQsIERPTUpJVDo6
dG9XcmFwcGVyU2xvdzxIVE1MRWxlbWVudD4sIGdsb2JhbE9iamVjdFZhbHVlKTsKKyAgICAgICAg
YXV0byBkb25lID0gaml0Lmp1bXAoKTsKKworICAgICAgICBudWxsQ2FzZXMubGluaygmaml0KTsK
KyAgICAgICAgaml0Lm1vdmVWYWx1ZShqc051bGwoKSwgcmVzdWx0KTsKKyAgICAgICAgZG9uZS5s
aW5rKCZqaXQpOworCisgICAgICAgIHJldHVybiBDQ2FsbEhlbHBlcnM6Okp1bXBMaXN0KCk7Cisg
ICAgfSk7CisgICAgcGF0Y2hwb2ludC0+ZWZmZWN0ID0gSlNDOjpET01KSVQ6OkVmZmVjdDo6Zm9y
RGVmKERPTUpJVDo6QWJzdHJhY3RIZWFwUmVwb3NpdG9yeTo6RG9jdW1lbnRfYm9keSk7CisgICAg
cmV0dXJuIHBhdGNocG9pbnQ7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZDM3YTM1YTA1MGVj
Y2UyNzgzZTg4NDkxNzdiNDViMmVlNDhiMmFjYS4uYzBlZmVjNmIwMmJiODAxNGFiYmUwZDVkOTUy
ZmE0NjVlMjAwODA0MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xh
eW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDE2LTExLTEwICBZdXN1a2Ug
U3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIFtET01KSVRdIERvY3Vt
ZW50I2JvZHkgc2hvdWxkIGhhdmUgRE9NSklUIHBhdGNocG9pbnQKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDYyNworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICoganMvZG9tL2RvbWppdC1hY2Nlc3Nvci1k
b2N1bWVudC1ib2R5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICoganMvZG9tL2RvbWpp
dC1hY2Nlc3Nvci1kb2N1bWVudC1ib2R5Lmh0bWw6IEFkZGVkLgorCiAyMDE2LTExLTEwICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIwODUy
Mik6IExheW91dFRlc3QgZmFzdC9sb2FkZXIvcmVsb2FkLXplcm8tYnl0ZS1wbHVnaW4uaHRtbCBp
cyBhIGZsYWt5IGZhaWx1cmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2RvbS9kb21qaXQt
YWNjZXNzb3ItZG9jdW1lbnQtYm9keS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9kb20v
ZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHktZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhh
NTFmZTMzZThiNTA1ZjNiYzc3MWE4OGRhNzUwNmZmY2EzZWJhODQKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRvY3VtZW50LWJvZHktZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNzkgQEAKK1Rlc3QgRE9NSklUIGRvY3VtZW50LmJvZHkgYWNjZXNz
b3Igd29ya3MuCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIg
bWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKK1BBU1MgKAorICAgICAgICAgICAg
ZnVuY3Rpb24gdGVzdEhUTUxEb2N1bWVudChlbGVtZW50LCByZXN1bHQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ib2R5ICE9PSByZXN1bHQpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICApKHRhcmdldCwgcmVzdWx0
KSBpcyB0cnVlCitQQVNTICgKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3RYTUxEb2N1bWVudChl
bGVtZW50LCByZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5i
b2R5ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAg
ICAgfQorICAgICAgICApKHRhcmdldCwgcmVzdWx0KSBpcyB0cnVlCitQQVNTICgKKyAgICAgICAg
ICAgIGZ1bmN0aW9uIHRlc3RYTUxEb2N1bWVudDIoZWxlbWVudCwgcmVzdWx0KQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYm9keSAhPT0gcmVzdWx0KQorICAgICAgICAg
ICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSh0YXJnZXQsIHJl
c3VsdCkgaXMgdHJ1ZQorUEFTUyAoCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0TnVsbChlbGVt
ZW50LCByZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ib2R5
ICE9PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAg
fQorICAgICAgICApKHRhcmdldCwgcmVzdWx0KSBpcyB0cnVlCitQQVNTICgKKyAgICAgICAgICAg
IGZ1bmN0aW9uIHRlc3RIVE1MRWxlbWVudChlbGVtZW50LCByZXN1bHQpCisgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgICAg
ICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ib2R5ICE9PSByZXN1bHQpCisgICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICApKHRhcmdldCwgcmVzdWx0
KSBpcyB0cnVlCitQQVNTICgKKyAgICAgICAgICAgIGZ1bmN0aW9uIHRlc3ROb0hUTUwoZWxlbWVu
dCwgcmVzdWx0KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQuYm9keSAh
PT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgKSh0YXJnZXQsIHJlc3VsdCkgaXMgdHJ1ZQorUEFTUyAoCisgICAgICAgICAgICBm
dW5jdGlvbiB0ZXN0RnJhbWVzZXQoZWxlbWVudCwgcmVzdWx0KQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpIHsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKGVsZW1lbnQuYm9keSAhPT0gcmVzdWx0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKSh0YXJnZXQsIHJlc3VsdCkgaXMg
dHJ1ZQorIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWppdC1hY2Nlc3Nvci1k
b2N1bWVudC1ib2R5Lmh0bWwgYi9MYXlvdXRUZXN0cy9qcy9kb20vZG9taml0LWFjY2Vzc29yLWRv
Y3VtZW50LWJvZHkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40MjE3NGU1Yzc0YmM4NTBjMGQ5NWNlOWJlODNi
YzM3NThmNjczNmNiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvanMvZG9tL2RvbWpp
dC1hY2Nlc3Nvci1kb2N1bWVudC1ib2R5Lmh0bWwKQEAgLTAsMCArMSw3OCBAQAorPCFET0NUWVBF
IGh0bWw+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxpZnJhbWUgaWQ9InhtbGZy
YW1lIiBvbmxvYWQ9ImZyYW1lTG9hZGVkKCkiIHN0eWxlPSJoZWlnaHQ6MHB4IiBzcmM9ImRhdGE6
YXBwbGljYXRpb24veGh0bWwreG1sLDw/eG1sIHZlcnNpb249JzEuMCcgZW5jb2Rpbmc9J1VURi04
Jz8+PGJvZHkvPiI+PC9pZnJhbWU+Cis8aWZyYW1lIGlkPSJ4bWxmcmFtZTIiIG9ubG9hZD0iZnJh
bWVMb2FkZWQoKSIgc3R5bGU9ImhlaWdodDowcHgiIHNyYz0iZGF0YTphcHBsaWNhdGlvbi94aHRt
bCt4bWwsPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz48Ym9keS8+Ij48L2lm
cmFtZT4KKzxzY3JpcHQ+CitkZXNjcmlwdGlvbignVGVzdCBET01KSVQgZG9jdW1lbnQuYm9keSBh
Y2Nlc3NvciB3b3Jrcy4nKTsKKworaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgIHRlc3RSdW5u
ZXIud2FpdFVudGlsRG9uZSgpOworCit2YXIgdGFyZ2V0ID0gbnVsbDsKK3ZhciByZXN1bHQgPSBu
dWxsOworZnVuY3Rpb24gcnVuVGVzdCgpCit7CisgICAgdmFyIHhtbERvY3VtZW50ID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ3htbGZyYW1lJykuY29udGVudERvY3VtZW50OworICAgIHZhciB4
bWxEb2N1bWVudDIgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgneG1sZnJhbWUyJykuY29udGVu
dERvY3VtZW50OworICAgIHZhciBodG1sID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaHRtbCcp
OworICAgIHZhciBib2R5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYm9keScpOworCisgICAg
dmFyIGh0bWxPbmx5ID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycs
IG51bGwsIG51bGwpOworICAgIGh0bWxPbmx5LmFwcGVuZENoaWxkKGh0bWxPbmx5LmNyZWF0ZUVs
ZW1lbnQoJ2h0bWwnKSk7CisKKyAgICB2YXIgbm9IVE1MID0gZG9jdW1lbnQuaW1wbGVtZW50YXRp
b24uY3JlYXRlRG9jdW1lbnQoJycsIG51bGwsIG51bGwpOworICAgIHZhciBmaXJzdCA9IG5vSFRN
TC5jcmVhdGVFbGVtZW50KCdub2h0bWwnKTsKKyAgICBmaXJzdC5hcHBlbmRDaGlsZChub0hUTUwu
Y3JlYXRlRWxlbWVudCgnYm9keScpKTsKKyAgICBub0hUTUwuYXBwZW5kQ2hpbGQoZmlyc3QpOwor
CisgICAgdmFyIGZyYW1lc2V0RG9jID0gZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9j
dW1lbnQoJycsIG51bGwsIG51bGwpOworICAgIHZhciBmaXJzdCA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ2h0bWwnKTsKKyAgICB2YXIgZnJhbWVzZXQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCdmcmFtZXNldCcpOworICAgIGZpcnN0LmFwcGVuZENoaWxkKGZyYW1lc2V0KTsKKyAgICBmcmFt
ZXNldERvYy5hcHBlbmRDaGlsZChmaXJzdCk7CisKKyAgICB2YXIgdGFyZ2V0cyA9IFsKKyAgICAg
ICAgWydIVE1MRG9jdW1lbnQnLCBkb2N1bWVudCwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoJ2JvZHknKVswXV0sCisgICAgICAgIFsnWE1MRG9jdW1lbnQnLCB4bWxEb2N1bWVudCwgbnVs
bF0sCisgICAgICAgIFsnWE1MRG9jdW1lbnQyJywgeG1sRG9jdW1lbnQyLCBib2R5XSwKKyAgICAg
ICAgWydOdWxsJywgZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlRG9jdW1lbnQoJycsIG51
bGwsIG51bGwpLCBudWxsXSwKKyAgICAgICAgWydIVE1MRWxlbWVudCcsIGh0bWxPbmx5LCBudWxs
XSwKKyAgICAgICAgWydOb0hUTUwnLCBub0hUTUwsIG51bGxdLAorICAgICAgICBbJ0ZyYW1lc2V0
JywgZnJhbWVzZXREb2MsIGZyYW1lc2V0XSwKKyAgICBdOworCisgICAgLy8gUHV0IEhUTUxCb2R5
RWxlbWVudCBpbiBYTUxEb2N1bWVudCEKKyAgICBodG1sLmFwcGVuZENoaWxkKGJvZHkpOworICAg
IHhtbERvY3VtZW50Mi5yZXBsYWNlQ2hpbGQoaHRtbCwgeG1sRG9jdW1lbnQyLmZpcnN0Q2hpbGQp
OworCisgICAgZm9yIChbbmFtZSwgdGFyZ2V0LCByZXN1bHRdIG9mIHRhcmdldHMpIHsKKyAgICAg
ICAgdmFyIHRleHQgPSBgCisgICAgICAgICAgICBmdW5jdGlvbiB0ZXN0JHtuYW1lfShlbGVtZW50
LCByZXN1bHQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTQ7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5ib2R5ICE9
PSByZXN1bHQpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQor
ICAgICAgICBgOworICAgICAgICBzaG91bGRCZVRydWUoYCgke3RleHR9KSh0YXJnZXQsIHJlc3Vs
dClgKTsKKyAgICB9CisKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgIHRlc3RS
dW5uZXIubm90aWZ5RG9uZSgpOworfQordmFyIGNvdW50ID0gMDsKK2Z1bmN0aW9uIGZyYW1lTG9h
ZGVkKCkKK3sKKyAgICBpZiAoKytjb3VudCA9PT0gMikKKyAgICAgICAgcnVuVGVzdCgpOworfQor
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>