<?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>110433</bug_id>
          
          <creation_ts>2013-02-20 22:52:59 -0800</creation_ts>
          <short_desc>The DFG backend&apos;s and OSR&apos;s decision to unbox a variable should be based on whether it&apos;s used in a typed context</short_desc>
          <delta_ts>2013-03-11 23:27:56 -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>110533</dependson>
    
    <dependson>110535</dependson>
    
    <dependson>110650</dependson>
    
    <dependson>112106</dependson>
          <blocked>109388</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>barraclough</cc>
    
    <cc>ggaren</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mhahnenberg</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>838160</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-20 22:52:59 -0800</bug_when>
    <thetext>I have no evidence that this doesn&apos;t work.  I just think we can do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841122</commentid>
    <comment_count>1</comment_count>
      <attachid>190094</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-25 11:09:12 -0800</bug_when>
    <thetext>Created attachment 190094
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>841461</commentid>
    <comment_count>2</comment_count>
      <attachid>190167</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-25 17:50:38 -0800</bug_when>
    <thetext>Created attachment 190167
it runs things

Haven&apos;t seen what the perf impact is, yet.  And I&apos;m not yet sure that it&apos;s entirely correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842512</commentid>
    <comment_count>3</comment_count>
      <attachid>190392</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 16:46:34 -0800</bug_when>
    <thetext>Created attachment 190392
the patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842547</commentid>
    <comment_count>4</comment_count>
      <attachid>190392</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-02-26 17:13:33 -0800</bug_when>
    <thetext>Comment on attachment 190392
the patch

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

r=me too, fwiw

&gt; Source/JavaScriptCore/dfg/DFGCommon.h:225
&gt; +bool setAndCheck(T&amp; left, U right)

checkAndSet?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842548</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 17:13:54 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 190392 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=190392&amp;action=review
&gt; 
&gt; r=me too, fwiw
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGCommon.h:225
&gt; &gt; +bool setAndCheck(T&amp; left, U right)
&gt; 
&gt; checkAndSet?

Yup, renamed!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>842566</commentid>
    <comment_count>6</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-02-26 17:47:33 -0800</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/144131</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190094</attachid>
            <date>2013-02-25 11:09:12 -0800</date>
            <delta_ts>2013-02-25 17:50:38 -0800</delta_ts>
            <desc>work in progress</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>12783</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlv
