<?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>137315</bug_id>
          
          <creation_ts>2014-10-01 14:46:47 -0700</creation_ts>
          <short_desc>Object allocation sinking should have a sound story for picking materialization points</short_desc>
          <delta_ts>2014-10-02 12:38:25 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>137310</dependson>
          <blocked>137126</blocked>
    
    <blocked>137168</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenb</cc>
    
    <cc>mmirman</cc>
    
    <cc>msaboff</cc>
    
    <cc>nrotem</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1038661</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-01 14:46:47 -0700</bug_when>
    <thetext>The current code has roughly the right intuition for picking materialization sites: you need to forward flow the &quot;I was materialized&quot; property.  It&apos;s true that this is an important input.  Where the logic goes wrong is that it then tries to do materializations at the *escaping sites* where an object goes from &quot;not materialized&quot; to &quot;materialized&quot;.  In the case of loops (and probably some crazy irreducible control flow) you may have a point where an object becomes materialized is not an escaping site.  The code should handle that case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038922</commentid>
    <comment_count>1</comment_count>
      <attachid>239126</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-02 12:05:27 -0700</bug_when>
    <thetext>Created attachment 239126
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038923</commentid>
    <comment_count>2</comment_count>
      <attachid>239127</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-02 12:14:01 -0700</bug_when>
    <thetext>Created attachment 239127
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038930</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-10-02 12:15:56 -0700</bug_when>
    <thetext>Attachment 239127 did not pass style-queue:


ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:854:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 11 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>1038932</commentid>
    <comment_count>4</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-02 12:16:30 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Attachment 239127 [details] did not pass style-queue:
&gt; 
&gt; 
&gt; ERROR: Source/JavaScriptCore/dfg/DFGGraph.h:854:  The parameter name &quot;block&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
&gt; Total errors found: 1 in 11 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038933</commentid>
    <comment_count>5</comment_count>
      <attachid>239127</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2014-10-02 12:18:39 -0700</bug_when>
    <thetext>Comment on attachment 239127
the patch

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

&gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:761
&gt; +        Node* result;

For my sanity initialize result = nullptr;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038936</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-02 12:23:59 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 239127 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=239127&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGObjectAllocationSinkingPhase.cpp:761
&gt; &gt; +        Node* result;
&gt; 
&gt; For my sanity initialize result = nullptr;

OK!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1038943</commentid>
    <comment_count>7</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2014-10-02 12:38:25 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/174224</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239126</attachid>
            <date>2014-10-02 12:05:27 -0700</date>
            <delta_ts>2014-10-02 12:14:01 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>23700</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0MjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM1IEBA
