<?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>154943</bug_id>
          
          <creation_ts>2016-03-02 17:15:33 -0800</creation_ts>
          <short_desc>[[SetPrototypeOf]] isn&apos;t properly implemented everywhere</short_desc>
          <delta_ts>2016-03-03 11:19:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gskachkov</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>oliver</cc>
    
    <cc>sukolsak</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1170028</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 17:15:33 -0800</bug_when>
    <thetext>We inline parts of OrdinarySetPrototypeOf in a few different places
that call O.[[SetPrototypeOf]](v) rather than doing
full dynamic dispatch. We should put those inlined bits
inside OrdinarySetPrototypeOf and have the call sites
not inline parts of OrdinarySetPrototypeOf. This is wrong
because this behavior is observable with proxy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170058</commentid>
    <comment_count>1</comment_count>
      <attachid>272719</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 18:50:52 -0800</bug_when>
    <thetext>Created attachment 272719
EWS testing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170059</commentid>
    <comment_count>2</comment_count>
      <attachid>272720</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 19:08:39 -0800</bug_when>
    <thetext>Created attachment 272720
patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170060</commentid>
    <comment_count>3</comment_count>
      <attachid>272721</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-02 19:10:46 -0800</bug_when>
    <thetext>Created attachment 272721
patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170062</commentid>
    <comment_count>4</comment_count>
      <attachid>272721</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2016-03-02 19:13:32 -0800</bug_when>
    <thetext>Comment on attachment 272721
patch for review

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

&gt; Source/JavaScriptCore/ChangeLog:8
&gt; +        We were copy-pasting implememntation bits that belong in OrdinarySetPrototypeOf 

Typo: implememntation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170287</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-03 11:18:54 -0800</bug_when>
    <thetext>landed in:
http://trac.webkit.org/changeset/197512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1170288</commentid>
    <comment_count>6</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-03-03 11:19:34 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Comment on attachment 272721 [details]
&gt; patch for review
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=272721&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:8
&gt; &gt; +        We were copy-pasting implememntation bits that belong in OrdinarySetPrototypeOf 
&gt; 
&gt; Typo: implememntation

Oh man. I changed locally but then forgot to change it again once I ran prepare-ChangeLog :/</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272719</attachid>
            <date>2016-03-02 18:50:52 -0800</date>
            <delta_ts>2016-03-02 18:50:52 -0800</delta_ts>
            <desc>EWS testing</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>9480</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NsYXNzSW5mby5oCShyZXZpc2lv