bi5oCShyZXZpc2lvbiAxNDM4MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fy
Z3VtZW50UG9zaXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6
CiAgICAgQXJndW1lbnRQb3NpdGlvbigpCiAgICAgICAgIDogbV9wcmVkaWN0aW9uKFNwZWNOb25l
KQogICAgICAgICAsIG1fZG91YmxlRm9ybWF0U3RhdGUoRW1wdHlEb3VibGVGb3JtYXRTdGF0ZSkK
KyAgICAgICAgLCBtX2lzUHJvZml0YWJsZVRvVW5ib3goZmFsc2UpCiAgICAgewogICAgIH0KICAg
ICAKQEAgLTQ1LDcgKzQ2LDcgQEAgcHVibGljOgogICAgICAgICBtX3ZhcmlhYmxlcy5hcHBlbmQo
dmFyaWFibGUpOwogICAgIH0KICAgICAKLSAgICBib29sIG1lcmdlQXJndW1lbnRBd2FyZW5lc3Mo
KQorICAgIGJvb2wgbWVyZ2VBcmd1bWVudFByZWRpY3Rpb25Bd2FyZW5lc3MoKQogICAgIHsKICAg
ICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7
IGkgPCBtX3ZhcmlhYmxlcy5zaXplKCk7ICsraSkgewpAQCAtNjIsMTYgKzYzLDMyIEBAIHB1Ymxp
YzoKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgbWVyZ2VB
cmd1bWVudFVuYm94aW5nQXdhcmVuZXNzKCkKKyAgICB7CisgICAgICAgIGJvb2wgY2hhbmdlZCA9
IGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6
ZSgpOyArK2kpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IHNldEFuZENoZWNrKG1faXNQcm9maXRh
YmxlVG9VbmJveCwgbV9pc1Byb2ZpdGFibGVUb1VuYm94IHwgbV92YXJpYWJsZXNbaV0tPmlzUHJv
Zml0YWJsZVRvVW5ib3goKSk7CisgICAgICAgIGlmICghY2hhbmdlZCkKKyAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKKyAgICAgICAgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjaGFu
Z2VkIHw9IG1fdmFyaWFibGVzW2ldLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3gobV9pc1Byb2Zp
dGFibGVUb1VuYm94KTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CisgICAgfQorICAgIAorICAg
IGJvb2wgaXNQcm9maXRhYmxlVG9VbmJveCgpIGNvbnN0IHsgcmV0dXJuIG1faXNQcm9maXRhYmxl
VG9VbmJveDsgfQorICAgIAogICAgIFNwZWN1bGF0ZWRUeXBlIHByZWRpY3Rpb24oKSBjb25zdCB7
IHJldHVybiBtX3ByZWRpY3Rpb247IH0KICAgICBEb3VibGVGb3JtYXRTdGF0ZSBkb3VibGVGb3Jt
YXRTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZG91YmxlRm9ybWF0U3RhdGU7IH0KICAgICBib29s
IHNob3VsZFVzZURvdWJsZUZvcm1hdCgpIGNvbnN0CiAgICAgewotICAgICAgICByZXR1cm4gZG91
YmxlRm9ybWF0U3RhdGUoKSA9PSBVc2luZ0RvdWJsZUZvcm1hdDsKKyAgICAgICAgcmV0dXJuIGRv
dWJsZUZvcm1hdFN0YXRlKCkgPT0gVXNpbmdEb3VibGVGb3JtYXQgJiYgaXNQcm9maXRhYmxlVG9V
bmJveCgpOwogICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVk
aWN0aW9uOwogICAgIERvdWJsZUZvcm1hdFN0YXRlIG1fZG91YmxlRm9ybWF0U3RhdGU7CisgICAg
Ym9vbCBtX2lzUHJvZml0YWJsZVRvVW5ib3g7CiAgICAgCiAgICAgVmVjdG9yPFZhcmlhYmxlQWNj
ZXNzRGF0YSosIDI+IG1fdmFyaWFibGVzOwogfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9kZmcvREZHQ29tbW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb21tb24uaAkocmV2aXNpb24gMTQzODE4KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdDb21tb24uaAkod29ya2luZyBjb3B5KQpAQCAtMjIxLDYgKzIyMSwxNSBAQCBlbnVt
IE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUgeyBBdXRvbWF0aWNPCiAKIGVudW0gU3BlY3VsYXRpb25E
aXJlY3Rpb24geyBGb3J3YXJkU3BlY3VsYXRpb24sIEJhY2t3YXJkU3BlY3VsYXRpb24gfTsKIAor
dGVtcGxhdGU8dHlwZW5hbWUgVD4KK2Jvb2wgc2V0QW5kQ2hlY2soVCYgbGVmdCwgVCByaWdodCkK
K3sKKyAgICBpZiAobGVmdCA9PSByaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGxl
ZnQgPSByaWdodDsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6
OkRGRwogCiBuYW1lc3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHRml4dXBQaGFzZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdGaXh1cFBoYXNlLmNwcAkocmV2aXNpb24gMTQzODE4KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDgsOCArNDgs
MTYgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2ZpeHBvaW50U3RhdGUgPT0g
QmVmb3JlRml4cG9pbnQpOwogICAgICAgICBBU1NFUlQobV9ncmFwaC5tX2Zvcm0gPT0gVGhyZWFk
ZWRDUFMpOwogICAgICAgICAKKyAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCA9IGZhbHNl
OwogICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxvY2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBt
X2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9ja0luZGV4KQogICAgICAgICAgICAgZml4dXBC
bG9jayhtX2dyYXBoLm1fYmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpKTsKKyAgICAgICAgCisgICAg
ICAgIHdoaWxlIChtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkKSB7CisgICAgICAgICAgICBtX3Byb2Zp
dGFiaWxpdHlDaGFuZ2VkID0gZmFsc2U7CisgICAgICAgICAgICBmb3IgKEJsb2NrSW5kZXggYmxv
Y2tJbmRleCA9IDA7IGJsb2NrSW5kZXggPCBtX2dyYXBoLm1fYmxvY2tzLnNpemUoKTsgKytibG9j
a0luZGV4KQorICAgICAgICAgICAgICAgIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhtX2dyYXBoLm1f
YmxvY2tzW2Jsb2NrSW5kZXhdLmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgfQogCkBAIC04MCwyNCArODgsNyBAQCBwcml2YXRlOgogICAgICAg
ICAKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNldExvY2FsOiB7Ci0gICAg
ICAgICAgICBWYXJpYWJsZUFjY2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nl
c3NEYXRhKCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+aXNDYXB0
dXJlZCgpCi0gICAgICAgICAgICAgICAgfHwgbV9ncmFwaC5pc0NyZWF0ZWRUaGlzQXJndW1lbnQo
dmFyaWFibGUtPmxvY2FsKCkpKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
Ci0gICAgICAgICAgICBpZiAodmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7Ci0g
ICAgICAgICAgICAgICAgZml4RG91YmxlRWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpLCBG
b3J3YXJkU3BlY3VsYXRpb24pOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
fQotICAgICAgICAgICAgCi0gICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBl
ID0gdmFyaWFibGUtPmFyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKCk7Ci0gICAgICAgICAgICBpZiAo
aXNJbnQzMlNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQotICAgICAgICAgICAgICAgIHNldFVz
ZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAg
ICAgICAgICAgZWxzZSBpZiAoaXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCi0gICAg
ICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPENlbGxVc2U+KG5vZGUt
PmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHBy
ZWRpY3RlZFR5cGUpKQotICAgICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0
YWJsZTxCb29sZWFuVXNlPihub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICAvLyBUaGlzIGdl
dHMgaGFuZGxlZCBieSBmaXh1cFNldExvY2Fsc0luQmxvY2soKS4KICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgICAgICAKQEAgLTgwOCw2ICs3OTksNDEgQEAgcHJpdmF0ZToK
ICNlbmRpZgogICAgIH0KICAgICAKKyAgICB2b2lkIGZpeHVwU2V0TG9jYWxzSW5CbG9jayhCYXNp
Y0Jsb2NrKiBibG9jaykKKyAgICB7CisgICAgICAgIGlmICghYmxvY2spCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIEFTU0VSVChibG9jay0+aXNSZWFjaGFibGUpOworICAgICAgICBtX2Js
b2NrID0gYmxvY2s7CisgICAgICAgIGZvciAobV9pbmRleEluQmxvY2sgPSAwOyBtX2luZGV4SW5C
bG9jayA8IGJsb2NrLT5zaXplKCk7ICsrbV9pbmRleEluQmxvY2spIHsKKyAgICAgICAgICAgIE5v
ZGUqIG5vZGUgPSBtX2N1cnJlbnROb2RlID0gYmxvY2stPmF0KG1faW5kZXhJbkJsb2NrKTsKKyAg
ICAgICAgICAgIGlmIChub2RlLT5vcCgpICE9IFNldExvY2FsKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgaWYgKCFub2RlLT5zaG91bGRHZW5lcmF0ZSgpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlID0gbm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAg
ICAgICAKKyAgICAgICAgICAgIGlmICghdmFyaWFibGUtPnNob3VsZFVuYm94SWZQb3NzaWJsZSgp
KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAo
dmFyaWFibGUtPnNob3VsZFVzZURvdWJsZUZvcm1hdCgpKSB7CisgICAgICAgICAgICAgICAgZml4
RG91YmxlRWRnZTxOdW1iZXJVc2U+KG5vZGUtPmNoaWxkMSgpLCBGb3J3YXJkU3BlY3VsYXRpb24p
OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisg
ICAgICAgICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gdmFyaWFibGUtPmFyZ3Vt
ZW50QXdhcmVQcmVkaWN0aW9uKCk7CisgICAgICAgICAgICBpZiAoaXNJbnQzMlNwZWN1bGF0aW9u
KHByZWRpY3RlZFR5cGUpKQorICAgICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJv
Zml0YWJsZTxJbnQzMlVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAo
aXNDZWxsU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgICAgICAgICAgc2V0VXNl
S2luZEFuZFVuYm94SWZQcm9maXRhYmxlPENlbGxVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQorICAg
ICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxCb29sZWFuVXNlPihu
b2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBt
X2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9CisgICAgCiAgICAgTm9kZSogY2hl
Y2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBDb2RlT3JpZ2luIGNvZGVPcmlnaW4sIE5vZGUq
IGFycmF5LCBOb2RlKiBpbmRleCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29uc3QgQXJyYXlNb2Rl
JikgPSBjYW5DU0VTdG9yYWdlLCBib29sIHNob3VsZEdlbmVyYXRlID0gdHJ1ZSkKICAgICB7CiAg
ICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTcGVjaWZpYygpKTsKQEAgLTkwMSw2ICs5MjcsMzMg
QEAgcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTxVc2VLaW5kIHVzZUtpbmQ+CiAgICAgdm9pZCBzZXRV
c2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGUoRWRnZSYgZWRnZSkKICAgICB7CisgICAgICAgIGlm
IChlZGdlLT5vcCgpID09IEdldExvY2FsKSB7CisgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlID0gZWRnZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCk7CisgICAgICAgICAgICBz
d2l0Y2ggKHVzZUtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6CisgICAgICAgICAg
ICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKKyAg
ICAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVy
Z2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgY2FzZSBOdW1iZXJVc2U6CisgICAgICAgICAgICBjYXNlIFJlYWxOdW1iZXJVc2U6
CisgICAgICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5kb3VibGVGb3JtYXRTdGF0ZSgpID09IFVz
aW5nRG91YmxlRm9ybWF0KQorICAgICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFu
Z2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEJvb2xlYW5Vc2U6CisgICAgICAgICAg
ICAgICAgaWYgKGlzQm9vbGVhblNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQor
ICAgICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5t
ZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICBjYXNlIENlbGxVc2U6CisgICAgICAgICAgICBjYXNlIE9iamVjdFVzZToKKyAg
ICAgICAgICAgIGNhc2UgU3RyaW5nVXNlOgorICAgICAgICAgICAgICAgIGlmIChpc0NlbGxTcGVj
dWxhdGlvbih2YXJpYWJsZS0+cHJlZGljdGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9w
cm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94
KHRydWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAK
ICAgICAgICAgZWRnZS5zZXRVc2VLaW5kKHVzZUtpbmQpOwogICAgIH0KICAgICAKQEAgLTEwMDIs
NiArMTA1NSw3IEBAIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9pbmRleEluQmxvY2s7CiAgICAg
Tm9kZSogbV9jdXJyZW50Tm9kZTsKICAgICBJbnNlcnRpb25TZXQgbV9pbnNlcnRpb25TZXQ7Cisg
ICAgYm9vbCBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkOwogfTsKICAgICAKIGJvb2wgcGVyZm9ybUZp
eHVwKEdyYXBoJiBncmFwaCkKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHUHJl
ZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCShyZXZpc2lvbiAx
NDM4MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdh
dGlvblBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAyOCw3ICsxMDI4LDcgQEAgcHJpdmF0
ZToKICAgICAgICAgICAgIG1fY2hhbmdlZCB8PSB2YXJpYWJsZUFjY2Vzc0RhdGEtPnRhbGx5Vm90
ZXNGb3JTaG91bGRVc2VEb3VibGVGb3JtYXQoKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUoKTsgKytp
KQotICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tp
XS5tZXJnZUFyZ3VtZW50QXdhcmVuZXNzKCk7CisgICAgICAgICAgICBtX2NoYW5nZWQgfD0gbV9n
cmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zW2ldLm1lcmdlQXJndW1lbnRQcmVkaWN0aW9uQXdhcmVu
ZXNzKCk7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fdmFyaWFi
bGVBY2Nlc3NEYXRhLnNpemUoKTsgKytpKSB7CiAgICAgICAgICAgICBWYXJpYWJsZUFjY2Vzc0Rh
dGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9ICZtX2dyYXBoLm1fdmFyaWFibGVBY2Nlc3NEYXRhW2ld
OwogICAgICAgICAgICAgaWYgKCF2YXJpYWJsZUFjY2Vzc0RhdGEtPmlzUm9vdCgpKQpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5o
CShyZXZpc2lvbiAxNDM4MTgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Zhcmlh
YmxlQWNjZXNzRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC00NiwxMCArNDYsMTEgQEAgcHVibGlj
OgogICAgICAgICAsIG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAgICAgLCBtX2FyZ3VtZW50
QXdhcmVQcmVkaWN0aW9uKFNwZWNOb25lKQogICAgICAgICAsIG1fZmxhZ3MoMCkKLSAgICAgICAg
LCBtX2RvdWJsZUZvcm1hdFN0YXRlKEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgICAgICwg
bV9pc0NhcHR1cmVkKGZhbHNlKQogICAgICAgICAsIG1faXNBcmd1bWVudHNBbGlhcyhmYWxzZSkK
ICAgICAgICAgLCBtX3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoZmFsc2UpCisgICAgICAg
ICwgbV9pc1Byb2ZpdGFibGVUb1VuYm94KGZhbHNlKQorICAgICAgICAsIG1fZG91YmxlRm9ybWF0
U3RhdGUoRW1wdHlEb3VibGVGb3JtYXRTdGF0ZSkKICAgICB7CiAgICAgICAgIGNsZWFyVm90ZXMo
KTsKICAgICB9CkBAIC01OSwxMCArNjAsMTEgQEAgcHVibGljOgogICAgICAgICAsIG1fcHJlZGlj
dGlvbihTcGVjTm9uZSkKICAgICAgICAgLCBtX2FyZ3VtZW50QXdhcmVQcmVkaWN0aW9uKFNwZWNO
b25lKQogICAgICAgICAsIG1fZmxhZ3MoMCkKLSAgICAgICAgLCBtX2RvdWJsZUZvcm1hdFN0YXRl
KEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgICAgICwgbV9pc0NhcHR1cmVkKGlzQ2FwdHVy
ZWQpCiAgICAgICAgICwgbV9pc0FyZ3VtZW50c0FsaWFzKGZhbHNlKQogICAgICAgICAsIG1fc3Ry
dWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZChmYWxzZSkKKyAgICAgICAgLCBtX2lzUHJvZml0YWJs
ZVRvVW5ib3goZmFsc2UpCisgICAgICAgICwgbV9kb3VibGVGb3JtYXRTdGF0ZShFbXB0eURvdWJs
ZUZvcm1hdFN0YXRlKQogICAgIHsKICAgICAgICAgY2xlYXJWb3RlcygpOwogICAgIH0KQEAgLTgw
LDExICs4Miw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1lcmdlSXNDYXB0dXJlZChib29s
IGlzQ2FwdHVyZWQpCiAgICAgewotICAgICAgICBib29sIG5ld0lzQ2FwdHVyZWQgPSBtX2lzQ2Fw
dHVyZWQgfCBpc0NhcHR1cmVkOwotICAgICAgICBpZiAobmV3SXNDYXB0dXJlZCA9PSBtX2lzQ2Fw
dHVyZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faXNDYXB0dXJlZCA9
IG5ld0lzQ2FwdHVyZWQ7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gc2V0
QW5kQ2hlY2sobV9pc0NhcHR1cmVkLCBtX2lzQ2FwdHVyZWQgfCBpc0NhcHR1cmVkKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0NhcHR1cmVkKCkKQEAgLTkyLDEzICs5MCwyNCBAQCBwdWJsaWM6
CiAgICAgICAgIHJldHVybiBtX2lzQ2FwdHVyZWQ7CiAgICAgfQogICAgIAorICAgIGJvb2wgbWVy
Z2VJc1Byb2ZpdGFibGVUb1VuYm94KGJvb2wgaXNQcm9maXRhYmxlVG9VbmJveCkKKyAgICB7Cisg
ICAgICAgIHJldHVybiBzZXRBbmRDaGVjayhtX2lzUHJvZml0YWJsZVRvVW5ib3ggfCBpc1Byb2Zp
dGFibGVUb1VuYm94KTsKKyAgICB9CisgICAgCisgICAgYm9vbCBpc1Byb2ZpdGFibGVUb1VuYm94
KCkKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lzUHJvZml0YWJsZVRvVW5ib3g7CisgICAgfQor
ICAgIAorICAgIGJvb2wgc2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkKKyAgICB7CisgICAgICAgIHJl
dHVybiAhbV9pc0NhcHR1cmVkICYmIG1faXNQcm9maXRhYmxlVG9VbmJveDsKKyAgICB9CisgICAg
CiAgICAgYm9vbCBtZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoYm9vbCBmYWlsZWQp
CiAgICAgewotICAgICAgICBib29sIG5ld0ZhaWxlZCA9IG1fc3RydWN0dXJlQ2hlY2tIb2lzdGlu
Z0ZhaWxlZCB8IGZhaWxlZDsKLSAgICAgICAgaWYgKG5ld0ZhaWxlZCA9PSBtX3N0cnVjdHVyZUNo
ZWNrSG9pc3RpbmdGYWlsZWQpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
c3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCA9IG5ld0ZhaWxlZDsKLSAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgICAgIHJldHVybiBzZXRBbmRDaGVjayhtX3N0cnVjdHVyZUNoZWNrSG9pc3Rp
bmdGYWlsZWQsIG1fc3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCB8IGZhaWxlZCk7CiAgICAg
fQogICAgIAogICAgIGJvb2wgc3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZCgpCkBAIC0xMDgs
MTEgKzExNyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1lcmdlSXNBcmd1bWVudHNBbGlh
cyhib29sIGlzQXJndW1lbnRzQWxpYXMpCiAgICAgewotICAgICAgICBib29sIG5ld0lzQXJndW1l
bnRzQWxpYXMgPSBtX2lzQXJndW1lbnRzQWxpYXMgfCBpc0FyZ3VtZW50c0FsaWFzOwotICAgICAg
ICBpZiAobmV3SXNBcmd1bWVudHNBbGlhcyA9PSBtX2lzQXJndW1lbnRzQWxpYXMpCi0gICAgICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1faXNBcmd1bWVudHNBbGlhcyA9IG5ld0lzQXJn
dW1lbnRzQWxpYXM7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gc2V0QW5k
Q2hlY2sobV9pc0FyZ3VtZW50c0FsaWFzLCBtX2lzQXJndW1lbnRzQWxpYXMgfCBpc0FyZ3VtZW50
c0FsaWFzKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCBpc0FyZ3VtZW50c0FsaWFzKCkKQEAgLTIx
MCw3ICsyMTUsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXQoKQog
ICAgIHsKICAgICAgICAgQVNTRVJUKGlzUm9vdCgpKTsKLSAgICAgICAgcmV0dXJuIG1fZG91Ymxl
Rm9ybWF0U3RhdGUgPT0gVXNpbmdEb3VibGVGb3JtYXQ7CisgICAgICAgIHJldHVybiBtX2RvdWJs
ZUZvcm1hdFN0YXRlID09IFVzaW5nRG91YmxlRm9ybWF0ICYmIGlzUHJvZml0YWJsZVRvVW5ib3go
KTsKICAgICB9CiAgICAgCiAgICAgYm9vbCB0YWxseVZvdGVzRm9yU2hvdWxkVXNlRG91YmxlRm9y
bWF0KCkKQEAgLTI0OCwxNSArMjUzLDE3IEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIG1lcmdl
U3BlY3VsYXRpb24obV9wcmVkaWN0aW9uLCBTcGVjRG91YmxlKTsKICAgICB9CiAgICAgCisgICAg
dm9pZCBzZXRJc1R5cGVJbmZlcmVuY2VDYW5kaWRhdGUoYm9vbCB2YWx1ZSkKKyAgICB7CisgICAg
ICAgIEFTU0VSVCghbV9pc0NhcHR1cmVkKTsKKyAgICAgICAgbV9pc1R5cGVJbmZlcmVuY2VDYW5k
aWRhdGUgfD0gdmFsdWU7CisgICAgfQorICAgIAogICAgIE5vZGVGbGFncyBmbGFncygpIGNvbnN0
IHsgcmV0dXJuIG1fZmxhZ3M7IH0KICAgICAKICAgICBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdz
IG5ld0ZsYWdzKQogICAgIHsKLSAgICAgICAgbmV3RmxhZ3MgfD0gbV9mbGFnczsKLSAgICAgICAg
aWYgKG5ld0ZsYWdzID09IG1fZmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgIG1fZmxhZ3MgPSBuZXdGbGFnczsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJl
dHVybiBzZXRBbmRDaGVjayhtX2ZsYWdzLCBtX2ZsYWdzIHwgbmV3RmxhZ3MpOwogICAgIH0KICAg
ICAKIHByaXZhdGU6CkBAIC0yNjksMTMgKzI3NiwxNSBAQCBwcml2YXRlOgogICAgIFNwZWN1bGF0
ZWRUeXBlIG1fcHJlZGljdGlvbjsKICAgICBTcGVjdWxhdGVkVHlwZSBtX2FyZ3VtZW50QXdhcmVQ
cmVkaWN0aW9uOwogICAgIE5vZGVGbGFncyBtX2ZsYWdzOwotICAgIAorCiAgICAgZmxvYXQgbV92
b3Rlc1syXTsgLy8gVXNlZCBwcmltYXJpbHkgZm9yIGRvdWJsZSB2b3RpbmcgYnV0IG1heSBiZSBy
ZXVzZWQgZm9yIG90aGVyIHB1cnBvc2VzLgogICAgIERvdWJsZUZvcm1hdFN0YXRlIG1fZG91Ymxl
Rm9ybWF0U3RhdGU7CiAgICAgCiAgICAgYm9vbCBtX2lzQ2FwdHVyZWQ7CiAgICAgYm9vbCBtX2lz
QXJndW1lbnRzQWxpYXM7CiAgICAgYm9vbCBtX3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQ7
CisgICAgYm9vbCBtX2lzUHJvZml0YWJsZVRvVW5ib3g7CisgICAgYm9vbCBtX25ldmVyVW5ib3g7
IC8vIGhhbmRsZSBjcmVhdGVkIHRoaXMgYXJndW1lbnQgaGVyZS4KIH07CiAKIH0gfSAvLyBuYW1l
c3BhY2UgSlNDOjpERkcK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190167</attachid>
            <date>2013-02-25 17:50:38 -0800</date>
            <delta_ts>2013-02-26 16:46:34 -0800</delta_ts>
            <desc>it runs things</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>17211</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQzOTkyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ2IEBA
CisyMDEzLTAyLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIERGRyBiYWNrZW5kJ3MgYW5kIE9TUidzIGRlY2lzaW9uIHRvIHVuYm94IGEgdmFyaWFibGUg
c2hvdWxkIGJlIGJhc2VkIG9uIHdoZXRoZXIgaXQncyB1c2VkIGluIGEgdHlwZWQgY29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNDMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBX
b3JrIGluIHByb2dyZXNzLgorCisgICAgICAgICogZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaDoK
KyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjpBcmd1bWVudFBvc2l0aW9uKToK
KyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjptZXJnZVNob3VsZE5ldmVyVW5i
b3gpOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50UG9zaXRpb246Om1lcmdlQXJndW1lbnRQ
cmVkaWN0aW9uQXdhcmVuZXNzKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0aW9u
OjptZXJnZUFyZ3VtZW50VW5ib3hpbmdBd2FyZW5lc3MpOgorICAgICAgICAoQXJndW1lbnRQb3Np
dGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6aXNQcm9maXRhYmxl
VG9VbmJveCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1lbnRQb3NpdGlvbjo6c2hvdWxkVXNl
RG91YmxlRm9ybWF0KToKKyAgICAgICAgKiBkZmcvREZHQ29tbW9uLmg6CisgICAgICAgIChKU0M6
OkRGRzo6c2V0QW5kQ2hlY2spOgorICAgICAgICAoREZHKToKKyAgICAgICAgKiBkZmcvREZHRml4
dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6Rml4dXBQaGFzZTo6cnVuKToKKyAgICAg
ICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5vZGUpOgorICAgICAgICAoSlNDOjpERkc6
OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9jayk6CisgICAgICAgIChGaXh1cFBoYXNl
KToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjphbHdheXNVbmJveFNpbXBsZVByaW1p
dGl2ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OnNldFVzZUtpbmRBbmRVbmJv
eElmUHJvZml0YWJsZSk6CisgICAgICAgICogZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBo
YXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6
ZG9Sb3VuZE9mRG91YmxlVm90aW5nKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjaGVja0FyZ3VtZW50VHlw
ZXMpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaDoKKyAgICAgICAgKEpT
Qzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OlZhcmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAg
IChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjptZXJnZUlzQ2FwdHVyZWQpOgorICAgICAg
ICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94
KToKKyAgICAgICAgKFZhcmlhYmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFy
aWFibGVBY2Nlc3NEYXRhOjppc1Byb2ZpdGFibGVUb1VuYm94KToKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNob3VsZFVuYm94SWZQb3NzaWJsZSk6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjptZXJnZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdG
YWlsZWQpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6bWVyZ2VJc0Fy
Z3VtZW50c0FsaWFzKToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNo
b3VsZFVzZURvdWJsZUZvcm1hdCk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NE
YXRhOjptZXJnZUZsYWdzKToKKwogMjAxMy0wMi0yNSAgSmVmZnJleSBQZmF1ICA8anBmYXVAYXBw
bGUuY29tPgogCiAgICAgICAgIE9wdGlvbmFsbHkgcGFydGl0aW9uIGNhY2hlIHRvIHByZXZlbnQg
dXNpbmcgY2FjaGUgZm9yIHRyYWNraW5nCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0FyZ3VtZW50UG9zaXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRpb24uaAkocmV2aXNpb24gMTQzOTYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBcmd1bWVudFBvc2l0aW9uLmgJKHdvcmtpbmcgY29weSkK
QEAgLTM3LDYgKzM3LDcgQEAgcHVibGljOgogICAgIEFyZ3VtZW50UG9zaXRpb24oKQogICAgICAg
ICA6IG1fcHJlZGljdGlvbihTcGVjTm9uZSkKICAgICAgICAgLCBtX2RvdWJsZUZvcm1hdFN0YXRl
KEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCisgICAgICAgICwgbV9pc1Byb2ZpdGFibGVUb1VuYm94
KGZhbHNlKQogICAgICAgICAsIG1fc2hvdWxkTmV2ZXJVbmJveChmYWxzZSkKICAgICB7CiAgICAg
fQpAQCAtNDgsMTQgKzQ5LDEwIEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1lcmdlU2hvdWxk
TmV2ZXJVbmJveChib29sIHNob3VsZE5ldmVyVW5ib3gpCiAgICAgewotICAgICAgICBib29sIG5l
d1Nob3VsZE5ldmVyVW5ib3ggPSBtX3Nob3VsZE5ldmVyVW5ib3ggfCBzaG91bGROZXZlclVuYm94
OwotICAgICAgICBpZiAobmV3U2hvdWxkTmV2ZXJVbmJveCA9PSBtX3Nob3VsZE5ldmVyVW5ib3gp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1fc2hvdWxkTmV2ZXJVbmJveCA9
IG5ld1Nob3VsZE5ldmVyVW5ib3g7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1
cm4gc2V0QW5kQ2hlY2sobV9zaG91bGROZXZlclVuYm94LCBtX3Nob3VsZE5ldmVyVW5ib3ggfCBz
aG91bGROZXZlclVuYm94KTsKICAgICB9CiAgICAgCi0gICAgYm9vbCBtZXJnZUFyZ3VtZW50QXdh
cmVuZXNzKCkKKyAgICBib29sIG1lcmdlQXJndW1lbnRQcmVkaWN0aW9uQXdhcmVuZXNzKCkKICAg
ICB7CiAgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kpIHsKQEAgLTc0LDE2ICs3MSwzMiBA
QCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBjaGFuZ2VkOwogICAgIH0KICAgICAKKyAgICBib29s
IG1lcmdlQXJndW1lbnRVbmJveGluZ0F3YXJlbmVzcygpCisgICAgeworICAgICAgICBib29sIGNo
YW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFi
bGVzLnNpemUoKTsgKytpKQorICAgICAgICAgICAgY2hhbmdlZCB8PSBzZXRBbmRDaGVjayhtX2lz
UHJvZml0YWJsZVRvVW5ib3gsIG1faXNQcm9maXRhYmxlVG9VbmJveCB8IG1fdmFyaWFibGVzW2ld
LT5pc1Byb2ZpdGFibGVUb1VuYm94KCkpOworICAgICAgICBpZiAoIWNoYW5nZWQpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fdmFyaWFibGVzLnNpemUoKTsgKytpKQorICAgICAgICAg
ICAgY2hhbmdlZCB8PSBtX3ZhcmlhYmxlc1tpXS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KG1f
aXNQcm9maXRhYmxlVG9VbmJveCk7CisgICAgICAgIHJldHVybiBjaGFuZ2VkOworICAgIH0KKyAg
ICAKKyAgICBib29sIGlzUHJvZml0YWJsZVRvVW5ib3goKSBjb25zdCB7IHJldHVybiBtX2lzUHJv
Zml0YWJsZVRvVW5ib3g7IH0KKyAgICAKICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkg
Y29uc3QgeyByZXR1cm4gbV9wcmVkaWN0aW9uOyB9CiAgICAgRG91YmxlRm9ybWF0U3RhdGUgZG91
YmxlRm9ybWF0U3RhdGUoKSBjb25zdCB7IHJldHVybiBtX2RvdWJsZUZvcm1hdFN0YXRlOyB9CiAg
ICAgYm9vbCBzaG91bGRVc2VEb3VibGVGb3JtYXQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0
dXJuIGRvdWJsZUZvcm1hdFN0YXRlKCkgPT0gVXNpbmdEb3VibGVGb3JtYXQ7CisgICAgICAgIHJl
dHVybiBkb3VibGVGb3JtYXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0ICYmIGlzUHJvZml0
YWJsZVRvVW5ib3goKTsKICAgICB9CiAgICAgCiBwcml2YXRlOgogICAgIFNwZWN1bGF0ZWRUeXBl
IG1fcHJlZGljdGlvbjsKICAgICBEb3VibGVGb3JtYXRTdGF0ZSBtX2RvdWJsZUZvcm1hdFN0YXRl
OworICAgIGJvb2wgbV9pc1Byb2ZpdGFibGVUb1VuYm94OwogICAgIGJvb2wgbV9zaG91bGROZXZl
clVuYm94OwogICAgIAogICAgIFZlY3RvcjxWYXJpYWJsZUFjY2Vzc0RhdGEqLCAyPiBtX3Zhcmlh
YmxlczsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29tbW9uLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkocmV2aXNpb24g
MTQzOTYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAkod29ya2lu
ZyBjb3B5KQpAQCAtMjIxLDYgKzIyMSwxNSBAQCBlbnVtIE9wZXJhbmRTcGVjdWxhdGlvbk1vZGUg
eyBBdXRvbWF0aWNPCiAKIGVudW0gU3BlY3VsYXRpb25EaXJlY3Rpb24geyBGb3J3YXJkU3BlY3Vs
YXRpb24sIEJhY2t3YXJkU3BlY3VsYXRpb24gfTsKIAordGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlw
ZW5hbWUgVT4KK2Jvb2wgc2V0QW5kQ2hlY2soVCYgbGVmdCwgVSByaWdodCkKK3sKKyAgICBpZiAo
bGVmdCA9PSByaWdodCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGxlZnQgPSByaWdodDsK
KyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSB9IC8vIG5hbWVzcGFjZSBKU0M6OkRGRwogCiBuYW1l
c3BhY2UgV1RGIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFz
ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBo
YXNlLmNwcAkocmV2aXNpb24gMTQzOTYwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1
ZGUgIkRGR0dyYXBoLmgiCiAjaW5jbHVkZSAiREZHSW5zZXJ0aW9uU2V0LmgiCiAjaW5jbHVkZSAi
REZHUGhhc2UuaCIKKyNpbmNsdWRlICJERkdWYXJpYWJsZUFjY2Vzc0RhdGFEdW1wLmgiCiAjaW5j
bHVkZSAiT3BlcmF0aW9ucy5oIgogCiBuYW1lc3BhY2UgSlNDIHsgbmFtZXNwYWNlIERGRyB7CkBA
IC00OCw4ICs0OSwyMCBAQCBwdWJsaWM6CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZml4cG9p
bnRTdGF0ZSA9PSBCZWZvcmVGaXhwb2ludCk7CiAgICAgICAgIEFTU0VSVChtX2dyYXBoLm1fZm9y
bSA9PSBUaHJlYWRlZENQUyk7CiAgICAgICAgIAorICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFu
Z2VkID0gZmFsc2U7CiAgICAgICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxv
Y2tJbmRleCA8IG1fZ3JhcGgubV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpCiAgICAgICAg
ICAgICBmaXh1cEJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCkpOworICAg
ICAgICAKKyAgICAgICAgd2hpbGUgKG1fcHJvZml0YWJpbGl0eUNoYW5nZWQpIHsKKyAgICAgICAg
ICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gbV9ncmFwaC5tX2FyZ3VtZW50UG9zaXRpb25zLnNpemUo
KTsgaS0tOykKKyAgICAgICAgICAgICAgICBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnNbaV0u
bWVyZ2VBcmd1bWVudFVuYm94aW5nQXdhcmVuZXNzKCk7CisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIGZvciAoQmxvY2tJbmRleCBibG9ja0luZGV4ID0gMDsgYmxvY2tJbmRleCA8IG1fZ3JhcGgu
bV9ibG9ja3Muc2l6ZSgpOyArK2Jsb2NrSW5kZXgpCisgICAgICAgICAgICAgICAgZml4dXBTZXRM
b2NhbHNJbkJsb2NrKG1fZ3JhcGgubV9ibG9ja3NbYmxvY2tJbmRleF0uZ2V0KCkpOworICAgICAg
ICB9CisgICAgICAgIAogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTgwLDIzICs5
Myw3IEBAIHByaXZhdGU6CiAgICAgICAgIAogICAgICAgICBzd2l0Y2ggKG9wKSB7CiAgICAgICAg
IGNhc2UgU2V0TG9jYWw6IHsKLSAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFi
bGUgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKLSAgICAgICAgICAgIAotICAgICAgICAg
ICAgaWYgKCF2YXJpYWJsZS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpCi0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+c2hvdWxk
VXNlRG91YmxlRm9ybWF0KCkpIHsKLSAgICAgICAgICAgICAgICBmaXhEb3VibGVFZGdlPE51bWJl
clVzZT4obm9kZS0+Y2hpbGQxKCksIEZvcndhcmRTcGVjdWxhdGlvbik7Ci0gICAgICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFNwZWN1
bGF0ZWRUeXBlIHByZWRpY3RlZFR5cGUgPSB2YXJpYWJsZS0+YXJndW1lbnRBd2FyZVByZWRpY3Rp
b24oKTsKLSAgICAgICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkp
Ci0gICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMyVXNl
Pihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlv
bihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlBy
b2ZpdGFibGU8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwotICAgICAgICAgICAgZWxzZSBpZiAo
aXNCb29sZWFuU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCi0gICAgICAgICAgICAgICAgc2V0
VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsK
KyAgICAgICAgICAgIC8vIFRoaXMgZ2V0cyBoYW5kbGVkIGJ5IGZpeHVwU2V0TG9jYWxzSW5CbG9j
aygpLgogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgICAgIApAQCAtODA3
LDYgKzgwNCw0MCBAQCBwcml2YXRlOgogI2VuZGlmCiAgICAgfQogICAgIAorICAgIHZvaWQgZml4
dXBTZXRMb2NhbHNJbkJsb2NrKEJhc2ljQmxvY2sqIGJsb2NrKQorICAgIHsKKyAgICAgICAgaWYg
KCFibG9jaykKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgQVNTRVJUKGJsb2NrLT5pc1Jl
YWNoYWJsZSk7CisgICAgICAgIG1fYmxvY2sgPSBibG9jazsKKyAgICAgICAgZm9yIChtX2luZGV4
SW5CbG9jayA9IDA7IG1faW5kZXhJbkJsb2NrIDwgYmxvY2stPnNpemUoKTsgKyttX2luZGV4SW5C
bG9jaykgeworICAgICAgICAgICAgTm9kZSogbm9kZSA9IG1fY3VycmVudE5vZGUgPSBibG9jay0+
YXQobV9pbmRleEluQmxvY2spOworICAgICAgICAgICAgaWYgKG5vZGUtPm9wKCkgIT0gU2V0TG9j
YWwpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBpZiAoIW5vZGUtPnNo
b3VsZEdlbmVyYXRlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAK
KyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBub2RlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF2YXJpYWJsZS0+
c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgICAgICAKKyAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+c2hvdWxkVXNlRG91YmxlRm9ybWF0
KCkpIHsKKyAgICAgICAgICAgICAgICBmaXhEb3VibGVFZGdlPE51bWJlclVzZT4obm9kZS0+Y2hp
bGQxKCksIEZvcndhcmRTcGVjdWxhdGlvbik7CisgICAgICAgICAgICAgICAgY29udGludWU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFNwZWN1bGF0ZWRUeXBlIHBy
ZWRpY3RlZFR5cGUgPSB2YXJpYWJsZS0+YXJndW1lbnRBd2FyZVByZWRpY3Rpb24oKTsKKyAgICAg
ICAgICAgIGlmIChpc0ludDMyU3BlY3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgICAg
ICAgICAgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlPEludDMyVXNlPihub2RlLT5jaGls
ZDEoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc0NlbGxTcGVjdWxhdGlvbihwcmVkaWN0ZWRU
eXBlKSkKKyAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8Q2Vs
bFVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgZWxzZSBpZiAoaXNCb29sZWFuU3Bl
Y3VsYXRpb24ocHJlZGljdGVkVHlwZSkpCisgICAgICAgICAgICAgICAgc2V0VXNlS2luZEFuZFVu
Ym94SWZQcm9maXRhYmxlPEJvb2xlYW5Vc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAgICAgfQor
ICAgICAgICBtX2luc2VydGlvblNldC5leGVjdXRlKGJsb2NrKTsKKyAgICB9CisgICAgCiAgICAg
Tm9kZSogY2hlY2tBcnJheShBcnJheU1vZGUgYXJyYXlNb2RlLCBDb2RlT3JpZ2luIGNvZGVPcmln
aW4sIE5vZGUqIGFycmF5LCBOb2RlKiBpbmRleCwgYm9vbCAoKnN0b3JhZ2VDaGVjaykoY29uc3Qg
QXJyYXlNb2RlJikgPSBjYW5DU0VTdG9yYWdlLCBib29sIHNob3VsZEdlbmVyYXRlID0gdHJ1ZSkK
ICAgICB7CiAgICAgICAgIEFTU0VSVChhcnJheU1vZGUuaXNTcGVjaWZpYygpKTsKQEAgLTg5NSwx
MSArOTI2LDUyIEBAIHByaXZhdGU6CiAgICAgICAgIH0gfQogICAgIH0KICAgICAKKyAgICBib29s
IGFsd2F5c1VuYm94U2ltcGxlUHJpbWl0aXZlcygpCisgICAgeworI2lmIFVTRShKU1ZBTFVFNjQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyNlbHNlCisgICAgICAgIC8vIEFueSBib29sZWFuLCBp
bnQsIG9yIGNlbGwgdmFsdWUgaXMgcHJvZml0YWJsZSB0byB1bmJveCBvbiAzMi1iaXQgYmVjYXVz
ZSBpdAorICAgICAgICAvLyByZWR1Y2VzIHRyYWZmaWMuCisgICAgICAgIHJldHVybiB0cnVlOwor
I2VuZGlmCisgICAgfQorICAgIAogICAgIC8vIFNldCB0aGUgdXNlIGtpbmQgb2YgdGhlIGVkZ2Uu
IEluIHRoZSBmdXR1cmUgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MTA0MzMpLAogICAgIC8vIHRoaXMgY2FuIGJlIHVzZWQgdG8gbm90aWZ5IHRoZSBHZXRMb2NhbCB0
aGF0IHRoZSB2YXJpYWJsZSBpcyBwcm9maXRhYmxlIHRvIHVuYm94LgogICAgIHRlbXBsYXRlPFVz
ZUtpbmQgdXNlS2luZD4KICAgICB2b2lkIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZShF
ZGdlJiBlZGdlKQogICAgIHsKKyAgICAgICAgaWYgKGVkZ2UtPm9wKCkgPT0gR2V0TG9jYWwpIHsK
KyAgICAgICAgICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGUgPSBlZGdlLT52YXJpYWJs
ZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgICAgIHN3aXRjaCAodXNlS2luZCkgeworICAgICAgICAg
ICAgY2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQ
cmltaXRpdmVzKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgaXNJbnQzMlNwZWN1bGF0aW9uKHZh
cmlhYmxlLT5wcmVkaWN0aW9uKCkpKQorICAgICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxp
dHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJnZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE51bWJlclVzZToKKyAgICAg
ICAgICAgIGNhc2UgUmVhbE51bWJlclVzZToKKyAgICAgICAgICAgICAgICBpZiAodmFyaWFibGUt
PmRvdWJsZUZvcm1hdFN0YXRlKCkgPT0gVXNpbmdEb3VibGVGb3JtYXQpCisgICAgICAgICAgICAg
ICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRh
YmxlVG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNh
c2UgQm9vbGVhblVzZToKKyAgICAgICAgICAgICAgICBpZiAoYWx3YXlzVW5ib3hTaW1wbGVQcmlt
aXRpdmVzKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgaXNCb29sZWFuU3BlY3VsYXRpb24odmFy
aWFibGUtPnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0
eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKKyAg
ICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ2VsbFVzZToKKyAgICAgICAg
ICAgIGNhc2UgT2JqZWN0VXNlOgorICAgICAgICAgICAgY2FzZSBTdHJpbmdVc2U6CisgICAgICAg
ICAgICAgICAgaWYgKGFsd2F5c1VuYm94U2ltcGxlUHJpbWl0aXZlcygpCisgICAgICAgICAgICAg
ICAgICAgIHx8IGlzQ2VsbFNwZWN1bGF0aW9uKHZhcmlhYmxlLT5wcmVkaWN0aW9uKCkpKQorICAg
ICAgICAgICAgICAgICAgICBtX3Byb2ZpdGFiaWxpdHlDaGFuZ2VkIHw9IHZhcmlhYmxlLT5tZXJn
ZUlzUHJvZml0YWJsZVRvVW5ib3godHJ1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIAogICAgICAgICBlZGdlLnNldFVzZUtpbmQodXNlS2luZCk7CiAg
ICAgfQogICAgIApAQCAtMTAwMSw2ICsxMDczLDcgQEAgcHJpdmF0ZToKICAgICB1bnNpZ25lZCBt
X2luZGV4SW5CbG9jazsKICAgICBOb2RlKiBtX2N1cnJlbnROb2RlOwogICAgIEluc2VydGlvblNl
dCBtX2luc2VydGlvblNldDsKKyAgICBib29sIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQ7CiB9Owog
ICAgIAogYm9vbCBwZXJmb3JtRml4dXAoR3JhcGgmIGdyYXBoKQpJbmRleDogU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25Q
aGFzZS5jcHAJKHJldmlzaW9uIDE0Mzk2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMDI1
LDcgKzEwMjUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgbV9jaGFuZ2VkIHw9IHZhcmlhYmxl
QWNjZXNzRGF0YS0+dGFsbHlWb3Rlc0ZvclNob3VsZFVzZURvdWJsZUZvcm1hdCgpOwogICAgICAg
ICB9CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2dyYXBoLm1fYXJndW1lbnRQ
b3NpdGlvbnMuc2l6ZSgpOyArK2kpCi0gICAgICAgICAgICBtX2NoYW5nZWQgfD0gbV9ncmFwaC5t
X2FyZ3VtZW50UG9zaXRpb25zW2ldLm1lcmdlQXJndW1lbnRBd2FyZW5lc3MoKTsKKyAgICAgICAg
ICAgIG1fY2hhbmdlZCB8PSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnNbaV0ubWVyZ2VBcmd1
bWVudFByZWRpY3Rpb25Bd2FyZW5lc3MoKTsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG1fZ3JhcGgubV92YXJpYWJsZUFjY2Vzc0RhdGEuc2l6ZSgpOyArK2kpIHsKICAgICAgICAg
ICAgIFZhcmlhYmxlQWNjZXNzRGF0YSogdmFyaWFibGVBY2Nlc3NEYXRhID0gJm1fZ3JhcGgubV92
YXJpYWJsZUFjY2Vzc0RhdGFbaV07CiAgICAgICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0
YS0+aXNSb290KCkpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0
aXZlSklULmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkocmV2aXNpb24gMTQzOTYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MzksNiAr
MTgzOSw5IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNoZWNrQXJndW1lbnRUeXBlcygKICAgICAg
ICAgfQogICAgICAgICAKICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vz
c0RhdGEgPSBub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKTsKKyAgICAgICAgaWYgKCF2YXJpYWJs
ZUFjY2Vzc0RhdGEtPmlzUHJvZml0YWJsZVRvVW5ib3goKSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICAKICAgICAgICAgVmlydHVhbFJlZ2lzdGVyIHZpcnR1YWxSZWdpc3RlciA9IHZh
cmlhYmxlQWNjZXNzRGF0YS0+bG9jYWwoKTsKICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGlj
dGVkVHlwZSA9IHZhcmlhYmxlQWNjZXNzRGF0YS0+cHJlZGljdGlvbigpOwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ZhcmlhYmxlQWNjZXNzRGF0YS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVBY2Nlc3NEYXRhLmgJKHJl
dmlzaW9uIDE0Mzk2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTUwLDYgKzUwLDcgQEAgcHVibGljOgogICAg
ICAgICAsIG1fc2hvdWxkTmV2ZXJVbmJveChmYWxzZSkKICAgICAgICAgLCBtX2lzQXJndW1lbnRz
QWxpYXMoZmFsc2UpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKGZh
bHNlKQorICAgICAgICAsIG1faXNQcm9maXRhYmxlVG9VbmJveChmYWxzZSkKICAgICAgICAgLCBt
X2RvdWJsZUZvcm1hdFN0YXRlKEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgewogICAgICAg
ICBjbGVhclZvdGVzKCk7CkBAIC02NCw2ICs2NSw3IEBAIHB1YmxpYzoKICAgICAgICAgLCBtX3No
b3VsZE5ldmVyVW5ib3goaXNDYXB0dXJlZCkKICAgICAgICAgLCBtX2lzQXJndW1lbnRzQWxpYXMo
ZmFsc2UpCiAgICAgICAgICwgbV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKGZhbHNlKQor
ICAgICAgICAsIG1faXNQcm9maXRhYmxlVG9VbmJveChmYWxzZSkKICAgICAgICAgLCBtX2RvdWJs
ZUZvcm1hdFN0YXRlKEVtcHR5RG91YmxlRm9ybWF0U3RhdGUpCiAgICAgewogICAgICAgICBjbGVh
clZvdGVzKCk7CkBAIC04MiwxMiArODQsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAgYm9vbCBtZXJn
ZUlzQ2FwdHVyZWQoYm9vbCBpc0NhcHR1cmVkKQogICAgIHsKLSAgICAgICAgbV9zaG91bGROZXZl
clVuYm94IHw9IGlzQ2FwdHVyZWQ7Ci0gICAgICAgIGJvb2wgbmV3SXNDYXB0dXJlZCA9IG1faXND
YXB0dXJlZCB8IGlzQ2FwdHVyZWQ7Ci0gICAgICAgIGlmIChuZXdJc0NhcHR1cmVkID09IG1faXND
YXB0dXJlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9pc0NhcHR1cmVk
ID0gbmV3SXNDYXB0dXJlZDsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBz
ZXRBbmRDaGVjayhtX3Nob3VsZE5ldmVyVW5ib3gsIG1fc2hvdWxkTmV2ZXJVbmJveCB8IGlzQ2Fw
dHVyZWQpCisgICAgICAgICAgICB8IHNldEFuZENoZWNrKG1faXNDYXB0dXJlZCwgbV9pc0NhcHR1
cmVkIHwgaXNDYXB0dXJlZCk7CiAgICAgfQogICAgIAogICAgIGJvb2wgaXNDYXB0dXJlZCgpCkBA
IC05NSw2ICs5MywxNiBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBtX2lzQ2FwdHVyZWQ7CiAg
ICAgfQogICAgIAorICAgIGJvb2wgbWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KGJvb2wgaXNQcm9m
aXRhYmxlVG9VbmJveCkKKyAgICB7CisgICAgICAgIHJldHVybiBzZXRBbmRDaGVjayhtX2lzUHJv
Zml0YWJsZVRvVW5ib3gsIG1faXNQcm9maXRhYmxlVG9VbmJveCB8IGlzUHJvZml0YWJsZVRvVW5i
b3gpOworICAgIH0KKyAgICAKKyAgICBib29sIGlzUHJvZml0YWJsZVRvVW5ib3goKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIG1faXNQcm9maXRhYmxlVG9VbmJveDsKKyAgICB9CisgICAgCiAgICAg
Ym9vbCBtZXJnZVNob3VsZE5ldmVyVW5ib3goYm9vbCBzaG91bGROZXZlclVuYm94KQogICAgIHsK
ICAgICAgICAgYm9vbCBuZXdTaG91bGROZXZlclVuYm94ID0gbV9zaG91bGROZXZlclVuYm94IHwg
c2hvdWxkTmV2ZXJVbmJveDsKQEAgLTExOCwxNiArMTI2LDEyIEBAIHB1YmxpYzoKICAgICAvLyBy
ZXR1cm5zIGZhbHNlLCBzaW5jZSB0aGlzIGluY29ycG9yYXRlcyBoZXVyaXN0aWNzIG9mIHByb2Zp
dGFiaWxpdHkuCiAgICAgYm9vbCBzaG91bGRVbmJveElmUG9zc2libGUoKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuICFzaG91bGROZXZlclVuYm94KCk7CisgICAgICAgIHJldHVybiAhc2hvdWxkTmV2
ZXJVbmJveCgpICYmIGlzUHJvZml0YWJsZVRvVW5ib3goKTsKICAgICB9Ci0gICAgCisKICAgICBi
b29sIG1lcmdlU3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZChib29sIGZhaWxlZCkKICAgICB7
Ci0gICAgICAgIGJvb2wgbmV3RmFpbGVkID0gbV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVk
IHwgZmFpbGVkOwotICAgICAgICBpZiAobmV3RmFpbGVkID09IG1fc3RydWN0dXJlQ2hlY2tIb2lz
dGluZ0ZhaWxlZCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9zdHJ1Y3R1
cmVDaGVja0hvaXN0aW5nRmFpbGVkID0gbmV3RmFpbGVkOwotICAgICAgICByZXR1cm4gdHJ1ZTsK
KyAgICAgICAgcmV0dXJuIHNldEFuZENoZWNrKG1fc3RydWN0dXJlQ2hlY2tIb2lzdGluZ0ZhaWxl
ZCwgbV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkIHwgZmFpbGVkKTsKICAgICB9CiAgICAg
CiAgICAgYm9vbCBzdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKCkKQEAgLTEzNywxMSArMTQx
LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgbWVyZ2VJc0FyZ3VtZW50c0FsaWFzKGJvb2wg
aXNBcmd1bWVudHNBbGlhcykKICAgICB7Ci0gICAgICAgIGJvb2wgbmV3SXNBcmd1bWVudHNBbGlh
cyA9IG1faXNBcmd1bWVudHNBbGlhcyB8IGlzQXJndW1lbnRzQWxpYXM7Ci0gICAgICAgIGlmIChu
ZXdJc0FyZ3VtZW50c0FsaWFzID09IG1faXNBcmd1bWVudHNBbGlhcykKLSAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICAgICAgbV9pc0FyZ3VtZW50c0FsaWFzID0gbmV3SXNBcmd1bWVudHNB
bGlhczsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBzZXRBbmRDaGVjayht
X2lzQXJndW1lbnRzQWxpYXMsIG1faXNBcmd1bWVudHNBbGlhcyB8IGlzQXJndW1lbnRzQWxpYXMp
OwogICAgIH0KICAgICAKICAgICBib29sIGlzQXJndW1lbnRzQWxpYXMoKQpAQCAtMjM5LDEwICsy
MzksMTAgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxkVXNlRG91YmxlRm9ybWF0KCkKICAgICB7
CiAgICAgICAgIEFTU0VSVChpc1Jvb3QoKSk7Ci0gICAgICAgIGJvb2wgcmVzdWx0ID0gbV9kb3Vi
bGVGb3JtYXRTdGF0ZSA9PSBVc2luZ0RvdWJsZUZvcm1hdDsKLSAgICAgICAgQVNTRVJUKCEocmVz
dWx0ICYmIHNob3VsZE5ldmVyVW5ib3goKSkpOwotICAgICAgICBBU1NFUlQoIShyZXN1bHQgJiYg
aXNDYXB0dXJlZCgpKSk7Ci0gICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIGJvb2wgZG91
YmxlU3RhdGUgPSBtX2RvdWJsZUZvcm1hdFN0YXRlID09IFVzaW5nRG91YmxlRm9ybWF0OworICAg
ICAgICBBU1NFUlQoIShkb3VibGVTdGF0ZSAmJiBzaG91bGROZXZlclVuYm94KCkpKTsKKyAgICAg
ICAgQVNTRVJUKCEoZG91YmxlU3RhdGUgJiYgaXNDYXB0dXJlZCgpKSk7CisgICAgICAgIHJldHVy
biBkb3VibGVTdGF0ZSAmJiBpc1Byb2ZpdGFibGVUb1VuYm94KCk7CiAgICAgfQogICAgIAogICAg
IGJvb2wgdGFsbHlWb3Rlc0ZvclNob3VsZFVzZURvdWJsZUZvcm1hdCgpCkBAIC0yODcsMTEgKzI4
Nyw3IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1lcmdlRmxhZ3MoTm9kZUZsYWdzIG5ld0Zs
YWdzKQogICAgIHsKLSAgICAgICAgbmV3RmxhZ3MgfD0gbV9mbGFnczsKLSAgICAgICAgaWYgKG5l
d0ZsYWdzID09IG1fZmxhZ3MpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIG1f
ZmxhZ3MgPSBuZXdGbGFnczsKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIHJldHVybiBz
ZXRBbmRDaGVjayhtX2ZsYWdzLCBtX2ZsYWdzIHwgbmV3RmxhZ3MpOwogICAgIH0KICAgICAKIHBy
aXZhdGU6CkBAIC0zMDQsMTEgKzMwMCwxMiBAQCBwcml2YXRlOgogICAgIFNwZWN1bGF0ZWRUeXBl
IG1fcHJlZGljdGlvbjsKICAgICBTcGVjdWxhdGVkVHlwZSBtX2FyZ3VtZW50QXdhcmVQcmVkaWN0
aW9uOwogICAgIE5vZGVGbGFncyBtX2ZsYWdzOwotICAgIAorCiAgICAgYm9vbCBtX2lzQ2FwdHVy
ZWQ7CiAgICAgYm9vbCBtX3Nob3VsZE5ldmVyVW5ib3g7CiAgICAgYm9vbCBtX2lzQXJndW1lbnRz
QWxpYXM7CiAgICAgYm9vbCBtX3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQ7CisgICAgYm9v
bCBtX2lzUHJvZml0YWJsZVRvVW5ib3g7CiAKICAgICBmbG9hdCBtX3ZvdGVzWzJdOyAvLyBVc2Vk
IHByaW1hcmlseSBmb3IgZG91YmxlIHZvdGluZyBidXQgbWF5IGJlIHJldXNlZCBmb3Igb3RoZXIg
cHVycG9zZXMuCiAgICAgRG91YmxlRm9ybWF0U3RhdGUgbV9kb3VibGVGb3JtYXRTdGF0ZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>190392</attachid>
            <date>2013-02-26 16:46:34 -0800</date>
            <delta_ts>2013-02-26 17:13:33 -0800</delta_ts>
            <desc>the patch</desc>
            <filename>blah.patch</filename>
            <type>text/plain</type>
            <size>19808</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTQ0MTIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDUyIEBA
CisyMDEzLTAyLTI1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
VGhlIERGRyBiYWNrZW5kJ3MgYW5kIE9TUidzIGRlY2lzaW9uIHRvIHVuYm94IGEgdmFyaWFibGUg
c2hvdWxkIGJlIGJhc2VkIG9uIHdoZXRoZXIgaXQncyB1c2VkIGluIGEgdHlwZWQgY29udGV4dAor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTEwNDMzCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBU
aGlzIGludHJvZHVjZXMgdGhlIGVxdWl2YWxlbnQgb2YgYSBsaXZlbmVzcyBhbmFseXNpcywgZXhj
ZXB0IGZvciB0eXBlIGNoZWNraW5nLgorICAgICAgICBBIHZhcmlhYmxlIGlzIHNhaWQgdG8gYmUg
InByb2ZpdGFibGUgZm9yIHVuYm94aW5nIiAoaS5lLiBsaXZlIGF0IGEgdHlwZSBjaGVjaykKKyAg
ICAgICAgaWYgdGhlcmUgZXhpc3RzIGEgdHlwZSBjaGVjayBvbiBhIEdldExvY2FsIG9mIHRoYXQg
dmFyaWFibGUsIGFuZCB0aGUgdHlwZSBjaGVjaworICAgICAgICBpcyBjb25zaXN0ZW50IHdpdGgg
dGhlIHZhcmlhYmxlJ3MgcHJlZGljdGlvbi4gVmFyaWFibGVzIHRoYXQgYXJlIG5vdCBwcm9maXRh
YmxlCisgICAgICAgIGZvciB1bmJveGluZyBhcmVuJ3QgdW5ib3hlZC4gUHJldmlvdXNseSB0aGV5
IHdvdWxkIGhhdmUgYmVlbi4KKyAgICAgICAgCisgICAgICAgIFRoaXMgaXMgYSBzbGlnaHQgc3Bl
ZWQtdXAgb24gc29tZSB0aGluZ3MgYnV0IG1vc3RseSBuZXV0cmFsLgorCisgICAgICAgICogZGZn
L0RGR0FyZ3VtZW50UG9zaXRpb24uaDoKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0
aW9uOjpBcmd1bWVudFBvc2l0aW9uKToKKyAgICAgICAgKEpTQzo6REZHOjpBcmd1bWVudFBvc2l0
aW9uOjptZXJnZVNob3VsZE5ldmVyVW5ib3gpOgorICAgICAgICAoSlNDOjpERkc6OkFyZ3VtZW50
UG9zaXRpb246Om1lcmdlQXJndW1lbnRQcmVkaWN0aW9uQXdhcmVuZXNzKToKKyAgICAgICAgKEpT
Qzo6REZHOjpBcmd1bWVudFBvc2l0aW9uOjptZXJnZUFyZ3VtZW50VW5ib3hpbmdBd2FyZW5lc3Mp
OgorICAgICAgICAoQXJndW1lbnRQb3NpdGlvbik6CisgICAgICAgIChKU0M6OkRGRzo6QXJndW1l
bnRQb3NpdGlvbjo6aXNQcm9maXRhYmxlVG9VbmJveCk6CisgICAgICAgIChKU0M6OkRGRzo6QXJn
dW1lbnRQb3NpdGlvbjo6c2hvdWxkVXNlRG91YmxlRm9ybWF0KToKKyAgICAgICAgKiBkZmcvREZH
Q29tbW9uLmg6CisgICAgICAgIChKU0M6OkRGRzo6c2V0QW5kQ2hlY2spOgorICAgICAgICAoREZH
KToKKyAgICAgICAgKiBkZmcvREZHRml4dXBQaGFzZS5jcHA6CisgICAgICAgIChKU0M6OkRGRzo6
Rml4dXBQaGFzZTo6cnVuKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNlOjpmaXh1cE5v
ZGUpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwU2V0TG9jYWxzSW5CbG9j
ayk6CisgICAgICAgIChGaXh1cFBoYXNlKToKKyAgICAgICAgKEpTQzo6REZHOjpGaXh1cFBoYXNl
OjphbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMpOgorICAgICAgICAoSlNDOjpERkc6OkZpeHVw
UGhhc2U6OnNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZSk6CisgICAgICAgICogZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZTo6ZG9Sb3VuZE9mRG91YmxlVm90aW5nKToKKyAgICAgICAg
KiBkZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0
aXZlSklUOjpjaGVja0FyZ3VtZW50VHlwZXMpOgorICAgICAgICAqIGRmZy9ERkdWYXJpYWJsZUFj
Y2Vzc0RhdGEuaDoKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OlZhcmlh
YmxlQWNjZXNzRGF0YSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjpt
ZXJnZUlzQ2FwdHVyZWQpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlhYmxlQWNjZXNzRGF0YTo6
bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KToKKyAgICAgICAgKFZhcmlhYmxlQWNjZXNzRGF0YSk6
CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjppc1Byb2ZpdGFibGVUb1Vu
Ym94KToKKyAgICAgICAgKEpTQzo6REZHOjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNob3VsZFVuYm94
SWZQb3NzaWJsZSk6CisgICAgICAgIChKU0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjptZXJn
ZVN0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQpOgorICAgICAgICAoSlNDOjpERkc6OlZhcmlh
YmxlQWNjZXNzRGF0YTo6bWVyZ2VJc0FyZ3VtZW50c0FsaWFzKToKKyAgICAgICAgKEpTQzo6REZH
OjpWYXJpYWJsZUFjY2Vzc0RhdGE6OnNob3VsZFVzZURvdWJsZUZvcm1hdCk6CisgICAgICAgIChK
U0M6OkRGRzo6VmFyaWFibGVBY2Nlc3NEYXRhOjptZXJnZUZsYWdzKToKKwogMjAxMy0wMi0yNiAg
T2xpdmVyIEh1bnQgIDxvbGl2ZXJAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFJFR1JFU1NJT046IFtKU0NdIFNvdXJjZVByb3ZpZGVyIHJldXNlcyBJRHMKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQXJndW1lbnRQb3NpdGlvbi5oCShyZXZpc2lv
biAxNDQxMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0FyZ3VtZW50UG9zaXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDEyLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzcsNiArMzcsNyBAQCBwdWJsaWM6CiAgICAgQXJndW1lbnRQ
b3NpdGlvbigpCiAgICAgICAgIDogbV9wcmVkaWN0aW9uKFNwZWNOb25lKQogICAgICAgICAsIG1f
ZG91YmxlRm9ybWF0U3RhdGUoRW1wdHlEb3VibGVGb3JtYXRTdGF0ZSkKKyAgICAgICAgLCBtX2lz
UHJvZml0YWJsZVRvVW5ib3goZmFsc2UpCiAgICAgICAgICwgbV9zaG91bGROZXZlclVuYm94KGZh
bHNlKQogICAgIHsKICAgICB9CkBAIC00OCwxNCArNDksMTAgQEAgcHVibGljOgogICAgIAogICAg
IGJvb2wgbWVyZ2VTaG91bGROZXZlclVuYm94KGJvb2wgc2hvdWxkTmV2ZXJVbmJveCkKICAgICB7
Ci0gICAgICAgIGJvb2wgbmV3U2hvdWxkTmV2ZXJVbmJveCA9IG1fc2hvdWxkTmV2ZXJVbmJveCB8
IHNob3VsZE5ldmVyVW5ib3g7Ci0gICAgICAgIGlmIChuZXdTaG91bGROZXZlclVuYm94ID09IG1f
c2hvdWxkTmV2ZXJVbmJveCkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9z
aG91bGROZXZlclVuYm94ID0gbmV3U2hvdWxkTmV2ZXJVbmJveDsKLSAgICAgICAgcmV0dXJuIHRy
dWU7CisgICAgICAgIHJldHVybiBzZXRBbmRDaGVjayhtX3Nob3VsZE5ldmVyVW5ib3gsIG1fc2hv
dWxkTmV2ZXJVbmJveCB8IHNob3VsZE5ldmVyVW5ib3gpOwogICAgIH0KICAgICAKLSAgICBib29s
IG1lcmdlQXJndW1lbnRBd2FyZW5lc3MoKQorICAgIGJvb2wgbWVyZ2VBcmd1bWVudFByZWRpY3Rp
b25Bd2FyZW5lc3MoKQogICAgIHsKICAgICAgICAgYm9vbCBjaGFuZ2VkID0gZmFsc2U7CiAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX3ZhcmlhYmxlcy5zaXplKCk7ICsraSkgewpA
QCAtNzQsMTYgKzcxLDMyIEBAIHB1YmxpYzoKICAgICAgICAgcmV0dXJuIGNoYW5nZWQ7CiAgICAg
fQogICAgIAorICAgIGJvb2wgbWVyZ2VBcmd1bWVudFVuYm94aW5nQXdhcmVuZXNzKCkKKyAgICB7
CisgICAgICAgIGJvb2wgY2hhbmdlZCA9IGZhbHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgpOyArK2kpCisgICAgICAgICAgICBjaGFuZ2VkIHw9
IHNldEFuZENoZWNrKG1faXNQcm9maXRhYmxlVG9VbmJveCwgbV9pc1Byb2ZpdGFibGVUb1VuYm94
IHwgbV92YXJpYWJsZXNbaV0tPmlzUHJvZml0YWJsZVRvVW5ib3goKSk7CisgICAgICAgIGlmICgh
Y2hhbmdlZCkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgY2hhbmdlZCA9IGZh
bHNlOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV92YXJpYWJsZXMuc2l6ZSgp
OyArK2kpCisgICAgICAgICAgICBjaGFuZ2VkIHw9IG1fdmFyaWFibGVzW2ldLT5tZXJnZUlzUHJv
Zml0YWJsZVRvVW5ib3gobV9pc1Byb2ZpdGFibGVUb1VuYm94KTsKKyAgICAgICAgcmV0dXJuIGNo
YW5nZWQ7CisgICAgfQorICAgIAorICAgIGJvb2wgc2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkgY29u
c3QgeyByZXR1cm4gbV9pc1Byb2ZpdGFibGVUb1VuYm94ICYmICFtX3Nob3VsZE5ldmVyVW5ib3g7
IH0KKyAgICAKICAgICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wcmVkaWN0aW9uOyB9CiAgICAgRG91YmxlRm9ybWF0U3RhdGUgZG91YmxlRm9ybWF0U3RhdGUo
KSBjb25zdCB7IHJldHVybiBtX2RvdWJsZUZvcm1hdFN0YXRlOyB9CiAgICAgYm9vbCBzaG91bGRV
c2VEb3VibGVGb3JtYXQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIGRvdWJsZUZvcm1h
dFN0YXRlKCkgPT0gVXNpbmdEb3VibGVGb3JtYXQ7CisgICAgICAgIHJldHVybiBkb3VibGVGb3Jt
YXRTdGF0ZSgpID09IFVzaW5nRG91YmxlRm9ybWF0ICYmIHNob3VsZFVuYm94SWZQb3NzaWJsZSgp
OwogICAgIH0KICAgICAKIHByaXZhdGU6CiAgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9u
OwogICAgIERvdWJsZUZvcm1hdFN0YXRlIG1fZG91YmxlRm9ybWF0U3RhdGU7CisgICAgYm9vbCBt
X2lzUHJvZml0YWJsZVRvVW5ib3g7CiAgICAgYm9vbCBtX3Nob3VsZE5ldmVyVW5ib3g7CiAgICAg
CiAgICAgVmVjdG9yPFZhcmlhYmxlQWNjZXNzRGF0YSosIDI+IG1fdmFyaWFibGVzOwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb21tb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCShyZXZpc2lvbiAxNDQxMjIpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbW1vbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0y
MjEsNiArMjIxLDE1IEBAIGVudW0gT3BlcmFuZFNwZWN1bGF0aW9uTW9kZSB7IEF1dG9tYXRpY08K
IAogZW51bSBTcGVjdWxhdGlvbkRpcmVjdGlvbiB7IEZvcndhcmRTcGVjdWxhdGlvbiwgQmFja3dh
cmRTcGVjdWxhdGlvbiB9OwogCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBVPgorYm9v
bCBzZXRBbmRDaGVjayhUJiBsZWZ0LCBVIHJpZ2h0KQoreworICAgIGlmIChsZWZ0ID09IHJpZ2h0
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbGVmdCA9IHJpZ2h0OworICAgIHJldHVybiB0
cnVlOworfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6REZHCiAKIG5hbWVzcGFjZSBXVEYgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCShyZXZp
c2lvbiAxNDQxMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiREZHR3JhcGgu
aCIKICNpbmNsdWRlICJERkdJbnNlcnRpb25TZXQuaCIKICNpbmNsdWRlICJERkdQaGFzZS5oIgor
I2luY2x1ZGUgIkRGR1ZhcmlhYmxlQWNjZXNzRGF0YUR1bXAuaCIKICNpbmNsdWRlICJPcGVyYXRp
b25zLmgiCiAKIG5hbWVzcGFjZSBKU0MgeyBuYW1lc3BhY2UgREZHIHsKQEAgLTQ4LDggKzQ5LDIw
IEBAIHB1YmxpYzoKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9maXhwb2ludFN0YXRlID09IEJl
Zm9yZUZpeHBvaW50KTsKICAgICAgICAgQVNTRVJUKG1fZ3JhcGgubV9mb3JtID09IFRocmVhZGVk
Q1BTKTsKICAgICAgICAgCisgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgPSBmYWxzZTsK
ICAgICAgICAgZm9yIChCbG9ja0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9n
cmFwaC5tX2Jsb2Nrcy5zaXplKCk7ICsrYmxvY2tJbmRleCkKICAgICAgICAgICAgIGZpeHVwQmxv
Y2sobV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKSk7CisgICAgICAgIAorICAgICAg
ICB3aGlsZSAobV9wcm9maXRhYmlsaXR5Q2hhbmdlZCkgeworICAgICAgICAgICAgbV9wcm9maXRh
YmlsaXR5Q2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGkgPSBtX2dyYXBoLm1fYXJndW1lbnRQb3NpdGlvbnMuc2l6ZSgpOyBpLS07KQorICAg
ICAgICAgICAgICAgIG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50
VW5ib3hpbmdBd2FyZW5lc3MoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yIChCbG9j
a0luZGV4IGJsb2NrSW5kZXggPSAwOyBibG9ja0luZGV4IDwgbV9ncmFwaC5tX2Jsb2Nrcy5zaXpl
KCk7ICsrYmxvY2tJbmRleCkKKyAgICAgICAgICAgICAgICBmaXh1cFNldExvY2Fsc0luQmxvY2so
bV9ncmFwaC5tX2Jsb2Nrc1tibG9ja0luZGV4XS5nZXQoKSk7CisgICAgICAgIH0KKyAgICAgICAg
CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIApAQCAtODAsMjMgKzkzLDcgQEAgcHJpdmF0
ZToKICAgICAgICAgCiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTZXRMb2Nh
bDogewotICAgICAgICAgICAgVmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZh
cmlhYmxlQWNjZXNzRGF0YSgpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoIXZhcmlh
YmxlLT5zaG91bGRVbmJveElmUG9zc2libGUoKSkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHZhcmlhYmxlLT5zaG91bGRVc2VEb3VibGVGb3Jt
YXQoKSkgewotICAgICAgICAgICAgICAgIGZpeERvdWJsZUVkZ2U8TnVtYmVyVXNlPihub2RlLT5j
aGlsZDEoKSwgRm9yd2FyZFNwZWN1bGF0aW9uKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJl
ZGljdGVkVHlwZSA9IHZhcmlhYmxlLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOwotICAgICAg
ICAgICAgaWYgKGlzSW50MzJTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAg
ICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUtPmNoaWxk
MSgpKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5
cGUpKQotICAgICAgICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxDZWxs
VXNlPihub2RlLT5jaGlsZDEoKSk7Ci0gICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVj
dWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKLSAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5i
b3hJZlByb2ZpdGFibGU8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAg
Ly8gVGhpcyBnZXRzIGhhbmRsZWQgYnkgZml4dXBTZXRMb2NhbHNJbkJsb2NrKCkuCiAgICAgICAg
ICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICAgICAgCkBAIC04MDcsNiArODA0LDQwIEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICB9CiAgICAgCisgICAgdm9pZCBmaXh1cFNldExvY2Fsc0lu
QmxvY2soQmFzaWNCbG9jayogYmxvY2spCisgICAgeworICAgICAgICBpZiAoIWJsb2NrKQorICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICBBU1NFUlQoYmxvY2stPmlzUmVhY2hhYmxlKTsKKyAg
ICAgICAgbV9ibG9jayA9IGJsb2NrOworICAgICAgICBmb3IgKG1faW5kZXhJbkJsb2NrID0gMDsg
bV9pbmRleEluQmxvY2sgPCBibG9jay0+c2l6ZSgpOyArK21faW5kZXhJbkJsb2NrKSB7CisgICAg
ICAgICAgICBOb2RlKiBub2RlID0gbV9jdXJyZW50Tm9kZSA9IGJsb2NrLT5hdChtX2luZGV4SW5C
bG9jayk7CisgICAgICAgICAgICBpZiAobm9kZS0+b3AoKSAhPSBTZXRMb2NhbCkKKyAgICAgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGlmICghbm9kZS0+c2hvdWxkR2VuZXJhdGUo
KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXZhcmlhYmxlLT5zaG91bGRVbmJveElm
UG9zc2libGUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIAorICAg
ICAgICAgICAgaWYgKHZhcmlhYmxlLT5zaG91bGRVc2VEb3VibGVGb3JtYXQoKSkgeworICAgICAg
ICAgICAgICAgIGZpeERvdWJsZUVkZ2U8TnVtYmVyVXNlPihub2RlLT5jaGlsZDEoKSwgRm9yd2Fy
ZFNwZWN1bGF0aW9uKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIAorICAgICAgICAgICAgU3BlY3VsYXRlZFR5cGUgcHJlZGljdGVkVHlwZSA9
IHZhcmlhYmxlLT5hcmd1bWVudEF3YXJlUHJlZGljdGlvbigpOworICAgICAgICAgICAgaWYgKGlz
SW50MzJTcGVjdWxhdGlvbihwcmVkaWN0ZWRUeXBlKSkKKyAgICAgICAgICAgICAgICBzZXRVc2VL
aW5kQW5kVW5ib3hJZlByb2ZpdGFibGU8SW50MzJVc2U+KG5vZGUtPmNoaWxkMSgpKTsKKyAgICAg
ICAgICAgIGVsc2UgaWYgKGlzQ2VsbFNwZWN1bGF0aW9uKHByZWRpY3RlZFR5cGUpKQorICAgICAg
ICAgICAgICAgIHNldFVzZUtpbmRBbmRVbmJveElmUHJvZml0YWJsZTxDZWxsVXNlPihub2RlLT5j
aGlsZDEoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChpc0Jvb2xlYW5TcGVjdWxhdGlvbihwcmVk
aWN0ZWRUeXBlKSkKKyAgICAgICAgICAgICAgICBzZXRVc2VLaW5kQW5kVW5ib3hJZlByb2ZpdGFi
bGU8Qm9vbGVhblVzZT4obm9kZS0+Y2hpbGQxKCkpOworICAgICAgICB9CisgICAgICAgIG1faW5z
ZXJ0aW9uU2V0LmV4ZWN1dGUoYmxvY2spOworICAgIH0KKyAgICAKICAgICBOb2RlKiBjaGVja0Fy
cmF5KEFycmF5TW9kZSBhcnJheU1vZGUsIENvZGVPcmlnaW4gY29kZU9yaWdpbiwgTm9kZSogYXJy
YXksIE5vZGUqIGluZGV4LCBib29sICgqc3RvcmFnZUNoZWNrKShjb25zdCBBcnJheU1vZGUmKSA9
IGNhbkNTRVN0b3JhZ2UsIGJvb2wgc2hvdWxkR2VuZXJhdGUgPSB0cnVlKQogICAgIHsKICAgICAg
ICAgQVNTRVJUKGFycmF5TW9kZS5pc1NwZWNpZmljKCkpOwpAQCAtODk1LDExICs5MjYsNTIgQEAg
cHJpdmF0ZToKICAgICAgICAgfSB9CiAgICAgfQogICAgIAorICAgIGJvb2wgYWx3YXlzVW5ib3hT
aW1wbGVQcmltaXRpdmVzKCkKKyAgICB7CisjaWYgVVNFKEpTVkFMVUU2NCkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworI2Vsc2UKKyAgICAgICAgLy8gQW55IGJvb2xlYW4sIGludCwgb3IgY2VsbCB2
YWx1ZSBpcyBwcm9maXRhYmxlIHRvIHVuYm94IG9uIDMyLWJpdCBiZWNhdXNlIGl0CisgICAgICAg
IC8vIHJlZHVjZXMgdHJhZmZpYy4KKyAgICAgICAgcmV0dXJuIHRydWU7CisjZW5kaWYKKyAgICB9
CisgICAgCiAgICAgLy8gU2V0IHRoZSB1c2Uga2luZCBvZiB0aGUgZWRnZS4gSW4gdGhlIGZ1dHVy
ZSAoaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMDQzMyksCiAgICAg
Ly8gdGhpcyBjYW4gYmUgdXNlZCB0byBub3RpZnkgdGhlIEdldExvY2FsIHRoYXQgdGhlIHZhcmlh
YmxlIGlzIHByb2ZpdGFibGUgdG8gdW5ib3guCiAgICAgdGVtcGxhdGU8VXNlS2luZCB1c2VLaW5k
PgogICAgIHZvaWQgc2V0VXNlS2luZEFuZFVuYm94SWZQcm9maXRhYmxlKEVkZ2UmIGVkZ2UpCiAg
ICAgeworICAgICAgICBpZiAoZWRnZS0+b3AoKSA9PSBHZXRMb2NhbCkgeworICAgICAgICAgICAg
VmFyaWFibGVBY2Nlc3NEYXRhKiB2YXJpYWJsZSA9IGVkZ2UtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OworICAgICAgICAgICAgc3dpdGNoICh1c2VLaW5kKSB7CisgICAgICAgICAgICBjYXNlIEludDMy
VXNlOgorICAgICAgICAgICAgICAgIGlmIChhbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQor
ICAgICAgICAgICAgICAgICAgICB8fCBpc0ludDMyU3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRp
Y3Rpb24oKSkpCisgICAgICAgICAgICAgICAgICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0g
dmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxlVG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTnVtYmVyVXNlOgorICAgICAgICAgICAgY2FzZSBS
ZWFsTnVtYmVyVXNlOgorICAgICAgICAgICAgICAgIGlmICh2YXJpYWJsZS0+ZG91YmxlRm9ybWF0
U3RhdGUoKSA9PSBVc2luZ0RvdWJsZUZvcm1hdCkKKyAgICAgICAgICAgICAgICAgICAgbV9wcm9m
aXRhYmlsaXR5Q2hhbmdlZCB8PSB2YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRy
dWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBCb29sZWFuVXNl
OgorICAgICAgICAgICAgICAgIGlmIChhbHdheXNVbmJveFNpbXBsZVByaW1pdGl2ZXMoKQorICAg
ICAgICAgICAgICAgICAgICB8fCBpc0Jvb2xlYW5TcGVjdWxhdGlvbih2YXJpYWJsZS0+cHJlZGlj
dGlvbigpKSkKKyAgICAgICAgICAgICAgICAgICAgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZCB8PSB2
YXJpYWJsZS0+bWVyZ2VJc1Byb2ZpdGFibGVUb1VuYm94KHRydWUpOworICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDZWxsVXNlOgorICAgICAgICAgICAgY2FzZSBPYmpl
Y3RVc2U6CisgICAgICAgICAgICBjYXNlIFN0cmluZ1VzZToKKyAgICAgICAgICAgICAgICBpZiAo
YWx3YXlzVW5ib3hTaW1wbGVQcmltaXRpdmVzKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgaXND
ZWxsU3BlY3VsYXRpb24odmFyaWFibGUtPnByZWRpY3Rpb24oKSkpCisgICAgICAgICAgICAgICAg
ICAgIG1fcHJvZml0YWJpbGl0eUNoYW5nZWQgfD0gdmFyaWFibGUtPm1lcmdlSXNQcm9maXRhYmxl
VG9VbmJveCh0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1
bHQ6CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCiAgICAgICAgIGVkZ2Uuc2V0VXNlS2luZCh1c2VLaW5kKTsKICAgICB9CiAgICAgCkBA
IC0xMDAxLDYgKzEwNzMsNyBAQCBwcml2YXRlOgogICAgIHVuc2lnbmVkIG1faW5kZXhJbkJsb2Nr
OwogICAgIE5vZGUqIG1fY3VycmVudE5vZGU7CiAgICAgSW5zZXJ0aW9uU2V0IG1faW5zZXJ0aW9u
U2V0OworICAgIGJvb2wgbV9wcm9maXRhYmlsaXR5Q2hhbmdlZDsKIH07CiAgICAgCiBib29sIHBl
cmZvcm1GaXh1cChHcmFwaCYgZ3JhcGgpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAkocmV2
aXNpb24gMTQ0MTIyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9u
UHJvcGFnYXRpb25QaGFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEwMjUsNyArMTAyNSw3IEBA
IHByaXZhdGU6CiAgICAgICAgICAgICBtX2NoYW5nZWQgfD0gdmFyaWFibGVBY2Nlc3NEYXRhLT50
YWxseVZvdGVzRm9yU2hvdWxkVXNlRG91YmxlRm9ybWF0KCk7CiAgICAgICAgIH0KICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9ucy5zaXpl
KCk7ICsraSkKLSAgICAgICAgICAgIG1fY2hhbmdlZCB8PSBtX2dyYXBoLm1fYXJndW1lbnRQb3Np
dGlvbnNbaV0ubWVyZ2VBcmd1bWVudEF3YXJlbmVzcygpOworICAgICAgICAgICAgbV9jaGFuZ2Vk
IHw9IG1fZ3JhcGgubV9hcmd1bWVudFBvc2l0aW9uc1tpXS5tZXJnZUFyZ3VtZW50UHJlZGljdGlv
bkF3YXJlbmVzcygpOwogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmFwaC5t
X3ZhcmlhYmxlQWNjZXNzRGF0YS5zaXplKCk7ICsraSkgewogICAgICAgICAgICAgVmFyaWFibGVB
Y2Nlc3NEYXRhKiB2YXJpYWJsZUFjY2Vzc0RhdGEgPSAmbV9ncmFwaC5tX3ZhcmlhYmxlQWNjZXNz
RGF0YVtpXTsKICAgICAgICAgICAgIGlmICghdmFyaWFibGVBY2Nlc3NEYXRhLT5pc1Jvb3QoKSkK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQu
Y3BwCShyZXZpc2lvbiAxNDQxMjIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklULmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTY0NiwxMCArMTY0NiwxMCBAQCB2
b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICB2YWx1
ZVNvdXJjZSA9IFZhbHVlU291cmNlKFNvdXJjZUlzRGVhZCk7CiAgICAgICAgIGVsc2UgaWYgKG5v
ZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgpLT5pc0FyZ3VtZW50c0FsaWFzKCkpCiAgICAgICAgICAg
ICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKEFyZ3VtZW50c1NvdXJjZSk7Ci0gICAgICAgIGVs
c2UgaWYgKCFub2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxl
KCkpCi0gICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNr
KTsKICAgICAgICAgZWxzZSBpZiAoIW5vZGUtPnJlZkNvdW50KCkpCiAgICAgICAgICAgICB2YWx1
ZVNvdXJjZSA9IFZhbHVlU291cmNlKFNvdXJjZUlzRGVhZCk7CisgICAgICAgIGVsc2UgaWYgKCFu
b2RlLT52YXJpYWJsZUFjY2Vzc0RhdGEoKS0+c2hvdWxkVW5ib3hJZlBvc3NpYmxlKCkpCisgICAg
ICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVlU291cmNlKFZhbHVlSW5KU1N0YWNrKTsKICAgICAg
ICAgZWxzZSBpZiAobm9kZS0+dmFyaWFibGVBY2Nlc3NEYXRhKCktPnNob3VsZFVzZURvdWJsZUZv
cm1hdCgpKQogICAgICAgICAgICAgdmFsdWVTb3VyY2UgPSBWYWx1ZVNvdXJjZShEb3VibGVJbkpT
U3RhY2spOwogICAgICAgICBlbHNlCkBAIC0xNzEyLDcgKzE3MTIsOSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKEJhc2ljQmxvY2smCiAgICAgICAgICAgICAgICAgICAgICAgICBBcmd1
bWVudFBvc2l0aW9uJiBhcmd1bWVudFBvc2l0aW9uID0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtX2ppdC5ncmFwaCgpLm1fYXJndW1lbnRQb3NpdGlvbnNbYXJndW1lbnRQb3NpdGlvblN0
YXJ0ICsgaV07CiAgICAgICAgICAgICAgICAgICAgICAgICBWYWx1ZVNvdXJjZSB2YWx1ZVNvdXJj
ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd1bWVudFBvc2l0aW9uLnNob3VsZFVz
ZURvdWJsZUZvcm1hdCgpKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhcmd1bWVudFBv
c2l0aW9uLnNob3VsZFVuYm94SWZQb3NzaWJsZSgpKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoVmFsdWVJbkpTU3RhY2spOworICAgICAgICAg
ICAgICAgICAgICAgICAgZWxzZSBpZiAoYXJndW1lbnRQb3NpdGlvbi5zaG91bGRVc2VEb3VibGVG
b3JtYXQoKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZVNvdXJjZSA9IFZhbHVl
U291cmNlKERvdWJsZUluSlNTdGFjayk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIGlm
IChpc0ludDMyU3BlY3VsYXRpb24oYXJndW1lbnRQb3NpdGlvbi5wcmVkaWN0aW9uKCkpKQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlU291cmNlID0gVmFsdWVTb3VyY2UoSW50MzJJ
bkpTU3RhY2spOwpAQCAtMTgzOSw2ICsxODQxLDkgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y2hl
Y2tBcmd1bWVudFR5cGVzKAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBWYXJpYWJsZUFj
Y2Vzc0RhdGEqIHZhcmlhYmxlQWNjZXNzRGF0YSA9IG5vZGUtPnZhcmlhYmxlQWNjZXNzRGF0YSgp
OworICAgICAgICBpZiAoIXZhcmlhYmxlQWNjZXNzRGF0YS0+aXNQcm9maXRhYmxlVG9VbmJveCgp
KQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIAogICAgICAgICBWaXJ0dWFsUmVnaXN0
ZXIgdmlydHVhbFJlZ2lzdGVyID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5sb2NhbCgpOwogICAgICAg
ICBTcGVjdWxhdGVkVHlwZSBwcmVkaWN0ZWRUeXBlID0gdmFyaWFibGVBY2Nlc3NEYXRhLT5wcmVk
aWN0aW9uKCk7CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHVmFyaWFibGVB
Y2Nlc3NEYXRhLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdW
YXJpYWJsZUFjY2Vzc0RhdGEuaAkocmV2aXNpb24gMTQ0MTIyKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdWYXJpYWJsZUFjY2Vzc0RhdGEuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTIgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDExLCAyMDEyLCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtNTAsNiArNTAsNyBAQCBwdWJsaWM6CiAgICAgICAgICwgbV9zaG91bGROZXZlclVuYm94
KGZhbHNlKQogICAgICAgICAsIG1faXNBcmd1bWVudHNBbGlhcyhmYWxzZSkKICAgICAgICAgLCBt
X3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoZmFsc2UpCisgICAgICAgICwgbV9pc1Byb2Zp
dGFibGVUb1VuYm94KGZhbHNlKQogICAgICAgICAsIG1fZG91YmxlRm9ybWF0U3RhdGUoRW1wdHlE
b3VibGVGb3JtYXRTdGF0ZSkKICAgICB7CiAgICAgICAgIGNsZWFyVm90ZXMoKTsKQEAgLTY0LDYg
KzY1LDcgQEAgcHVibGljOgogICAgICAgICAsIG1fc2hvdWxkTmV2ZXJVbmJveChpc0NhcHR1cmVk
KQogICAgICAgICAsIG1faXNBcmd1bWVudHNBbGlhcyhmYWxzZSkKICAgICAgICAgLCBtX3N0cnVj
dHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQoZmFsc2UpCisgICAgICAgICwgbV9pc1Byb2ZpdGFibGVU
b1VuYm94KGZhbHNlKQogICAgICAgICAsIG1fZG91YmxlRm9ybWF0U3RhdGUoRW1wdHlEb3VibGVG
b3JtYXRTdGF0ZSkKICAgICB7CiAgICAgICAgIGNsZWFyVm90ZXMoKTsKQEAgLTgyLDEyICs4NCw4
IEBAIHB1YmxpYzoKICAgICAKICAgICBib29sIG1lcmdlSXNDYXB0dXJlZChib29sIGlzQ2FwdHVy
ZWQpCiAgICAgewotICAgICAgICBtX3Nob3VsZE5ldmVyVW5ib3ggfD0gaXNDYXB0dXJlZDsKLSAg
ICAgICAgYm9vbCBuZXdJc0NhcHR1cmVkID0gbV9pc0NhcHR1cmVkIHwgaXNDYXB0dXJlZDsKLSAg
ICAgICAgaWYgKG5ld0lzQ2FwdHVyZWQgPT0gbV9pc0NhcHR1cmVkKQotICAgICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgICAgICBtX2lzQ2FwdHVyZWQgPSBuZXdJc0NhcHR1cmVkOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNldEFuZENoZWNrKG1fc2hvdWxkTmV2ZXJV
bmJveCwgbV9zaG91bGROZXZlclVuYm94IHwgaXNDYXB0dXJlZCkKKyAgICAgICAgICAgIHwgc2V0
QW5kQ2hlY2sobV9pc0NhcHR1cmVkLCBtX2lzQ2FwdHVyZWQgfCBpc0NhcHR1cmVkKTsKICAgICB9
CiAgICAgCiAgICAgYm9vbCBpc0NhcHR1cmVkKCkKQEAgLTk1LDYgKzkzLDE2IEBAIHB1YmxpYzoK
ICAgICAgICAgcmV0dXJuIG1faXNDYXB0dXJlZDsKICAgICB9CiAgICAgCisgICAgYm9vbCBtZXJn
ZUlzUHJvZml0YWJsZVRvVW5ib3goYm9vbCBpc1Byb2ZpdGFibGVUb1VuYm94KQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHNldEFuZENoZWNrKG1faXNQcm9maXRhYmxlVG9VbmJveCwgbV9pc1Byb2Zp
dGFibGVUb1VuYm94IHwgaXNQcm9maXRhYmxlVG9VbmJveCk7CisgICAgfQorICAgIAorICAgIGJv
b2wgaXNQcm9maXRhYmxlVG9VbmJveCgpCisgICAgeworICAgICAgICByZXR1cm4gbV9pc1Byb2Zp
dGFibGVUb1VuYm94OworICAgIH0KKyAgICAKICAgICBib29sIG1lcmdlU2hvdWxkTmV2ZXJVbmJv
eChib29sIHNob3VsZE5ldmVyVW5ib3gpCiAgICAgewogICAgICAgICBib29sIG5ld1Nob3VsZE5l
dmVyVW5ib3ggPSBtX3Nob3VsZE5ldmVyVW5ib3ggfCBzaG91bGROZXZlclVuYm94OwpAQCAtMTE4
LDE2ICsxMjYsMTIgQEAgcHVibGljOgogICAgIC8vIHJldHVybnMgZmFsc2UsIHNpbmNlIHRoaXMg
aW5jb3Jwb3JhdGVzIGhldXJpc3RpY3Mgb2YgcHJvZml0YWJpbGl0eS4KICAgICBib29sIHNob3Vs
ZFVuYm94SWZQb3NzaWJsZSgpCiAgICAgewotICAgICAgICByZXR1cm4gIXNob3VsZE5ldmVyVW5i
b3goKTsKKyAgICAgICAgcmV0dXJuICFzaG91bGROZXZlclVuYm94KCkgJiYgaXNQcm9maXRhYmxl
VG9VbmJveCgpOwogICAgIH0KLSAgICAKKwogICAgIGJvb2wgbWVyZ2VTdHJ1Y3R1cmVDaGVja0hv
aXN0aW5nRmFpbGVkKGJvb2wgZmFpbGVkKQogICAgIHsKLSAgICAgICAgYm9vbCBuZXdGYWlsZWQg
PSBtX3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQgfCBmYWlsZWQ7Ci0gICAgICAgIGlmIChu
ZXdGYWlsZWQgPT0gbV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotICAgICAgICBtX3N0cnVjdHVyZUNoZWNrSG9pc3RpbmdGYWlsZWQgPSBu
ZXdGYWlsZWQ7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICByZXR1cm4gc2V0QW5kQ2hl
Y2sobV9zdHJ1Y3R1cmVDaGVja0hvaXN0aW5nRmFpbGVkLCBtX3N0cnVjdHVyZUNoZWNrSG9pc3Rp
bmdGYWlsZWQgfCBmYWlsZWQpOwogICAgIH0KICAgICAKICAgICBib29sIHN0cnVjdHVyZUNoZWNr
SG9pc3RpbmdGYWlsZWQoKQpAQCAtMTM3LDExICsxNDEsNyBAQCBwdWJsaWM6CiAgICAgCiAgICAg
Ym9vbCBtZXJnZUlzQXJndW1lbnRzQWxpYXMoYm9vbCBpc0FyZ3VtZW50c0FsaWFzKQogICAgIHsK
LSAgICAgICAgYm9vbCBuZXdJc0FyZ3VtZW50c0FsaWFzID0gbV9pc0FyZ3VtZW50c0FsaWFzIHwg
aXNBcmd1bWVudHNBbGlhczsKLSAgICAgICAgaWYgKG5ld0lzQXJndW1lbnRzQWxpYXMgPT0gbV9p
c0FyZ3VtZW50c0FsaWFzKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2lz
QXJndW1lbnRzQWxpYXMgPSBuZXdJc0FyZ3VtZW50c0FsaWFzOwotICAgICAgICByZXR1cm4gdHJ1
ZTsKKyAgICAgICAgcmV0dXJuIHNldEFuZENoZWNrKG1faXNBcmd1bWVudHNBbGlhcywgbV9pc0Fy
Z3VtZW50c0FsaWFzIHwgaXNBcmd1bWVudHNBbGlhcyk7CiAgICAgfQogICAgIAogICAgIGJvb2wg
aXNBcmd1bWVudHNBbGlhcygpCkBAIC0yMzksMTAgKzIzOSwxMCBAQCBwdWJsaWM6CiAgICAgYm9v
bCBzaG91bGRVc2VEb3VibGVGb3JtYXQoKQogICAgIHsKICAgICAgICAgQVNTRVJUKGlzUm9vdCgp
KTsKLSAgICAgICAgYm9vbCByZXN1bHQgPSBtX2RvdWJsZUZvcm1hdFN0YXRlID09IFVzaW5nRG91
YmxlRm9ybWF0OwotICAgICAgICBBU1NFUlQoIShyZXN1bHQgJiYgc2hvdWxkTmV2ZXJVbmJveCgp
KSk7Ci0gICAgICAgIEFTU0VSVCghKHJlc3VsdCAmJiBpc0NhcHR1cmVkKCkpKTsKLSAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICAgICAgYm9vbCBkb3VibGVTdGF0ZSA9IG1fZG91YmxlRm9ybWF0
U3RhdGUgPT0gVXNpbmdEb3VibGVGb3JtYXQ7CisgICAgICAgIEFTU0VSVCghKGRvdWJsZVN0YXRl
ICYmIHNob3VsZE5ldmVyVW5ib3goKSkpOworICAgICAgICBBU1NFUlQoIShkb3VibGVTdGF0ZSAm
JiBpc0NhcHR1cmVkKCkpKTsKKyAgICAgICAgcmV0dXJuIGRvdWJsZVN0YXRlICYmIGlzUHJvZml0
YWJsZVRvVW5ib3goKTsKICAgICB9CiAgICAgCiAgICAgYm9vbCB0YWxseVZvdGVzRm9yU2hvdWxk
VXNlRG91YmxlRm9ybWF0KCkKQEAgLTI4NywxMSArMjg3LDcgQEAgcHVibGljOgogICAgIAogICAg
IGJvb2wgbWVyZ2VGbGFncyhOb2RlRmxhZ3MgbmV3RmxhZ3MpCiAgICAgewotICAgICAgICBuZXdG
bGFncyB8PSBtX2ZsYWdzOwotICAgICAgICBpZiAobmV3RmxhZ3MgPT0gbV9mbGFncykKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9mbGFncyA9IG5ld0ZsYWdzOwotICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHNldEFuZENoZWNrKG1fZmxhZ3MsIG1fZmxh
Z3MgfCBuZXdGbGFncyk7CiAgICAgfQogICAgIAogcHJpdmF0ZToKQEAgLTMwNCwxMSArMzAwLDEy
IEBAIHByaXZhdGU6CiAgICAgU3BlY3VsYXRlZFR5cGUgbV9wcmVkaWN0aW9uOwogICAgIFNwZWN1
bGF0ZWRUeXBlIG1fYXJndW1lbnRBd2FyZVByZWRpY3Rpb247CiAgICAgTm9kZUZsYWdzIG1fZmxh
Z3M7Ci0gICAgCisKICAgICBib29sIG1faXNDYXB0dXJlZDsKICAgICBib29sIG1fc2hvdWxkTmV2
ZXJVbmJveDsKICAgICBib29sIG1faXNBcmd1bWVudHNBbGlhczsKICAgICBib29sIG1fc3RydWN0
dXJlQ2hlY2tIb2lzdGluZ0ZhaWxlZDsKKyAgICBib29sIG1faXNQcm9maXRhYmxlVG9VbmJveDsK
IAogICAgIGZsb2F0IG1fdm90ZXNbMl07IC8vIFVzZWQgcHJpbWFyaWx5IGZvciBkb3VibGUgdm90
aW5nIGJ1dCBtYXkgYmUgcmV1c2VkIGZvciBvdGhlciBwdXJwb3Nlcy4KICAgICBEb3VibGVGb3Jt
YXRTdGF0ZSBtX2RvdWJsZUZvcm1hdFN0YXRlOwo=
</data>
<flag name="review"
          id="211044"
          type_id="1"
          status="+"
          setter="oliver"
    />
          </attachment>
      

    </bug>

</bugzilla>