CisyMDE0LTEwLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBzaG91bGQgaGF2ZSBhIHNvdW5kIHN0b3J5IGZvciBw
aWNraW5nIG1hdGVyaWFsaXphdGlvbiBwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgV29yayBpbiBwcm9ncmVzcy4KKworICAgICAg
ICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpCYXNpY0Jsb2Nr
OjpmaXJzdE9yaWdpbk5vZGUpOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6OmZpcnN0
T3JpZ2luKToKKyAgICAgICAgKiBkZmcvREZHQmFzaWNCbG9jay5oOgorICAgICAgICAqIGRmZy9E
RkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpDcml0
aWNhbEVkZ2VCcmVha2luZ1BoYXNlOjpicmVha0NyaXRpY2FsRWRnZSk6CisgICAgICAgICogZGZn
L0RGR0dyYXBoLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpjcmFzaCk6CisgICAgICAgIChKU0M6
OkRGRzo6R3JhcGg6OmhhbmRsZUFzc2VydGlvbkZhaWx1cmUpOgorICAgICAgICAqIGRmZy9ERkdH
cmFwaC5oOgorICAgICAgICAqIGRmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6Y3JlYXRlUHJlSGVhZGVyKToKKyAgICAgICAgKiBkZmcvREZH
Tm9kZU9yaWdpbi5oOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGVPcmlnaW46OmlzU2V0KToKKyAg
ICAgICAgKiBkZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHA6CisgICAgICAg
IChKU0M6OkRGRzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6ZGV0ZXJtaW5lTWF0ZXJp
YWxpemF0aW9uUG9pbnRzKToKKyAgICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lu
a2luZ1BoYXNlOjpwbGFjZU1hdGVyaWFsaXphdGlvblBvaW50cyk6CisgICAgICAgIChKU0M6OkRG
Rzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6cHJvbW90ZVN1bmtlbkZpZWxkcyk6Cisg
ICAgICAgIChKU0M6OkRGRzo6T2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZTo6Y3JlYXRlTWF0
ZXJpYWxpemUpOgorICAgICAgICAqIGRmZy9ERkdWYWxpZGF0ZS5jcHA6CisgICAgICAgIChKU0M6
OkRGRzo6VmFsaWRhdGU6OnZhbGlkYXRlKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnMuaDoK
KwogMjAxNC0xMC0wMiAgRGFuaWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAg
ICAgQ2xlYW4gdXA6IE1vdmUgWFBDIGZvcndhcmQgZGVjbGFyYXRpb25zIGluIEphdmFTY3JpcHRD
b3JlIHRvIFdURiBTUEkgd3JhcHBlciBoZWFkZXIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODks
NiArODksMjEgQEAgYm9vbCBCYXNpY0Jsb2NrOjppc0luQmxvY2soTm9kZSogbXlOb2RlKQogICAg
IHJldHVybiBmYWxzZTsKIH0KIAorTm9kZSogQmFzaWNCbG9jazo6Zmlyc3RPcmlnaW5Ob2RlKCkK
K3sKKyAgICBmb3IgKE5vZGUqIG5vZGUgOiAqdGhpcykgeworICAgICAgICBpZiAobm9kZS0+b3Jp
Z2luLmlzU2V0KCkpCisgICAgICAgICAgICByZXR1cm4gbm9kZTsKKyAgICB9CisgICAgUkVMRUFT
RV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworTm9kZU9y
aWdpbiBCYXNpY0Jsb2NrOjpmaXJzdE9yaWdpbigpCit7CisgICAgcmV0dXJuIGZpcnN0T3JpZ2lu
Tm9kZSgpLT5vcmlnaW47Cit9CisKIHZvaWQgQmFzaWNCbG9jazo6cmVtb3ZlUHJlZGVjZXNzb3Io
QmFzaWNCbG9jayogYmxvY2spCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHByZWRl
Y2Vzc29ycy5zaXplKCk7ICsraSkgewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdCYXNpY0Jsb2NrLmgJKHJldmlzaW9uIDE3NDIxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQmFzaWNCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNCw2ICszNCw3IEBACiAj
aW5jbHVkZSAiREZHQnJhbmNoRGlyZWN0aW9uLmgiCiAjaW5jbHVkZSAiREZHRmx1c2hlZEF0Lmgi
CiAjaW5jbHVkZSAiREZHTm9kZS5oIgorI2luY2x1ZGUgIkRGR05vZGVPcmlnaW4uaCIKICNpbmNs
dWRlICJERkdTdHJ1Y3R1cmVDbG9iYmVyU3RhdGUuaCIKICNpbmNsdWRlICJPcGVyYW5kcy5oIgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC05MCw2ICs5MSw5IEBAIHN0cnVjdCBCYXNpY0Js
b2NrIDogUmVmQ291bnRlZDxCYXNpY0Jsb2MKICAgICBCbG9ja05vZGVMaXN0OjppdGVyYXRvciBi
ZWdpbigpIHsgcmV0dXJuIG1fbm9kZXMuYmVnaW4oKTsgfQogICAgIEJsb2NrTm9kZUxpc3Q6Oml0
ZXJhdG9yIGVuZCgpIHsgcmV0dXJuIG1fbm9kZXMuZW5kKCk7IH0KICAgICAKKyAgICBOb2RlKiBm
aXJzdE9yaWdpbk5vZGUoKTsKKyAgICBOb2RlT3JpZ2luIGZpcnN0T3JpZ2luKCk7CisgICAgCiAg
ICAgdW5zaWduZWQgbnVtU3VjY2Vzc29ycygpIHsgcmV0dXJuIGxhc3QoKS0+bnVtU3VjY2Vzc29y
cygpOyB9CiAgICAgCiAgICAgQmFzaWNCbG9jayomIHN1Y2Nlc3Nvcih1bnNpZ25lZCBpbmRleCkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ3JpdGljYWxFZGdlQnJlYWtpbmdQ
aGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0
aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1BoYXNlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNzcsNyArNzcsNyBAQCBwcml2YXRlOgogICAgICAgICAvLyBkb24ndCBrbm93
IGl0cyBleGVjdXRpb24gZnJlcXVlbmN5LgogICAgICAgICBCYXNpY0Jsb2NrKiBwYWQgPSBtX2lu
c2VydGlvblNldC5pbnNlcnRCZWZvcmUoKnN1Y2Nlc3NvciwgUE5hTik7CiAgICAgICAgIHBhZC0+
YXBwZW5kTm9kZSgKLSAgICAgICAgICAgIG1fZ3JhcGgsIFNwZWNOb25lLCBKdW1wLCAoKnN1Y2Nl
c3NvciktPmF0KDApLT5vcmlnaW4sIE9wSW5mbygqc3VjY2Vzc29yKSk7CisgICAgICAgICAgICBt
X2dyYXBoLCBTcGVjTm9uZSwgSnVtcCwgKCpzdWNjZXNzb3IpLT5maXJzdE9yaWdpbigpLCBPcElu
Zm8oKnN1Y2Nlc3NvcikpOwogICAgICAgICBwYWQtPnByZWRlY2Vzc29ycy5hcHBlbmQocHJlZGVj
ZXNzb3IpOwogICAgICAgICAoKnN1Y2Nlc3NvciktPnJlcGxhY2VQcmVkZWNlc3NvcihwcmVkZWNl
c3NvciwgcGFkKTsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dy
YXBoLmNwcAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdHcmFwaC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMTIsMjUgKzEyMTIsNDEgQEAgdm9pZCBH
cmFwaDo6YXNzZXJ0SXNSZWdpc3RlcmVkKFN0cnVjdHVyZQogICAgIERGR19DUkFTSCgqdGhpcywg
bnVsbHB0ciwgdG9DU3RyaW5nKCJTdHJ1Y3R1cmUgIiwgcG9pbnRlckR1bXAoc3RydWN0dXJlKSwg
IiBpcyB3YXRjaGFibGUgYnV0IGlzbid0IGJlaW5nIHdhdGNoZWQuIikuZGF0YSgpKTsKIH0KIAot
dm9pZCBHcmFwaDo6aGFuZGxlQXNzZXJ0aW9uRmFpbHVyZSgKLSAgICBOb2RlKiBub2RlLCBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IGFzc2VydGlvbikKK05PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgY3Jhc2goCisg
ICAgR3JhcGgmIGdyYXBoLCBjb25zdCBDU3RyaW5nJiB3aGlsZVRleHQsIGNvbnN0IGNoYXIqIGZp
bGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwKKyAgICBjb25zdCBjaGFyKiBhc3Nl
cnRpb24pCiB7CiAgICAgc3RhcnRDcmFzaGluZygpOwogICAgIGRhdGFMb2coIkRGRyBBU1NFUlRJ
T04gRkFJTEVEOiAiLCBhc3NlcnRpb24sICJcbiIpOwogICAgIGRhdGFMb2coZmlsZSwgIigiLCBs
aW5lLCAiKSA6ICIsIGZ1bmN0aW9uLCAiXG4iKTsKICAgICBkYXRhTG9nKCJcbiIpOwotICAgIGlm
IChub2RlKSB7Ci0gICAgICAgIGRhdGFMb2coIldoaWxlIGhhbmRsaW5nIG5vZGUgIiwgbm9kZSwg
IlxuIik7Ci0gICAgICAgIGRhdGFMb2coIlxuIik7Ci0gICAgfQorICAgIGRhdGFMb2cod2hpbGVU
ZXh0KTsKICAgICBkYXRhTG9nKCJHcmFwaCBhdCB0aW1lIG9mIGZhaWx1cmU6XG4iKTsKLSAgICBk
dW1wKCk7CisgICAgZ3JhcGguZHVtcCgpOwogICAgIGRhdGFMb2coIlxuIik7CiAgICAgZGF0YUxv
ZygiREZHIEFTU0VSVElPTiBGQUlMRUQ6ICIsIGFzc2VydGlvbiwgIlxuIik7CiAgICAgZGF0YUxv
ZyhmaWxlLCAiKCIsIGxpbmUsICIpIDogIiwgZnVuY3Rpb24sICJcbiIpOwogICAgIENSQVNIX1dJ
VEhfU0VDVVJJVFlfSU1QTElDQVRJT04oKTsKIH0KIAordm9pZCBHcmFwaDo6aGFuZGxlQXNzZXJ0
aW9uRmFpbHVyZSgKKyAgICBzdGQ6Om51bGxwdHJfdCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxp
bmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLCBjb25zdCBjaGFyKiBhc3NlcnRpb24pCit7CisgICAg
Y3Jhc2goKnRoaXMsICIiLCBmaWxlLCBsaW5lLCBmdW5jdGlvbiwgYXNzZXJ0aW9uKTsKK30KKwor
dm9pZCBHcmFwaDo6aGFuZGxlQXNzZXJ0aW9uRmFpbHVyZSgKKyAgICBOb2RlKiBub2RlLCBjb25z
dCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIq
IGFzc2VydGlvbikKK3sKKyAgICBjcmFzaCgqdGhpcywgdG9DU3RyaW5nKCJXaGlsZSBoYW5kbGlu
ZyBub2RlICIsIG5vZGUsICJcblxuIiksIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24p
OworfQorCit2b2lkIEdyYXBoOjpoYW5kbGVBc3NlcnRpb25GYWlsdXJlKAorICAgIEJhc2ljQmxv
Y2sqIGJsb2NrLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciogZnVuY3Rp
b24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbikKK3sKKyAgICBjcmFzaCgqdGhpcywgdG9DU3RyaW5n
KCJXaGlsZSBoYW5kbGluZyBibG9jayAiLCBwb2ludGVyRHVtcChibG9jayksICJcblxuIiksIGZp
bGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpT
Qzo6REZHCiAKICNlbmRpZiAvLyBFTkFCTEUoREZHX0pJVCkKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHR3JhcGguaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0dyYXBoLmgJKHJldmlzaW9uIDE3NDIxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHR3JhcGguaAkod29ya2luZyBjb3B5KQpAQCAtODQ1LDggKzg0NSwxNCBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHZpc2l0Q2hpbGRyZW4oU2xvdFZpc2l0b3ImKSBvdmVy
cmlkZTsKICAgICAKICAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgaGFuZGxlQXNzZXJ0
aW9uRmFpbHVyZSgKKyAgICAgICAgc3RkOjpudWxscHRyX3QsIGNvbnN0IGNoYXIqIGZpbGUsIGlu
dCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwKKyAgICAgICAgY29uc3QgY2hhciogYXNzZXJ0
aW9uKTsKKyAgICBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgaGFuZGxlQXNzZXJ0aW9uRmFp
bHVyZSgKICAgICAgICAgTm9kZSogbm9kZSwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNv
bnN0IGNoYXIqIGZ1bmN0aW9uLAogICAgICAgICBjb25zdCBjaGFyKiBhc3NlcnRpb24pOworICAg
IE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBoYW5kbGVBc3NlcnRpb25GYWlsdXJlKAorICAg
ICAgICBCYXNpY0Jsb2NrKiBibG9jaywgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUsIGNvbnN0
IGNoYXIqIGZ1bmN0aW9uLAorICAgICAgICBjb25zdCBjaGFyKiBhc3NlcnRpb24pOwogICAgIAog
ICAgIFZNJiBtX3ZtOwogICAgIFBsYW4mIG1fcGxhbjsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2Uu
Y3BwCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0xv
b3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIs
NyBAQCBCYXNpY0Jsb2NrKiBjcmVhdGVQcmVIZWFkZXIoR3JhcGgmIGdyYXBoCiAgICAgLy8gRG9u
J3QgYm90aGVyIHRvIHByZXNlcnZlIGV4ZWN1dGlvbiBmcmVxdWVuY2llcyBmb3Igbm93LgogICAg
IEJhc2ljQmxvY2sqIHByZUhlYWRlciA9IGluc2VydGlvblNldC5pbnNlcnRCZWZvcmUoYmxvY2ss
IFBOYU4pOwogICAgIHByZUhlYWRlci0+YXBwZW5kTm9kZSgKLSAgICAgICAgZ3JhcGgsIFNwZWNO
b25lLCBKdW1wLCBibG9jay0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKGJsb2NrKSk7CisgICAgICAg
IGdyYXBoLCBTcGVjTm9uZSwgSnVtcCwgYmxvY2stPmZpcnN0T3JpZ2luKCksIE9wSW5mbyhibG9j
aykpOwogICAgIAogICAgIGZvciAodW5zaWduZWQgcHJlZGVjZXNzb3JJbmRleCA9IDA7IHByZWRl
Y2Vzc29ySW5kZXggPCBibG9jay0+cHJlZGVjZXNzb3JzLnNpemUoKTsgcHJlZGVjZXNzb3JJbmRl
eCsrKSB7CiAgICAgICAgIEJhc2ljQmxvY2sqIHByZWRlY2Vzc29yID0gYmxvY2stPnByZWRlY2Vz
c29yc1twcmVkZWNlc3NvckluZGV4XTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZU9yaWdpbi5oCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGVPcmlnaW4uaAkod29ya2luZyBjb3B5KQpAQCAtNDksNiArNDksNyBAQCBz
dHJ1Y3QgTm9kZU9yaWdpbiB7CiAgICAgCiAgICAgYm9vbCBpc1NldCgpIGNvbnN0CiAgICAgewor
ICAgICAgICBBU1NFUlQoc2VtYW50aWMuaXNTZXQoKSA9PSBmb3JFeGl0LmlzU2V0KCkpOwogICAg
ICAgICByZXR1cm4gc2VtYW50aWMuaXNTZXQoKTsKICAgICB9CiAgICAgCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR09iamVjdEFsbG9jYXRpb25TaW5raW5nUGhhc2UuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlv
blNpbmtpbmdQaGFzZS5jcHAJKHJldmlzaW9uIDE3NDIxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTE0NSw3ICsxNDUsOCBAQCBwcml2YXRlOgogICAgICAgICAvLyBtYXRlcmlhbGl6YXRp
b25zLgogICAgICAgICAKICAgICAgICAgbV9zaW5rQ2FuZGlkYXRlcy5jbGVhcigpOwotICAgICAg
ICBtX2VkZ2VUb01hdGVyaWFsaXphdGlvblBvaW50LmNsZWFyKCk7CisgICAgICAgIG1fbWF0ZXJp
YWxpemF0aW9uVG9Fc2NhcGVlLmNsZWFyKCk7CisgICAgICAgIG1fbWF0ZXJpYWxpemF0aW9uU2l0
ZVRvTWF0ZXJpYWxpemF0aW9ucy5jbGVhcigpOwogICAgICAgICAKICAgICAgICAgQmxvY2tNYXA8
SGFzaE1hcDxOb2RlKiwgYm9vbD4+IG1hdGVyaWFsaXplZEF0SGVhZChtX2dyYXBoKTsKICAgICAg
ICAgQmxvY2tNYXA8SGFzaE1hcDxOb2RlKiwgYm9vbD4+IG1hdGVyaWFsaXplZEF0VGFpbChtX2dy
YXBoKTsKQEAgLTIzNSw3ICsyMzYsMTQgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgCiAgICAgICAgIC8vIEEgbWF0ZXJpYWxpemF0aW9uIGVkZ2UgZXhpc3RzIGF0IGFu
eSBwb2ludCB3aGVyZSBhIG5vZGUgZXNjYXBlcyBidXQgaGFzbid0IGJlZW4KLSAgICAgICAgLy8g
bWF0ZXJpYWxpemVkIHlldC4KKyAgICAgICAgLy8gbWF0ZXJpYWxpemVkIHlldC4gV2UgZG8gdGhp
cyBpbiB0d28gcGFydHMuIEZpcnN0IHdlIGZpbmQgYWxsIG9mIHRoZSBub2RlcyB0aGF0IGNhdXNl
CisgICAgICAgIC8vIGVzY2FwaW5nIHRvIGhhcHBlbiwgd2hlcmUgdGhlIGVzY2FwZWUgaGFkIG5v
dCB5ZXQgYmVlbiBtYXRlcmlhbGl6ZWQuIFRoaXMgY2F0Y2hlcworICAgICAgICAvLyBldmVyeXRo
aW5nIGJ1dCBsb29wcy4gV2UgdGhlbiBjYXRjaCBsb29wcyAtIGFzIHdlbGwgYXMgd2VpcmRlciBj
b250cm9sIGZsb3cgY29uc3RydWN0cyAtCisgICAgICAgIC8vIGluIGEgc3Vic2VxdWVudCBwYXNz
IHRoYXQgbG9va3MgYXQgcGxhY2VzIGluIHRoZSBDRkcgd2hlcmUgYW4gZWRnZSBleGlzdHMgZnJv
bSBhIGJsb2NrCisgICAgICAgIC8vIHRoYXQgaGFzbid0IG1hdGVyaWFsaXplZCB0byBhIGJsb2Nr
IHRoYXQgaGFzLiBXZSBpbnNlcnQgdGhlIG1hdGVyaWFsaXphdGlvbiBhbG9uZyBzdWNoIGFuCisg
ICAgICAgIC8vIGVkZ2UsIGFuZCB3ZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgY3JpdGljYWwgZWRn
ZXMgd2VyZSBhbHJlYWR5IGJyb2tlbiBzbyB0aGF0IHdlIGFjdHVhbGx5CisgICAgICAgIC8vIGVp
dGhlciBpbnNlcnQgdGhlIG1hdGVyaWFsaXphdGlvbiBhdCB0aGUgaGVhZCBvZiB0aGUgc3VjY2Vz
c29yIG9yIHRoZSB0YWlsIG9mIHRoZQorICAgICAgICAvLyBwcmVkZWNlc3Nvci4KICAgICAgICAg
Ly8KICAgICAgICAgLy8gRklYTUU6IFRoaXMgY2FuIGNyZWF0ZSBkdXBsaWNhdGUgYWxsb2NhdGlv
bnMgd2hlbiB3ZSByZWFsbHkgb25seSBuZWVkZWQgdG8gcGVyZm9ybSBvbmUuCiAgICAgICAgIC8v
IEZvciBleGFtcGxlOgpAQCAtMjU0LDYgKzI2Miw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIG1h
dGVyaWFsaXphdGlvbiBwb2ludCByaWdodCBhdCB0aGUgdG9wIG9mIHRoZSB0aGVuIGNhc2Ugb2Yg
ImlmIChyYXJlKSIuIFRvIGRvIHRoaXMsIHdlIGNhbgogICAgICAgICAvLyBmaW5kIHRoZSBMQ0Eg
b2YgdGhlIHZhcmlvdXMgbWF0ZXJpYWxpemF0aW9ucyBpbiB0aGUgZG9tIHRyZWUuCiAgICAgICAg
IC8vIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcxMjQKKyAgICAg
ICAgCisgICAgICAgIC8vIEZpcnN0IHBhc3M6IGZpbmQgaW50cmEtYmxvY2sgbWF0ZXJpYWxpemF0
aW9uIHBvaW50cy4KICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxv
Y2tzSW5OYXR1cmFsT3JkZXIoKSkgewogICAgICAgICAgICAgSGFzaFNldDxOb2RlKj4gbWF0ZXJp
YWxpemVkOwogICAgICAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtYXRlcmlhbGl6ZWRBdEhlYWRb
YmxvY2tdKSB7CkBAIC0yNzQsMjAgKzI4NCw2NiBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKCFtYXRlcmlhbGl6ZWQuYWRkKGVzY2FwZWUpLmlzTmV3RW50cnkpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgICAgICAg
Ci0gICAgICAgICAgICAgICAgICAgICAgICBOb2RlKiBtYXRlcmlhbGl6ZSA9IGNyZWF0ZU1hdGVy
aWFsaXplKGVzY2FwZWUsIG5vZGUtPm9yaWdpbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhTG9nKCJBZGRpbmcg
bWF0ZXJpYWxpemF0aW9uIHBvaW50OiAiLCBub2RlLCAiLT4iLCBlc2NhcGVlLCAiID0gIiwgbWF0
ZXJpYWxpemUsICJcbiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9lZGdlVG9NYXRlcmlh
bGl6YXRpb25Qb2ludC5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtl
X3BhaXIobm9kZSwgZXNjYXBlZSksIG1hdGVyaWFsaXplKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGNyZWF0ZU1hdGVyaWFsaXplKGVzY2FwZWUsIG5vZGUpOwogICAgICAgICAgICAgICAgICAg
ICB9KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU2Vj
b25kIHBhc3M6IGZpbmQgQ0ZHIGVkZ2UgbWF0ZXJpYWxpemF0aW9uIHBvaW50cy4KKyAgICAgICAg
Zm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkg
eworICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayA6IGJsb2NrLT5z
dWNjZXNzb3JzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1hdGVyaWFs
aXplZEF0SGVhZFtzdWNjZXNzb3JCbG9ja10pIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSog
YWxsb2NhdGlvbiA9IHBhaXIua2V5OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgLy8gV2Ugb25seSBjYXJlIGlmIGl0IGlzIG1hdGVyaWFsaXplZC4KKyAgICAgICAg
ICAgICAgICAgICAgaWYgKCFwYWlyLnZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBv
bmx5IGNhcmUgaWYgaXQgaXNuJ3QgbWF0ZXJpYWxpemVkIGluIHRoZSBwcmVkZWNlc3Nvci4KKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsaXplZEF0VGFpbFtibG9ja10uZ2V0KGFsbG9j
YXRpb24pKQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAg
ICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBuZWVkIHRvIGRlY2lkZSBpZiB3ZSBw
dXQgdGhlIG1hdGVyaWFsaXphdGlvbiBhdCB0aGUgaGVhZCBvZiB0aGUgc3VjY2Vzc29yLAorICAg
ICAgICAgICAgICAgICAgICAvLyBvciB0aGUgdGFpbCBvZiB0aGUgcHJlZGVjZXNzb3IuIEl0IG5l
ZWRzIHRvIGJlIHBsYWNlZCBzbyB0aGF0IHRoZSBhbGxvY2F0aW9uCisgICAgICAgICAgICAgICAg
ICAgIC8vIGlzIG5ldmVyIG1hdGVyaWFsaXplZCBiZWZvcmUsIGFuZCBhbHdheXMgbWF0ZXJpYWxp
emVkIGFmdGVyLgorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8g
SXMgaXQgbmV2ZXIgbWF0ZXJpYWxpemVkIGluIGFueSBvZiBzdWNjZXNzb3IncyBwcmVkZWNlc3Nv
cnM/IEkgbGlrZSB0byB0aGluaworICAgICAgICAgICAgICAgICAgICAvLyBvZiAic3VjY2Vzc29y
cycgcHJlZGVjZXNzb3JzIiBhbmQgInByZWRlY2Vzc29yJ3Mgc3VjY2Vzc29ycyIgYXMgdGhlICJz
aGFkb3ciLAorICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIG9mIHdoYXQgaXQgbG9va3Mg
bGlrZSB3aGVuIHlvdSBkcmF3IGl0LgorICAgICAgICAgICAgICAgICAgICBib29sIG5ldmVyTWF0
ZXJpYWxpemVkSW5TaGFkb3cgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2lj
QmxvY2sqIHNoYWRvd0Jsb2NrIDogc3VjY2Vzc29yQmxvY2stPnByZWRlY2Vzc29ycykgeworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGVyaWFsaXplZEF0VGFpbFtzaGFkb3dCbG9ja10u
Z2V0KGFsbG9jYXRpb24pKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV2ZXJNYXRl
cmlhbGl6ZWRJblNoYWRvdyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobmV2ZXJNYXRlcmlh
bGl6ZWRJblNoYWRvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlTWF0ZXJpYWxp
emUoYWxsb2NhdGlvbiwgc3VjY2Vzc29yQmxvY2stPmZpcnN0T3JpZ2luTm9kZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGhhZCBi
cm9rZW4gY3JpdGljYWwgZWRnZXMsIGl0IG11c3QgYmUgdGhlIGNhc2UgdGhhdCB0aGUKKyAgICAg
ICAgICAgICAgICAgICAgLy8gcHJlZGVjZXNzb3IncyBzdWNjZXNzb3JzIGFsbCBtYXRlcmlhbGl6
ZSB0aGUgb2JqZWN0LiBUaGlzIGlzIGJlY2F1c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIC8v
IHByZXZpb3VzIGNhc2UgaXMgZ3VhcmFudGVlZCB0byBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUg
c3VjY2Vzc29yIG9ubHkgaGFzCisgICAgICAgICAgICAgICAgICAgIC8vIG9uZSBwcmVkZWNlc3Nv
ci4gV2hlbiBjcml0aWNhbCBlZGdlcyBhcmUgYnJva2VuLCB0aGlzIGlzIGFsc28gdGhlIG9ubHkg
Y2FzZQorICAgICAgICAgICAgICAgICAgICAvLyB3aGVyZSB0aGUgcHJlZGVjZXNzb3IgY291bGQg
aGF2ZSBoYWQgbXVsdGlwbGUgc3VjY2Vzc29ycy4gVGhlcmVmb3JlIHdlIGhhdmUKKyAgICAgICAg
ICAgICAgICAgICAgLy8gYWxyZWFkeSBoYW5kbGVkIHRoZSBjYXNlIHdoZXJlIHRoZSBwcmVkZWNl
c3NvciBoYXMgbXVsdGlwbGUgc3VjY2Vzc29ycy4KKyAgICAgICAgICAgICAgICAgICAgREZHX0FT
U0VSVChtX2dyYXBoLCBibG9jaywgYmxvY2stPm51bVN1Y2Nlc3NvcnMoKSA9PSAxKTsKKyAgICAg
ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNyZWF0ZU1hdGVyaWFsaXplKGFs
bG9jYXRpb24sIGJsb2NrLT5sYXN0KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQogICAgIH0KICAgICAKICAgICB2b2lkIHBsYWNlTWF0ZXJpYWxpemF0aW9u
UG9pbnRzKCkKICAgICB7CiAgICAgICAgIG1fc3NhQ2FsY3VsYXRvci5yZXNldCgpOwogICAgICAg
ICAKKyAgICAgICAgLy8gVGhlICJ2YXJpYWJsZXMiIGFyZSB0aGUgb2JqZWN0IGFsbG9jYXRpb25z
IHRoYXQgd2UgYXJlIHNpbmtpbmcuIFNvLCBub2RlVG9WYXJpYWJsZSBtYXBzCisgICAgICAgIC8v
IHNpbmsgY2FuZGlkYXRlcyAoYWthIGVzY2FwZWVzKSB0byB0aGUgU1NBQ2FsY3VsYXRvcidzIG5v
dGlvbiBvZiBWYXJpYWJsZSwgYW5kIGluZGV4VG9Ob2RlCisgICAgICAgIC8vIG1hcHMgaW4gdGhl
IG9wcG9zaXRlIGRpcmVjdGlvbiB1c2luZyB0aGUgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGU6Omlu
ZGV4KCkgYXMgdGhlIGtleS4KICAgICAgICAgSGFzaE1hcDxOb2RlKiwgU1NBQ2FsY3VsYXRvcjo6
VmFyaWFibGUqPiBub2RlVG9WYXJpYWJsZTsKICAgICAgICAgVmVjdG9yPE5vZGUqPiBpbmRleFRv
Tm9kZTsKICAgICAgICAgCkBAIC0zMDMsMTcgKzM1OSwxMSBAQCBwcml2YXRlOgogICAgICAgICAg
ICAgICAgIGlmIChTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSogdmFyaWFibGUgPSBub2RlVG9WYXJp
YWJsZS5nZXQobm9kZSkpCiAgICAgICAgICAgICAgICAgICAgIG1fc3NhQ2FsY3VsYXRvci5uZXdE
ZWYodmFyaWFibGUsIGJsb2NrLCBub2RlKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKLSAgICAgICAgICAgICAgICAgICAgbm9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAg
ICAgIE5vZGUqIG1hdGVyaWFsaXplID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2Vk
Z2VUb01hdGVyaWFsaXphdGlvblBvaW50LmdldChzdGQ6Om1ha2VfcGFpcihub2RlLCBlZGdlLm5v
ZGUoKSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtYXRlcmlhbGl6ZSkKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgIG1fc3NhQ2FsY3VsYXRvci5uZXdEZWYoCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbm9kZVRvVmFyaWFibGUuZ2V0KGVkZ2Uubm9kZSgpKSwgYmxv
Y2ssIG1hdGVyaWFsaXplKTsKLSAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAg
ICAgZm9yIChOb2RlKiBtYXRlcmlhbGl6ZSA6IG1fbWF0ZXJpYWxpemF0aW9uU2l0ZVRvTWF0ZXJp
YWxpemF0aW9ucy5nZXQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zc2FDYWxjdWxh
dG9yLm5ld0RlZigKKyAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVUb1ZhcmlhYmxlLmdldCht
X21hdGVyaWFsaXphdGlvblRvRXNjYXBlZS5nZXQobWF0ZXJpYWxpemUpKSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGJsb2NrLCBtYXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMzYxLDIwICs0MTEsMTUgQEAgcHJp
dmF0ZToKICAgICAgICAgICAgIGZvciAodW5zaWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4
IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5kZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBu
b2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7CiAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmRv
VG9DaGlsZHJlbigKLSAgICAgICAgICAgICAgICAgICAgbm9kZSwKLSAgICAgICAgICAgICAgICAg
ICAgWyZdIChFZGdlIGVkZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGVy
aWFsaXplID0gbV9lZGdlVG9NYXRlcmlhbGl6YXRpb25Qb2ludC5nZXQoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIobm9kZSwgZWRnZS5ub2RlKCkpKTsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChtYXRlcmlhbGl6ZSkgewotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXplKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSgKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9pbnNlcnRpb25TZXQsIG5vZGVJbmRleCwg
bm9kZS0+b3JpZ2luLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxp
dHlDYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5LCBlZGdlLm5vZGUoKSwgbWF0ZXJpYWxpemUpOwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcuc2V0KGVkZ2Uubm9kZSgpLCBtYXRl
cmlhbGl6ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAg
IH0pOwotCisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBtYXRlcmlhbGl6ZSA6IG1fbWF0ZXJp
YWxpemF0aW9uU2l0ZVRvTWF0ZXJpYWxpemF0aW9ucy5nZXQobm9kZSkpIHsKKyAgICAgICAgICAg
ICAgICAgICAgTm9kZSogZXNjYXBlZSA9IG1fbWF0ZXJpYWxpemF0aW9uVG9Fc2NhcGVlLmdldCht
YXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChu
b2RlSW5kZXgsIG1hdGVyaWFsaXplKTsKKyAgICAgICAgICAgICAgICAgICAgaW5zZXJ0T1NSSGlu
dHNGb3JVcGRhdGUoCisgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldCwgbm9k
ZUluZGV4LCBub2RlLT5vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxp
dHlDYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5LCBlc2NhcGVlLCBtYXRlcmlhbGl6ZSk7CisgICAg
ICAgICAgICAgICAgICAgIG1hcHBpbmcuc2V0KGVzY2FwZWUsIG1hdGVyaWFsaXplKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGF2YWls
YWJpbGl0eUNhbGN1bGF0b3IuZXhlY3V0ZU5vZGUobm9kZSk7CiAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgbV9ncmFwaC5kb1RvQ2hpbGRyZW4oCkBAIC0zODYsNyArNDMxLDggQEAg
cHJpdmF0ZToKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgc2l6ZV90
IHVwc2lsb25JbnNlcnRpb25Qb2ludCA9IGJsb2NrLT5zaXplKCkgLSAxOwotICAgICAgICAgICAg
Tm9kZU9yaWdpbiB1cHNpbG9uT3JpZ2luID0gYmxvY2stPmxhc3QoKS0+b3JpZ2luOworICAgICAg
ICAgICAgTm9kZSogdXBzaWxvbldoZXJlID0gYmxvY2stPmxhc3QoKTsKKyAgICAgICAgICAgIE5v
ZGVPcmlnaW4gdXBzaWxvbk9yaWdpbiA9IHVwc2lsb25XaGVyZS0+b3JpZ2luOwogICAgICAgICAg
ICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNzb3JCbG9jayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkp
IHsKICAgICAgICAgICAgICAgICBmb3IgKFNTQUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogbV9z
c2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhzdWNjZXNzb3JCbG9jaykpIHsKICAgICAgICAgICAg
ICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBoaURlZi0+dmFsdWUoKTsKQEAgLTM5OSw3ICs0NDUs
NyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIFBo
aSB0aGF0IGNvbWJpbmVzIG1hdGVyaWFsaXphdGlvbnMgd2l0aCB0aGUgb3JpZ2luYWwKICAgICAg
ICAgICAgICAgICAgICAgICAgIC8vIHBoYW50b20gb2JqZWN0LCB0aGVuIHRoZSBwYXRoIHdpdGgg
dGhlIHBoYW50b20gb2JqZWN0IG11c3QgbWF0ZXJpYWxpemUuCiAgICAgICAgICAgICAgICAgICAg
ICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nID0gY3JlYXRlTWF0ZXJpYWxp
emUoYWxsb2NhdGlvbiwgdXBzaWxvbk9yaWdpbik7CisgICAgICAgICAgICAgICAgICAgICAgICBp
bmNvbWluZyA9IGNyZWF0ZU1hdGVyaWFsaXplKGFsbG9jYXRpb24sIHVwc2lsb25XaGVyZSk7CiAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnQodXBzaWxvbkluc2Vy
dGlvblBvaW50LCBpbmNvbWluZyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnNlcnRPU1JI
aW50c0ZvclVwZGF0ZSgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNl
dCwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1cHNpbG9uT3JpZ2luLApAQCAtNDA3LDE0ICs0NTMs
OSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY29taW5nID0gb3JpZ2luYWxJbmNvbWluZzsKICAgICAgICAgICAgICAgICAg
ICAgCi0gICAgICAgICAgICAgICAgICAgIE5vZGUqIHVwc2lsb24gPSBtX2luc2VydGlvblNldC5p
bnNlcnROb2RlKAorICAgICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2Rl
KAogICAgICAgICAgICAgICAgICAgICAgICAgdXBzaWxvbkluc2VydGlvblBvaW50LCBTcGVjTm9u
ZSwgVXBzaWxvbiwgdXBzaWxvbk9yaWdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5m
byhwaGlOb2RlKSwgaW5jb21pbmctPmRlZmF1bHRFZGdlKCkpOwotICAgICAgICAgICAgICAgICAg
ICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdpbmFsSW5jb21pbmcgPT0gYWxsb2NhdGlv
bikgewotICAgICAgICAgICAgICAgICAgICAgICAgbV9lZGdlVG9NYXRlcmlhbGl6YXRpb25Qb2lu
dC5hZGQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3BhaXIodXBzaWxv
biwgYWxsb2NhdGlvbiksIGluY29taW5nKTsKLSAgICAgICAgICAgICAgICAgICAgfQogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtNTAyLDEyICs1NDMs
NiBAQCBwcml2YXRlOgogICAgIAogICAgIHZvaWQgcHJvbW90ZVN1bmtlbkZpZWxkcygpCiAgICAg
ewotICAgICAgICAvLyBIZW5jZWZvcnRoIHdoZW4gd2UgZW5jb3VudGVyIGEgbWF0ZXJpYWxpemF0
aW9uIHBvaW50LCB3ZSB3aWxsIHdhbnQgdG8gYXNrICp3aG8qIGl0IGlzCi0gICAgICAgIC8vIGEg
bWF0ZXJpYWxpemF0aW9uIGZvci4gSW52ZXJ0IHRoZSBtYXAgdG8gYmUgYWJsZSB0byBhbnN3ZXIg
c3VjaCBxdWVzdGlvbnMuCi0gICAgICAgIG1fbWF0ZXJpYWxpemF0aW9uUG9pbnRUb0VzY2FwZWUu
Y2xlYXIoKTsKLSAgICAgICAgZm9yIChhdXRvIHBhaXIgOiBtX2VkZ2VUb01hdGVyaWFsaXphdGlv
blBvaW50KQotICAgICAgICAgICAgbV9tYXRlcmlhbGl6YXRpb25Qb2ludFRvRXNjYXBlZS5hZGQo
cGFpci52YWx1ZSwgcGFpci5rZXkuc2Vjb25kKTsKLSAgICAgICAgCiAgICAgICAgIC8vIENvbGxl
Y3QgdGhlIHNldCBvZiBoZWFwIGxvY2F0aW9ucyB0aGF0IHdlIHdpbGwgYmUgb3BlcmF0aW5nIG92
ZXIuCiAgICAgICAgIEhhc2hTZXQ8UHJvbW90ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9uczsKICAg
ICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9jayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3Jk
ZXIoKSkgewpAQCAtNjE1LDcgKzY1MCw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKE5v
ZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAgICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJz
dGl0dXRpb24obm9kZSk7CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE5v
ZGUqIGVzY2FwZWUgPSBtX21hdGVyaWFsaXphdGlvblBvaW50VG9Fc2NhcGVlLmdldChub2RlKSkK
KyAgICAgICAgICAgICAgICBpZiAoTm9kZSogZXNjYXBlZSA9IG1fbWF0ZXJpYWxpemF0aW9uVG9F
c2NhcGVlLmdldChub2RlKSkKICAgICAgICAgICAgICAgICAgICAgcG9wdWxhdGVNYXRlcmlhbGl6
ZShibG9jaywgbm9kZSwgZXNjYXBlZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAg
ICAgcHJvbW90ZUhlYXBBY2Nlc3MoCkBAIC03MTcsMjYgKzc1MiwzOCBAQCBwcml2YXRlOgogICAg
ICAgICB9CiAgICAgfQogICAgIAotICAgIE5vZGUqIGNyZWF0ZU1hdGVyaWFsaXplKE5vZGUqIGVz
Y2FwZWUsIGNvbnN0IE5vZGVPcmlnaW4gd2hlcmVPcmlnaW4pCisgICAgTm9kZSogY3JlYXRlTWF0
ZXJpYWxpemUoTm9kZSogZXNjYXBlZSwgTm9kZSogd2hlcmUpCiAgICAgeworICAgICAgICBOb2Rl
KiByZXN1bHQ7CisgICAgICAgIAogICAgICAgICBzd2l0Y2ggKGVzY2FwZWUtPm9wKCkpIHsKICAg
ICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAgICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6
IHsKICAgICAgICAgICAgIE9iamVjdE1hdGVyaWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBo
Lm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0YS5hZGQoKTsKICAgICAgICAgICAgIAotICAgICAg
ICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAorICAgICAgICAgICAgcmVzdWx0
ID0gbV9ncmFwaC5hZGROb2RlKAogICAgICAgICAgICAgICAgIGVzY2FwZWUtPnByZWRpY3Rpb24o
KSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6ZU5ld09iamVjdCwKICAgICAgICAgICAgICAgICBO
b2RlT3JpZ2luKAogICAgICAgICAgICAgICAgICAgICBlc2NhcGVlLT5vcmlnaW4uc2VtYW50aWMs
Ci0gICAgICAgICAgICAgICAgICAgIHdoZXJlT3JpZ2luLmZvckV4aXQpLAorICAgICAgICAgICAg
ICAgICAgICB3aGVyZS0+b3JpZ2luLmZvckV4aXQpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhk
YXRhKSwgT3BJbmZvKCksIDAsIDApOwotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIERGR19DUkFTSChtX2dyYXBoLCBlc2NhcGVlLCAiQmFkIGVzY2FwZWUgb3Ai
KTsKLSAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICAgICAgcmVzdWx0ID0gbnVs
bHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBp
ZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRhdGFMb2coIkNyZWF0aW5nIG1hdGVyaWFsaXphdGlv
biBwb2ludCBhdCAiLCB3aGVyZSwgIiBmb3IgIiwgZXNjYXBlZSwgIjogIiwgcmVzdWx0LCAiXG4i
KTsKKyAgICAgICAgCisgICAgICAgIG1fbWF0ZXJpYWxpemF0aW9uVG9Fc2NhcGVlLmFkZChyZXN1
bHQsIGVzY2FwZWUpOworICAgICAgICBtX21hdGVyaWFsaXphdGlvblNpdGVUb01hdGVyaWFsaXph
dGlvbnMuYWRkKAorICAgICAgICAgICAgd2hlcmUsIFZlY3RvcjxOb2RlKj4oKSkuaXRlcmF0b3It
PnZhbHVlLmFwcGVuZChyZXN1bHQpOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
ICAgICB9CiAgICAgCiAgICAgdm9pZCBwb3B1bGF0ZU1hdGVyaWFsaXplKEJhc2ljQmxvY2sqIGJs
b2NrLCBOb2RlKiBub2RlLCBOb2RlKiBlc2NhcGVlKQpAQCAtNzkxLDggKzgzOCw4IEBAIHByaXZh
dGU6CiAgICAgCiAgICAgU1NBQ2FsY3VsYXRvciBtX3NzYUNhbGN1bGF0b3I7CiAgICAgSGFzaFNl
dDxOb2RlKj4gbV9zaW5rQ2FuZGlkYXRlczsKLSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxOb2RlKiwg
Tm9kZSo+LCBOb2RlKj4gbV9lZGdlVG9NYXRlcmlhbGl6YXRpb25Qb2ludDsKLSAgICBIYXNoTWFw
PE5vZGUqLCBOb2RlKj4gbV9tYXRlcmlhbGl6YXRpb25Qb2ludFRvRXNjYXBlZTsKKyAgICBIYXNo
TWFwPE5vZGUqLCBOb2RlKj4gbV9tYXRlcmlhbGl6YXRpb25Ub0VzY2FwZWU7CisgICAgSGFzaE1h
cDxOb2RlKiwgVmVjdG9yPE5vZGUqPj4gbV9tYXRlcmlhbGl6YXRpb25TaXRlVG9NYXRlcmlhbGl6
YXRpb25zOwogICAgIEhhc2hNYXA8Tm9kZSosIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4+
IG1fbG9jYXRpb25zRm9yQWxsb2NhdGlvbjsKICAgICBIYXNoTWFwPFByb21vdGVkSGVhcExvY2F0
aW9uLCBTU0FDYWxjdWxhdG9yOjpWYXJpYWJsZSo+IG1fbG9jYXRpb25Ub1ZhcmlhYmxlOwogICAg
IFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4gbV9pbmRleFRvTG9jYXRpb247CkluZGV4OiBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTc0MjE3
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTIxMyw2ICsyMTMsMjMgQEAgcHVibGljOgogICAgICAgICAgICAgICAgIGNhc2Ug
SWRlbnRpdHk6CiAgICAgICAgICAgICAgICAgICAgIFZBTElEQVRFKChub2RlKSwgY2Fub25pY2Fs
UmVzdWx0UmVwcmVzZW50YXRpb24obm9kZS0+cmVzdWx0KCkpID09IGNhbm9uaWNhbFJlc3VsdFJl
cHJlc2VudGF0aW9uKG5vZGUtPmNoaWxkMSgpLT5yZXN1bHQoKSkpOwogICAgICAgICAgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAg
ICAgIGNhc2UgUHV0TG9jYWw6CisgICAgICAgICAgICAgICAgY2FzZSBVcHNpbG9uOgorICAgICAg
ICAgICAgICAgICAgICBWQUxJREFURSgobm9kZSksICEhbm9kZS0+Y2hpbGQxKCkpOworICAgICAg
ICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAg
ICAgICAgICAgICAgICBjYXNlIFVudHlwZWRVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2Ug
Q2VsbFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAg
ICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQm9vbGVhblVzZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAg
ICAgICAgICAgICAgICAgICAgICAgVkFMSURBVEUoKG5vZGUpLCAhIkJhZCB1c2Uga2luZCIpOwor
ICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBNYWtlUm9wZToK
ICAgICAgICAgICAgICAgICBjYXNlIFZhbHVlQWRkOgogICAgICAgICAgICAgICAgIGNhc2UgQXJp
dGhBZGQ6CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZp
c2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsxNzgsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9w
dGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVuYWJsZUNhbGxFZGdlUHJvZmlsaW5nLCB0cnVlKSBc
CiAgICAgdih1bnNpZ25lZCwgZnJlcXVlbnRDYWxsVGhyZXNob2xkLCAyKSBcCiAgICAgdihib29s
LCBvcHRpbWl6ZU5hdGl2ZUNhbGxzLCBmYWxzZSkgXAotICAgIHYoYm9vbCwgZW5hYmxlT2JqZWN0
QWxsb2NhdGlvblNpbmtpbmcsIGZhbHNlKSBcCisgICAgdihib29sLCBlbmFibGVPYmplY3RBbGxv
Y2F0aW9uU2lua2luZywgdHJ1ZSkgXAogICAgIFwKICAgICB2KGJvb2wsIGVuYWJsZUNvbmN1cnJl
bnRKSVQsIHRydWUpIFwKICAgICB2KHVuc2lnbmVkLCBudW1iZXJPZkRGR0NvbXBpbGVyVGhyZWFk
cywgY29tcHV0ZU51bWJlck9mV29ya2VyVGhyZWFkcygyLCAyKSAtIDEpIFwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>239127</attachid>
            <date>2014-10-02 12:14:01 -0700</date>
            <delta_ts>2014-10-02 12:18:39 -0700</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>24585</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTc0MjIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ0IEBA