biAxOTc0ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9DbGFzc0luZm8uaAko
d29ya2luZyBjb3B5KQpAQCAtMTA5LDcgKzEwOSw3IEBAIHN0cnVjdCBNZXRob2RUYWJsZSB7CiAg
ICAgdHlwZWRlZiBib29sICgqSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKik7CiAgICAgSXNFeHRlbnNpYmxlRnVuY3Rpb25QdHIgaXNFeHRlbnNpYmxlOwogCi0g
ICAgdHlwZWRlZiBib29sICgqU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIpKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgdHlwZWRlZiBib29sICgqU2V0UHJvdG90eXBlRnVuY3Rp
b25QdHIpKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCBzaG91bGRUaHJvd0lm
Q2FudFNldCk7CiAgICAgU2V0UHJvdG90eXBlRnVuY3Rpb25QdHIgc2V0UHJvdG90eXBlOwogCiAg
ICAgdHlwZWRlZiB2b2lkICgqRHVtcFRvU3RyZWFtRnVuY3Rpb25QdHIpKGNvbnN0IEpTQ2VsbCos
IFByaW50U3RyZWFtJik7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Nl
bGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2Vs
bC5jcHAJKHJldmlzaW9uIDE5NzQ4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4MCw3ICsyODAsNyBAQCBib29sIEpTQ2Vs
bDo6aXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKIH0KIAotYm9vbCBKU0NlbGw6OnNldFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNT
dGF0ZSosIEpTVmFsdWUpCitib29sIEpTQ2VsbDo6c2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhl
Y1N0YXRlKiwgSlNWYWx1ZSwgYm9vbCkKIHsKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOwogfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmgJKHJldmlz
aW9uIDE5NzQ4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yMDgsNyArMjA4LDcgQEAgcHJvdGVjdGVkOgogICAgIHN0YXRpYyBO
T19SRVRVUk5fRFVFX1RPX0NSQVNIIHZvaWQgZ2V0R2VuZXJpY1Byb3BlcnR5TmFtZXMoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBQcm9wZXJ0eU5hbWVBcnJheSYsIEVudW1lcmF0aW9uTW9kZSk7CiAg
ICAgc3RhdGljIE5PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBwcmV2ZW50RXh0ZW5zaW9ucyhK
U09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgaXNFeHRlbnNpYmxlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKik7Ci0gICAgc3RhdGljIE5P
X1JFVFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3Rh
dGUqLCBKU1ZhbHVlKTsKKyAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIHNl
dFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wpOwogCiAgICAg
c3RhdGljIFN0cmluZyBjbGFzc05hbWUoY29uc3QgSlNPYmplY3QqKTsKICAgICBKU19FWFBPUlRf
UFJJVkFURSBzdGF0aWMgYm9vbCBjdXN0b21IYXNJbnN0YW5jZShKU09iamVjdCosIEV4ZWNTdGF0
ZSosIEpTVmFsdWUpOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3RGdW5jdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkocmV2aXNpb24gMTk3NDg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC04ODIsMjIgKzg4Miw5IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2xvYmFsRnVuY1AKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgJiYgIXZh
bHVlLmlzTnVsbCgpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVk
KCkpOwogCi0gICAgaWYgKHRoaXNPYmplY3QtPnByb3RvdHlwZSgpID09IHZhbHVlKQotICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotCi0gICAgYm9vbCBpc0V4
dGVuc2libGUgPSB0aGlzT2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMt
PmhhZEV4Y2VwdGlvbigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOwotICAgIGlmICghaXNFeHRlbnNpYmxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0
eVdyaXRlRXJyb3IpKTsKLQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgaWYgKCF0aGlz
T2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHZhbHVlKSkgewotICAgICAgICBpZiAoIXZt
LmV4Y2VwdGlvbigpKQotICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3JlYXRl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpKTsKLSAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICB9Ci0gICAg
QVNTRVJUKCFleGVjLT5oYWRFeGNlcHRpb24oKSk7CisgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCA9IHRydWU7CisgICAgdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2YWx1
ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiB9CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU09iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNPYmplY3QuY3BwCShyZXZpc2lvbiAxOTc0ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU09iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTExOTcsMjggKzExOTcs
NDQgQEAgdm9pZCBKU09iamVjdDo6c2V0UHJvdG90eXBlRGlyZWN0KFZNJiB2bQogICAgIHN3aXRj
aFRvU2xvd1B1dEFycmF5U3RvcmFnZSh2bSk7CiB9CiAKLWJvb2wgSlNPYmplY3Q6OnNldFByb3Rv
dHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK2Jvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiB2bSwg
RXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2Fu
dFNldCkKIHsKLSAgICBVTlVTRURfUEFSQU0oZXhlYyk7CiAgICAgQVNTRVJUKG1ldGhvZFRhYmxl
KHZtKS0+dG9UaGlzKHRoaXMsIGV4ZWMsIE5vdFN0cmljdE1vZGUpID09IHRoaXMpOworCisgICAg
aWYgKHRoaXMtPnByb3RvdHlwZSgpID09IHByb3RvdHlwZSkKKyAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICBib29sIGlzRXh0ZW5zaWJsZSA9IHRoaXMtPmlzRXh0ZW5zaWJsZShleGVjKTsKKyAg
ICBpZiAodm0uZXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGlmICgh
aXNFeHRlbnNpYmxlKSB7CisgICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKKyAgICAg
ICAgICAgIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9k
ZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICB9CisKICAgICBKU1ZhbHVlIG5leHRQcm90b3R5cGUgPSBwcm90b3R5cGU7CiAgICAgd2hpbGUg
KG5leHRQcm90b3R5cGUgJiYgbmV4dFByb3RvdHlwZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIGlm
IChuZXh0UHJvdG90eXBlID09IHRoaXMpCisgICAgICAgIGlmIChuZXh0UHJvdG90eXBlID09IHRo
aXMpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRUaHJvd0lmQ2FudFNldCkKKyAgICAgICAgICAg
ICAgICB2bS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoImN5Y2xpYyBfX3Byb3RvX18gdmFsdWUiKSkpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgICAgICB9CiAgICAgICAgIG5leHRQcm90b3R5cGUgPSBhc09iamVjdChuZXh0UHJvdG90
eXBlKS0+cHJvdG90eXBlKCk7CiAgICAgfQogICAgIHNldFByb3RvdHlwZURpcmVjdCh2bSwgcHJv
dG90eXBlKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotYm9vbCBKU09iamVjdDo6c2V0UHJvdG90
eXBlKEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUp
Citib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRl
KiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCkKIHsK
LSAgICByZXR1cm4gb2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgp
LCBleGVjLCBwcm90b3R5cGUpOworICAgIHJldHVybiBvYmplY3QtPnNldFByb3RvdHlwZVdpdGhD
eWNsZUNoZWNrKGV4ZWMtPnZtKCksIGV4ZWMsIHByb3RvdHlwZSwgc2hvdWxkVGhyb3dJZkNhbnRT
ZXQpOwogfQogCi1ib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGUoVk0mIHZtLCBFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQorYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlKFZN
JiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJv
d0lmQ2FudFNldCkKIHsKLSAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5zZXRQcm90b3R5cGUo
dGhpcywgZXhlYywgcHJvdG90eXBlKTsKKyAgICByZXR1cm4gbWV0aG9kVGFibGUodm0pLT5zZXRQ
cm90b3R5cGUodGhpcywgZXhlYywgcHJvdG90eXBlLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiB9
CiAKIGJvb2wgSlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20oRXhlY1N0YXRlKiBleGVjKQpJbmRl
eDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCShyZXZpc2lvbiAxOTc0
ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU09iamVjdC5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTQsMTMgKzExNCwxMyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIC8vIFRo
aXMgaXMgT3JkaW5hcnlTZXRQcm90b3R5cGVPZiBpbiB0aGUgc3BlY2lmaWNhdGlvbi4gU2VjdGlv
biA5LjEuMi4xCiAgICAgLy8gaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb3Jk
aW5hcnlzZXRwcm90b3R5cGVvZgotICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJvdG90
eXBlV2l0aEN5Y2xlQ2hlY2soVk0mLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Cisg
ICAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYs
IEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHJvdG90eXBlLCBib29sIHNob3VsZFRocm93SWZDYW50U2V0
KTsKIHB1YmxpYzoKICAgICAvLyBUaGlzIGlzIHRoZSBmdWxseSB2aXJ0dWFsIFtbU2V0UHJvdG90
eXBlT2ZdXSBpbnRlcm5hbCBmdW5jdGlvbiBkZWZpbmVkCiAgICAgLy8gaW4gdGhlIEVDTUFTY3Jp
cHQgNiBzcGVjaWZpY2F0aW9uLiBVc2UgdGhpcyB3aGVuIGRvaW5nIGEgW1tTZXRQcm90b3R5cGVP
Zl1dIAogICAgIC8vIG9wZXJhdGlvbiBhcyBkaWN0YXRlZCBpbiB0aGUgc3BlY2lmaWNhdGlvbi4K
LSAgICBib29sIHNldFByb3RvdHlwZShWTSYsIEV4ZWNTdGF0ZSosIEpTVmFsdWUgcHJvdG90eXBl
KTsKLSAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRQcm90b3R5cGUoSlNPYmpl
Y3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7CisgICAgYm9vbCBzZXRQcm90b3R5
cGUoVk0mLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBzaG91bGRUaHJvd0lm
Q2FudFNldCA9IGZhbHNlKTsKKyAgICBKU19FWFBPUlRfUFJJVkFURSBzdGF0aWMgYm9vbCBzZXRQ
cm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSwgYm9vbCBz
aG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgICAgIAogICAgIGJvb2wgbWF5SW50ZXJjZXB0SW5k
ZXhlZEFjY2Vzc2VzKCkKICAgICB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCShyZXZpc2lvbiAxOTc0ODQpCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIwOSwyNCArMjA5LDEyIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgb2JqZWN0Q29uc3QKICAgICBpZiAoIWNoZWNrUHJvdG9TZXR0ZXJBY2Nlc3NBbGxvd2VkKGV4
ZWMsIG9iamVjdCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUp
OwogCi0gICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkgPT0gcHJvdG9WYWx1ZSkKLSAgICAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShvYmplY3RWYWx1ZSk7Ci0KLSAgICBib29sIGlzRXh0ZW5z
aWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAg
IGlmICghaXNFeHRlbnNpYmxlKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCBTdHJpY3RNb2RlUmVhZG9ubHlQcm9wZXJ0eVdyaXRlRXJyb3Ip
KTsKLQogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7Ci0gICAgYm9vbCBkaWRTZXRQcm90b3R5cGUg
PSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSk7CisgICAgYm9vbCBz
aG91bGRUaHJvd0lmQ2FudFNldCA9IHRydWU7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBv
YmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNh
bnRTZXQpOwogICAgIGlmICh2bS5leGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIGlmICghZGlkU2V0UHJvdG90eXBlKSB7Ci0gICAgICAg
IHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgi
Y3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQotCisgICAgUkVMRUFTRV9BU1NFUlQoZGlkU2V0UHJv
dG90eXBlKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVlKTsKIH0KIApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5j
cHAJKHJldmlzaW9uIDE5NzQ4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Jl
ZmxlY3RPYmplY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDgsMjEgKzIwOCwxMiBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZmxlY3RPYmplCiAgICAgICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUodGhyb3dUeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJSZWZsZWN0LnNl
dFByb3RvdHlwZU9mIHJlcXVpcmVzIHRoZSBzZWNvbmQgYXJndW1lbnQgYmUgZWl0aGVyIGFuIG9i
amVjdCBvciBudWxsIikpKTsKIAogICAgIEpTT2JqZWN0KiBvYmplY3QgPSBhc09iamVjdCh0YXJn
ZXQpOwotCiAgICAgaWYgKCFjaGVja1Byb3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmpl
Y3QpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwog
Ci0gICAgaWYgKG9iamVjdC0+cHJvdG90eXBlKCkgPT0gcHJvdG8pCi0gICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHRydWUpKTsKLQotICAgIGJvb2wgaXNFeHRlbnNpYmxl
ID0gb2JqZWN0LT5pc0V4dGVuc2libGUoZXhlYyk7Ci0gICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7Ci0gICAgaWYg
KCFpc0V4dGVuc2libGUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFu
KGZhbHNlKSk7Ci0KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwotICAgIGJvb2wgZGlkU2V0UHJv
dG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvKTsKKyAgICBib29s
IHNob3VsZFRocm93SWZDYW50U2V0ID0gZmFsc2U7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUg
PSBvYmplY3QtPnNldFByb3RvdHlwZSh2bSwgZXhlYywgcHJvdG8sIHNob3VsZFRocm93SWZDYW50
U2V0KTsKICAgICBpZiAodm0uZXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoSlNWYWx1ZSgpKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihk
aWRTZXRQcm90b3R5cGUpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272720</attachid>
            <date>2016-03-02 19:08:39 -0800</date>
            <delta_ts>2016-03-02 19:10:46 -0800</delta_ts>
            <desc>patch for review</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>11197</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE2LTAzLTAyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtbU2V0UHJvdG90eXBlT2ZdXSBpc24ndCBwcm9wZXJseSBpbXBsZW1lbnRlZCBldmVyeXdoZXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJl
IGNvcHktcGFzdGluZyBpbXBsZW1lbW50YXRpb24gYml0cyB0aGF0IGJlbG9uZyBpbiBPcmRpbmFy
eVNldFByb3RvdHlwZU9mIAorICAgICAgICBpbiBhIGZldyBkaWZmZXJlbnQgcGxhY2VzIHRoYXQg
Y2FsbCBPLltbU2V0UHJvdG90eXBlT2ZdXSh2KQorICAgICAgICByYXRoZXIgdGhhbiBoYXZpbmcg
dGhvc2UgYml0cyBpbiBPcmRpbmFyeVNldFByb3RvdHlwZU9mIGl0c2VsZi4KKyAgICAgICAgV2Ug
bmVlZCB0byBwdXQgdGhvc2UgY29weS1wYXN0ZWQgYml0cyBpbnRvIE9yZGluYXJ5U2V0UHJvdG90
eXBlT2YKKyAgICAgICAgYW5kIG5vdCB0aGUgY2FsbCBzaXRlcyBvZiBPLltbU2V0UHJvdG90eXBl
T2ZdXSh2KSBiZWNhdXNlCisgICAgICAgIE8uW1tTZXRQcm90b3R5cGVPZl1dKHYpIHdvbid0IGFs
d2F5cyBjYWxsIGludG8gT3JkaW5hcnlTZXRQcm90b3R5cGVPZi4KKyAgICAgICAgVGhpcyBpcyBu
ZWVkZWQgZm9yIGNvcnJlY3RuZXNzIGJlY2F1c2UgdGhpcyBiZWhhdmlvciBpcyBub3cgb2JzZXJ2
YWJsZQorICAgICAgICB3aXRoIHRoZSBFUzYgUHJveHkgb2JqZWN0LgorCisgICAgICAgICogcnVu
dGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQ
cm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQ
cm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyk6CisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OnJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZik6CisKIDIwMTYtMDMtMDIgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdFeHBQcm90b3R5cGUgc2hvdWxk
IGNoZWNrIGZvciBleGNlcHRpb25zIGFmdGVyIGNhbGxpbmcgdG9TdHJpbmcgYW5kIGRvaW5nIHNv
IHNob3VsZCBub3QgYmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgYm9vbCAoKklzRXh0ZW5zaWJsZUZ1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIElzRXh0ZW5zaWJsZUZ1bmN0
aW9uUHRyIGlzRXh0ZW5zaWJsZTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKlNldFByb3RvdHlwZUZ1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHR5cGVkZWYg
Ym9vbCAoKlNldFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFNldFByb3RvdHlwZUZ1bmN0
aW9uUHRyIHNldFByb3RvdHlwZTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1
bmN0aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxOTc0ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODAsNyArMjgwLDcgQEAgYm9vbCBKU0NlbGw6OmlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4ZQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgSlNDZWxsOjpzZXRQ
cm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKQorYm9vbCBKU0NlbGw6OnNl
dFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxOTc0ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBA
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4
ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJv
dG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBib29sKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5NzQ4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgyLDIyICs4
ODIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5wcm90
b3R5cGUoKSA9PSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLQotICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGhpc09iamVjdC0+aXNFeHRlbnNp
YmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIWlzRXh0ZW5zaWJsZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0KICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIGlmICghdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2
YWx1ZSkpIHsKLSAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGlj
IF9fcHJvdG9fXyB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgfQotICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwor
ICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOworICAgIHRoaXNPYmplY3QtPnNl
dFByb3RvdHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NDg0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTk3LDI4ICsxMTk3LDQ0IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZURpcmVjdChWTSYgdm0KICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2Uodm0pOwogfQog
Ci1ib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCitib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5
cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJp
Y3RNb2RlKSA9PSB0aGlzKTsKKworICAgIGlmICh0aGlzLT5wcm90b3R5cGUoKSA9PSBwcm90b3R5
cGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlz
LT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgeworICAgICAgICBpZiAoc2hv
dWxkVGhyb3dJZkNhbnRTZXQpCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBl
ID0gcHJvdG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUu
aXNPYmplY3QoKSkgewotICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQorICAgICAg
ICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkVGhy
b3dJZkNhbnRTZXQpCisgICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBuZXh0UHJvdG90
eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnByb3RvdHlwZSgpOwogICAgIH0KICAgICBz
ZXRQcm90b3R5cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQorYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wg
c2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlKTsKKyAgICByZXR1cm4g
b2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBwcm90
b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotYm9vbCBKU09iamVjdDo6c2V0UHJv
dG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSkKK2Jvb2wg
SlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
cm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgcmV0dXJuIG1ldGhv
ZFRhYmxlKHZtKS0+c2V0UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSk7CisgICAgcmV0
dXJuIG1ldGhvZFRhYmxlKHZtKS0+c2V0UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSwg
c2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogfQogCiBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NG
cm9tKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEzICsxMTQsMTMgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICAvLyBUaGlzIGlzIE9yZGluYXJ5U2V0UHJvdG90eXBlT2YgaW4g
dGhlIHNwZWNpZmljYXRpb24uIFNlY3Rpb24gOS4xLjIuMQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5c2V0cHJvdG90eXBlb2YKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiwgRXhlY1N0YXRl
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJv
dG90eXBlV2l0aEN5Y2xlQ2hlY2soVk0mLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSwg
Ym9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyB0aGUg
ZnVsbHkgdmlydHVhbCBbW1NldFByb3RvdHlwZU9mXV0gaW50ZXJuYWwgZnVuY3Rpb24gZGVmaW5l
ZAogICAgIC8vIGluIHRoZSBFQ01BU2NyaXB0IDYgc3BlY2lmaWNhdGlvbi4gVXNlIHRoaXMgd2hl
biBkb2luZyBhIFtbU2V0UHJvdG90eXBlT2ZdXSAKICAgICAvLyBvcGVyYXRpb24gYXMgZGljdGF0
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgYm9vbCBzZXRQcm90b3R5cGUoVk0mLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5
cGUpOworICAgIGJvb2wgc2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90
b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgICAgICAK
ICAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMjQgKzIwOSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1By
b3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVlKTsKIAotICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgp
ID09IHByb3RvVmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFs
dWUpOwotCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVj
KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMs
IHByb3RvVmFsdWUpOwotICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIGlmICghZGlkU2V0UHJvdG90eXBlKSB7Ci0g
ICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQotCisgICAgYm9vbCBzaG91bGRUaHJvd0lm
Q2FudFNldCA9IHRydWU7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFBy
b3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAg
IEFTU0VSVCh2bS5leGNlcHRpb24oKSB8fCBkaWRTZXRQcm90b3R5cGUpOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogfQogCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NDg0KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIxMiwxNyArMjEyLDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCByZWZsZWN0T2JqZQogICAgIGlmICghY2hlY2tQcm90b1NldHRlckFjY2Vzc0FsbG93ZWQoZXhl
Yywgb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZmFs
c2UpKTsKIAotICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgpID09IHByb3RvKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0cnVlKSk7Ci0KLSAgICBib29sIGlzRXh0
ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwot
ICAgIGlmICghaXNFeHRlbnNpYmxlKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
Qm9vbGVhbihmYWxzZSkpOwotCiAgICAgVk0mIHZtID0gZXhlYy0+dm0oKTsKLSAgICBib29sIGRp
ZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCBwcm90byk7Cisg
ICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZhbHNlOworICAgIGJvb2wgZGlkU2V0UHJv
dG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMsIHByb3RvLCBzaG91bGRUaHJv
d0lmQ2FudFNldCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jv
b2xlYW4oZGlkU2V0UHJvdG90eXBlKSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272721</attachid>
            <date>2016-03-02 19:10:46 -0800</date>
            <delta_ts>2016-03-02 19:13:32 -0800</delta_ts>
            <desc>patch for review</desc>
            <filename>a-backup.diff</filename>
            <type>text/plain</type>
            <size>11221</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk3NDg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4IEBA
CisyMDE2LTAzLTAyICBTYWFtIGJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAg
IFtbU2V0UHJvdG90eXBlT2ZdXSBpc24ndCBwcm9wZXJseSBpbXBsZW1lbnRlZCBldmVyeXdoZXJl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTQ5NDMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSB3ZXJl
IGNvcHktcGFzdGluZyBpbXBsZW1lbW50YXRpb24gYml0cyB0aGF0IGJlbG9uZyBpbiBPcmRpbmFy
eVNldFByb3RvdHlwZU9mIAorICAgICAgICBpbiBhIGZldyBkaWZmZXJlbnQgcGxhY2VzIHRoYXQg
Y2FsbCBPLltbU2V0UHJvdG90eXBlT2ZdXSh2KQorICAgICAgICByYXRoZXIgdGhhbiBoYXZpbmcg
dGhvc2UgYml0cyBpbiBPcmRpbmFyeVNldFByb3RvdHlwZU9mIGl0c2VsZi4KKyAgICAgICAgV2Ug
bmVlZCB0byBwdXQgdGhvc2UgY29weS1wYXN0ZWQgYml0cyBpbnRvIE9yZGluYXJ5U2V0UHJvdG90
eXBlT2YKKyAgICAgICAgYW5kIG5vdCB0aGUgY2FsbCBzaXRlcyBvZiBPLltbU2V0UHJvdG90eXBl
T2ZdXSh2KSBiZWNhdXNlCisgICAgICAgIE8uW1tTZXRQcm90b3R5cGVPZl1dKHYpIHdvbid0IGFs
d2F5cyBjYWxsIGludG8gT3JkaW5hcnlTZXRQcm90b3R5cGVPZi4KKyAgICAgICAgVGhpcyBpcyBu
ZWVkZWQgZm9yIGNvcnJlY3RuZXNzIGJlY2F1c2UgdGhpcyBiZWhhdmlvciBpcyBub3cgb2JzZXJ2
YWJsZQorICAgICAgICB3aXRoIHRoZSBFUzYgUHJveHkgb2JqZWN0LgorCisgICAgICAgICogcnVu
dGltZS9DbGFzc0luZm8uaDoKKyAgICAgICAgKiBydW50aW1lL0pTQ2VsbC5jcHA6CisgICAgICAg
IChKU0M6OkpTQ2VsbDo6aXNFeHRlbnNpYmxlKToKKyAgICAgICAgKEpTQzo6SlNDZWxsOjpzZXRQ
cm90b3R5cGUpOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6CisgICAgICAgICogcnVudGlt
ZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9ucy5jcHA6CisgICAgICAgIChKU0M6Omdsb2JhbEZ1bmNQ
cm90b1NldHRlcik6CisgICAgICAgICogcnVudGltZS9KU09iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OkpTT2JqZWN0OjpzZXRQcm90b3R5cGVEaXJlY3QpOgorICAgICAgICAoSlNDOjpKU09iamVj
dDo6c2V0UHJvdG90eXBlV2l0aEN5Y2xlQ2hlY2spOgorICAgICAgICAoSlNDOjpKU09iamVjdDo6
c2V0UHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6OmFsbG93c0FjY2Vzc0Zyb20p
OgorICAgICAgICAqIHJ1bnRpbWUvSlNPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6SlNPYmplY3Q6
Om1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3Nlcyk6CisgICAgICAgICogcnVudGltZS9PYmplY3RD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6Om9iamVjdENvbnN0cnVjdG9yU2V0UHJvdG90
eXBlT2YpOgorICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OnJlZmxlY3RPYmplY3RTZXRQcm90b3R5cGVPZik6CisKIDIwMTYtMDMtMDIgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBSZWdFeHBQcm90b3R5cGUgc2hvdWxk
IGNoZWNrIGZvciBleGNlcHRpb25zIGFmdGVyIGNhbGxpbmcgdG9TdHJpbmcgYW5kIGRvaW5nIHNv
IHNob3VsZCBub3QgYmUgZXhwZW5zaXZlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9DbGFzc0luZm8uaAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvQ2xhc3NJbmZvLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw3ICsxMDksNyBA
QCBzdHJ1Y3QgTWV0aG9kVGFibGUgewogICAgIHR5cGVkZWYgYm9vbCAoKklzRXh0ZW5zaWJsZUZ1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSopOwogICAgIElzRXh0ZW5zaWJsZUZ1bmN0
aW9uUHRyIGlzRXh0ZW5zaWJsZTsKIAotICAgIHR5cGVkZWYgYm9vbCAoKlNldFByb3RvdHlwZUZ1
bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUpOworICAgIHR5cGVkZWYg
Ym9vbCAoKlNldFByb3RvdHlwZUZ1bmN0aW9uUHRyKShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpT
VmFsdWUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgIFNldFByb3RvdHlwZUZ1bmN0
aW9uUHRyIHNldFByb3RvdHlwZTsKIAogICAgIHR5cGVkZWYgdm9pZCAoKkR1bXBUb1N0cmVhbUZ1
bmN0aW9uUHRyKShjb25zdCBKU0NlbGwqLCBQcmludFN0cmVhbSYpOwpJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCShyZXZpc2lvbiAxOTc0ODQpCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
ODAsNyArMjgwLDcgQEAgYm9vbCBKU0NlbGw6OmlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4ZQog
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLWJvb2wgSlNDZWxsOjpzZXRQ
cm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKQorYm9vbCBKU0NlbGw6OnNl
dFByb3RvdHlwZShKU09iamVjdCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIGJvb2wpCiB7CiAgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAxOTc0ODQpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIwOCw3IEBA
IHByb3RlY3RlZDoKICAgICBzdGF0aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCB2b2lkIGdldEdl
bmVyaWNQcm9wZXJ0eU5hbWVzKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgUHJvcGVydHlOYW1lQXJy
YXkmLCBFbnVtZXJhdGlvbk1vZGUpOwogICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNI
IGJvb2wgcHJldmVudEV4dGVuc2lvbnMoSlNPYmplY3QqLCBFeGVjU3RhdGUqKTsKICAgICBzdGF0
aWMgTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBib29sIGlzRXh0ZW5zaWJsZShKU09iamVjdCosIEV4
ZWNTdGF0ZSopOwotICAgIHN0YXRpYyBOT19SRVRVUk5fRFVFX1RPX0NSQVNIIGJvb2wgc2V0UHJv
dG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSk7CisgICAgc3RhdGljIE5PX1JF
VFVSTl9EVUVfVE9fQ1JBU0ggYm9vbCBzZXRQcm90b3R5cGUoSlNPYmplY3QqLCBFeGVjU3RhdGUq
LCBKU1ZhbHVlLCBib29sKTsKIAogICAgIHN0YXRpYyBTdHJpbmcgY2xhc3NOYW1lKGNvbnN0IEpT
T2JqZWN0Kik7CiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGljIGJvb2wgY3VzdG9tSGFzSW5z
dGFuY2UoSlNPYmplY3QqLCBFeGVjU3RhdGUqLCBKU1ZhbHVlKTsKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdEZ1bmN0aW9u
cy5jcHAJKHJldmlzaW9uIDE5NzQ4NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0RnVuY3Rpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODgyLDIyICs4
ODIsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdsb2JhbEZ1bmNQCiAgICAgaWYg
KCF2YWx1ZS5pc09iamVjdCgpICYmICF2YWx1ZS5pc051bGwoKSkKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIAotICAgIGlmICh0aGlzT2JqZWN0LT5wcm90
b3R5cGUoKSA9PSB2YWx1ZSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKLQotICAgIGJvb2wgaXNFeHRlbnNpYmxlID0gdGhpc09iamVjdC0+aXNFeHRlbnNp
YmxlKGV4ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIWlzRXh0ZW5zaWJsZSkK
LSAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
U3RyaWN0TW9kZVJlYWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0KICAgICBWTSYgdm0gPSBl
eGVjLT52bSgpOwotICAgIGlmICghdGhpc09iamVjdC0+c2V0UHJvdG90eXBlKHZtLCBleGVjLCB2
YWx1ZSkpIHsKLSAgICAgICAgaWYgKCF2bS5leGNlcHRpb24oKSkKLSAgICAgICAgICAgIHZtLnRo
cm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiY3ljbGlj
IF9fcHJvdG9fXyB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7Ci0gICAgfQotICAgIEFTU0VSVCghZXhlYy0+aGFkRXhjZXB0aW9uKCkpOwor
ICAgIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSB0cnVlOworICAgIHRoaXNPYmplY3QtPnNl
dFByb3RvdHlwZSh2bSwgZXhlYywgdmFsdWUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogfQogICAgIApJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT2JqZWN0LmNwcAkocmV2aXNpb24gMTk3NDg0
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNPYmplY3QuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xMTk3LDI4ICsxMTk3LDQ0IEBAIHZvaWQgSlNPYmplY3Q6OnNldFByb3RvdHlw
ZURpcmVjdChWTSYgdm0KICAgICBzd2l0Y2hUb1Nsb3dQdXRBcnJheVN0b3JhZ2Uodm0pOwogfQog
Ci1ib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUpCitib29sIEpTT2JqZWN0OjpzZXRQcm90b3R5
cGVXaXRoQ3ljbGVDaGVjayhWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5
cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGV4ZWMp
OwogICAgIEFTU0VSVChtZXRob2RUYWJsZSh2bSktPnRvVGhpcyh0aGlzLCBleGVjLCBOb3RTdHJp
Y3RNb2RlKSA9PSB0aGlzKTsKKworICAgIGlmICh0aGlzLT5wcm90b3R5cGUoKSA9PSBwcm90b3R5
cGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisgICAgYm9vbCBpc0V4dGVuc2libGUgPSB0aGlz
LT5pc0V4dGVuc2libGUoZXhlYyk7CisgICAgaWYgKHZtLmV4Y2VwdGlvbigpKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWlzRXh0ZW5zaWJsZSkgeworICAgICAgICBpZiAoc2hv
dWxkVGhyb3dJZkNhbnRTZXQpCisgICAgICAgICAgICB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRl
VHlwZUVycm9yKGV4ZWMsIFN0cmljdE1vZGVSZWFkb25seVByb3BlcnR5V3JpdGVFcnJvcikpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCiAgICAgSlNWYWx1ZSBuZXh0UHJvdG90eXBl
ID0gcHJvdG90eXBlOwogICAgIHdoaWxlIChuZXh0UHJvdG90eXBlICYmIG5leHRQcm90b3R5cGUu
aXNPYmplY3QoKSkgewotICAgICAgICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKQorICAgICAg
ICBpZiAobmV4dFByb3RvdHlwZSA9PSB0aGlzKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkVGhy
b3dJZkNhbnRTZXQpCisgICAgICAgICAgICAgICAgdm0udGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJjeWNsaWMgX19wcm90b19fIHZhbHVlIikpKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQogICAgICAgICBuZXh0UHJvdG90
eXBlID0gYXNPYmplY3QobmV4dFByb3RvdHlwZSktPnByb3RvdHlwZSgpOwogICAgIH0KICAgICBz
ZXRQcm90b3R5cGVEaXJlY3Qodm0sIHByb3RvdHlwZSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LWJvb2wgSlNPYmplY3Q6OnNldFByb3RvdHlwZShKU09iamVjdCogb2JqZWN0LCBFeGVjU3RhdGUq
IGV4ZWMsIEpTVmFsdWUgcHJvdG90eXBlKQorYm9vbCBKU09iamVjdDo6c2V0UHJvdG90eXBlKEpT
T2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wg
c2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgcmV0dXJuIG9iamVjdC0+c2V0UHJvdG90eXBl
V2l0aEN5Y2xlQ2hlY2soZXhlYy0+dm0oKSwgZXhlYywgcHJvdG90eXBlKTsKKyAgICByZXR1cm4g
b2JqZWN0LT5zZXRQcm90b3R5cGVXaXRoQ3ljbGVDaGVjayhleGVjLT52bSgpLCBleGVjLCBwcm90
b3R5cGUsIHNob3VsZFRocm93SWZDYW50U2V0KTsKIH0KIAotYm9vbCBKU09iamVjdDo6c2V0UHJv
dG90eXBlKFZNJiB2bSwgRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlIHByb3RvdHlwZSkKK2Jvb2wg
SlNPYmplY3Q6OnNldFByb3RvdHlwZShWTSYgdm0sIEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBw
cm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpCiB7Ci0gICAgcmV0dXJuIG1ldGhv
ZFRhYmxlKHZtKS0+c2V0UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSk7CisgICAgcmV0
dXJuIG1ldGhvZFRhYmxlKHZtKS0+c2V0UHJvdG90eXBlKHRoaXMsIGV4ZWMsIHByb3RvdHlwZSwg
c2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogfQogCiBib29sIEpTT2JqZWN0OjphbGxvd3NBY2Nlc3NG
cm9tKEV4ZWNTdGF0ZSogZXhlYykKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNPYmplY3QuaAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDEzICsxMTQsMTMgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICAvLyBUaGlzIGlzIE9yZGluYXJ5U2V0UHJvdG90eXBlT2YgaW4g
dGhlIHNwZWNpZmljYXRpb24uIFNlY3Rpb24gOS4xLjIuMQogICAgIC8vIGh0dHBzOi8vdGMzOS5n
aXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9yZGluYXJ5c2V0cHJvdG90eXBlb2YKLSAgICBKU19FWFBP
UlRfUFJJVkFURSBib29sIHNldFByb3RvdHlwZVdpdGhDeWNsZUNoZWNrKFZNJiwgRXhlY1N0YXRl
KiwgSlNWYWx1ZSBwcm90b3R5cGUpOworICAgIEpTX0VYUE9SVF9QUklWQVRFIGJvb2wgc2V0UHJv
dG90eXBlV2l0aEN5Y2xlQ2hlY2soVk0mLCBFeGVjU3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSwg
Ym9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiBwdWJsaWM6CiAgICAgLy8gVGhpcyBpcyB0aGUg
ZnVsbHkgdmlydHVhbCBbW1NldFByb3RvdHlwZU9mXV0gaW50ZXJuYWwgZnVuY3Rpb24gZGVmaW5l
ZAogICAgIC8vIGluIHRoZSBFQ01BU2NyaXB0IDYgc3BlY2lmaWNhdGlvbi4gVXNlIHRoaXMgd2hl
biBkb2luZyBhIFtbU2V0UHJvdG90eXBlT2ZdXSAKICAgICAvLyBvcGVyYXRpb24gYXMgZGljdGF0
ZWQgaW4gdGhlIHNwZWNpZmljYXRpb24uCi0gICAgYm9vbCBzZXRQcm90b3R5cGUoVk0mLCBFeGVj
U3RhdGUqLCBKU1ZhbHVlIHByb3RvdHlwZSk7Ci0gICAgSlNfRVhQT1JUX1BSSVZBVEUgc3RhdGlj
IGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90b3R5
cGUpOworICAgIGJvb2wgc2V0UHJvdG90eXBlKFZNJiwgRXhlY1N0YXRlKiwgSlNWYWx1ZSBwcm90
b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQgPSBmYWxzZSk7CisgICAgSlNfRVhQT1JU
X1BSSVZBVEUgc3RhdGljIGJvb2wgc2V0UHJvdG90eXBlKEpTT2JqZWN0KiwgRXhlY1N0YXRlKiwg
SlNWYWx1ZSBwcm90b3R5cGUsIGJvb2wgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOwogICAgICAgICAK
ICAgICBib29sIG1heUludGVyY2VwdEluZGV4ZWRBY2Nlc3NlcygpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0cnVjdG9yLmNw
cAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2Jq
ZWN0Q29uc3RydWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksMjQgKzIwOSwxMCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVjdENvbnN0CiAgICAgaWYgKCFjaGVja1By
b3RvU2V0dGVyQWNjZXNzQWxsb3dlZChleGVjLCBvYmplY3QpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKG9iamVjdFZhbHVlKTsKIAotICAgIGlmIChvYmplY3QtPnByb3RvdHlwZSgp
ID09IHByb3RvVmFsdWUpCi0gICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFs
dWUpOwotCi0gICAgYm9vbCBpc0V4dGVuc2libGUgPSBvYmplY3QtPmlzRXh0ZW5zaWJsZShleGVj
KTsKLSAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCi0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoSlNWYWx1ZSgpKTsKLSAgICBpZiAoIWlzRXh0ZW5zaWJsZSkKLSAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgU3RyaWN0TW9kZVJl
YWRvbmx5UHJvcGVydHlXcml0ZUVycm9yKSk7Ci0KICAgICBWTSYgdm0gPSBleGVjLT52bSgpOwot
ICAgIGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0sIGV4ZWMs
IHByb3RvVmFsdWUpOwotICAgIGlmICh2bS5leGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIGlmICghZGlkU2V0UHJvdG90eXBlKSB7Ci0g
ICAgICAgIHZtLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiY3ljbGljIF9fcHJvdG9fXyB2YWx1ZSIpKSk7Ci0gICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7Ci0gICAgfQotCisgICAgYm9vbCBzaG91bGRUaHJvd0lm
Q2FudFNldCA9IHRydWU7CisgICAgYm9vbCBkaWRTZXRQcm90b3R5cGUgPSBvYmplY3QtPnNldFBy
b3RvdHlwZSh2bSwgZXhlYywgcHJvdG9WYWx1ZSwgc2hvdWxkVGhyb3dJZkNhbnRTZXQpOworICAg
IEFTU0VSVF9VTlVTRUQoZGlkU2V0UHJvdG90eXBlLCB2bS5leGNlcHRpb24oKSB8fCBkaWRTZXRQ
cm90b3R5cGUpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqZWN0VmFsdWUpOwogfQog
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0
LmNwcAkocmV2aXNpb24gMTk3NDg0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
UmVmbGVjdE9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxMiwxNyArMjEyLDkgQEAgRW5j
b2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZQogICAgIGlmICghY2hlY2tQcm90
b1NldHRlckFjY2Vzc0FsbG93ZWQoZXhlYywgb2JqZWN0KSkKICAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc0Jvb2xlYW4oZmFsc2UpKTsKIAotICAgIGlmIChvYmplY3QtPnByb3RvdHlw
ZSgpID09IHByb3RvKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbih0
cnVlKSk7Ci0KLSAgICBib29sIGlzRXh0ZW5zaWJsZSA9IG9iamVjdC0+aXNFeHRlbnNpYmxlKGV4
ZWMpOwotICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShKU1ZhbHVlKCkpOwotICAgIGlmICghaXNFeHRlbnNpYmxlKQotICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihmYWxzZSkpOwotCiAgICAgVk0mIHZtID0g
ZXhlYy0+dm0oKTsKLSAgICBib29sIGRpZFNldFByb3RvdHlwZSA9IG9iamVjdC0+c2V0UHJvdG90
eXBlKHZtLCBleGVjLCBwcm90byk7CisgICAgYm9vbCBzaG91bGRUaHJvd0lmQ2FudFNldCA9IGZh
bHNlOworICAgIGJvb2wgZGlkU2V0UHJvdG90eXBlID0gb2JqZWN0LT5zZXRQcm90b3R5cGUodm0s
IGV4ZWMsIHByb3RvLCBzaG91bGRUaHJvd0lmQ2FudFNldCk7CiAgICAgaWYgKHZtLmV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTVmFsdWUoKSk7CiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oZGlkU2V0UHJvdG90eXBlKSk7Cg==
</data>
<flag name="review"
          id="297485"
          type_id="1"
          status="+"
          setter="benjamin"
    />
          </attachment>
      

    </bug>

</bugzilla>