CisyMDE0LTEwLTAyICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
T2JqZWN0IGFsbG9jYXRpb24gc2lua2luZyBzaG91bGQgaGF2ZSBhIHNvdW5kIHN0b3J5IGZvciBw
aWNraW5nIG1hdGVyaWFsaXphdGlvbiBwb2ludHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzMxNQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorICAgICAgICAKKyAgICAgICAgVGhlIG9ubHkgbWlzc2luZyBwaWVjZSB3YXMg
aGF2aW5nIHRoZSBvYmplY3QgYWxsb2NhdGlvbiBzaW5raW5nIHBoYXNlIGxvY2F0ZSBtYXRlcmlh
bGl6YXRpb24KKyAgICAgICAgcG9pbnRzIHRoYXQgd2VyZSBhdCBDRkcgZWRnZXMuCisgICAgICAg
IAorICAgICAgICBUaGUgbG9naWMgZm9yIGhvdyBhbmQgd2h5IHRoaXMgImp1c3Qgd29ya3MiIHJl
bGllcyBvbiBzb21lIHByb3BlcnRpZXMgb2YgY3JpdGljYWwgZWRnZQorICAgICAgICBicmVha2lu
Zywgc28gSSB3YXMgZmFpcmx5IGNhcmVmdWwgaW4gaG93IEkgZGlkIHRoaXMuIEFsc28sIHRoaXMg
cmVxdWlyZXMgaW5zZXJ0aW5nIHRoaW5ncyBhdAorICAgICAgICB0aGUgImZpcnN0IG9yaWdpbiBu
b2RlIiBvZiBhIGJsb2NrIC0gdGhhdCBpcyB0aGUgZmlyc3Qgbm9kZSBpbiBhIGJsb2NrIHRoYXQg
aGFzIGEgTm9kZU9yaWdpbgorICAgICAgICBhbmQgdGhlcmVmb3JlIGlzIGFsbG93ZWQgdG8gZXhp
dC4gV2UgYmFzaWNhbGx5IGhhZCBzdXBwb3J0IGZvciBzdWNoIGEgbm90aW9uIGJlZm9yZSwgYnV0
CisgICAgICAgIGRpZG4ndCBjbG9zZSB0aGUgbG9vcCBvbiBpdDsgdGhpcyBwYXRjaCBkb2VzIHRo
YXQuCisgICAgICAgIAorICAgICAgICBBbHNvIEkgYWRkZWQgdGhlIGFiaWxpdHkgdG8gcHJvdmlk
ZSBhIEJhc2ljQmxvY2sqIGFzIGNvbnRleHQgZm9yIGEgREZHX0FTU0VSVCgpLgorCisgICAgICAg
ICogZGZnL0RGR0Jhc2ljQmxvY2suY3BwOgorICAgICAgICAoSlNDOjpERkc6OkJhc2ljQmxvY2s6
OmZpcnN0T3JpZ2luTm9kZSk6CisgICAgICAgIChKU0M6OkRGRzo6QmFzaWNCbG9jazo6Zmlyc3RP
cmlnaW4pOgorICAgICAgICAqIGRmZy9ERkdCYXNpY0Jsb2NrLmg6CisgICAgICAgICogZGZnL0RG
R0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OkNyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2U6OmJyZWFrQ3JpdGljYWxFZGdlKToKKyAgICAgICAgKiBkZmcv
REZHR3JhcGguY3BwOgorICAgICAgICAoSlNDOjpERkc6OmNyYXNoKToKKyAgICAgICAgKEpTQzo6
REZHOjpHcmFwaDo6aGFuZGxlQXNzZXJ0aW9uRmFpbHVyZSk6CisgICAgICAgICogZGZnL0RGR0dy
YXBoLmg6CisgICAgICAgICogZGZnL0RGR0xvb3BQcmVIZWFkZXJDcmVhdGlvblBoYXNlLmNwcDoK
KyAgICAgICAgKEpTQzo6REZHOjpjcmVhdGVQcmVIZWFkZXIpOgorICAgICAgICAqIGRmZy9ERkdO
b2RlT3JpZ2luLmg6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZU9yaWdpbjo6aXNTZXQpOgorICAg
ICAgICAqIGRmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcDoKKyAgICAgICAg
KEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpkZXRlcm1pbmVNYXRlcmlh
bGl6YXRpb25Qb2ludHMpOgorICAgICAgICAoSlNDOjpERkc6Ok9iamVjdEFsbG9jYXRpb25TaW5r
aW5nUGhhc2U6OnBsYWNlTWF0ZXJpYWxpemF0aW9uUG9pbnRzKToKKyAgICAgICAgKEpTQzo6REZH
OjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpwcm9tb3RlU3Vua2VuRmllbGRzKToKKyAg
ICAgICAgKEpTQzo6REZHOjpPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlOjpjcmVhdGVNYXRl
cmlhbGl6ZSk6CisgICAgICAgICogZGZnL0RGR1ZhbGlkYXRlLmNwcDoKKyAgICAgICAgKEpTQzo6
REZHOjpWYWxpZGF0ZTo6dmFsaWRhdGUpOgorICAgICAgICAqIHJ1bnRpbWUvT3B0aW9ucy5oOgor
CiAyMDE0LTEwLTAyICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAg
ICBDbGVhbiB1cDogTW92ZSBYUEMgZm9yd2FyZCBkZWNsYXJhdGlvbnMgaW4gSmF2YVNjcmlwdENv
cmUgdG8gV1RGIFNQSSB3cmFwcGVyIGhlYWRlcgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Jhc2ljQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04OSw2
ICs4OSwyMSBAQCBib29sIEJhc2ljQmxvY2s6OmlzSW5CbG9jayhOb2RlKiBteU5vZGUpCiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCitOb2RlKiBCYXNpY0Jsb2NrOjpmaXJzdE9yaWdpbk5vZGUoKQor
eworICAgIGZvciAoTm9kZSogbm9kZSA6ICp0aGlzKSB7CisgICAgICAgIGlmIChub2RlLT5vcmln
aW4uaXNTZXQoKSkKKyAgICAgICAgICAgIHJldHVybiBub2RlOworICAgIH0KKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIHJldHVybiBudWxscHRyOworfQorCitOb2RlT3Jp
Z2luIEJhc2ljQmxvY2s6OmZpcnN0T3JpZ2luKCkKK3sKKyAgICByZXR1cm4gZmlyc3RPcmlnaW5O
b2RlKCktPm9yaWdpbjsKK30KKwogdm9pZCBCYXNpY0Jsb2NrOjpyZW1vdmVQcmVkZWNlc3NvcihC
YXNpY0Jsb2NrKiBibG9jaykKIHsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgcHJlZGVj
ZXNzb3JzLnNpemUoKTsgKytpKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0Jhc2ljQmxvY2suaAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdCYXNpY0Jsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTM0LDYgKzM0LDcgQEAKICNp
bmNsdWRlICJERkdCcmFuY2hEaXJlY3Rpb24uaCIKICNpbmNsdWRlICJERkdGbHVzaGVkQXQuaCIK
ICNpbmNsdWRlICJERkdOb2RlLmgiCisjaW5jbHVkZSAiREZHTm9kZU9yaWdpbi5oIgogI2luY2x1
ZGUgIkRGR1N0cnVjdHVyZUNsb2JiZXJTdGF0ZS5oIgogI2luY2x1ZGUgIk9wZXJhbmRzLmgiCiAj
aW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KQEAgLTkwLDYgKzkxLDkgQEAgc3RydWN0IEJhc2ljQmxv
Y2sgOiBSZWZDb3VudGVkPEJhc2ljQmxvYwogICAgIEJsb2NrTm9kZUxpc3Q6Oml0ZXJhdG9yIGJl
Z2luKCkgeyByZXR1cm4gbV9ub2Rlcy5iZWdpbigpOyB9CiAgICAgQmxvY2tOb2RlTGlzdDo6aXRl
cmF0b3IgZW5kKCkgeyByZXR1cm4gbV9ub2Rlcy5lbmQoKTsgfQogICAgIAorICAgIE5vZGUqIGZp
cnN0T3JpZ2luTm9kZSgpOworICAgIE5vZGVPcmlnaW4gZmlyc3RPcmlnaW4oKTsKKyAgICAKICAg
ICB1bnNpZ25lZCBudW1TdWNjZXNzb3JzKCkgeyByZXR1cm4gbGFzdCgpLT5udW1TdWNjZXNzb3Jz
KCk7IH0KICAgICAKICAgICBCYXNpY0Jsb2NrKiYgc3VjY2Vzc29yKHVuc2lnbmVkIGluZGV4KQpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDcml0aWNhbEVkZ2VCcmVha2luZ1Bo
YXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRp
Y2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0NyaXRpY2FsRWRnZUJyZWFraW5nUGhhc2UuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC03Nyw3ICs3Nyw3IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIGRvbid0IGtub3cg
aXRzIGV4ZWN1dGlvbiBmcmVxdWVuY3kuCiAgICAgICAgIEJhc2ljQmxvY2sqIHBhZCA9IG1faW5z
ZXJ0aW9uU2V0Lmluc2VydEJlZm9yZSgqc3VjY2Vzc29yLCBQTmFOKTsKICAgICAgICAgcGFkLT5h
cHBlbmROb2RlKAotICAgICAgICAgICAgbV9ncmFwaCwgU3BlY05vbmUsIEp1bXAsICgqc3VjY2Vz
c29yKS0+YXQoMCktPm9yaWdpbiwgT3BJbmZvKCpzdWNjZXNzb3IpKTsKKyAgICAgICAgICAgIG1f
Z3JhcGgsIFNwZWNOb25lLCBKdW1wLCAoKnN1Y2Nlc3NvciktPmZpcnN0T3JpZ2luKCksIE9wSW5m
bygqc3VjY2Vzc29yKSk7CiAgICAgICAgIHBhZC0+cHJlZGVjZXNzb3JzLmFwcGVuZChwcmVkZWNl
c3Nvcik7CiAgICAgICAgICgqc3VjY2Vzc29yKS0+cmVwbGFjZVByZWRlY2Vzc29yKHByZWRlY2Vz
c29yLCBwYWQpOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
R3JhcGguY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3Jh
cGguY3BwCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R0dyYXBoLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIxMiwyNSArMTIxMiw0MSBAQCB2b2lkIEdy
YXBoOjphc3NlcnRJc1JlZ2lzdGVyZWQoU3RydWN0dXJlCiAgICAgREZHX0NSQVNIKCp0aGlzLCBu
dWxscHRyLCB0b0NTdHJpbmcoIlN0cnVjdHVyZSAiLCBwb2ludGVyRHVtcChzdHJ1Y3R1cmUpLCAi
IGlzIHdhdGNoYWJsZSBidXQgaXNuJ3QgYmVpbmcgd2F0Y2hlZC4iKS5kYXRhKCkpOwogfQogCi12
b2lkIEdyYXBoOjpoYW5kbGVBc3NlcnRpb25GYWlsdXJlKAotICAgIE5vZGUqIG5vZGUsIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
YXNzZXJ0aW9uKQorTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCBjcmFzaCgKKyAg
ICBHcmFwaCYgZ3JhcGgsIGNvbnN0IENTdHJpbmcmIHdoaWxlVGV4dCwgY29uc3QgY2hhciogZmls
ZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLAorICAgIGNvbnN0IGNoYXIqIGFzc2Vy
dGlvbikKIHsKICAgICBzdGFydENyYXNoaW5nKCk7CiAgICAgZGF0YUxvZygiREZHIEFTU0VSVElP
TiBGQUlMRUQ6ICIsIGFzc2VydGlvbiwgIlxuIik7CiAgICAgZGF0YUxvZyhmaWxlLCAiKCIsIGxp
bmUsICIpIDogIiwgZnVuY3Rpb24sICJcbiIpOwogICAgIGRhdGFMb2coIlxuIik7Ci0gICAgaWYg
KG5vZGUpIHsKLSAgICAgICAgZGF0YUxvZygiV2hpbGUgaGFuZGxpbmcgbm9kZSAiLCBub2RlLCAi
XG4iKTsKLSAgICAgICAgZGF0YUxvZygiXG4iKTsKLSAgICB9CisgICAgZGF0YUxvZyh3aGlsZVRl
eHQpOwogICAgIGRhdGFMb2coIkdyYXBoIGF0IHRpbWUgb2YgZmFpbHVyZTpcbiIpOwotICAgIGR1
bXAoKTsKKyAgICBncmFwaC5kdW1wKCk7CiAgICAgZGF0YUxvZygiXG4iKTsKICAgICBkYXRhTG9n
KCJERkcgQVNTRVJUSU9OIEZBSUxFRDogIiwgYXNzZXJ0aW9uLCAiXG4iKTsKICAgICBkYXRhTG9n
KGZpbGUsICIoIiwgbGluZSwgIikgOiAiLCBmdW5jdGlvbiwgIlxuIik7CiAgICAgQ1JBU0hfV0lU
SF9TRUNVUklUWV9JTVBMSUNBVElPTigpOwogfQogCit2b2lkIEdyYXBoOjpoYW5kbGVBc3NlcnRp
b25GYWlsdXJlKAorICAgIHN0ZDo6bnVsbHB0cl90LCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGlu
ZSwgY29uc3QgY2hhciogZnVuY3Rpb24sIGNvbnN0IGNoYXIqIGFzc2VydGlvbikKK3sKKyAgICBj
cmFzaCgqdGhpcywgIiIsIGZpbGUsIGxpbmUsIGZ1bmN0aW9uLCBhc3NlcnRpb24pOworfQorCit2
b2lkIEdyYXBoOjpoYW5kbGVBc3NlcnRpb25GYWlsdXJlKAorICAgIE5vZGUqIG5vZGUsIGNvbnN0
IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlvbiwgY29uc3QgY2hhciog
YXNzZXJ0aW9uKQoreworICAgIGNyYXNoKCp0aGlzLCB0b0NTdHJpbmcoIldoaWxlIGhhbmRsaW5n
IG5vZGUgIiwgbm9kZSwgIlxuXG4iKSwgZmlsZSwgbGluZSwgZnVuY3Rpb24sIGFzc2VydGlvbik7
Cit9CisKK3ZvaWQgR3JhcGg6OmhhbmRsZUFzc2VydGlvbkZhaWx1cmUoCisgICAgQmFzaWNCbG9j
ayogYmxvY2ssIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyKiBmdW5jdGlv
biwgY29uc3QgY2hhciogYXNzZXJ0aW9uKQoreworICAgIGNyYXNoKCp0aGlzLCB0b0NTdHJpbmco
IldoaWxlIGhhbmRsaW5nIGJsb2NrICIsIHBvaW50ZXJEdW1wKGJsb2NrKSwgIlxuXG4iKSwgZmls
ZSwgbGluZSwgZnVuY3Rpb24sIGFzc2VydGlvbik7Cit9CisKIH0gfSAvLyBuYW1lc3BhY2UgSlND
OjpERkcKIAogI2VuZGlmIC8vIEVOQUJMRShERkdfSklUKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHR3JhcGguaAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdHcmFwaC5oCSh3b3JraW5nIGNvcHkpCkBAIC04NDUsOCArODQ1LDE0IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdmlzaXRDaGlsZHJlbihTbG90VmlzaXRvciYpIG92ZXJy
aWRlOwogICAgIAogICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBoYW5kbGVBc3NlcnRp
b25GYWlsdXJlKAorICAgICAgICBzdGQ6Om51bGxwdHJfdCwgY29uc3QgY2hhciogZmlsZSwgaW50
IGxpbmUsIGNvbnN0IGNoYXIqIGZ1bmN0aW9uLAorICAgICAgICBjb25zdCBjaGFyKiBhc3NlcnRp
b24pOworICAgIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggdm9pZCBoYW5kbGVBc3NlcnRpb25GYWls
dXJlKAogICAgICAgICBOb2RlKiBub2RlLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29u
c3QgY2hhciogZnVuY3Rpb24sCiAgICAgICAgIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7CisgICAg
Tk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGhhbmRsZUFzc2VydGlvbkZhaWx1cmUoCisgICAg
ICAgIEJhc2ljQmxvY2sqIGJsb2NrLCBjb25zdCBjaGFyKiBmaWxlLCBpbnQgbGluZSwgY29uc3Qg
Y2hhciogZnVuY3Rpb24sCisgICAgICAgIGNvbnN0IGNoYXIqIGFzc2VydGlvbik7CiAgICAgCiAg
ICAgVk0mIG1fdm07CiAgICAgUGxhbiYgbV9wbGFuOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdMb29wUHJlSGVhZGVyQ3JlYXRpb25QaGFzZS5j
cHAJKHJldmlzaW9uIDE3NDIxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTG9v
cFByZUhlYWRlckNyZWF0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3
IEBAIEJhc2ljQmxvY2sqIGNyZWF0ZVByZUhlYWRlcihHcmFwaCYgZ3JhcGgKICAgICAvLyBEb24n
dCBib3RoZXIgdG8gcHJlc2VydmUgZXhlY3V0aW9uIGZyZXF1ZW5jaWVzIGZvciBub3cuCiAgICAg
QmFzaWNCbG9jayogcHJlSGVhZGVyID0gaW5zZXJ0aW9uU2V0Lmluc2VydEJlZm9yZShibG9jaywg
UE5hTik7CiAgICAgcHJlSGVhZGVyLT5hcHBlbmROb2RlKAotICAgICAgICBncmFwaCwgU3BlY05v
bmUsIEp1bXAsIGJsb2NrLT5hdCgwKS0+b3JpZ2luLCBPcEluZm8oYmxvY2spKTsKKyAgICAgICAg
Z3JhcGgsIFNwZWNOb25lLCBKdW1wLCBibG9jay0+Zmlyc3RPcmlnaW4oKSwgT3BJbmZvKGJsb2Nr
KSk7CiAgICAgCiAgICAgZm9yICh1bnNpZ25lZCBwcmVkZWNlc3NvckluZGV4ID0gMDsgcHJlZGVj
ZXNzb3JJbmRleCA8IGJsb2NrLT5wcmVkZWNlc3NvcnMuc2l6ZSgpOyBwcmVkZWNlc3NvckluZGV4
KyspIHsKICAgICAgICAgQmFzaWNCbG9jayogcHJlZGVjZXNzb3IgPSBibG9jay0+cHJlZGVjZXNz
b3JzW3ByZWRlY2Vzc29ySW5kZXhdOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlT3JpZ2luLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlT3JpZ2luLmgJKHJldmlzaW9uIDE3NDIxNykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHTm9kZU9yaWdpbi5oCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw3IEBAIHN0
cnVjdCBOb2RlT3JpZ2luIHsKICAgICAKICAgICBib29sIGlzU2V0KCkgY29uc3QKICAgICB7Cisg
ICAgICAgIEFTU0VSVChzZW1hbnRpYy5pc1NldCgpID09IGZvckV4aXQuaXNTZXQoKSk7CiAgICAg
ICAgIHJldHVybiBzZW1hbnRpYy5pc1NldCgpOwogICAgIH0KICAgICAKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHT2JqZWN0QWxsb2NhdGlvblNpbmtpbmdQaGFzZS5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9u
U2lua2luZ1BoYXNlLmNwcAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdPYmplY3RBbGxvY2F0aW9uU2lua2luZ1BoYXNlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ1LDcgKzE0NSw4IEBAIHByaXZhdGU6CiAgICAgICAgIC8vIG1hdGVyaWFsaXphdGlv
bnMuCiAgICAgICAgIAogICAgICAgICBtX3NpbmtDYW5kaWRhdGVzLmNsZWFyKCk7Ci0gICAgICAg
IG1fZWRnZVRvTWF0ZXJpYWxpemF0aW9uUG9pbnQuY2xlYXIoKTsKKyAgICAgICAgbV9tYXRlcmlh
bGl6YXRpb25Ub0VzY2FwZWUuY2xlYXIoKTsKKyAgICAgICAgbV9tYXRlcmlhbGl6YXRpb25TaXRl
VG9NYXRlcmlhbGl6YXRpb25zLmNsZWFyKCk7CiAgICAgICAgIAogICAgICAgICBCbG9ja01hcDxI
YXNoTWFwPE5vZGUqLCBib29sPj4gbWF0ZXJpYWxpemVkQXRIZWFkKG1fZ3JhcGgpOwogICAgICAg
ICBCbG9ja01hcDxIYXNoTWFwPE5vZGUqLCBib29sPj4gbWF0ZXJpYWxpemVkQXRUYWlsKG1fZ3Jh
cGgpOwpAQCAtMjM1LDcgKzIzNiwxNCBAQCBwcml2YXRlOgogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICAKICAgICAgICAgLy8gQSBtYXRlcmlhbGl6YXRpb24gZWRnZSBleGlzdHMgYXQgYW55
IHBvaW50IHdoZXJlIGEgbm9kZSBlc2NhcGVzIGJ1dCBoYXNuJ3QgYmVlbgotICAgICAgICAvLyBt
YXRlcmlhbGl6ZWQgeWV0LgorICAgICAgICAvLyBtYXRlcmlhbGl6ZWQgeWV0LiBXZSBkbyB0aGlz
IGluIHR3byBwYXJ0cy4gRmlyc3Qgd2UgZmluZCBhbGwgb2YgdGhlIG5vZGVzIHRoYXQgY2F1c2UK
KyAgICAgICAgLy8gZXNjYXBpbmcgdG8gaGFwcGVuLCB3aGVyZSB0aGUgZXNjYXBlZSBoYWQgbm90
IHlldCBiZWVuIG1hdGVyaWFsaXplZC4gVGhpcyBjYXRjaGVzCisgICAgICAgIC8vIGV2ZXJ5dGhp
bmcgYnV0IGxvb3BzLiBXZSB0aGVuIGNhdGNoIGxvb3BzIC0gYXMgd2VsbCBhcyB3ZWlyZGVyIGNv
bnRyb2wgZmxvdyBjb25zdHJ1Y3RzIC0KKyAgICAgICAgLy8gaW4gYSBzdWJzZXF1ZW50IHBhc3Mg
dGhhdCBsb29rcyBhdCBwbGFjZXMgaW4gdGhlIENGRyB3aGVyZSBhbiBlZGdlIGV4aXN0cyBmcm9t
IGEgYmxvY2sKKyAgICAgICAgLy8gdGhhdCBoYXNuJ3QgbWF0ZXJpYWxpemVkIHRvIGEgYmxvY2sg
dGhhdCBoYXMuIFdlIGluc2VydCB0aGUgbWF0ZXJpYWxpemF0aW9uIGFsb25nIHN1Y2ggYW4KKyAg
ICAgICAgLy8gZWRnZSwgYW5kIHdlIHJlbHkgb24gdGhlIGZhY3QgdGhhdCBjcml0aWNhbCBlZGdl
cyB3ZXJlIGFscmVhZHkgYnJva2VuIHNvIHRoYXQgd2UgYWN0dWFsbHkKKyAgICAgICAgLy8gZWl0
aGVyIGluc2VydCB0aGUgbWF0ZXJpYWxpemF0aW9uIGF0IHRoZSBoZWFkIG9mIHRoZSBzdWNjZXNz
b3Igb3IgdGhlIHRhaWwgb2YgdGhlCisgICAgICAgIC8vIHByZWRlY2Vzc29yLgogICAgICAgICAv
LwogICAgICAgICAvLyBGSVhNRTogVGhpcyBjYW4gY3JlYXRlIGR1cGxpY2F0ZSBhbGxvY2F0aW9u
cyB3aGVuIHdlIHJlYWxseSBvbmx5IG5lZWRlZCB0byBwZXJmb3JtIG9uZS4KICAgICAgICAgLy8g
Rm9yIGV4YW1wbGU6CkBAIC0yNTQsNiArMjYyLDggQEAgcHJpdmF0ZToKICAgICAgICAgLy8gbWF0
ZXJpYWxpemF0aW9uIHBvaW50IHJpZ2h0IGF0IHRoZSB0b3Agb2YgdGhlIHRoZW4gY2FzZSBvZiAi
aWYgKHJhcmUpIi4gVG8gZG8gdGhpcywgd2UgY2FuCiAgICAgICAgIC8vIGZpbmQgdGhlIExDQSBv
ZiB0aGUgdmFyaW91cyBtYXRlcmlhbGl6YXRpb25zIGluIHRoZSBkb20gdHJlZS4KICAgICAgICAg
Ly8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEzNzEyNAorICAgICAg
ICAKKyAgICAgICAgLy8gRmlyc3QgcGFzczogZmluZCBpbnRyYS1ibG9jayBtYXRlcmlhbGl6YXRp
b24gcG9pbnRzLgogICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9j
a3NJbk5hdHVyYWxPcmRlcigpKSB7CiAgICAgICAgICAgICBIYXNoU2V0PE5vZGUqPiBtYXRlcmlh
bGl6ZWQ7CiAgICAgICAgICAgICBmb3IgKGF1dG8gcGFpciA6IG1hdGVyaWFsaXplZEF0SGVhZFti
bG9ja10pIHsKQEAgLTI3NCwyMCArMjg0LDcwIEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoIW1hdGVyaWFsaXplZC5hZGQoZXNjYXBlZSkuaXNOZXdFbnRyeSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgICAgICAK
LSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGVyaWFsaXplID0gY3JlYXRlTWF0ZXJp
YWxpemUoZXNjYXBlZSwgbm9kZS0+b3JpZ2luKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlm
ICh2ZXJib3NlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFMb2coIkFkZGluZyBt
YXRlcmlhbGl6YXRpb24gcG9pbnQ6ICIsIG5vZGUsICItPiIsIGVzY2FwZWUsICIgPSAiLCBtYXRl
cmlhbGl6ZSwgIlxuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtX2VkZ2VUb01hdGVyaWFs
aXphdGlvblBvaW50LmFkZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1ha2Vf
cGFpcihub2RlLCBlc2NhcGVlKSwgbWF0ZXJpYWxpemUpOworICAgICAgICAgICAgICAgICAgICAg
ICAgY3JlYXRlTWF0ZXJpYWxpemUoZXNjYXBlZSwgbm9kZSk7CiAgICAgICAgICAgICAgICAgICAg
IH0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBTZWNv
bmQgcGFzczogZmluZCBDRkcgZWRnZSBtYXRlcmlhbGl6YXRpb24gcG9pbnRzLgorICAgICAgICBm
b3IgKEJhc2ljQmxvY2sqIGJsb2NrIDogbV9ncmFwaC5ibG9ja3NJbk5hdHVyYWxPcmRlcigpKSB7
CisgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHN1Y2Nlc3NvckJsb2NrIDogYmxvY2stPnN1
Y2Nlc3NvcnMoKSkgeworICAgICAgICAgICAgICAgIGZvciAoYXV0byBwYWlyIDogbWF0ZXJpYWxp
emVkQXRIZWFkW3N1Y2Nlc3NvckJsb2NrXSkgeworICAgICAgICAgICAgICAgICAgICBOb2RlKiBh
bGxvY2F0aW9uID0gcGFpci5rZXk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAg
ICAgICAgICAvLyBXZSBvbmx5IGNhcmUgaWYgaXQgaXMgbWF0ZXJpYWxpemVkIGluIHRoZSBzdWNj
ZXNzb3IuCisgICAgICAgICAgICAgICAgICAgIGlmICghcGFpci52YWx1ZSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAg
ICAgICAgICAgLy8gV2Ugb25seSBjYXJlIGFib3V0IHNpbmtpbmcgY2FuZGlkYXRlcy4KKyAgICAg
ICAgICAgICAgICAgICAgaWYgKCFtX3NpbmtDYW5kaWRhdGVzLmNvbnRhaW5zKGFsbG9jYXRpb24p
KQorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgICAgICAgICAvLyBXZSBvbmx5IGNhcmUgaWYgaXQgaXNuJ3QgbWF0ZXJp
YWxpemVkIGluIHRoZSBwcmVkZWNlc3Nvci4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hdGVy
aWFsaXplZEF0VGFpbFtibG9ja10uZ2V0KGFsbG9jYXRpb24pKQorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAg
ICAvLyBXZSBuZWVkIHRvIGRlY2lkZSBpZiB3ZSBwdXQgdGhlIG1hdGVyaWFsaXphdGlvbiBhdCB0
aGUgaGVhZCBvZiB0aGUgc3VjY2Vzc29yLAorICAgICAgICAgICAgICAgICAgICAvLyBvciB0aGUg
dGFpbCBvZiB0aGUgcHJlZGVjZXNzb3IuIEl0IG5lZWRzIHRvIGJlIHBsYWNlZCBzbyB0aGF0IHRo
ZSBhbGxvY2F0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIGlzIG5ldmVyIG1hdGVyaWFsaXpl
ZCBiZWZvcmUsIGFuZCBhbHdheXMgbWF0ZXJpYWxpemVkIGFmdGVyLgorICAgICAgICAgICAgICAg
ICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gSXMgaXQgbmV2ZXIgbWF0ZXJpYWxpemVkIGlu
IGFueSBvZiBzdWNjZXNzb3IncyBwcmVkZWNlc3NvcnM/IEkgbGlrZSB0byB0aGluaworICAgICAg
ICAgICAgICAgICAgICAvLyBvZiAic3VjY2Vzc29ycycgcHJlZGVjZXNzb3JzIiBhbmQgInByZWRl
Y2Vzc29yJ3Mgc3VjY2Vzc29ycyIgYXMgdGhlICJzaGFkb3ciLAorICAgICAgICAgICAgICAgICAg
ICAvLyBiZWNhdXNlIG9mIHdoYXQgaXQgbG9va3MgbGlrZSB3aGVuIHlvdSBkcmF3IGl0LgorICAg
ICAgICAgICAgICAgICAgICBib29sIG5ldmVyTWF0ZXJpYWxpemVkSW5TaGFkb3cgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICBmb3IgKEJhc2ljQmxvY2sqIHNoYWRvd0Jsb2NrIDogc3VjY2Vz
c29yQmxvY2stPnByZWRlY2Vzc29ycykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1h
dGVyaWFsaXplZEF0VGFpbFtzaGFkb3dCbG9ja10uZ2V0KGFsbG9jYXRpb24pKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgbmV2ZXJNYXRlcmlhbGl6ZWRJblNoYWRvdyA9IGZhbHNlOwor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAg
ICAgICAgICAgICAgICBpZiAobmV2ZXJNYXRlcmlhbGl6ZWRJblNoYWRvdykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgY3JlYXRlTWF0ZXJpYWxpemUoYWxsb2NhdGlvbiwgc3VjY2Vzc29yQmxv
Y2stPmZpcnN0T3JpZ2luTm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAg
ICAgICAgICAgICAvLyBCZWNhdXNlIHdlIGhhZCBicm9rZW4gY3JpdGljYWwgZWRnZXMsIGl0IG11
c3QgYmUgdGhlIGNhc2UgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJlZGVjZXNz
b3IncyBzdWNjZXNzb3JzIGFsbCBtYXRlcmlhbGl6ZSB0aGUgb2JqZWN0LiBUaGlzIGlzIGJlY2F1
c2UgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIGNhc2UgaXMgZ3VhcmFudGVl
ZCB0byBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUgc3VjY2Vzc29yIG9ubHkgaGFzCisgICAgICAg
ICAgICAgICAgICAgIC8vIG9uZSBwcmVkZWNlc3Nvci4gV2hlbiBjcml0aWNhbCBlZGdlcyBhcmUg
YnJva2VuLCB0aGlzIGlzIGFsc28gdGhlIG9ubHkgY2FzZQorICAgICAgICAgICAgICAgICAgICAv
LyB3aGVyZSB0aGUgcHJlZGVjZXNzb3IgY291bGQgaGF2ZSBoYWQgbXVsdGlwbGUgc3VjY2Vzc29y
cy4gVGhlcmVmb3JlIHdlIGhhdmUKKyAgICAgICAgICAgICAgICAgICAgLy8gYWxyZWFkeSBoYW5k
bGVkIHRoZSBjYXNlIHdoZXJlIHRoZSBwcmVkZWNlc3NvciBoYXMgbXVsdGlwbGUgc3VjY2Vzc29y
cy4KKyAgICAgICAgICAgICAgICAgICAgREZHX0FTU0VSVChtX2dyYXBoLCBibG9jaywgYmxvY2st
Pm51bVN1Y2Nlc3NvcnMoKSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAg
ICAgICAgICAgIGNyZWF0ZU1hdGVyaWFsaXplKGFsbG9jYXRpb24sIGJsb2NrLT5sYXN0KCkpOwor
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICAK
ICAgICB2b2lkIHBsYWNlTWF0ZXJpYWxpemF0aW9uUG9pbnRzKCkKICAgICB7CiAgICAgICAgIG1f
c3NhQ2FsY3VsYXRvci5yZXNldCgpOwogICAgICAgICAKKyAgICAgICAgLy8gVGhlICJ2YXJpYWJs
ZXMiIGFyZSB0aGUgb2JqZWN0IGFsbG9jYXRpb25zIHRoYXQgd2UgYXJlIHNpbmtpbmcuIFNvLCBu
b2RlVG9WYXJpYWJsZSBtYXBzCisgICAgICAgIC8vIHNpbmsgY2FuZGlkYXRlcyAoYWthIGVzY2Fw
ZWVzKSB0byB0aGUgU1NBQ2FsY3VsYXRvcidzIG5vdGlvbiBvZiBWYXJpYWJsZSwgYW5kIGluZGV4
VG9Ob2RlCisgICAgICAgIC8vIG1hcHMgaW4gdGhlIG9wcG9zaXRlIGRpcmVjdGlvbiB1c2luZyB0
aGUgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGU6OmluZGV4KCkgYXMgdGhlIGtleS4KICAgICAgICAg
SGFzaE1hcDxOb2RlKiwgU1NBQ2FsY3VsYXRvcjo6VmFyaWFibGUqPiBub2RlVG9WYXJpYWJsZTsK
ICAgICAgICAgVmVjdG9yPE5vZGUqPiBpbmRleFRvTm9kZTsKICAgICAgICAgCkBAIC0zMDMsMTcg
KzM2MywxMSBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgIGlmIChTU0FDYWxjdWxhdG9yOjpW
YXJpYWJsZSogdmFyaWFibGUgPSBub2RlVG9WYXJpYWJsZS5nZXQobm9kZSkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fc3NhQ2FsY3VsYXRvci5uZXdEZWYodmFyaWFibGUsIGJsb2NrLCBub2RlKTsK
ICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9DaGlsZHJlbigK
LSAgICAgICAgICAgICAgICAgICAgbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgWyZdIChFZGdl
IGVkZ2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGVyaWFsaXplID0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2VkZ2VUb01hdGVyaWFsaXphdGlvblBvaW50Lmdl
dChzdGQ6Om1ha2VfcGFpcihub2RlLCBlZGdlLm5vZGUoKSkpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKCFtYXRlcmlhbGl6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1
cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIG1f
c3NhQ2FsY3VsYXRvci5uZXdEZWYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZVRv
VmFyaWFibGUuZ2V0KGVkZ2Uubm9kZSgpKSwgYmxvY2ssIG1hdGVyaWFsaXplKTsKLSAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgZm9yIChOb2RlKiBtYXRlcmlhbGl6ZSA6
IG1fbWF0ZXJpYWxpemF0aW9uU2l0ZVRvTWF0ZXJpYWxpemF0aW9ucy5nZXQobm9kZSkpIHsKKyAg
ICAgICAgICAgICAgICAgICAgbV9zc2FDYWxjdWxhdG9yLm5ld0RlZigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIG5vZGVUb1ZhcmlhYmxlLmdldChtX21hdGVyaWFsaXphdGlvblRvRXNjYXBlZS5n
ZXQobWF0ZXJpYWxpemUpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLCBtYXRlcmlh
bGl6ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
ICAgIApAQCAtMzYxLDIwICs0MTUsMTUgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIGZvciAodW5z
aWduZWQgbm9kZUluZGV4ID0gMDsgbm9kZUluZGV4IDwgYmxvY2stPnNpemUoKTsgKytub2RlSW5k
ZXgpIHsKICAgICAgICAgICAgICAgICBOb2RlKiBub2RlID0gYmxvY2stPmF0KG5vZGVJbmRleCk7
CiAKLSAgICAgICAgICAgICAgICBtX2dyYXBoLmRvVG9DaGlsZHJlbigKLSAgICAgICAgICAgICAg
ICAgICAgbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgWyZdIChFZGdlIGVkZ2UpIHsKLSAgICAg
ICAgICAgICAgICAgICAgICAgIE5vZGUqIG1hdGVyaWFsaXplID0gbV9lZGdlVG9NYXRlcmlhbGl6
YXRpb25Qb2ludC5nZXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkOjptYWtlX3Bh
aXIobm9kZSwgZWRnZS5ub2RlKCkpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXRl
cmlhbGl6ZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1faW5zZXJ0aW9uU2V0Lmlu
c2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXplKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbV9pbnNlcnRpb25TZXQsIG5vZGVJbmRleCwgbm9kZS0+b3JpZ2luLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlDYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5
LCBlZGdlLm5vZGUoKSwgbWF0ZXJpYWxpemUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1hcHBpbmcuc2V0KGVkZ2Uubm9kZSgpLCBtYXRlcmlhbGl6ZSk7Ci0gICAgICAgICAgICAgICAg
ICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0pOwotCisgICAgICAgICAgICAgICAgZm9y
IChOb2RlKiBtYXRlcmlhbGl6ZSA6IG1fbWF0ZXJpYWxpemF0aW9uU2l0ZVRvTWF0ZXJpYWxpemF0
aW9ucy5nZXQobm9kZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgTm9kZSogZXNjYXBlZSA9IG1f
bWF0ZXJpYWxpemF0aW9uVG9Fc2NhcGVlLmdldChtYXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAg
ICAgICAgIG1faW5zZXJ0aW9uU2V0Lmluc2VydChub2RlSW5kZXgsIG1hdGVyaWFsaXplKTsKKyAg
ICAgICAgICAgICAgICAgICAgaW5zZXJ0T1NSSGludHNGb3JVcGRhdGUoCisgICAgICAgICAgICAg
ICAgICAgICAgICBtX2luc2VydGlvblNldCwgbm9kZUluZGV4LCBub2RlLT5vcmlnaW4sCisgICAg
ICAgICAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlDYWxjdWxhdG9yLm1fYXZhaWxhYmlsaXR5
LCBlc2NhcGVlLCBtYXRlcmlhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgIG1hcHBpbmcuc2V0
KGVzY2FwZWUsIG1hdGVyaWFsaXplKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgIAogICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eUNhbGN1bGF0b3IuZXhlY3V0ZU5v
ZGUobm9kZSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgbV9ncmFwaC5kb1Rv
Q2hpbGRyZW4oCkBAIC0zODYsNyArNDM1LDggQEAgcHJpdmF0ZToKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIAogICAgICAgICAgICAgc2l6ZV90IHVwc2lsb25JbnNlcnRpb25Qb2ludCA9IGJs
b2NrLT5zaXplKCkgLSAxOwotICAgICAgICAgICAgTm9kZU9yaWdpbiB1cHNpbG9uT3JpZ2luID0g
YmxvY2stPmxhc3QoKS0+b3JpZ2luOworICAgICAgICAgICAgTm9kZSogdXBzaWxvbldoZXJlID0g
YmxvY2stPmxhc3QoKTsKKyAgICAgICAgICAgIE5vZGVPcmlnaW4gdXBzaWxvbk9yaWdpbiA9IHVw
c2lsb25XaGVyZS0+b3JpZ2luOwogICAgICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBzdWNjZXNz
b3JCbG9jayA6IGJsb2NrLT5zdWNjZXNzb3JzKCkpIHsKICAgICAgICAgICAgICAgICBmb3IgKFNT
QUNhbGN1bGF0b3I6OkRlZiogcGhpRGVmIDogbV9zc2FDYWxjdWxhdG9yLnBoaXNGb3JCbG9jayhz
dWNjZXNzb3JCbG9jaykpIHsKICAgICAgICAgICAgICAgICAgICAgTm9kZSogcGhpTm9kZSA9IHBo
aURlZi0+dmFsdWUoKTsKQEAgLTM5OSw3ICs0NDksNyBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIFBoaSB0aGF0IGNvbWJpbmVzIG1hdGVyaWFsaXph
dGlvbnMgd2l0aCB0aGUgb3JpZ2luYWwKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBoYW50
b20gb2JqZWN0LCB0aGVuIHRoZSBwYXRoIHdpdGggdGhlIHBoYW50b20gb2JqZWN0IG11c3QgbWF0
ZXJpYWxpemUuCiAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGluY29taW5nID0gY3JlYXRlTWF0ZXJpYWxpemUoYWxsb2NhdGlvbiwgdXBzaWxvbk9yaWdp
bik7CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNvbWluZyA9IGNyZWF0ZU1hdGVyaWFsaXpl
KGFsbG9jYXRpb24sIHVwc2lsb25XaGVyZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtX2lu
c2VydGlvblNldC5pbnNlcnQodXBzaWxvbkluc2VydGlvblBvaW50LCBpbmNvbWluZyk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBpbnNlcnRPU1JIaW50c0ZvclVwZGF0ZSgKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtX2luc2VydGlvblNldCwgdXBzaWxvbkluc2VydGlvblBvaW50LCB1
cHNpbG9uT3JpZ2luLApAQCAtNDA3LDE0ICs0NTcsOSBAQCBwcml2YXRlOgogICAgICAgICAgICAg
ICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nID0gb3JpZ2lu
YWxJbmNvbWluZzsKICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIE5v
ZGUqIHVwc2lsb24gPSBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAorICAgICAgICAgICAgICAg
ICAgICBtX2luc2VydGlvblNldC5pbnNlcnROb2RlKAogICAgICAgICAgICAgICAgICAgICAgICAg
dXBzaWxvbkluc2VydGlvblBvaW50LCBTcGVjTm9uZSwgVXBzaWxvbiwgdXBzaWxvbk9yaWdpbiwK
ICAgICAgICAgICAgICAgICAgICAgICAgIE9wSW5mbyhwaGlOb2RlKSwgaW5jb21pbmctPmRlZmF1
bHRFZGdlKCkpOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYg
KG9yaWdpbmFsSW5jb21pbmcgPT0gYWxsb2NhdGlvbikgewotICAgICAgICAgICAgICAgICAgICAg
ICAgbV9lZGdlVG9NYXRlcmlhbGl6YXRpb25Qb2ludC5hZGQoCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3RkOjptYWtlX3BhaXIodXBzaWxvbiwgYWxsb2NhdGlvbiksIGluY29taW5nKTsK
LSAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIApAQCAtNTAyLDEyICs1NDcsNiBAQCBwcml2YXRlOgogICAgIAogICAgIHZv
aWQgcHJvbW90ZVN1bmtlbkZpZWxkcygpCiAgICAgewotICAgICAgICAvLyBIZW5jZWZvcnRoIHdo
ZW4gd2UgZW5jb3VudGVyIGEgbWF0ZXJpYWxpemF0aW9uIHBvaW50LCB3ZSB3aWxsIHdhbnQgdG8g
YXNrICp3aG8qIGl0IGlzCi0gICAgICAgIC8vIGEgbWF0ZXJpYWxpemF0aW9uIGZvci4gSW52ZXJ0
IHRoZSBtYXAgdG8gYmUgYWJsZSB0byBhbnN3ZXIgc3VjaCBxdWVzdGlvbnMuCi0gICAgICAgIG1f
bWF0ZXJpYWxpemF0aW9uUG9pbnRUb0VzY2FwZWUuY2xlYXIoKTsKLSAgICAgICAgZm9yIChhdXRv
IHBhaXIgOiBtX2VkZ2VUb01hdGVyaWFsaXphdGlvblBvaW50KQotICAgICAgICAgICAgbV9tYXRl
cmlhbGl6YXRpb25Qb2ludFRvRXNjYXBlZS5hZGQocGFpci52YWx1ZSwgcGFpci5rZXkuc2Vjb25k
KTsKLSAgICAgICAgCiAgICAgICAgIC8vIENvbGxlY3QgdGhlIHNldCBvZiBoZWFwIGxvY2F0aW9u
cyB0aGF0IHdlIHdpbGwgYmUgb3BlcmF0aW5nIG92ZXIuCiAgICAgICAgIEhhc2hTZXQ8UHJvbW90
ZWRIZWFwTG9jYXRpb24+IGxvY2F0aW9uczsKICAgICAgICAgZm9yIChCYXNpY0Jsb2NrKiBibG9j
ayA6IG1fZ3JhcGguYmxvY2tzSW5OYXR1cmFsT3JkZXIoKSkgewpAQCAtNjE1LDcgKzY1NCw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBmb3IgKE5vZGUqIG5vZGUgOiAqYmxvY2spIHsKICAgICAg
ICAgICAgICAgICBtX2dyYXBoLnBlcmZvcm1TdWJzdGl0dXRpb24obm9kZSk7CiAgICAgICAgICAg
ICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE5vZGUqIGVzY2FwZWUgPSBtX21hdGVyaWFsaXph
dGlvblBvaW50VG9Fc2NhcGVlLmdldChub2RlKSkKKyAgICAgICAgICAgICAgICBpZiAoTm9kZSog
ZXNjYXBlZSA9IG1fbWF0ZXJpYWxpemF0aW9uVG9Fc2NhcGVlLmdldChub2RlKSkKICAgICAgICAg
ICAgICAgICAgICAgcG9wdWxhdGVNYXRlcmlhbGl6ZShibG9jaywgbm9kZSwgZXNjYXBlZSk7CiAg
ICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgcHJvbW90ZUhlYXBBY2Nlc3MoCkBAIC03
MTcsMjYgKzc1NiwzOCBAQCBwcml2YXRlOgogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIE5v
ZGUqIGNyZWF0ZU1hdGVyaWFsaXplKE5vZGUqIGVzY2FwZWUsIGNvbnN0IE5vZGVPcmlnaW4gd2hl
cmVPcmlnaW4pCisgICAgTm9kZSogY3JlYXRlTWF0ZXJpYWxpemUoTm9kZSogZXNjYXBlZSwgTm9k
ZSogd2hlcmUpCiAgICAgeworICAgICAgICBOb2RlKiByZXN1bHQ7CisgICAgICAgIAogICAgICAg
ICBzd2l0Y2ggKGVzY2FwZWUtPm9wKCkpIHsKICAgICAgICAgY2FzZSBOZXdPYmplY3Q6CiAgICAg
ICAgIGNhc2UgTWF0ZXJpYWxpemVOZXdPYmplY3Q6IHsKICAgICAgICAgICAgIE9iamVjdE1hdGVy
aWFsaXphdGlvbkRhdGEqIGRhdGEgPSBtX2dyYXBoLm1fb2JqZWN0TWF0ZXJpYWxpemF0aW9uRGF0
YS5hZGQoKTsKICAgICAgICAgICAgIAotICAgICAgICAgICAgTm9kZSogcmVzdWx0ID0gbV9ncmFw
aC5hZGROb2RlKAorICAgICAgICAgICAgcmVzdWx0ID0gbV9ncmFwaC5hZGROb2RlKAogICAgICAg
ICAgICAgICAgIGVzY2FwZWUtPnByZWRpY3Rpb24oKSwgTm9kZTo6VmFyQXJnLCBNYXRlcmlhbGl6
ZU5ld09iamVjdCwKICAgICAgICAgICAgICAgICBOb2RlT3JpZ2luKAogICAgICAgICAgICAgICAg
ICAgICBlc2NhcGVlLT5vcmlnaW4uc2VtYW50aWMsCi0gICAgICAgICAgICAgICAgICAgIHdoZXJl
T3JpZ2luLmZvckV4aXQpLAorICAgICAgICAgICAgICAgICAgICB3aGVyZS0+b3JpZ2luLmZvckV4
aXQpLAogICAgICAgICAgICAgICAgIE9wSW5mbyhkYXRhKSwgT3BJbmZvKCksIDAsIDApOwotICAg
ICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAg
ICAgICAgICAgICAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIERGR19DUkFTSChtX2dy
YXBoLCBlc2NhcGVlLCAiQmFkIGVzY2FwZWUgb3AiKTsKLSAgICAgICAgICAgIHJldHVybiBudWxs
cHRyOworICAgICAgICAgICAgcmVzdWx0ID0gbnVsbHB0cjsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodmVyYm9zZSkKKyAgICAgICAgICAgIGRh
dGFMb2coIkNyZWF0aW5nIG1hdGVyaWFsaXphdGlvbiBwb2ludCBhdCAiLCB3aGVyZSwgIiBmb3Ig
IiwgZXNjYXBlZSwgIjogIiwgcmVzdWx0LCAiXG4iKTsKKyAgICAgICAgCisgICAgICAgIG1fbWF0
ZXJpYWxpemF0aW9uVG9Fc2NhcGVlLmFkZChyZXN1bHQsIGVzY2FwZWUpOworICAgICAgICBtX21h
dGVyaWFsaXphdGlvblNpdGVUb01hdGVyaWFsaXphdGlvbnMuYWRkKAorICAgICAgICAgICAgd2hl
cmUsIFZlY3RvcjxOb2RlKj4oKSkuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChyZXN1bHQpOworICAg
ICAgICAKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9CiAgICAgCiAgICAgdm9pZCBwb3B1
bGF0ZU1hdGVyaWFsaXplKEJhc2ljQmxvY2sqIGJsb2NrLCBOb2RlKiBub2RlLCBOb2RlKiBlc2Nh
cGVlKQpAQCAtNzkxLDggKzg0Miw4IEBAIHByaXZhdGU6CiAgICAgCiAgICAgU1NBQ2FsY3VsYXRv
ciBtX3NzYUNhbGN1bGF0b3I7CiAgICAgSGFzaFNldDxOb2RlKj4gbV9zaW5rQ2FuZGlkYXRlczsK
LSAgICBIYXNoTWFwPHN0ZDo6cGFpcjxOb2RlKiwgTm9kZSo+LCBOb2RlKj4gbV9lZGdlVG9NYXRl
cmlhbGl6YXRpb25Qb2ludDsKLSAgICBIYXNoTWFwPE5vZGUqLCBOb2RlKj4gbV9tYXRlcmlhbGl6
YXRpb25Qb2ludFRvRXNjYXBlZTsKKyAgICBIYXNoTWFwPE5vZGUqLCBOb2RlKj4gbV9tYXRlcmlh
bGl6YXRpb25Ub0VzY2FwZWU7CisgICAgSGFzaE1hcDxOb2RlKiwgVmVjdG9yPE5vZGUqPj4gbV9t
YXRlcmlhbGl6YXRpb25TaXRlVG9NYXRlcmlhbGl6YXRpb25zOwogICAgIEhhc2hNYXA8Tm9kZSos
IFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlvbj4+IG1fbG9jYXRpb25zRm9yQWxsb2NhdGlvbjsK
ICAgICBIYXNoTWFwPFByb21vdGVkSGVhcExvY2F0aW9uLCBTU0FDYWxjdWxhdG9yOjpWYXJpYWJs
ZSo+IG1fbG9jYXRpb25Ub1ZhcmlhYmxlOwogICAgIFZlY3RvcjxQcm9tb3RlZEhlYXBMb2NhdGlv
bj4gbV9pbmRleFRvTG9jYXRpb247CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ZhbGlkYXRlLmNwcAkocmV2aXNpb24gMTc0MjE3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdWYWxpZGF0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMyw2ICsyMTMsMjMgQEAg
cHVibGljOgogICAgICAgICAgICAgICAgIGNhc2UgSWRlbnRpdHk6CiAgICAgICAgICAgICAgICAg
ICAgIFZBTElEQVRFKChub2RlKSwgY2Fub25pY2FsUmVzdWx0UmVwcmVzZW50YXRpb24obm9kZS0+
cmVzdWx0KCkpID09IGNhbm9uaWNhbFJlc3VsdFJlcHJlc2VudGF0aW9uKG5vZGUtPmNoaWxkMSgp
LT5yZXN1bHQoKSkpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAg
ICBjYXNlIFNldExvY2FsOgorICAgICAgICAgICAgICAgIGNhc2UgUHV0TG9jYWw6CisgICAgICAg
ICAgICAgICAgY2FzZSBVcHNpbG9uOgorICAgICAgICAgICAgICAgICAgICBWQUxJREFURSgobm9k
ZSksICEhbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG5vZGUt
PmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFVudHlwZWRV
c2U6CisgICAgICAgICAgICAgICAgICAgIGNhc2UgQ2VsbFVzZToKKyAgICAgICAgICAgICAgICAg
ICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJbnQ1MlJlcFVzZToK
KyAgICAgICAgICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBVc2U6CisgICAgICAgICAgICAgICAg
ICAgIGNhc2UgQm9vbGVhblVzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgVkFMSURB
VEUoKG5vZGUpLCAhIkJhZCB1c2Uga2luZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICAgICAgY2FzZSBNYWtlUm9wZToKICAgICAgICAgICAgICAgICBjYXNlIFZhbHVl
QWRkOgogICAgICAgICAgICAgICAgIGNhc2UgQXJpdGhBZGQ6CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5oCShyZXZpc2lvbiAxNzQyMTcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmgJKHdvcmtpbmcgY29weSkKQEAgLTE3OCw3ICsx
NzgsNyBAQCB0eXBlZGVmIGNvbnN0IGNoYXIqIG9wdGlvblN0cmluZzsKICAgICB2KGJvb2wsIGVu
YWJsZUNhbGxFZGdlUHJvZmlsaW5nLCB0cnVlKSBcCiAgICAgdih1bnNpZ25lZCwgZnJlcXVlbnRD
YWxsVGhyZXNob2xkLCAyKSBcCiAgICAgdihib29sLCBvcHRpbWl6ZU5hdGl2ZUNhbGxzLCBmYWxz
ZSkgXAotICAgIHYoYm9vbCwgZW5hYmxlT2JqZWN0QWxsb2NhdGlvblNpbmtpbmcsIGZhbHNlKSBc
CisgICAgdihib29sLCBlbmFibGVPYmplY3RBbGxvY2F0aW9uU2lua2luZywgdHJ1ZSkgXAogICAg
IFwKICAgICB2KGJvb2wsIGVuYWJsZUNvbmN1cnJlbnRKSVQsIHRydWUpIFwKICAgICB2KHVuc2ln
bmVkLCBudW1iZXJPZkRGR0NvbXBpbGVyVGhyZWFkcywgY29tcHV0ZU51bWJlck9mV29ya2VyVGhy
ZWFkcygyLCAyKSAtIDEpIFwK
</data>
<flag name="review"
          id="263836"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>