<?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>137015</bug_id>
          
          <creation_ts>2014-09-22 16:37:16 -0700</creation_ts>
          <short_desc>Add support for is&lt;HTML*Element&gt;() for type checking</short_desc>
          <delta_ts>2014-09-24 20:31:41 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (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>
          <dependson>136839</dependson>
          <blocked>137058</blocked>
    
    <blocked>137068</blocked>
    
    <blocked>137103</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1036623</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-22 16:37:16 -0700</bug_when>
    <thetext>Add support for is&lt;HTML*Element&gt;() for casting, while supporting the legacy toHTML*Element() form until the code base is fully ported to the new type checking helper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036631</commentid>
    <comment_count>1</comment_count>
      <attachid>238507</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-22 17:39:14 -0700</bug_when>
    <thetext>Created attachment 238507
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036643</commentid>
    <comment_count>2</comment_count>
      <attachid>238509</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-22 18:17:30 -0700</bug_when>
    <thetext>Created attachment 238509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036644</commentid>
    <comment_count>3</comment_count>
      <attachid>238510</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-22 18:21:07 -0700</bug_when>
    <thetext>Created attachment 238510
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036652</commentid>
    <comment_count>4</comment_count>
      <attachid>238513</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-22 20:26:28 -0700</bug_when>
    <thetext>Created attachment 238513
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036885</commentid>
    <comment_count>5</comment_count>
      <attachid>238513</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-09-23 18:56:41 -0700</bug_when>
    <thetext>Comment on attachment 238513
Patch

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

rs=me

&gt; Source/WebCore/dom/Element.h:679
&gt; +// Type checking function for Elements, to use before casting
&gt; +// with downcast&lt;&gt;().

This should be on a one line.

&gt; Source/WebCore/dom/make_names.pl:647
&gt; +    static bool checkTagName(const HTMLElement&amp; element) { return !element.isHTMLUnknownElement() &amp;&amp; element.hasTagName($parameters{namespace}Names::${name}Tag); }

It&apos;s really a shame we need isHTMLUnknownElement(). It&apos;d be nice if you find a way to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036895</commentid>
    <comment_count>6</comment_count>
      <attachid>238580</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2014-09-23 19:48:50 -0700</bug_when>
    <thetext>Created attachment 238580
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036901</commentid>
    <comment_count>7</comment_count>
      <attachid>238580</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-23 20:31:55 -0700</bug_when>
    <thetext>Comment on attachment 238580
Patch

Clearing flags on attachment: 238580

Committed r173907: &lt;http://trac.webkit.org/changeset/173907&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1036902</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-09-23 20:32:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238507</attachid>
            <date>2014-09-22 17:39:14 -0700</date>
            <delta_ts>2014-09-22 18:17:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137015-20140922173912.patch</filename>
            <type>text/plain</type>
            <size>15964</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOWUxMmMyNjdhYjBiNzA4
ODJhZTczN2U2ZjA5MTZmZDg3YWFmMjEzOS4uNmQ2ZWIyMzBhNTg4MTIxZWFjYTkyYTgyYjkzMGM4
MDFkOWVhMDJkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDE0LTA5LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlz
PEhUTUwqRWxlbWVudD4oKSBmb3IgdHlwZSBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlzPEhUTUwqRWxlbWVu
dD4oKSBmb3IgdHlwZSBjaGVja2luZyB3aGlsZSBrZWVwaW5nCisgICAgICAgIHN1cHBvcnQgZm9y
IHRoZSBsZWdhY3kgdG9IVE1MKkVsZW1lbnQoKSBmb3JtIHVudGlsIHRoZSBjb2RlIGJhc2UgaXMK
KyAgICAgICAgcG9ydGVkLgorCisgICAgICAgIHRvSFRNTCpFbGVtZW50KCkgaGVscGVycyBhcmUg
bm93IG1hY3JvcyB0byB0aGUgbmV3IGlzPEhUTUwqRWxlbWVudD4oKQorICAgICAgICB0eXBlIGNo
ZWNraW5nIGhlbHBlcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOgor
ICAgICAgICAoV2ViQ29yZTo6ZG93bmNhc3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50
T2ZUeXBlKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3Iu
aDoKKyAgICAgICAgKFdlYkNvcmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAgICAqIGRvbS9FbGVt
ZW50SXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNvcmU6OmZpbmRFbGVtZW50QW5jZXN0b3JPZlR5
cGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3Jl
OjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkVGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGlu
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnBy
ZXZpb3VzKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRT
aWJsaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZp
b3VzU2libGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpu
ZXh0U2tpcHBpbmdDaGlsZHJlbik6CisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2NlbmRh
bnRJdGVyYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6VHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJv
bSk6CisgICAgICAgICogZG9tL21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxw
ZXJzKToKKwogMjAxNC0wOS0yMiAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWJTb2NrZXQgY3Jhc2ggd2hlbiBhIGNvbm5lY3Rpb24gaXMgY2xvc2VkIGZy
b20gc2VydmVyIHNpZGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IDljOGIzNDA1MTUxMzM5ZTcxOThk
NmRiNmQ5NTY2OWRjYmMxN2RkNTEuLjYyMGIwOGJhZDMyM2RlMzJhNGNkY2YwMDJhZjAwN2VhODBj
NjZmYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjc1LDkgKzY3NSwxNyBAQCBzdHJ1Y3QgRWxl
bWVudFR5cGVDYXN0VHJhaXRzIHsKICAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBlJik7CiB9Owog
Ci0vLyBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4gZGVkdWNlIHRoZSBz
ZWNvbmQgdGVtcGxhdGUgcGFyYW1ldGVyIChBcmdUeXBlKS4KKy8vIFR5cGUgY2hlY2tpbmcgZnVu
Y3Rpb24gZm9yIEVsZW1lbnRzLCB0byB1c2UgYmVmb3JlIGNhc3RpbmcKKy8vIHdpdGggZG93bmNh
c3Q8PigpLgogdGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlw
ZT4KLWlubGluZSBib29sIGlzRWxlbWVudE9mVHlwZShjb25zdCBBcmdUeXBlJiBub2RlKSB7IHJl
dHVybiBFbGVtZW50VHlwZUNhc3RUcmFpdHM8RXhwZWN0ZWRUeXBlLCBjb25zdCBBcmdUeXBlPjo6
aXMobm9kZSk7IH0KK2lubGluZSBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIEVsZW1l
bnRUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppcyhu
b2RlKTsgfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFtZSBBcmdU
eXBlPgoraW5saW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKK3sKKyAgICBBU1NFUlQobm9kZSk7
CisgICAgcmV0dXJuIEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUsIGNv
bnN0IEFyZ1R5cGU+Ojppcygqbm9kZSk7Cit9CiAKIHRlbXBsYXRlIDw+CiBzdHJ1Y3QgRWxlbWVu
dFR5cGVDYXN0VHJhaXRzPGNvbnN0IEVsZW1lbnQsIGNvbnN0IE5vZGU+IHsKQEAgLTY5NCwxMyAr
NzAyLDEzIEBAIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPgogaW5s
aW5lIHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1
ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGUgZG93bmNhc3QoU291cmNlJiBzb3VyY2Up
CiB7CiAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6
dmFsdWUsICJVbm5lY2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oaXNFbGVtZW50T2ZUeXBlPGNvbnN0IFRhcmdldD4oc291cmNlKSk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oaXM8VGFyZ2V0Pihzb3VyY2UpKTsKICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0
PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQmPjo6dHlwZT4oc291cmNlKTsK
IH0KIHRlbXBsYXRlPHR5cGVuYW1lIFRhcmdldCwgdHlwZW5hbWUgU291cmNlPiBpbmxpbmUgdHlw
ZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25z
dCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlwZSBkb3duY2FzdChTb3VyY2UqIHNvdXJjZSkKIHsKICAg
ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwg
IlVubmVjZXNzYXJ5IGNhc3QiKTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElP
Tighc291cmNlIHx8IGlzRWxlbWVudE9mVHlwZTxjb25zdCBUYXJnZXQ+KCpzb3VyY2UpKTsKKyAg
ICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTighc291cmNlIHx8IGlzPFRhcmdldD4o
KnNvdXJjZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFtZSBzdGQ6OmNvbmRpdGlv
bmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCosIFRhcmdldCo+
Ojp0eXBlPihzb3VyY2UpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEFuY2VzdG9ySXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0
b3JJdGVyYXRvci5oCmluZGV4IDYxMjVjYjhlMGYyZTFlNWYyNTFiNTY2ZjdmZTdmNGIzYzk2NGY5
MGIuLjBiZTQwYmZiZDI2ZmZkODM3NmY0NjA4YWFhMzMxZWJkNmFhZTM1MTIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oCkBAIC0xODQsNyArMTg0LDcg
QEAgaW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnQ+IGVs
ZW1lbnRBbmNlc3RvcnMoY29uc3QgRWxlbWUKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxp
bmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCiB7Ci0gICAgaWYgKGlzRWxlbWVudE9mVHlwZTxj
b25zdCBFbGVtZW50VHlwZT4oZmlyc3QpKQorICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3Qp
KQogICAgICAgICByZXR1cm4gRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRU
eXBlPihzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KCZmaXJzdCkpOwogICAgIHJldHVybiBhbmNl
c3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KQEAgLTE5Miw3ICsxOTIsNyBAQCBp
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdl
T2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBs
aW5lYWdlT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGZpcnN0KQogewotICAgIGlmIChpc0VsZW1lbnRP
ZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+
KGZpcnN0KSkKICAgICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3RvckNvbnN0SXRlcmF0b3JBZGFw
dGVyPEVsZW1lbnRUeXBlPihzdGF0aWNfY2FzdDxjb25zdCBFbGVtZW50VHlwZSo+KCZmaXJzdCkp
OwogICAgIHJldHVybiBhbmNlc3RvcnNPZlR5cGU8RWxlbWVudFR5cGU+KGZpcnN0KTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAppbmRleCA5Yzc3MDI0MDFkNjczYTU0MTkxYTY2
NTAyNzBlODU2MzEwMzZlZDhlLi5iYmJiNDA5ZTZiYjIyMmU1NWMxZjY2OGVkNzAzYTdmYmZjNjUx
NDA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCkBAIC0xODMsNyArMTgzLDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBm
aW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCiB7CiAgICAg
Zm9yIChFbGVtZW50KiBhbmNlc3RvciA9IGN1cnJlbnQucGFyZW50RWxlbWVudCgpOyBhbmNlc3Rv
cjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChp
c0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCphbmNlc3RvcikpCisgICAgICAgIGlm
IChpczxFbGVtZW50VHlwZT4oKmFuY2VzdG9yKSkKICAgICAgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50VHlwZSo+KGFuY2VzdG9yKTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaAppbmRleCBmZTY3OTgzMGQ2NTY1Y2M5
MTI4ZmE5MzU3ODdjZGZmMTU3ZTYyM2YwLi5kMzY4NGIwNTAyYTUyNzUxMTEwYjM5ODJjMDg4ZWE1
NDNkMTllYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNh
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKQEAgLTExNiw3
ICsxMTYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVu
dFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0Q2hpbGRUZW1wbGF0ZShDdXJyZW50
VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgp
OwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+
KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAg
ICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0
PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0xMjYsNyArMTI2LDcgQEAgdGVtcGxhdGUgPHR5
cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpsYXN0Q2hpbGRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBO
b2RlKiBub2RlID0gY3VycmVudC0+bGFzdENoaWxkKCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlz
RWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2Rl
ICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gbm9kZS0+cHJldmlv
dXNTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7
CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRl
bXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50
LT5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25z
dCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlw
ZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBjdXJy
ZW50KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KQEAg
LTE0Niw3ICsxNDYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUg
RWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShD
dXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6
bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0
IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBl
Pigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBj
dXJyZW50KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0K
QEAgLTE1Niw3ICsxNTYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJy
ZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4
dChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigq
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5vZGUpOwogICAgIHJl
dHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMTY2LDcgKzE2Niw3
IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50
LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVy
c2FsOjpuZXh0KGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChub2RlICYmICFpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAm
JiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6
Om5leHQobm9kZSwgc3RheVdpdGhpbik7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRU
eXBlKj4obm9kZSk7CiB9CkBAIC0xNzUsNyArMTc1LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+Ojpw
cmV2aW91cyhjb25zdCBOb2RlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJh
dmVyc2FsOjpwcmV2aW91cyhjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlz
PEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2
aW91cyhub2RlKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsK
IH0KQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKGNvbnN0
IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdo
aWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkK
KyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9k
ZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUsIHN0YXlXaXRoaW4pOwogICAgIHJldHVy
biBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBA
IHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxpbmcoY29uc3QgTm9kZSogY3VycmVudCkKIHsK
ICAgICBOb2RlKiBub2RlID0gY3VycmVudC0+bmV4dFNpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2Rl
LT5uZXh0U2libGluZygpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5v
ZGUpOwogfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNT
aWJsaW5nKGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQt
PnByZXZpb3VzU2libGluZygpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVu
dFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygpOwog
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMjExLDcg
KzIxMSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50
VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY29uc3Qg
Tm9kZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4oY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9m
VHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxF
bGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNr
aXBwaW5nQ2hpbGRyZW4obm9kZSk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBl
Kj4obm9kZSk7CiB9CkBAIC0yMjAsNyArMjIwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1l
bnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0
U2tpcHBpbmdDaGlsZHJlbihjb25zdCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0
aGluKQogewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGls
ZHJlbihjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50
T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlz
PEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0
U2tpcHBpbmdDaGlsZHJlbihub2RlLCBzdGF5V2l0aGluKTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9U
eXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3IuaAppbmRleCAzOTU5MTMyZmNmYTcwNDI2NWNi
MDg4ZDA3MDVkMTEwZjJhMDBhYzBlLi43NjJhZTRlNjA4ZGNlNWYyNGM0MjJhYTkyYmM3MjhmZDM5
N2NmOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvci5oCkBAIC0xNTMsNyArMTUzLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVs
ZW1lbnRUeXBlPgogaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46
OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKIHsKICAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rl
c2NlbmRhbnRPZigmbV9yb290KSk7Ci0gICAgaWYgKGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oZGVzY2VuZGFudCkpCisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50
KSkKICAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50
VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KCZkZXNjZW5kYW50KSk7CiAg
ICAgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCZtX3Jv
b3QsICZkZXNjZW5kYW50KTsKICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJh
dG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBs
YXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50
Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbShjb25zdCBFbGVtZW50JiBkZXNjZW5kYW50
KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3Qp
KTsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50
KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQogICAgICAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwg
c3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZGVzY2VuZGFudCkpOwogICAgIGNvbnN0
IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dCgmbV9yb290
LCAmZGVzY2VuZGFudCk7CiAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0
ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5w
bAppbmRleCBjYTgzOWU5ODMwMjhhZTZmZjEzOTIzZDEyZDk4NzQ1YjhkMjMxOWIwLi5lY2IwMzRk
YTA2ZmYzZDljN2Y1YWU1ZDg5ZGEzOTM1MmQ1NDJjZWY1IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1l
cy5wbApAQCAtNjMzLDM5ICs2MzMsMzYgQEAgc3ViIHByaW50VHlwZUhlbHBlcnMKICAgICAgICAg
fQogCiAgICAgICAgIG15ICRjbGFzcyA9ICRwYXJzZWRUYWdzeyRuYW1lfXtpbnRlcmZhY2VOYW1l
fTsKLSAgICAgICAgIyBGSVhNRTogUmVuYW1lIHRoZXNlIGhlbHBlcnMgdG8gaXM8KkVsZW1lbnQ+
KCkuCi0gICAgICAgIG15ICRjaGVja0hlbHBlciA9ICJpcyRjbGFzcyI7Ci0KICAgICAgICAgcHJp
bnQgRiA8PEVORAogY2xhc3MgJGNsYXNzOwotdm9pZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNz
Jik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBj
b21waWxlIHRpbWUuCi12b2lkICRjaGVja0hlbHBlcihjb25zdCAkY2xhc3MqKTsgLy8gQ2F0Y2gg
dW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4K
K3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgorY2xhc3MgRWxlbWVudFR5cGVDYXN0VHJhaXRz
PGNvbnN0ICRjbGFzcywgQXJnVHlwZT4geworcHVibGljOgorICAgIHN0YXRpYyBib29sIGlzKEFy
Z1R5cGUmIG5vZGUpIHsgcmV0dXJuIGNoZWNrVGFnTmFtZShub2RlKTsgfQorcHJpdmF0ZToKIEVO
RAotICAgICAgICA7Ci0KLSAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhU
TUwiICYmICRwYXJzZWRUYWdzeyRuYW1lfXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0p
IHsKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50
IGlmIGl0IG1pZ2h0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IHRoZSBmYWN0b3J5LgotICAgICAgICAg
ICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVt
ZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYm
IGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1U
YWcpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1
cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkgJiYgJGNoZWNrSGVscGVyKHRvSFRNTEVsZW1lbnQobm9k
ZSkpOyB9CisgICAgICAgOworICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJI
VE1MIiAmJiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9
KSB7CisgICAgICAgICAgIHByaW50IEYgPDxFTkQKKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05h
bWUoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVu
a25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29u
c3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkgJiYgY2hlY2tUYWdO
YW1lKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9CiBFTkQKLSAgICAgICAgICAgIDsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hl
bHBlcihjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1
cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1l
fVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBOb2RlJiBub2RlKSB7IHJl
dHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9
VGFnKTsgfQorICAgICAgICAgICA7CisgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgcHJpbnQg
RiA8PEVORAorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9v
bCBjaGVja1RhZ05hbWUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1l
KCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KIEVORAotICAgICAg
ICAgICAgOwotICAgICAgICB9Ci0gICAgICAgIHByaW50IEYgPDxFTkQKLWlubGluZSBib29sICRj
aGVja0hlbHBlcihjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCkg
eyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hlY2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1pbmxp
bmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJl
dHVybiAkY2hlY2tIZWxwZXIoKm5vZGUpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4K
LXN0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgJGNsYXNzLCBBcmdUeXBlPiB7Ci0g
ICAgc3RhdGljIGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gJGNoZWNrSGVscGVyKG5v
ZGUpOyB9CisgICAgICAgICAgIDsKKyAgICAgICB9CisgICAgICAgcHJpbnQgRiA8PEVORAogfTsK
IAogLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBtYWNyb3Mgb25jZSB0aGUgY29kZSBoYXMgYmVlbiBw
b3J0ZWQgdG8gdXNpbmcKKy8vIGlzPCpFbGVtZW50PigpLgorI2RlZmluZSBpcyRjbGFzcyh4KSBp
czwkY2xhc3M+KHgpCisKKy8vIEZJWE1FOiBSZW1vdmUgdGhlc2UgbWFjcm9zIG9uY2UgdGhlIGNv
ZGUgaGFzIGJlZW4gcG9ydGVkIHRvIHVzaW5nCiAvLyBkb3duY2FzdDwqRWxlbWVudD4oKS4KICNk
ZWZpbmUgdG8kY2xhc3MoeCkgV2ViQ29yZTo6ZG93bmNhc3Q8V2ViQ29yZTo6JGNsYXNzPih4KQog
RU5ECg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238509</attachid>
            <date>2014-09-22 18:17:30 -0700</date>
            <delta_ts>2014-09-22 18:21:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137015-20140922181729.patch</filename>
            <type>text/plain</type>
            <size>17832</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIxODkyNjYyYjE2OTcx
NGNlZjAzMDQ4ZDJiODc4MWY3NWI4MWI3MC4uMGU4OTMwNGNhNDBkOWUyMTQyYWZhNDAyNDRmODU3
OWNjODYxOGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA5LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlz
PEhUTUwqRWxlbWVudD4oKSBmb3IgdHlwZSBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlzPEhUTUwqRWxlbWVu
dD4oKSBmb3IgdHlwZSBjaGVja2luZyB3aGlsZSBrZWVwaW5nCisgICAgICAgIHN1cHBvcnQgZm9y
IHRoZSBsZWdhY3kgdG9IVE1MKkVsZW1lbnQoKSBmb3JtIHVudGlsIHRoZSBjb2RlIGJhc2UgaXMK
KyAgICAgICAgcG9ydGVkLgorCisgICAgICAgIHRvSFRNTCpFbGVtZW50KCkgaGVscGVycyBhcmUg
bm93IG1hY3JvcyB0byB0aGUgbmV3IGlzPEhUTUwqRWxlbWVudD4oKQorICAgICAgICB0eXBlIGNo
ZWNraW5nIGhlbHBlcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOgorICAgICAgICAoV2ViQ29yZTo6
ZG93bmNhc3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJl
bik6CisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbSk6CisgICAgICAgICogZG9t
L21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxwZXJzKToKKwogMjAxNC0wOS0y
MiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGRv
d25jYXN0PFNWRypFbGVtZW50PigpIGluc3RlYWQgb2YgdG9TVkcqRWxlbWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA0MmQwZTBkYWUyMzhkZTBhN2Y2N2EzOTM1NDFiYjY1MzI3OGEx
OGZjLi5kNzEzNTUxNDk5YTA2OWY0YWMxMDA3ZjE1ZWU3NWNhYzhjMzc0MDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLy8gVGhlIERPTSBBUEkgaGFzIG5vIG1ldGhv
ZCBvZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KICAgICB1cGRhdGVUaXRs
ZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAotICAgIGlmIChtX3RpdGxlRWxl
bWVudCAmJiBpc0hUTUxUaXRsZUVsZW1lbnQobV90aXRsZUVsZW1lbnQuZ2V0KCkpKQorICAgIGlm
IChtX3RpdGxlRWxlbWVudCAmJiBpczxIVE1MVGl0bGVFbGVtZW50PihtX3RpdGxlRWxlbWVudC5n
ZXQoKSkpCiAgICAgICAgIHRvSFRNTFRpdGxlRWxlbWVudChtX3RpdGxlRWxlbWVudC5nZXQoKSkt
PnNldFRleHQodGl0bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2UwNmVkNzBj
MjUxNWEyODU0YzU3N2EwYTYyNDdmMzNkN2IxNWVhNi4uNzQ0MWI4MjYwMGJiNjE5ZGRmZmNiZjUx
YWJjMGFkZWZhODBlODRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQwNSw3ICsyNDA1
LDcgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
IGNoaWxkKSBjb25zdAogICAgIGlmIChjaGlsZC5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICBB
U1NFUlQoIWlzU1ZHRWxlbWVudCgpKTsKICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCYgY2hpbGRF
bGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQpOwotICAgICAgICByZXR1cm4gaXNT
VkdTVkdFbGVtZW50KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVtZW50LmlzVmFsaWQoKTsKKyAg
ICAgICAgcmV0dXJuIGlzPFNWR1NWR0VsZW1lbnQ+KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVt
ZW50LmlzVmFsaWQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5YzhiMzQwNTE1MTMzOWU3MTk4ZDZkYjZkOTU2NjlkY2JjMTdkZDUxLi42ZjA5N2Ew
ZDZkNDMxM2JmNTBhMjAwYjU3MjIzNGU1NzdjMDgwMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTY3NSw5ICs2NzUsMjIgQEAgc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0cyB7CiAgICAgc3Rh
dGljIGJvb2wgaXMoQXJnVHlwZSYpOwogfTsKIAotLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCB0
aGUgY29tcGlsZXIgY2FuIGRlZHVjZSB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciAoQXJn
VHlwZSkuCisvLyBUeXBlIGNoZWNraW5nIGZ1bmN0aW9uIGZvciBFbGVtZW50cywgdG8gdXNlIGJl
Zm9yZSBjYXN0aW5nCisvLyB3aXRoIGRvd25jYXN0PD4oKS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBF
eHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGUoY29uc3QgQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPEV4
cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKG5vZGUpOyB9CitpbmxpbmUgYm9vbCBpcyhB
cmdUeXBlJiBub2RlKQoreworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBl
Y3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAg
ICByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3Qg
QXJnVHlwZT46OmlzKG5vZGUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBl
LCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVj
dGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOworICAg
IHJldHVybiBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBB
cmdUeXBlPjo6aXMoKm5vZGUpOworfQogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IEVsZW1lbnRUeXBl
Q2FzdFRyYWl0czxjb25zdCBFbGVtZW50LCBjb25zdCBOb2RlPiB7CkBAIC02OTQsMTMgKzcwNywx
MyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNv
bnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSYgc291cmNlKQogewog
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzRWxlbWVudE9mVHlwZTxjb25zdCBUYXJnZXQ+KHNvdXJjZSkpOworICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3Vy
Y2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7CiB9CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFy
Z2V0KiwgVGFyZ2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCiB7CiAgICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5l
Y2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNv
dXJjZSB8fCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgVGFyZ2V0Pigqc291cmNlKSk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNvdXJjZSB8fCBpczxUYXJnZXQ+KCpzb3Vy
Y2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxz
dGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlw
ZT4oc291cmNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRl
cmF0b3IuaAppbmRleCA2MTI1Y2I4ZTBmMmUxZTVmMjUxYjU2NmY3ZmU3ZjRiM2M5NjRmOTBiLi4w
YmU0MGJmYmQyNmZmZDgzNzZmNDYwOGFhYTMzMWViZDZhYWUzNTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50
QW5jZXN0b3JzKGNvbnN0IEVsZW1lCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdl
T2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQogewotICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
RWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKICAg
ICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4o
c3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3Jz
T2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShFbGVtZW50JiBmaXJzdCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFn
ZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKIHsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkpCisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJz
dCkpCiAgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAg
ICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKaW5kZXggOWM3NzAyNDAxZDY3M2E1NDE5MWE2NjUwMjcw
ZTg1NjMxMDM2ZWQ4ZS4uNzYwM2FkNTU2YTg1ZDAwYjU4Y2YzM2U5OWMzOTUxYzQxYThhNjA3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApAQCAtMTgzLDEyICsxODMsMTggQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBmaW5k
RWxlbWVudEFuY2VzdG9yT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCiB7CiAgICAgZm9y
IChFbGVtZW50KiBhbmNlc3RvciA9IGN1cnJlbnQucGFyZW50RWxlbWVudCgpOyBhbmNlc3Rvcjsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihhbmNlc3Rvcik7CisgICAgICAgIGlmIChp
czxFbGVtZW50VHlwZT4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxF
bGVtZW50VHlwZT4oYW5jZXN0b3IpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
dGVtcGxhdGUgPD4KK2lubGluZSBFbGVtZW50KiBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCit7CisgICAgcmV0dXJuIGN1cnJlbnQucGFy
ZW50RWxlbWVudCgpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJz
YWwuaAppbmRleCBmZTY3OTgzMGQ2NTY1Y2M5MTI4ZmE5MzU3ODdjZGZmMTU3ZTYyM2YwLi5kMzY4
NGIwNTAyYTUyNzUxMTEwYjM5ODJjMDg4ZWE1NDNkMTllYTg3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50VHJhdmVyc2FsLmgKQEAgLTExNiw3ICsxMTYsNyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OmZpcnN0Q2hpbGRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBu
b2RlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAh
aXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCk7CiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0x
MjYsNyArMTI2LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVs
ZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0Q2hpbGRUZW1wbGF0ZShDdXJy
ZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gY3VycmVudC0+bGFzdENoaWxk
KCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlw
ZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQog
ICAgICAgICBub2RlID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7CiAgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQog
ewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5maXJzdENoaWxkKCk7Ci0gICAgd2hpbGUgKG5v
ZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdo
aWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9k
ZVRyYXZlcnNhbDo6bmV4dChub2RlLCBjdXJyZW50KTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8
RWxlbWVudFR5cGUqPihub2RlKTsKIH0KQEAgLTE0Niw3ICsxNDYsNyBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBjdXJyZW50KTsKICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KQEAgLTE1Niw3ICsxNTYsNyBAQCB0ZW1wbGF0ZSA8
dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2Rl
KiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAm
JiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUg
KG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJh
dmVyc2FsOjpuZXh0KG5vZGUpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+
KG5vZGUpOwogfQpAQCAtMTY2LDcgKzE2Niw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJyZW50
VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRl
bXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewog
ICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQsIHN0YXlXaXRoaW4p
OwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+
KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAg
ICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQobm9kZSwgc3RheVdpdGhpbik7CiAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0xNzUsNyArMTc1
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBl
KiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cyhjb25zdCBOb2RlKiBjdXJyZW50KQog
ewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50KTsKLSAg
ICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9k
ZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlKTsKICAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KQEAgLTE4NCw3ICsxODQsNyBAQCB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OnByZXZpb3VzKGNvbnN0IE5vZGUqIGN1cnJlbnQsIGNvbnN0IE5vZGUqIHN0
YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1
cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVu
dFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKG5v
ZGUsIHN0YXlXaXRoaW4pOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5v
ZGUpOwogfQpAQCAtMTkzLDcgKzE5Myw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxp
bmcoY29uc3QgTm9kZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gY3VycmVudC0+bmV4
dFNpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigq
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwogICAgIHJldHVybiBz
dGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOwogfQpAQCAtMjAyLDcgKzIwMiw3IEBAIHRl
bXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVy
c2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7
CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPnByZXZpb3VzU2libGluZygpOwotICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAg
ICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9
IG5vZGUtPnByZXZpb3VzU2libGluZygpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
VHlwZSo+KG5vZGUpOwogfQpAQCAtMjExLDcgKzIxMSw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6
bmV4dFNraXBwaW5nQ2hpbGRyZW4oY29uc3QgTm9kZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3VycmVudCk7Ci0gICAg
d2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUp
KQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBu
b2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4obm9kZSk7CiAgICAgcmV0
dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CiB9CkBAIC0yMjAsNyArMjIwLDcg
QEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjb25zdCBOb2RlKiBj
dXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAg
ICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9k
ZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAg
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBpbmdDaGlsZHJlbihub2RlLCBzdGF5V2l0
aGluKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0
b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3Iu
aAppbmRleCAzOTU5MTMyZmNmYTcwNDI2NWNiMDg4ZDA3MDVkMTEwZjJhMDBhYzBlLi43NjJhZTRl
NjA4ZGNlNWYyNGM0MjJhYTkyYmM3MjhmZDM5N2NmOTIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCkBAIC0xNTMsNyArMTUz
LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0
ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVzY2VuZGFudCkKIHsK
ICAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZigmbV9yb290KSk7Ci0gICAgaWYg
KGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCisgICAgaWYg
KGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKICAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVu
dERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxFbGVt
ZW50VHlwZSo+KCZkZXNjZW5kYW50KSk7CiAgICAgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpuZXh0KCZtX3Jvb3QsICZkZXNjZW5kYW50KTsKICAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5leHQp
OwpAQCAtMjAyLDcgKzIwMiw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlu
bGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlw
ZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJv
bShjb25zdCBFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChkZXNjZW5k
YW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNv
bnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGRl
c2NlbmRhbnQpKQogICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRl
cmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUq
PigmZGVzY2VuZGFudCkpOwogICAgIGNvbnN0IEVsZW1lbnRUeXBlKiBuZXh0ID0gVHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6bmV4dCgmbV9yb290LCAmZGVzY2VuZGFudCk7CiAgICAgcmV0dXJuIFR5
cGVkRWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5l
eHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAppbmRleCA0NWI4ZGI1MThkODg0ZTc0NDZmYzYz
NThkOWYzYmYxYzlmYjI4YmU5Li44Yzc4MWM0NTVjNTJhODQwNTk3ZjZkZGI1MGRkMzQyNDMxMmI2
ZjYwIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbApAQCAtNjMzLDM3ICs2MzMsMzQgQEAgc3Vi
IHByaW50VHlwZUhlbHBlcnMKICAgICAgICAgfQogCiAgICAgICAgIG15ICRjbGFzcyA9ICRwYXJz
ZWRUYWdzeyRuYW1lfXtpbnRlcmZhY2VOYW1lfTsKLSAgICAgICAgIyBGSVhNRTogUmVuYW1lIHRo
ZXNlIGhlbHBlcnMgdG8gaXM8KkVsZW1lbnQ+KCkuCi0gICAgICAgIG15ICRjaGVja0hlbHBlciA9
ICJpcyRjbGFzcyI7Ci0KICAgICAgICAgcHJpbnQgRiA8PEVORAogY2xhc3MgJGNsYXNzOwotdm9p
ZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNzJik7IC8vIENhdGNoIHVubmVjZXNzYXJ5IHJ1bnRp
bWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCi12b2lkICRjaGVja0hlbHBl
cihjb25zdCAkY2xhc3MqKTsgLy8gQ2F0Y2ggdW5uZWNlc3NhcnkgcnVudGltZSBjaGVjayBvZiB0
eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KK3RlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgor
Y2xhc3MgRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0ICRjbGFzcywgQXJnVHlwZT4geworcHVi
bGljOgorICAgIHN0YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuIGNoZWNrVGFn
TmFtZShub2RlKTsgfQorcHJpdmF0ZToKIEVORAotICAgICAgICA7Ci0KLSAgICAgICAgaWYgKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYmICRwYXJzZWRUYWdzeyRuYW1lfXt3cmFw
cGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKLSAgICAgICAgICAgICMgV2UgbmVlZCB0byBj
aGVjayBmb3IgSFRNTFVua25vd25FbGVtZW50IGlmIGl0IG1pZ2h0IGhhdmUgYmVlbiBjcmVhdGVk
IGJ5IHRoZSBmYWN0b3J5LgotICAgICAgICAgICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wg
JGNoZWNrSGVscGVyKGNvbnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVu
dC5pc0hUTUxVbmtub3duRWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVy
c3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxw
ZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5pc0hUTUxFbGVtZW50KCkgJiYgJGNo
ZWNrSGVscGVyKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9CisgICAgICAgOworICAgICAgIGlmICgk
cGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIiAmJiAkcGFyc2VkVGFnc3skbmFtZX17d3Jh
cHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7CisgICAgICAgICAgIHByaW50IEYgPDxFTkQK
KyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQp
IHsgcmV0dXJuICFlbGVtZW50LmlzSFRNTFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNU
YWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KKyAgICBz
dGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4gbm9kZS5p
c0hUTUxFbGVtZW50KCkgJiYgY2hlY2tUYWdOYW1lKHRvSFRNTEVsZW1lbnQobm9kZSkpOyB9CiBF
TkQKLSAgICAgICAgICAgIDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHByaW50IEYg
PDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3Bh
Y2V9RWxlbWVudCYgZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0
ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVja0hl
bHBlcihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRl
cnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQorICAgICAgICAgICA7CisgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgcHJpbnQgRiA8PEVORAorICAgIHN0YXRpYyBib29sIGNoZWNr
VGFnTmFtZShjb25zdCAkcGFyYW1ldGVyc3tuYW1lc3BhY2V9RWxlbWVudCYgZWxlbWVudCkgeyBy
ZXR1cm4gZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtu
YW1lfVRhZyk7IH0KKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgTm9kZSYgbm9k
ZSkgeyByZXR1cm4gbm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6
JHtuYW1lfVRhZyk7IH0KIEVORAotICAgICAgICAgICAgOwotICAgICAgICB9Ci0gICAgICAgIHBy
aW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCAkcGFyYW1ldGVyc3tu
YW1lc3BhY2V9RWxlbWVudCogZWxlbWVudCkgeyBBU1NFUlQoZWxlbWVudCk7IHJldHVybiAkY2hl
Y2tIZWxwZXIoKmVsZW1lbnQpOyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9k
ZSogbm9kZSkgeyBBU1NFUlQobm9kZSk7IHJldHVybiAkY2hlY2tIZWxwZXIoKm5vZGUpOyB9Ci10
ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KLXN0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8
Y29uc3QgJGNsYXNzLCBBcmdUeXBlPiB7Ci0gICAgc3RhdGljIGJvb2wgaXMoQXJnVHlwZSYgbm9k
ZSkgeyByZXR1cm4gJGNoZWNrSGVscGVyKG5vZGUpOyB9CisgICAgICAgICAgIDsKKyAgICAgICB9
CisgICAgICAgcHJpbnQgRiA8PEVORAogfTsKKworLy8gRklYTUU6IFJlbW92ZSB0aGVzZSBtYWNy
b3Mgb25jZSB0aGUgY29kZSBoYXMgYmVlbiBwb3J0ZWQgdG8gdXNpbmcKKy8vIGlzPCpFbGVtZW50
PigpLgorI2RlZmluZSBpcyRjbGFzcyh4KSBpczwkY2xhc3M+KHgpCiBFTkQKICAgICAgICAgOwog
ICAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238510</attachid>
            <date>2014-09-22 18:21:07 -0700</date>
            <delta_ts>2014-09-22 20:26:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137015-20140922182106.patch</filename>
            <type>text/plain</type>
            <size>18655</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIxODkyNjYyYjE2OTcx
NGNlZjAzMDQ4ZDJiODc4MWY3NWI4MWI3MC4uMGU4OTMwNGNhNDBkOWUyMTQyYWZhNDAyNDRmODU3
OWNjODYxOGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA5LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlz
PEhUTUwqRWxlbWVudD4oKSBmb3IgdHlwZSBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlzPEhUTUwqRWxlbWVu
dD4oKSBmb3IgdHlwZSBjaGVja2luZyB3aGlsZSBrZWVwaW5nCisgICAgICAgIHN1cHBvcnQgZm9y
IHRoZSBsZWdhY3kgdG9IVE1MKkVsZW1lbnQoKSBmb3JtIHVudGlsIHRoZSBjb2RlIGJhc2UgaXMK
KyAgICAgICAgcG9ydGVkLgorCisgICAgICAgIHRvSFRNTCpFbGVtZW50KCkgaGVscGVycyBhcmUg
bm93IG1hY3JvcyB0byB0aGUgbmV3IGlzPEhUTUwqRWxlbWVudD4oKQorICAgICAgICB0eXBlIGNo
ZWNraW5nIGhlbHBlcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOgorICAgICAgICAoV2ViQ29yZTo6
ZG93bmNhc3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJl
bik6CisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbSk6CisgICAgICAgICogZG9t
L21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxwZXJzKToKKwogMjAxNC0wOS0y
MiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGRv
d25jYXN0PFNWRypFbGVtZW50PigpIGluc3RlYWQgb2YgdG9TVkcqRWxlbWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA0MmQwZTBkYWUyMzhkZTBhN2Y2N2EzOTM1NDFiYjY1MzI3OGEx
OGZjLi5kNzEzNTUxNDk5YTA2OWY0YWMxMDA3ZjE1ZWU3NWNhYzhjMzc0MDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLy8gVGhlIERPTSBBUEkgaGFzIG5vIG1ldGhv
ZCBvZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KICAgICB1cGRhdGVUaXRs
ZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAotICAgIGlmIChtX3RpdGxlRWxl
bWVudCAmJiBpc0hUTUxUaXRsZUVsZW1lbnQobV90aXRsZUVsZW1lbnQuZ2V0KCkpKQorICAgIGlm
IChtX3RpdGxlRWxlbWVudCAmJiBpczxIVE1MVGl0bGVFbGVtZW50PihtX3RpdGxlRWxlbWVudC5n
ZXQoKSkpCiAgICAgICAgIHRvSFRNTFRpdGxlRWxlbWVudChtX3RpdGxlRWxlbWVudC5nZXQoKSkt
PnNldFRleHQodGl0bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2UwNmVkNzBj
MjUxNWEyODU0YzU3N2EwYTYyNDdmMzNkN2IxNWVhNi4uNzQ0MWI4MjYwMGJiNjE5ZGRmZmNiZjUx
YWJjMGFkZWZhODBlODRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQwNSw3ICsyNDA1
LDcgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
IGNoaWxkKSBjb25zdAogICAgIGlmIChjaGlsZC5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICBB
U1NFUlQoIWlzU1ZHRWxlbWVudCgpKTsKICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCYgY2hpbGRF
bGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQpOwotICAgICAgICByZXR1cm4gaXNT
VkdTVkdFbGVtZW50KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVtZW50LmlzVmFsaWQoKTsKKyAg
ICAgICAgcmV0dXJuIGlzPFNWR1NWR0VsZW1lbnQ+KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVt
ZW50LmlzVmFsaWQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5YzhiMzQwNTE1MTMzOWU3MTk4ZDZkYjZkOTU2NjlkY2JjMTdkZDUxLi42ZjA5N2Ew
ZDZkNDMxM2JmNTBhMjAwYjU3MjIzNGU1NzdjMDgwMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTY3NSw5ICs2NzUsMjIgQEAgc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0cyB7CiAgICAgc3Rh
dGljIGJvb2wgaXMoQXJnVHlwZSYpOwogfTsKIAotLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCB0
aGUgY29tcGlsZXIgY2FuIGRlZHVjZSB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciAoQXJn
VHlwZSkuCisvLyBUeXBlIGNoZWNraW5nIGZ1bmN0aW9uIGZvciBFbGVtZW50cywgdG8gdXNlIGJl
Zm9yZSBjYXN0aW5nCisvLyB3aXRoIGRvd25jYXN0PD4oKS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBF
eHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGUoY29uc3QgQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPEV4
cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKG5vZGUpOyB9CitpbmxpbmUgYm9vbCBpcyhB
cmdUeXBlJiBub2RlKQoreworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBl
Y3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAg
ICByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3Qg
QXJnVHlwZT46OmlzKG5vZGUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBl
LCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVj
dGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOworICAg
IHJldHVybiBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBB
cmdUeXBlPjo6aXMoKm5vZGUpOworfQogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IEVsZW1lbnRUeXBl
Q2FzdFRyYWl0czxjb25zdCBFbGVtZW50LCBjb25zdCBOb2RlPiB7CkBAIC02OTQsMTMgKzcwNywx
MyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNv
bnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSYgc291cmNlKQogewog
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzRWxlbWVudE9mVHlwZTxjb25zdCBUYXJnZXQ+KHNvdXJjZSkpOworICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3Vy
Y2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7CiB9CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFy
Z2V0KiwgVGFyZ2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCiB7CiAgICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5l
Y2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNv
dXJjZSB8fCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgVGFyZ2V0Pigqc291cmNlKSk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNvdXJjZSB8fCBpczxUYXJnZXQ+KCpzb3Vy
Y2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxz
dGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlw
ZT4oc291cmNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRl
cmF0b3IuaAppbmRleCA2MTI1Y2I4ZTBmMmUxZTVmMjUxYjU2NmY3ZmU3ZjRiM2M5NjRmOTBiLi4w
YmU0MGJmYmQyNmZmZDgzNzZmNDYwOGFhYTMzMWViZDZhYWUzNTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50
QW5jZXN0b3JzKGNvbnN0IEVsZW1lCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdl
T2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQogewotICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
RWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKICAg
ICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4o
c3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3Jz
T2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShFbGVtZW50JiBmaXJzdCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFn
ZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKIHsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkpCisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJz
dCkpCiAgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAg
ICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKaW5kZXggOWM3NzAyNDAxZDY3M2E1NDE5MWE2NjUwMjcw
ZTg1NjMxMDM2ZWQ4ZS4uNzYwM2FkNTU2YTg1ZDAwYjU4Y2YzM2U5OWMzOTUxYzQxYThhNjA3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApAQCAtMTgzLDEyICsxODMsMTggQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBmaW5k
RWxlbWVudEFuY2VzdG9yT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCiB7CiAgICAgZm9y
IChFbGVtZW50KiBhbmNlc3RvciA9IGN1cnJlbnQucGFyZW50RWxlbWVudCgpOyBhbmNlc3Rvcjsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihhbmNlc3Rvcik7CisgICAgICAgIGlmIChp
czxFbGVtZW50VHlwZT4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxF
bGVtZW50VHlwZT4oYW5jZXN0b3IpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
dGVtcGxhdGUgPD4KK2lubGluZSBFbGVtZW50KiBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCit7CisgICAgcmV0dXJuIGN1cnJlbnQucGFy
ZW50RWxlbWVudCgpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJz
YWwuaAppbmRleCBmZTY3OTgzMGQ2NTY1Y2M5MTI4ZmE5MzU3ODdjZGZmMTU3ZTYyM2YwLi4xYmJl
NTg5YWYyOTQwOWM1ODc5YTk5OGQ1NTQ2ZDkzMmNhMzQyYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50VHJhdmVyc2FsLmgKQEAgLTExNiw5ICsxMTYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OmZpcnN0Q2hpbGRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBu
b2RlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAh
aXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CisgICAgcmV0
dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgpAQCAtMTI2LDkgKzEyNiw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJy
ZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFz
dENoaWxkVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9
IGN1cnJlbnQtPmxhc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5
cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxl
bWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVy
biBkb3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KQEAgLTEzNiw5ICsxMzYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0
V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9
IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVs
ZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5v
ZGUsIGN1cnJlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUp
OworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KQEAgLTE0Niw5ICsxNDYsOSBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBjdXJyZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5cGU+
KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0xNTYsOSAr
MTU2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRU
eXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1
cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCk7
Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4o
Km5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5
cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0xNjYs
NjMgKzE2Niw2MyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxl
bWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlw
ZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2RlKiBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0KG5vZGUsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlwZT4o
bm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoY29uc3QgTm9kZSogY3Vy
cmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVu
dCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlw
ZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQog
ICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVs
ZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cyhjb25z
dCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3
aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkp
CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBzdGF5V2l0aGluKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5n
KGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPm5leHRT
aWJsaW5nKCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5v
ZGUpKQogICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVu
dFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyhj
b25zdCBOb2RlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5wcmV2aW91
c1NpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigq
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTa2lwcGlu
Z0NoaWxkcmVuKGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKGN1cnJlbnQpOwotICAgIHdoaWxlIChub2Rl
ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGls
ZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5vZGUpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlw
ZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBF
bGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
Y29uc3QgTm9kZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2Rl
KiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3VycmVudCwgc3Rh
eVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5v
ZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
bm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4o
bm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDM5NTkxMzJmY2ZhNzA0MjY1
Y2IwODhkMDcwNWQxMTBmMmEwMGFjMGUuLjI1YjBmNjBkZTIzM2YzNjlkNmFhYjEyOTcxYjA2MDQw
YWFiYWE3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmgKQEAgLTE1Myw4ICsxNTMsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KQogewogICAgIEFTU0VSVChkZXNjZW5kYW50Lmlz
RGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxFbGVtZW50VHlw
ZSo+KCZkZXNjZW5kYW50KSk7CisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkK
KyAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKICAgICBFbGVt
ZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoJm1fcm9vdCwgJmRl
c2NlbmRhbnQpOwogICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CiB9CkBAIC0yMDIsOCArMjAyLDggQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YoJm1fcm9vdCkpOwot
ICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQot
ICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZGVzY2VuZGFu
dCkpOworICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCisgICAgICAgIHJldHVy
biBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290
LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKICAgICBjb25zdCBFbGVtZW50
VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoJm1fcm9vdCwgJmRlc2Nl
bmRhbnQpOwogICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9yb290LCBuZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5k
ZXggNDViOGRiNTE4ZDg4NGU3NDQ2ZmM2MzU4ZDlmM2JmMWM5ZmIyOGJlOS4uOGM3ODFjNDU1YzUy
YTg0MDU5N2Y2ZGRiNTBkZDM0MjQzMTJiNmY2MCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
QEAgLTYzMywzNyArNjMzLDM0IEBAIHN1YiBwcmludFR5cGVIZWxwZXJzCiAgICAgICAgIH0KIAog
ICAgICAgICBteSAkY2xhc3MgPSAkcGFyc2VkVGFnc3skbmFtZX17aW50ZXJmYWNlTmFtZX07Ci0g
ICAgICAgICMgRklYTUU6IFJlbmFtZSB0aGVzZSBoZWxwZXJzIHRvIGlzPCpFbGVtZW50PigpLgot
ICAgICAgICBteSAkY2hlY2tIZWxwZXIgPSAiaXMkY2xhc3MiOwotCiAgICAgICAgIHByaW50IEYg
PDxFTkQKIGNsYXNzICRjbGFzczsKLXZvaWQgJGNoZWNrSGVscGVyKGNvbnN0ICRjbGFzcyYpOyAv
LyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGls
ZSB0aW1lLgotdm9pZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNzKik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK2NsYXNzIEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxjb25z
dCAkY2xhc3MsIEFyZ1R5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBl
JiBub2RlKSB7IHJldHVybiBjaGVja1RhZ05hbWUobm9kZSk7IH0KK3ByaXZhdGU6CiBFTkQKLSAg
ICAgICAgOwotCi0gICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIiAm
JiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7Ci0g
ICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgZm9yIEhUTUxVbmtub3duRWxlbWVudCBpZiBp
dCBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgZmFjdG9yeS4KLSAgICAgICAgICAgIHBy
aW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAmJiBlbGVt
ZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsg
fQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNIVE1MRWxlbWVudCgpICYmICRjaGVja0hlbHBlcih0b0hUTUxFbGVtZW50KG5vZGUpKTsg
fQorICAgICAgIDsKKyAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIg
JiYgJHBhcnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewor
ICAgICAgICAgICBwcmludCBGIDw8RU5ECisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNv
bnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3du
RWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFt
ZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmIGNoZWNrVGFnTmFtZSh0
b0hUTUxFbGVtZW50KG5vZGUpKTsgfQogRU5ECi0gICAgICAgICAgICA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIo
Y29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcp
OyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7
IH0KKyAgICAgICAgICAgOworICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgIHByaW50IEYgPDxF
TkQKKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGljIGJvb2wgY2hl
Y2tUYWdOYW1lKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZSgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CiBFTkQKLSAgICAgICAgICAg
IDsKLSAgICAgICAgfQotICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tI
ZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQpIHsgQVNT
RVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQotaW5saW5lIGJv
b2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUpIHsgQVNTRVJUKG5vZGUpOyByZXR1cm4g
JGNoZWNrSGVscGVyKCpub2RlKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+Ci1zdHJ1
Y3QgRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0ICRjbGFzcywgQXJnVHlwZT4gewotICAgIHN0
YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuICRjaGVja0hlbHBlcihub2RlKTsg
fQorICAgICAgICAgICA7CisgICAgICAgfQorICAgICAgIHByaW50IEYgPDxFTkQKIH07CisKKy8v
IEZJWE1FOiBSZW1vdmUgdGhlc2UgbWFjcm9zIG9uY2UgdGhlIGNvZGUgaGFzIGJlZW4gcG9ydGVk
IHRvIHVzaW5nCisvLyBpczwqRWxlbWVudD4oKS4KKyNkZWZpbmUgaXMkY2xhc3MoeCkgaXM8JGNs
YXNzPih4KQogRU5ECiAgICAgICAgIDsKICAgICAgICAgaWYgKCRwYXJhbWV0ZXJze25hbWVzcGFj
ZX0gZXEgIkhUTUwiKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238513</attachid>
            <date>2014-09-22 20:26:28 -0700</date>
            <delta_ts>2014-09-23 19:48:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137015-20140922202627.patch</filename>
            <type>text/plain</type>
            <size>18673</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczODYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIxODkyNjYyYjE2OTcx
NGNlZjAzMDQ4ZDJiODc4MWY3NWI4MWI3MC4uMGU4OTMwNGNhNDBkOWUyMTQyYWZhNDAyNDRmODU3
OWNjODYxOGIyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDE0LTA5LTIyICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlz
PEhUTUwqRWxlbWVudD4oKSBmb3IgdHlwZSBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlzPEhUTUwqRWxlbWVu
dD4oKSBmb3IgdHlwZSBjaGVja2luZyB3aGlsZSBrZWVwaW5nCisgICAgICAgIHN1cHBvcnQgZm9y
IHRoZSBsZWdhY3kgdG9IVE1MKkVsZW1lbnQoKSBmb3JtIHVudGlsIHRoZSBjb2RlIGJhc2UgaXMK
KyAgICAgICAgcG9ydGVkLgorCisgICAgICAgIHRvSFRNTCpFbGVtZW50KCkgaGVscGVycyBhcmUg
bm93IG1hY3JvcyB0byB0aGUgbmV3IGlzPEhUTUwqRWxlbWVudD4oKQorICAgICAgICB0eXBlIGNo
ZWNraW5nIGhlbHBlcnMuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBiZWhhdmlvciBjaGFu
Z2UuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnQ6OnNldFRpdGxlKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKToKKyAgICAgICAgKiBk
b20vRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29yZTo6aXMpOgorICAgICAgICAoV2ViQ29yZTo6
ZG93bmNhc3QpOgorICAgICAgICAoV2ViQ29yZTo6aXNFbGVtZW50T2ZUeXBlKTogRGVsZXRlZC4K
KyAgICAgICAgKiBkb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OmxpbmVhZ2VPZlR5cGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50SXRlcmF0b3IuaDoKKyAg
ICAgICAgKFdlYkNvcmU6OmZpbmRFbGVtZW50QW5jZXN0b3JPZlR5cGUpOgorICAgICAgICAqIGRv
bS9FbGVtZW50VHJhdmVyc2FsLmg6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVu
dFR5cGU+OjpmaXJzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJhdmVyc2Fs
PEVsZW1lbnRUeXBlPjo6bGFzdENoaWxkVGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VHJh
dmVyc2FsPEVsZW1lbnRUeXBlPjo6Zmlyc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5nKToKKyAgICAgICAg
KFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJl
bik6CisgICAgICAgICogZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oOgorICAg
ICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVt
ZW50VHlwZT46OmZyb20pOgorICAgICAgICAoV2ViQ29yZTo6VHlwZWRFbGVtZW50RGVzY2VuZGFu
dENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPjo6ZnJvbSk6CisgICAgICAgICogZG9t
L21ha2VfbmFtZXMucGw6CisgICAgICAgIChwcmludFR5cGVIZWxwZXJzKToKKwogMjAxNC0wOS0y
MiAgQ2hyaXN0b3BoZSBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgVXNlIGRv
d25jYXN0PFNWRypFbGVtZW50PigpIGluc3RlYWQgb2YgdG9TVkcqRWxlbWVudCgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAppbmRleCA0MmQwZTBkYWUyMzhkZTBhN2Y2N2EzOTM1NDFiYjY1MzI3OGEx
OGZjLi5kNzEzNTUxNDk5YTA2OWY0YWMxMDA3ZjE1ZWU3NWNhYzhjMzc0MDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5jcHAKQEAgLTE1NTEsNyArMTU1MSw3IEBAIHZvaWQgRG9jdW1lbnQ6OnNldFRp
dGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpCiAgICAgLy8gVGhlIERPTSBBUEkgaGFzIG5vIG1ldGhv
ZCBvZiBzcGVjaWZ5aW5nIGRpcmVjdGlvbiwgc28gYXNzdW1lIExUUi4KICAgICB1cGRhdGVUaXRs
ZShTdHJpbmdXaXRoRGlyZWN0aW9uKHRpdGxlLCBMVFIpKTsKIAotICAgIGlmIChtX3RpdGxlRWxl
bWVudCAmJiBpc0hUTUxUaXRsZUVsZW1lbnQobV90aXRsZUVsZW1lbnQuZ2V0KCkpKQorICAgIGlm
IChtX3RpdGxlRWxlbWVudCAmJiBpczxIVE1MVGl0bGVFbGVtZW50PihtX3RpdGxlRWxlbWVudC5n
ZXQoKSkpCiAgICAgICAgIHRvSFRNTFRpdGxlRWxlbWVudChtX3RpdGxlRWxlbWVudC5nZXQoKSkt
PnNldFRleHQodGl0bGUpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggM2UwNmVkNzBj
MjUxNWEyODU0YzU3N2EwYTYyNDdmMzNkN2IxNWVhNi4uNzQ0MWI4MjYwMGJiNjE5ZGRmZmNiZjUx
YWJjMGFkZWZhODBlODRlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjQwNSw3ICsyNDA1
LDcgQEAgYm9vbCBFbGVtZW50OjpjaGlsZFNob3VsZENyZWF0ZVJlbmRlcmVyKGNvbnN0IE5vZGUm
IGNoaWxkKSBjb25zdAogICAgIGlmIChjaGlsZC5pc1NWR0VsZW1lbnQoKSkgewogICAgICAgICBB
U1NFUlQoIWlzU1ZHRWxlbWVudCgpKTsKICAgICAgICAgY29uc3QgU1ZHRWxlbWVudCYgY2hpbGRF
bGVtZW50ID0gZG93bmNhc3Q8U1ZHRWxlbWVudD4oY2hpbGQpOwotICAgICAgICByZXR1cm4gaXNT
VkdTVkdFbGVtZW50KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVtZW50LmlzVmFsaWQoKTsKKyAg
ICAgICAgcmV0dXJuIGlzPFNWR1NWR0VsZW1lbnQ+KGNoaWxkRWxlbWVudCkgJiYgY2hpbGRFbGVt
ZW50LmlzVmFsaWQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQu
aAppbmRleCA5YzhiMzQwNTE1MTMzOWU3MTk4ZDZkYjZkOTU2NjlkY2JjMTdkZDUxLi42ZjA5N2Ew
ZDZkNDMxM2JmNTBhMjAwYjU3MjIzNGU1NzdjMDgwMjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKQEAg
LTY3NSw5ICs2NzUsMjIgQEAgc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRyYWl0cyB7CiAgICAgc3Rh
dGljIGJvb2wgaXMoQXJnVHlwZSYpOwogfTsKIAotLy8gVGhpcyBpcyBuZWVkZWQgc28gdGhhdCB0
aGUgY29tcGlsZXIgY2FuIGRlZHVjZSB0aGUgc2Vjb25kIHRlbXBsYXRlIHBhcmFtZXRlciAoQXJn
VHlwZSkuCisvLyBUeXBlIGNoZWNraW5nIGZ1bmN0aW9uIGZvciBFbGVtZW50cywgdG8gdXNlIGJl
Zm9yZSBjYXN0aW5nCisvLyB3aXRoIGRvd25jYXN0PD4oKS4KIHRlbXBsYXRlIDx0eXBlbmFtZSBF
eHBlY3RlZFR5cGUsIHR5cGVuYW1lIEFyZ1R5cGU+Ci1pbmxpbmUgYm9vbCBpc0VsZW1lbnRPZlR5
cGUoY29uc3QgQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPEV4
cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKG5vZGUpOyB9CitpbmxpbmUgYm9vbCBpcyhB
cmdUeXBlJiBub2RlKQoreworICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBl
Y3RlZFR5cGUsIEFyZ1R5cGU+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAg
ICByZXR1cm4gRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3Qg
QXJnVHlwZT46OmlzKG5vZGUpOworfQorCit0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBl
LCB0eXBlbmFtZSBBcmdUeXBlPgoraW5saW5lIGJvb2wgaXMoQXJnVHlwZSogbm9kZSkKK3sKKyAg
ICBBU1NFUlQobm9kZSk7CisgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPEV4cGVj
dGVkVHlwZSwgQXJnVHlwZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgdHlwZSBjaGVjayIpOworICAg
IHJldHVybiBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgRXhwZWN0ZWRUeXBlLCBjb25zdCBB
cmdUeXBlPjo6aXMoKm5vZGUpOworfQogCiB0ZW1wbGF0ZSA8Pgogc3RydWN0IEVsZW1lbnRUeXBl
Q2FzdFRyYWl0czxjb25zdCBFbGVtZW50LCBjb25zdCBOb2RlPiB7CkBAIC02OTQsMTMgKzcwNywx
MyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4KIGlubGluZSB0
eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNv
bnN0IFRhcmdldCYsIFRhcmdldCY+Ojp0eXBlIGRvd25jYXN0KFNvdXJjZSYgc291cmNlKQogewog
ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVl
LCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FU
SU9OKGlzRWxlbWVudE9mVHlwZTxjb25zdCBUYXJnZXQ+KHNvdXJjZSkpOworICAgIEFTU0VSVF9X
SVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlzPFRhcmdldD4oc291cmNlKSk7CiAgICAgcmV0dXJu
IHN0YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3Vy
Y2U+Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0JiwgVGFyZ2V0Jj46OnR5cGU+KHNvdXJjZSk7CiB9CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBUYXJnZXQsIHR5cGVuYW1lIFNvdXJjZT4gaW5saW5lIHR5cGVuYW1l
IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+Ojp2YWx1ZSwgY29uc3QgVGFy
Z2V0KiwgVGFyZ2V0Kj46OnR5cGUgZG93bmNhc3QoU291cmNlKiBzb3VyY2UpCiB7CiAgICAgc3Rh
dGljX2Fzc2VydCghc3RkOjppc19iYXNlX29mPFRhcmdldCwgU291cmNlPjo6dmFsdWUsICJVbm5l
Y2Vzc2FyeSBjYXN0Iik7Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNv
dXJjZSB8fCBpc0VsZW1lbnRPZlR5cGU8Y29uc3QgVGFyZ2V0Pigqc291cmNlKSk7CisgICAgQVNT
RVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04oIXNvdXJjZSB8fCBpczxUYXJnZXQ+KCpzb3Vy
Y2UpKTsKICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxz
dGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQqLCBUYXJnZXQqPjo6dHlw
ZT4oc291cmNlKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRB
bmNlc3Rvckl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRl
cmF0b3IuaAppbmRleCA2MTI1Y2I4ZTBmMmUxZTVmMjUxYjU2NmY3ZmU3ZjRiM2M5NjRmOTBiLi4w
YmU0MGJmYmQyNmZmZDgzNzZmNDYwOGFhYTMzMWViZDZhYWUzNTEyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vRWxlbWVudEFuY2VzdG9ySXRlcmF0b3IuaApAQCAtMTg0LDcgKzE4NCw3IEBAIGlu
bGluZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50PiBlbGVtZW50
QW5jZXN0b3JzKGNvbnN0IEVsZW1lCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBp
bmxpbmUgRWxlbWVudEFuY2VzdG9ySXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBlPiBsaW5lYWdl
T2ZUeXBlKEVsZW1lbnQmIGZpcnN0KQogewotICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3Qg
RWxlbWVudFR5cGU+KGZpcnN0KSkKKyAgICBpZiAoaXM8RWxlbWVudFR5cGU+KGZpcnN0KSkKICAg
ICAgICAgcmV0dXJuIEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4o
c3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAgICByZXR1cm4gYW5jZXN0b3Jz
T2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CkBAIC0xOTIsNyArMTkyLDcgQEAgaW5saW5l
IEVsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlw
ZShFbGVtZW50JiBmaXJzdCkKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGlu
ZSBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFn
ZU9mVHlwZShjb25zdCBFbGVtZW50JiBmaXJzdCkKIHsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkpCisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJz
dCkpCiAgICAgICAgIHJldHVybiBFbGVtZW50QW5jZXN0b3JDb25zdEl0ZXJhdG9yQWRhcHRlcjxF
bGVtZW50VHlwZT4oc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZmlyc3QpKTsKICAg
ICByZXR1cm4gYW5jZXN0b3JzT2ZUeXBlPEVsZW1lbnRUeXBlPihmaXJzdCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudEl0ZXJhdG9yLmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudEl0ZXJhdG9yLmgKaW5kZXggOWM3NzAyNDAxZDY3M2E1NDE5MWE2NjUwMjcw
ZTg1NjMxMDM2ZWQ4ZS4uNzYwM2FkNTU2YTg1ZDAwYjU4Y2YzM2U5OWMzOTUxYzQxYThhNjA3MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRvci5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaApAQCAtMTgzLDEyICsxODMsMTggQEAg
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBmaW5k
RWxlbWVudEFuY2VzdG9yT2ZUeXBlKGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCiB7CiAgICAgZm9y
IChFbGVtZW50KiBhbmNlc3RvciA9IGN1cnJlbnQucGFyZW50RWxlbWVudCgpOyBhbmNlc3Rvcjsg
YW5jZXN0b3IgPSBhbmNlc3Rvci0+cGFyZW50RWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChpc0Vs
ZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCphbmNlc3RvcikpCi0gICAgICAgICAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihhbmNlc3Rvcik7CisgICAgICAgIGlmIChp
czxFbGVtZW50VHlwZT4oKmFuY2VzdG9yKSkKKyAgICAgICAgICAgIHJldHVybiBkb3duY2FzdDxF
bGVtZW50VHlwZT4oYW5jZXN0b3IpOwogICAgIH0KICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAor
dGVtcGxhdGUgPD4KK2lubGluZSBFbGVtZW50KiBmaW5kRWxlbWVudEFuY2VzdG9yT2ZUeXBlPEVs
ZW1lbnQ+KGNvbnN0IEVsZW1lbnQmIGN1cnJlbnQpCit7CisgICAgcmV0dXJuIGN1cnJlbnQucGFy
ZW50RWxlbWVudCgpOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiYgRWxlbWVudEl0ZXJhdG9yPEVsZW1lbnRU
eXBlPjo6dHJhdmVyc2VBbmNlc3RvcigpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFRyYXZlcnNhbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJz
YWwuaAppbmRleCBmZTY3OTgzMGQ2NTY1Y2M5MTI4ZmE5MzU3ODdjZGZmMTU3ZTYyM2YwLi4xYmJl
NTg5YWYyOTQwOWM1ODc5YTk5OGQ1NTQ2ZDkzMmNhMzQyYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50VHJhdmVyc2FsLmgKQEAgLTExNiw5ICsxMTYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
Q3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46
OmZpcnN0Q2hpbGRUZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBOb2RlKiBu
b2RlID0gY3VycmVudC0+Zmlyc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1l
bnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAh
aXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5n
KCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CisgICAgcmV0
dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1l
IEVsZW1lbnRUeXBlPgpAQCAtMTI2LDkgKzEyNiw5IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDdXJy
ZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bGFz
dENoaWxkVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9
IGN1cnJlbnQtPmxhc3RDaGlsZCgpOwotICAgIHdoaWxlIChub2RlICYmICFpc0VsZW1lbnRPZlR5
cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAobm9kZSAmJiAhaXM8RWxl
bWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IG5vZGUtPnByZXZpb3VzU2libGluZygp
OwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVy
biBkb3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KQEAgLTEzNiw5ICsxMzYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVu
dFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OmZpcnN0
V2l0aGluVGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9
IGN1cnJlbnQtPmZpcnN0Q2hpbGQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVs
ZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KG5v
ZGUsIGN1cnJlbnQpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUp
OworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRl
IDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KQEAgLTE0Niw5ICsxNDYsOSBAQCB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50
VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZShDdXJyZW50VHlwZSogY3VycmVudCkKIHsKICAgICBO
b2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bGFzdChjdXJyZW50KTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBjdXJyZW50KTsKLSAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5cGU+
KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0xNTYsOSAr
MTU2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRU
eXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1
cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQoY3VycmVudCk7
Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4o
Km5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAg
ICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5
cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0xNjYs
NjMgKzE2Niw2MyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxl
bWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRUZW1wbGF0ZShDdXJyZW50VHlw
ZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2RlKiBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3aGlsZSAobm9k
ZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hp
bGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2Rl
VHJhdmVyc2FsOjpuZXh0KG5vZGUsIHN0YXlXaXRoaW4pOwotICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlwZT4o
bm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVt
ZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoY29uc3QgTm9kZSogY3Vy
cmVudCkKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMoY3VycmVu
dCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlw
ZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQog
ICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMobm9kZSk7Ci0gICAgcmV0dXJu
IHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVs
ZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91cyhjb25z
dCBOb2RlKiBjdXJyZW50LCBjb25zdCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUqIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhjdXJyZW50LCBzdGF5V2l0aGluKTsKLSAgICB3
aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkp
CisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5v
ZGUgPSBOb2RlVHJhdmVyc2FsOjpwcmV2aW91cyhub2RlLCBzdGF5V2l0aGluKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTaWJsaW5n
KGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPm5leHRT
aWJsaW5nKCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5v
ZGUpKQogICAgICAgICBub2RlID0gbm9kZS0+bmV4dFNpYmxpbmcoKTsKLSAgICByZXR1cm4gc3Rh
dGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVu
dFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxp
bmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46OnByZXZpb3VzU2libGluZyhj
b25zdCBOb2RlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5wcmV2aW91
c1NpYmxpbmcoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigq
bm9kZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICByZXR1
cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8
RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+
CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTa2lwcGlu
Z0NoaWxkcmVuKGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKGN1cnJlbnQpOwotICAgIHdoaWxlIChub2Rl
ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGls
ZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5vZGUpOwotICAgIHJldHVybiBzdGF0aWNf
Y2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlw
ZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBF
bGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
Y29uc3QgTm9kZSogY3VycmVudCwgY29uc3QgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2Rl
KiBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4oY3VycmVudCwgc3Rh
eVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVt
ZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5v
ZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dFNraXBwaW5nQ2hpbGRyZW4o
bm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4o
bm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9t
L1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCmluZGV4IDM5NTkxMzJmY2ZhNzA0MjY1
Y2IwODhkMDcwNWQxMTBmMmEwMGFjMGUuLjI1YjBmNjBkZTIzM2YzNjlkNmFhYjEyOTcxYjA2MDQw
YWFiYWE3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRFbGVtZW50RGVz
Y2VuZGFudEl0ZXJhdG9yLmgKQEAgLTE1Myw4ICsxNTMsOCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUg
RWxlbWVudFR5cGU+CiBpbmxpbmUgVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1l
bnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6ZnJvbShFbGVtZW50JiBkZXNjZW5kYW50KQogewogICAgIEFTU0VSVChkZXNjZW5kYW50Lmlz
RGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2Nl
bmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290LCBzdGF0aWNfY2FzdDxFbGVtZW50VHlw
ZSo+KCZkZXNjZW5kYW50KSk7CisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkK
KyAgICAgICAgcmV0dXJuIFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlw
ZT4obV9yb290LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKICAgICBFbGVt
ZW50VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoJm1fcm9vdCwgJmRl
c2NlbmRhbnQpOwogICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxl
bWVudFR5cGU+KG1fcm9vdCwgbmV4dCk7CiB9CkBAIC0yMDIsOCArMjAyLDggQEAgdGVtcGxhdGUg
PHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIFR5cGVkRWxlbWVudERlc2NlbmRhbnRDb25z
dEl0ZXJhdG9yPEVsZW1lbnRUeXBlPiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRv
ckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKGNvbnN0IEVsZW1lbnQmIGRlc2NlbmRhbnQpIGNv
bnN0CiB7CiAgICAgQVNTRVJUKGRlc2NlbmRhbnQuaXNEZXNjZW5kYW50T2YoJm1fcm9vdCkpOwot
ICAgIGlmIChpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KGRlc2NlbmRhbnQpKQot
ICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgc3RhdGljX2Nhc3Q8Y29uc3QgRWxlbWVudFR5cGUqPigmZGVzY2VuZGFu
dCkpOworICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCisgICAgICAgIHJldHVy
biBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlwZT4obV9yb290
LCBkb3duY2FzdDxFbGVtZW50VHlwZT4oJmRlc2NlbmRhbnQpKTsKICAgICBjb25zdCBFbGVtZW50
VHlwZSogbmV4dCA9IFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHQoJm1fcm9vdCwgJmRlc2Nl
bmRhbnQpOwogICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxF
bGVtZW50VHlwZT4obV9yb290LCBuZXh0KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tYWtlX25hbWVzLnBsIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwKaW5k
ZXggNDViOGRiNTE4ZDg4NGU3NDQ2ZmM2MzU4ZDlmM2JmMWM5ZmIyOGJlOS4uMGNjNTM4YjgwMDlj
NWUxYTZmYmQ1MjIxMGQ3YTRjMjFiNzRiNzVkOCAxMDA3NTUKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21ha2VfbmFtZXMucGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21ha2VfbmFtZXMucGwK
QEAgLTYzMywzNyArNjMzLDM0IEBAIHN1YiBwcmludFR5cGVIZWxwZXJzCiAgICAgICAgIH0KIAog
ICAgICAgICBteSAkY2xhc3MgPSAkcGFyc2VkVGFnc3skbmFtZX17aW50ZXJmYWNlTmFtZX07Ci0g
ICAgICAgICMgRklYTUU6IFJlbmFtZSB0aGVzZSBoZWxwZXJzIHRvIGlzPCpFbGVtZW50PigpLgot
ICAgICAgICBteSAkY2hlY2tIZWxwZXIgPSAiaXMkY2xhc3MiOwotCiAgICAgICAgIHByaW50IEYg
PDxFTkQKIGNsYXNzICRjbGFzczsKLXZvaWQgJGNoZWNrSGVscGVyKGNvbnN0ICRjbGFzcyYpOyAv
LyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNrIG9mIHR5cGUga25vd24gYXQgY29tcGls
ZSB0aW1lLgotdm9pZCAkY2hlY2tIZWxwZXIoY29uc3QgJGNsYXNzKik7IC8vIENhdGNoIHVubmVj
ZXNzYXJ5IHJ1bnRpbWUgY2hlY2sgb2YgdHlwZSBrbm93biBhdCBjb21waWxlIHRpbWUuCit0ZW1w
bGF0ZSA8dHlwZW5hbWUgQXJnVHlwZT4KK2NsYXNzIEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxjb25z
dCAkY2xhc3MsIEFyZ1R5cGU+IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBl
JiBub2RlKSB7IHJldHVybiBjaGVja1RhZ05hbWUobm9kZSk7IH0KK3ByaXZhdGU6CiBFTkQKLSAg
ICAgICAgOwotCi0gICAgICAgIGlmICgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9IGVxICJIVE1MIiAm
JiAkcGFyc2VkVGFnc3skbmFtZX17d3JhcHBlck9ubHlJZk1lZGlhSXNBdmFpbGFibGV9KSB7Ci0g
ICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgZm9yIEhUTUxVbmtub3duRWxlbWVudCBpZiBp
dCBtaWdodCBoYXZlIGJlZW4gY3JlYXRlZCBieSB0aGUgZmFjdG9yeS4KLSAgICAgICAgICAgIHBy
aW50IEYgPDxFTkQKLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25zdCBIVE1MRWxlbWVudCYg
ZWxlbWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAmJiBlbGVt
ZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsg
fQotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5v
ZGUuaXNIVE1MRWxlbWVudCgpICYmICRjaGVja0hlbHBlcih0b0hUTUxFbGVtZW50KG5vZGUpKTsg
fQorICAgICAgIDsKKyAgICAgICBpZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIg
JiYgJHBhcnNlZFRhZ3N7JG5hbWV9e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewor
ICAgICAgICAgICBwcmludCBGIDw8RU5ECisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNv
bnN0IEhUTUxFbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiAhZWxlbWVudC5pc0hUTUxVbmtub3du
RWxlbWVudCgpICYmIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFt
ZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGljIGJvb2wgY2hlY2tUYWdOYW1lKGNvbnN0IE5v
ZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaXNIVE1MRWxlbWVudCgpICYmIGNoZWNrVGFnTmFtZSh0
b0hUTUxFbGVtZW50KG5vZGUpKTsgfQogRU5ECi0gICAgICAgICAgICA7Ci0gICAgICAgIH0gZWxz
ZSB7Ci0gICAgICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIo
Y29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVs
ZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcp
OyB9Ci1pbmxpbmUgYm9vbCAkY2hlY2tIZWxwZXIoY29uc3QgTm9kZSYgbm9kZSkgeyByZXR1cm4g
bm9kZS5oYXNUYWdOYW1lKCRwYXJhbWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7
IH0KKyAgICAgICAgICAgOworICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgIHByaW50IEYgPDxF
TkQKKyAgICBzdGF0aWMgYm9vbCBjaGVja1RhZ05hbWUoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNw
YWNlfUVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuIGVsZW1lbnQuaGFzVGFnTmFtZSgkcGFyYW1l
dGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgc3RhdGljIGJvb2wgY2hl
Y2tUYWdOYW1lKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZSgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CiBFTkQKLSAgICAgICAgICAg
IDsKLSAgICAgICAgfQotICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUgYm9vbCAkY2hlY2tI
ZWxwZXIoY29uc3QgJHBhcmFtZXRlcnN7bmFtZXNwYWNlfUVsZW1lbnQqIGVsZW1lbnQpIHsgQVNT
RVJUKGVsZW1lbnQpOyByZXR1cm4gJGNoZWNrSGVscGVyKCplbGVtZW50KTsgfQotaW5saW5lIGJv
b2wgJGNoZWNrSGVscGVyKGNvbnN0IE5vZGUqIG5vZGUpIHsgQVNTRVJUKG5vZGUpOyByZXR1cm4g
JGNoZWNrSGVscGVyKCpub2RlKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5cGU+Ci1zdHJ1
Y3QgRWxlbWVudFR5cGVDYXN0VHJhaXRzPGNvbnN0ICRjbGFzcywgQXJnVHlwZT4gewotICAgIHN0
YXRpYyBib29sIGlzKEFyZ1R5cGUmIG5vZGUpIHsgcmV0dXJuICRjaGVja0hlbHBlcihub2RlKTsg
fQorICAgICAgICAgICA7CisgICAgICAgfQorICAgICAgIHByaW50IEYgPDxFTkQKIH07CisKKy8v
IEZJWE1FOiBSZW1vdmUgdGhlc2UgbWFjcm9zIG9uY2UgdGhlIGNvZGUgaGFzIGJlZW4gcG9ydGVk
IHRvIHVzaW5nCisvLyBpczwqRWxlbWVudD4oKS4KKyNkZWZpbmUgaXMkY2xhc3MoeCkgV2ViQ29y
ZTo6aXM8V2ViQ29yZTo6JGNsYXNzPih4KQogRU5ECiAgICAgICAgIDsKICAgICAgICAgaWYgKCRw
YXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>238580</attachid>
            <date>2014-09-23 19:48:50 -0700</date>
            <delta_ts>2014-09-23 20:31:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-137015-20140923194849.patch</filename>
            <type>text/plain</type>
            <size>18684</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTczOTA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmRlZjg1MzZmZjAzYTQ3
NmFiYmI3MjlmMGRiMDA2MzFkMTQ5NTFiOS4uZjY2Y2U0MTNjN2QwNTM0Mzc0YjJlZjEwYjdkM2Iy
NmQ4ZmYzMGYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQ5IEBACiAyMDE0LTA5LTIzICBDaHJp
cyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKKyAgICAgICAgQWRkIHN1cHBvcnQgZm9yIGlz
PEhUTUwqRWxlbWVudD4oKSBmb3IgdHlwZSBjaGVja2luZworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTM3MDE1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QmVuamFtaW4gUG91bGFpbi4KKworICAgICAgICBBZGQgc3VwcG9ydCBmb3IgaXM8SFRNTCpFbGVt
ZW50PigpIGZvciB0eXBlIGNoZWNraW5nIHdoaWxlIGtlZXBpbmcKKyAgICAgICAgc3VwcG9ydCBm
b3IgdGhlIGxlZ2FjeSB0b0hUTUwqRWxlbWVudCgpIGZvcm0gdW50aWwgdGhlIGNvZGUgYmFzZSBp
cworICAgICAgICBwb3J0ZWQuCisKKyAgICAgICAgdG9IVE1MKkVsZW1lbnQoKSBoZWxwZXJzIGFy
ZSBub3cgbWFjcm9zIHRvIHRoZSBuZXcgaXM8SFRNTCpFbGVtZW50PigpCisgICAgICAgIHR5cGUg
Y2hlY2tpbmcgaGVscGVycy4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNo
YW5nZS4KKworICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudDo6c2V0VGl0bGUpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIpOgorICAgICAgICAq
IGRvbS9FbGVtZW50Lmg6CisgICAgICAgIChXZWJDb3JlOjppcyk6CisgICAgICAgIChXZWJDb3Jl
Ojpkb3duY2FzdCk6CisgICAgICAgIChXZWJDb3JlOjppc0VsZW1lbnRPZlR5cGUpOiBEZWxldGVk
LgorICAgICAgICAqIGRvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oOgorICAgICAgICAoV2Vi
Q29yZTo6bGluZWFnZU9mVHlwZSk6CisgICAgICAgICogZG9tL0VsZW1lbnRJdGVyYXRvci5oOgor
ICAgICAgICAoV2ViQ29yZTo6ZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZSk6CisgICAgICAgICog
ZG9tL0VsZW1lbnRUcmF2ZXJzYWwuaDoKKyAgICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVt
ZW50VHlwZT46OmZpcnN0Q2hpbGRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpsYXN0Q2hpbGRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
cmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RXaXRoaW5UZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6bmV4dFNpYmxpbmcpOgorICAgICAg
ICAoV2ViQ29yZTo6VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXNTaWJsaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRyYXZlcnNhbDxFbGVtZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxk
cmVuKToKKyAgICAgICAgKiBkb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmg6Cisg
ICAgICAgIChXZWJDb3JlOjpUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3JBZGFwdGVyPEVs
ZW1lbnRUeXBlPjo6ZnJvbSk6CisgICAgICAgIChXZWJDb3JlOjpUeXBlZEVsZW1lbnREZXNjZW5k
YW50Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+Ojpmcm9tKToKKyAgICAgICAgKiBk
b20vbWFrZV9uYW1lcy5wbDoKKyAgICAgICAgKHByaW50VHlwZUhlbHBlcnMpOgorCisyMDE0LTA5
LTIzICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgSGF2ZSBDU1Mg
Y2xhc3NlcycgbWV0aG9kcyByZXR1cm4gbW9yZSByZWZlcmVuY2VzCiAgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzcwMzYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dC5jcHAKaW5kZXggZDdkZWRhZmMwMmE3OTYyNDU2OWJlZGM1ZjUzNDhkZDEzNzg5ZDMyOC4uYTNj
ZjUyOWU5YzQzZDZkYjQ4MzZhN2JhYmYzYjM5NTZlMDYxMTAxZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1l
bnQuY3BwCkBAIC0xNTUxLDcgKzE1NTEsNyBAQCB2b2lkIERvY3VtZW50OjpzZXRUaXRsZShjb25z
dCBTdHJpbmcmIHRpdGxlKQogICAgIC8vIFRoZSBET00gQVBJIGhhcyBubyBtZXRob2Qgb2Ygc3Bl
Y2lmeWluZyBkaXJlY3Rpb24sIHNvIGFzc3VtZSBMVFIuCiAgICAgdXBkYXRlVGl0bGUoU3RyaW5n
V2l0aERpcmVjdGlvbih0aXRsZSwgTFRSKSk7CiAKLSAgICBpZiAobV90aXRsZUVsZW1lbnQgJiYg
aXNIVE1MVGl0bGVFbGVtZW50KCptX3RpdGxlRWxlbWVudCkpCisgICAgaWYgKG1fdGl0bGVFbGVt
ZW50ICYmIGlzPEhUTUxUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkpCiAgICAgICAgIGRv
d25jYXN0PEhUTUxUaXRsZUVsZW1lbnQ+KCptX3RpdGxlRWxlbWVudCkuc2V0VGV4dCh0aXRsZSk7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCAwYzU3ZjkxMjAwNjQ3Yjg3NTVhNzlkOWY5
YWMwODZlMmRkOGI1N2RhLi43MjQyZTViM2M0ZTRhMmVmMTYxZDFiZTc4ODdlMTVkY2I5YzNlYmZi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0yNDA1LDcgKzI0MDUsNyBAQCBib29sIEVsZW1l
bnQ6OmNoaWxkU2hvdWxkQ3JlYXRlUmVuZGVyZXIoY29uc3QgTm9kZSYgY2hpbGQpIGNvbnN0CiAg
ICAgaWYgKGNoaWxkLmlzU1ZHRWxlbWVudCgpKSB7CiAgICAgICAgIEFTU0VSVCghaXNTVkdFbGVt
ZW50KCkpOwogICAgICAgICBjb25zdCBTVkdFbGVtZW50JiBjaGlsZEVsZW1lbnQgPSBkb3duY2Fz
dDxTVkdFbGVtZW50PihjaGlsZCk7Ci0gICAgICAgIHJldHVybiBpc1NWR1NWR0VsZW1lbnQoY2hp
bGRFbGVtZW50KSAmJiBjaGlsZEVsZW1lbnQuaXNWYWxpZCgpOworICAgICAgICByZXR1cm4gaXM8
U1ZHU1ZHRWxlbWVudD4oY2hpbGRFbGVtZW50KSAmJiBjaGlsZEVsZW1lbnQuaXNWYWxpZCgpOwog
ICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGY2NDIxNDlm
NTQzYmMxZDkyZmY3MjU2MzcwYzM5YWViZGMyZGU3NGYuLjE2ZWQ2MzIyYzc1YzA4ZWM2YTdjMTBi
MzNiNThmNTRlNDY3ZDg4OTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNjc1LDkgKzY3NSwyMSBA
QCBzdHJ1Y3QgRWxlbWVudFR5cGVDYXN0VHJhaXRzIHsKICAgICBzdGF0aWMgYm9vbCBpcyhBcmdU
eXBlJik7CiB9OwogCi0vLyBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IHRoZSBjb21waWxlciBjYW4g
ZGVkdWNlIHRoZSBzZWNvbmQgdGVtcGxhdGUgcGFyYW1ldGVyIChBcmdUeXBlKS4KKy8vIFR5cGUg
Y2hlY2tpbmcgZnVuY3Rpb24gZm9yIEVsZW1lbnRzLCB0byB1c2UgYmVmb3JlIGNhc3Rpbmcgd2l0
aCBkb3duY2FzdDw+KCkuCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRXhwZWN0ZWRUeXBlLCB0eXBlbmFt
ZSBBcmdUeXBlPgotaW5saW5lIGJvb2wgaXNFbGVtZW50T2ZUeXBlKGNvbnN0IEFyZ1R5cGUmIG5v
ZGUpIHsgcmV0dXJuIEVsZW1lbnRUeXBlQ2FzdFRyYWl0czxFeHBlY3RlZFR5cGUsIGNvbnN0IEFy
Z1R5cGU+Ojppcyhub2RlKTsgfQoraW5saW5lIGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkKK3sKKyAg
ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX2Jhc2Vfb2Y8RXhwZWN0ZWRUeXBlLCBBcmdUeXBlPjo6
dmFsdWUsICJVbm5lY2Vzc2FyeSB0eXBlIGNoZWNrIik7CisgICAgcmV0dXJuIEVsZW1lbnRUeXBl
Q2FzdFRyYWl0czxjb25zdCBFeHBlY3RlZFR5cGUsIGNvbnN0IEFyZ1R5cGU+Ojppcyhub2RlKTsK
K30KKwordGVtcGxhdGUgPHR5cGVuYW1lIEV4cGVjdGVkVHlwZSwgdHlwZW5hbWUgQXJnVHlwZT4K
K2lubGluZSBib29sIGlzKEFyZ1R5cGUqIG5vZGUpCit7CisgICAgQVNTRVJUKG5vZGUpOworICAg
IHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxFeHBlY3RlZFR5cGUsIEFyZ1R5cGU+Ojp2
YWx1ZSwgIlVubmVjZXNzYXJ5IHR5cGUgY2hlY2siKTsKKyAgICByZXR1cm4gRWxlbWVudFR5cGVD
YXN0VHJhaXRzPGNvbnN0IEV4cGVjdGVkVHlwZSwgY29uc3QgQXJnVHlwZT46OmlzKCpub2RlKTsK
K30KIAogdGVtcGxhdGUgPD4KIHN0cnVjdCBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgRWxl
bWVudCwgY29uc3QgTm9kZT4gewpAQCAtNjk0LDEzICs3MDYsMTMgQEAgdGVtcGxhdGU8dHlwZW5h
bWUgVGFyZ2V0LCB0eXBlbmFtZSBTb3VyY2U+CiBpbmxpbmUgdHlwZW5hbWUgc3RkOjpjb25kaXRp
b25hbDxzdGQ6OmlzX2NvbnN0PFNvdXJjZT46OnZhbHVlLCBjb25zdCBUYXJnZXQmLCBUYXJnZXQm
Pjo6dHlwZSBkb3duY2FzdChTb3VyY2UmIHNvdXJjZSkKIHsKICAgICBzdGF0aWNfYXNzZXJ0KCFz
dGQ6OmlzX2Jhc2Vfb2Y8VGFyZ2V0LCBTb3VyY2U+Ojp2YWx1ZSwgIlVubmVjZXNzYXJ5IGNhc3Qi
KTsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpc0VsZW1lbnRPZlR5cGU8
Y29uc3QgVGFyZ2V0Pihzb3VyY2UpKTsKKyAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihpczxUYXJnZXQ+KHNvdXJjZSkpOwogICAgIHJldHVybiBzdGF0aWNfY2FzdDx0eXBlbmFt
ZSBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRh
cmdldCYsIFRhcmdldCY+Ojp0eXBlPihzb3VyY2UpOwogfQogdGVtcGxhdGU8dHlwZW5hbWUgVGFy
Z2V0LCB0eXBlbmFtZSBTb3VyY2U+IGlubGluZSB0eXBlbmFtZSBzdGQ6OmNvbmRpdGlvbmFsPHN0
ZDo6aXNfY29uc3Q8U291cmNlPjo6dmFsdWUsIGNvbnN0IFRhcmdldCosIFRhcmdldCo+Ojp0eXBl
IGRvd25jYXN0KFNvdXJjZSogc291cmNlKQogewogICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNf
YmFzZV9vZjxUYXJnZXQsIFNvdXJjZT46OnZhbHVlLCAiVW5uZWNlc3NhcnkgY2FzdCIpOwotICAg
IEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCFzb3VyY2UgfHwgaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IFRhcmdldD4oKnNvdXJjZSkpOworICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lN
UExJQ0FUSU9OKCFzb3VyY2UgfHwgaXM8VGFyZ2V0Pigqc291cmNlKSk7CiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PHR5cGVuYW1lIHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19jb25zdDxTb3VyY2U+
Ojp2YWx1ZSwgY29uc3QgVGFyZ2V0KiwgVGFyZ2V0Kj46OnR5cGU+KHNvdXJjZSk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50QW5jZXN0b3JJdGVyYXRvci5oIGIv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNlc3Rvckl0ZXJhdG9yLmgKaW5kZXggNjEyNWNi
OGUwZjJlMWU1ZjI1MWI1NjZmN2ZlN2Y0YjNjOTY0ZjkwYi4uMGJlNDBiZmJkMjZmZmQ4Mzc2ZjQ2
MDhhYWEzMzFlYmQ2YWFlMzUxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRBbmNlc3Rvckl0ZXJhdG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRBbmNl
c3Rvckl0ZXJhdG9yLmgKQEAgLTE4NCw3ICsxODQsNyBAQCBpbmxpbmUgRWxlbWVudEFuY2VzdG9y
Q29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudD4gZWxlbWVudEFuY2VzdG9ycyhjb25zdCBFbGVt
ZQogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRBbmNlc3Rv
ckl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT4gbGluZWFnZU9mVHlwZShFbGVtZW50JiBmaXJz
dCkKIHsKLSAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBlPihmaXJzdCkp
CisgICAgaWYgKGlzPEVsZW1lbnRUeXBlPihmaXJzdCkpCiAgICAgICAgIHJldHVybiBFbGVtZW50
QW5jZXN0b3JJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19jYXN0PEVsZW1lbnRU
eXBlKj4oJmZpcnN0KSk7CiAgICAgcmV0dXJuIGFuY2VzdG9yc09mVHlwZTxFbGVtZW50VHlwZT4o
Zmlyc3QpOwogfQpAQCAtMTkyLDcgKzE5Miw3IEBAIGlubGluZSBFbGVtZW50QW5jZXN0b3JJdGVy
YXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoRWxlbWVudCYgZmlyc3QpCiB0
ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudEFuY2VzdG9yQ29u
c3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+IGxpbmVhZ2VPZlR5cGUoY29uc3QgRWxlbWVu
dCYgZmlyc3QpCiB7Ci0gICAgaWYgKGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4o
Zmlyc3QpKQorICAgIGlmIChpczxFbGVtZW50VHlwZT4oZmlyc3QpKQogICAgICAgICByZXR1cm4g
RWxlbWVudEFuY2VzdG9yQ29uc3RJdGVyYXRvckFkYXB0ZXI8RWxlbWVudFR5cGU+KHN0YXRpY19j
YXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmZpcnN0KSk7CiAgICAgcmV0dXJuIGFuY2VzdG9yc09m
VHlwZTxFbGVtZW50VHlwZT4oZmlyc3QpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0VsZW1lbnRJdGVyYXRvci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRJdGVyYXRv
ci5oCmluZGV4IDljNzcwMjQwMWQ2NzNhNTQxOTFhNjY1MDI3MGU4NTYzMTAzNmVkOGUuLjc2MDNh
ZDU1NmE4NWQwMGI1OGNmMzNlOTljMzk1MWM0MWE4YTYwNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50SXRlcmF0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxl
bWVudEl0ZXJhdG9yLmgKQEAgLTE4MywxMiArMTgzLDE4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBF
bGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlw
ZShjb25zdCBFbGVtZW50JiBjdXJyZW50KQogewogICAgIGZvciAoRWxlbWVudCogYW5jZXN0b3Ig
PSBjdXJyZW50LnBhcmVudEVsZW1lbnQoKTsgYW5jZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3It
PnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICBpZiAoaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVs
ZW1lbnRUeXBlPigqYW5jZXN0b3IpKQotICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEVs
ZW1lbnRUeXBlKj4oYW5jZXN0b3IpOworICAgICAgICBpZiAoaXM8RWxlbWVudFR5cGU+KCphbmNl
c3RvcikpCisgICAgICAgICAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5cGU+KGFuY2VzdG9y
KTsKICAgICB9CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKK3RlbXBsYXRlIDw+CitpbmxpbmUg
RWxlbWVudCogZmluZEVsZW1lbnRBbmNlc3Rvck9mVHlwZTxFbGVtZW50Pihjb25zdCBFbGVtZW50
JiBjdXJyZW50KQoreworICAgIHJldHVybiBjdXJyZW50LnBhcmVudEVsZW1lbnQoKTsKK30KKwog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRJdGVyYXRvcjxF
bGVtZW50VHlwZT4mIEVsZW1lbnRJdGVyYXRvcjxFbGVtZW50VHlwZT46OnRyYXZlcnNlQW5jZXN0
b3IoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRUcmF2ZXJzYWwu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50VHJhdmVyc2FsLmgKaW5kZXggZmU2Nzk4MzBk
NjU2NWNjOTEyOGZhOTM1Nzg3Y2RmZjE1N2U2MjNmMC4uMWJiZTU4OWFmMjk0MDljNTg3OWE5OThk
NTU0NmQ5MzJjYTM0MmI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRU
cmF2ZXJzYWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFRyYXZlcnNhbC5oCkBA
IC0xMTYsOSArMTE2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5l
IEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdENoaWxkVGVtcGxhdGUo
Q3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IGN1cnJlbnQtPmZpcnN0
Q2hpbGQoKTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1l
bnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9k
ZSkpCiAgICAgICAgIG5vZGUgPSBub2RlLT5uZXh0U2libGluZygpOwotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50
VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KQEAgLTEy
Niw5ICsxMjYsOSBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ3VycmVudFR5cGU+CiBpbmxpbmUgRWxl
bWVudFR5cGUqIFRyYXZlcnNhbDxFbGVtZW50VHlwZT46Omxhc3RDaGlsZFRlbXBsYXRlKEN1cnJl
bnRUeXBlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5sYXN0Q2hpbGQo
KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBlPGNvbnN0IEVsZW1lbnRUeXBl
Pigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1lbnRUeXBlPigqbm9kZSkpCiAg
ICAgICAgIG5vZGUgPSBub2RlLT5wcmV2aW91c1NpYmxpbmcoKTsKLSAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5
cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CkBAIC0xMzYs
OSArMTM2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1l
bnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpmaXJzdFdpdGhpblRlbXBsYXRlKEN1cnJl
bnRUeXBlKiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5maXJzdENoaWxk
KCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlw
ZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQog
ICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2RlLCBjdXJyZW50KTsKLSAgICBy
ZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2RlKTsKKyAgICByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5
cGU+CkBAIC0xNDYsOSArMTQ2LDkgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgog
aW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpsYXN0V2l0aGluVGVt
cGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Omxhc3QoY3VycmVudCk7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVt
ZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6cHJldmlvdXMo
bm9kZSwgY3VycmVudCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4obm9k
ZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVtcGxh
dGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAtMTU2LDkgKzE1Niw5IEBAIHRlbXBsYXRlIDx0
eXBlbmFtZSBDdXJyZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSogVHJhdmVyc2FsPEVsZW1l
bnRUeXBlPjo6bmV4dFRlbXBsYXRlKEN1cnJlbnRUeXBlKiBjdXJyZW50KQogewogICAgIE5vZGUq
IG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0KGN1cnJlbnQpOwotICAgIHdoaWxlIChub2RlICYm
ICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGlsZSAo
bm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVUcmF2
ZXJzYWw6Om5leHQobm9kZSk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBlKj4o
bm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAogdGVt
cGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgpAQCAtMTY2LDYzICsxNjYsNjMgQEAgdGVtcGxh
dGUgPHR5cGVuYW1lIEN1cnJlbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2ZXJzYWw8
RWxlbWVudFR5cGU+OjpuZXh0VGVtcGxhdGUoQ3VycmVudFR5cGUqIGN1cnJlbnQsIGNvbnN0IE5v
ZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJzYWw6Om5leHQo
Y3VycmVudCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlw
ZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYmICFpczxFbGVt
ZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6bmV4dChub2Rl
LCBzdGF5V2l0aGluKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihub2Rl
KTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1wbGF0
ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNhbDxF
bGVtZW50VHlwZT46OnByZXZpb3VzKGNvbnN0IE5vZGUqIGN1cnJlbnQpCiB7CiAgICAgTm9kZSog
bm9kZSA9IE5vZGVUcmF2ZXJzYWw6OnByZXZpb3VzKGN1cnJlbnQpOwotICAgIHdoaWxlIChub2Rl
ICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAgICB3aGls
ZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9IE5vZGVU
cmF2ZXJzYWw6OnByZXZpb3VzKG5vZGUpOwotICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50
VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBkb3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9
CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlwZT4KIGlubGluZSBFbGVtZW50VHlwZSog
VHJhdmVyc2FsPEVsZW1lbnRUeXBlPjo6cHJldmlvdXMoY29uc3QgTm9kZSogY3VycmVudCwgY29u
c3QgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2RlKiBub2RlID0gTm9kZVRyYXZlcnNhbDo6
cHJldmlvdXMoY3VycmVudCwgc3RheVdpdGhpbik7Ci0gICAgd2hpbGUgKG5vZGUgJiYgIWlzRWxl
bWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQorICAgIHdoaWxlIChub2RlICYm
ICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2RlID0gTm9kZVRyYXZlcnNhbDo6
cHJldmlvdXMobm9kZSwgc3RheVdpdGhpbik7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRUeXBlKj4obm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBl
KiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2libGluZyhjb25zdCBOb2RlKiBjdXJyZW50
KQogewogICAgIE5vZGUqIG5vZGUgPSBjdXJyZW50LT5uZXh0U2libGluZygpOwotICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAg
ICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9
IG5vZGUtPm5leHRTaWJsaW5nKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1lbnRUeXBl
Kj4obm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsKIH0KIAog
dGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBlKiBUcmF2
ZXJzYWw8RWxlbWVudFR5cGU+OjpwcmV2aW91c1NpYmxpbmcoY29uc3QgTm9kZSogY3VycmVudCkK
IHsKICAgICBOb2RlKiBub2RlID0gY3VycmVudC0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgd2hp
bGUgKG5vZGUgJiYgIWlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oKm5vZGUpKQor
ICAgIHdoaWxlIChub2RlICYmICFpczxFbGVtZW50VHlwZT4oKm5vZGUpKQogICAgICAgICBub2Rl
ID0gbm9kZS0+cHJldmlvdXNTaWJsaW5nKCk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEVsZW1l
bnRUeXBlKj4obm9kZSk7CisgICAgcmV0dXJuIGRvd25jYXN0PEVsZW1lbnRUeXBlPihub2RlKTsK
IH0KIAogdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5lIEVsZW1lbnRUeXBl
KiBUcmF2ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0U2tpcHBpbmdDaGlsZHJlbihjb25zdCBOb2Rl
KiBjdXJyZW50KQogewogICAgIE5vZGUqIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBp
bmdDaGlsZHJlbihjdXJyZW50KTsKLSAgICB3aGlsZSAobm9kZSAmJiAhaXNFbGVtZW50T2ZUeXBl
PGNvbnN0IEVsZW1lbnRUeXBlPigqbm9kZSkpCisgICAgd2hpbGUgKG5vZGUgJiYgIWlzPEVsZW1l
bnRUeXBlPigqbm9kZSkpCiAgICAgICAgIG5vZGUgPSBOb2RlVHJhdmVyc2FsOjpuZXh0U2tpcHBp
bmdDaGlsZHJlbihub2RlKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPihu
b2RlKTsKKyAgICByZXR1cm4gZG93bmNhc3Q8RWxlbWVudFR5cGU+KG5vZGUpOwogfQogCiB0ZW1w
bGF0ZSA8dHlwZW5hbWUgRWxlbWVudFR5cGU+CiBpbmxpbmUgRWxlbWVudFR5cGUqIFRyYXZlcnNh
bDxFbGVtZW50VHlwZT46Om5leHRTa2lwcGluZ0NoaWxkcmVuKGNvbnN0IE5vZGUqIGN1cnJlbnQs
IGNvbnN0IE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogbm9kZSA9IE5vZGVUcmF2ZXJz
YWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKGN1cnJlbnQsIHN0YXlXaXRoaW4pOwotICAgIHdoaWxl
IChub2RlICYmICFpc0VsZW1lbnRPZlR5cGU8Y29uc3QgRWxlbWVudFR5cGU+KCpub2RlKSkKKyAg
ICB3aGlsZSAobm9kZSAmJiAhaXM8RWxlbWVudFR5cGU+KCpub2RlKSkKICAgICAgICAgbm9kZSA9
IE5vZGVUcmF2ZXJzYWw6Om5leHRTa2lwcGluZ0NoaWxkcmVuKG5vZGUsIHN0YXlXaXRoaW4pOwot
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxFbGVtZW50VHlwZSo+KG5vZGUpOworICAgIHJldHVybiBk
b3duY2FzdDxFbGVtZW50VHlwZT4obm9kZSk7CiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVt
ZW50VHlwZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNj
ZW5kYW50SXRlcmF0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9UeXBlZEVsZW1lbnREZXNjZW5k
YW50SXRlcmF0b3IuaAppbmRleCAzOTU5MTMyZmNmYTcwNDI2NWNiMDg4ZDA3MDVkMTEwZjJhMDBh
YzBlLi4yNWIwZjYwZGUyMzNmMzY5ZDZhYWIxMjk3MWIwNjA0MGFhYmFhNzcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvZG9tL1R5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvci5oCkBA
IC0xNTMsOCArMTUzLDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIEVsZW1lbnRUeXBlPgogaW5saW5l
IFR5cGVkRWxlbWVudERlc2NlbmRhbnRJdGVyYXRvcjxFbGVtZW50VHlwZT4gVHlwZWRFbGVtZW50
RGVzY2VuZGFudEl0ZXJhdG9yQWRhcHRlcjxFbGVtZW50VHlwZT46OmZyb20oRWxlbWVudCYgZGVz
Y2VuZGFudCkKIHsKICAgICBBU1NFUlQoZGVzY2VuZGFudC5pc0Rlc2NlbmRhbnRPZigmbV9yb290
KSk7Ci0gICAgaWYgKGlzRWxlbWVudE9mVHlwZTxjb25zdCBFbGVtZW50VHlwZT4oZGVzY2VuZGFu
dCkpCi0gICAgICAgIHJldHVybiBUeXBlZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVu
dFR5cGU+KG1fcm9vdCwgc3RhdGljX2Nhc3Q8RWxlbWVudFR5cGUqPigmZGVzY2VuZGFudCkpOwor
ICAgIGlmIChpczxFbGVtZW50VHlwZT4oZGVzY2VuZGFudCkpCisgICAgICAgIHJldHVybiBUeXBl
ZEVsZW1lbnREZXNjZW5kYW50SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8
RWxlbWVudFR5cGU+KCZkZXNjZW5kYW50KSk7CiAgICAgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2
ZXJzYWw8RWxlbWVudFR5cGU+OjpuZXh0KCZtX3Jvb3QsICZkZXNjZW5kYW50KTsKICAgICByZXR1
cm4gVHlwZWRFbGVtZW50RGVzY2VuZGFudEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIG5l
eHQpOwogfQpAQCAtMjAyLDggKzIwMiw4IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBFbGVtZW50VHlw
ZT4KIGlubGluZSBUeXBlZEVsZW1lbnREZXNjZW5kYW50Q29uc3RJdGVyYXRvcjxFbGVtZW50VHlw
ZT4gVHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3JBZGFwdGVyPEVsZW1lbnRUeXBl
Pjo6ZnJvbShjb25zdCBFbGVtZW50JiBkZXNjZW5kYW50KSBjb25zdAogewogICAgIEFTU0VSVChk
ZXNjZW5kYW50LmlzRGVzY2VuZGFudE9mKCZtX3Jvb3QpKTsKLSAgICBpZiAoaXNFbGVtZW50T2ZU
eXBlPGNvbnN0IEVsZW1lbnRUeXBlPihkZXNjZW5kYW50KSkKLSAgICAgICAgcmV0dXJuIFR5cGVk
RWxlbWVudERlc2NlbmRhbnRDb25zdEl0ZXJhdG9yPEVsZW1lbnRUeXBlPihtX3Jvb3QsIHN0YXRp
Y19jYXN0PGNvbnN0IEVsZW1lbnRUeXBlKj4oJmRlc2NlbmRhbnQpKTsKKyAgICBpZiAoaXM8RWxl
bWVudFR5cGU+KGRlc2NlbmRhbnQpKQorICAgICAgICByZXR1cm4gVHlwZWRFbGVtZW50RGVzY2Vu
ZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwgZG93bmNhc3Q8RWxlbWVudFR5
cGU+KCZkZXNjZW5kYW50KSk7CiAgICAgY29uc3QgRWxlbWVudFR5cGUqIG5leHQgPSBUcmF2ZXJz
YWw8RWxlbWVudFR5cGU+OjpuZXh0KCZtX3Jvb3QsICZkZXNjZW5kYW50KTsKICAgICByZXR1cm4g
VHlwZWRFbGVtZW50RGVzY2VuZGFudENvbnN0SXRlcmF0b3I8RWxlbWVudFR5cGU+KG1fcm9vdCwg
bmV4dCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWFrZV9uYW1lcy5wbCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCmluZGV4IDRkZGVkYzE3Yzg5MjlmODg4
YzJlY2ViZDcyNmNkNmJlZDgyNTg0M2YuLmQ4ZjkwY2QzYWYzNmI0NWU3NTI0ZjY4M2E4OGE0ZjA2
ZjM2ZjhlNWMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tYWtlX25hbWVzLnBsCkBAIC02MzMsMzcgKzYzMywzNCBA
QCBzdWIgcHJpbnRUeXBlSGVscGVycwogICAgICAgICB9CiAKICAgICAgICAgbXkgJGNsYXNzID0g
JHBhcnNlZFRhZ3N7JG5hbWV9e2ludGVyZmFjZU5hbWV9OwotICAgICAgICAjIEZJWE1FOiBSZW5h
bWUgdGhlc2UgaGVscGVycyB0byBpczwqRWxlbWVudD4oKS4KLSAgICAgICAgbXkgJGNoZWNrSGVs
cGVyID0gImlzJGNsYXNzIjsKLQogICAgICAgICBwcmludCBGIDw8RU5ECiBjbGFzcyAkY2xhc3M7
Ci12b2lkICRjaGVja0hlbHBlcihjb25zdCAkY2xhc3MmKTsgLy8gQ2F0Y2ggdW5uZWNlc3Nhcnkg
cnVudGltZSBjaGVjayBvZiB0eXBlIGtub3duIGF0IGNvbXBpbGUgdGltZS4KLXZvaWQgJGNoZWNr
SGVscGVyKGNvbnN0ICRjbGFzcyopOyAvLyBDYXRjaCB1bm5lY2Vzc2FyeSBydW50aW1lIGNoZWNr
IG9mIHR5cGUga25vd24gYXQgY29tcGlsZSB0aW1lLgordGVtcGxhdGUgPHR5cGVuYW1lIEFyZ1R5
cGU+CitjbGFzcyBFbGVtZW50VHlwZUNhc3RUcmFpdHM8Y29uc3QgJGNsYXNzLCBBcmdUeXBlPiB7
CitwdWJsaWM6CisgICAgc3RhdGljIGJvb2wgaXMoQXJnVHlwZSYgbm9kZSkgeyByZXR1cm4gY2hl
Y2tUYWdOYW1lKG5vZGUpOyB9Citwcml2YXRlOgogRU5ECi0gICAgICAgIDsKLQotICAgICAgICBp
ZiAoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfSBlcSAiSFRNTCIgJiYgJHBhcnNlZFRhZ3N7JG5hbWV9
e3dyYXBwZXJPbmx5SWZNZWRpYUlzQXZhaWxhYmxlfSkgewotICAgICAgICAgICAgIyBXZSBuZWVk
IHRvIGNoZWNrIGZvciBIVE1MVW5rbm93bkVsZW1lbnQgaWYgaXQgbWlnaHQgaGF2ZSBiZWVuIGNy
ZWF0ZWQgYnkgdGhlIGZhY3RvcnkuCi0gICAgICAgICAgICBwcmludCBGIDw8RU5ECi1pbmxpbmUg
Ym9vbCAkY2hlY2tIZWxwZXIoY29uc3QgSFRNTEVsZW1lbnQmIGVsZW1lbnQpIHsgcmV0dXJuICFl
bGVtZW50LmlzSFRNTFVua25vd25FbGVtZW50KCkgJiYgZWxlbWVudC5oYXNUYWdOYW1lKCRwYXJh
bWV0ZXJze25hbWVzcGFjZX1OYW1lczo6JHtuYW1lfVRhZyk7IH0KLWlubGluZSBib29sICRjaGVj
a0hlbHBlcihjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBub2RlLmlzSFRNTEVsZW1lbnQoKSAm
JiAkY2hlY2tIZWxwZXIodG9IVE1MRWxlbWVudChub2RlKSk7IH0KKyAgICAgICA7CisgICAgICAg
aWYgKCRwYXJhbWV0ZXJze25hbWVzcGFjZX0gZXEgIkhUTUwiICYmICRwYXJzZWRUYWdzeyRuYW1l
fXt3cmFwcGVyT25seUlmTWVkaWFJc0F2YWlsYWJsZX0pIHsKKyAgICAgICAgICAgcHJpbnQgRiA8
PEVORAorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBIVE1MRWxlbWVudCYgZWxl
bWVudCkgeyByZXR1cm4gIWVsZW1lbnQuaXNIVE1MVW5rbm93bkVsZW1lbnQoKSAmJiBlbGVtZW50
Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQor
ICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2RlJiBub2RlKSB7IHJldHVybiBu
b2RlLmlzSFRNTEVsZW1lbnQoKSAmJiBjaGVja1RhZ05hbWUodG9IVE1MRWxlbWVudChub2RlKSk7
IH0KIEVORAotICAgICAgICAgICAgOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHJp
bnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRwYXJhbWV0ZXJze25h
bWVzcGFjZX1FbGVtZW50JiBlbGVtZW50KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBh
cmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVzOjoke25hbWV9VGFnKTsgfQotaW5saW5lIGJvb2wgJGNo
ZWNrSGVscGVyKGNvbnN0IE5vZGUmIG5vZGUpIHsgcmV0dXJuIG5vZGUuaGFzVGFnTmFtZSgkcGFy
YW1ldGVyc3tuYW1lc3BhY2V9TmFtZXM6OiR7bmFtZX1UYWcpOyB9CisgICAgICAgICAgIDsKKyAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICBwcmludCBGIDw8RU5ECisgICAgc3RhdGljIGJvb2wg
Y2hlY2tUYWdOYW1lKGNvbnN0ICRwYXJhbWV0ZXJze25hbWVzcGFjZX1FbGVtZW50JiBlbGVtZW50
KSB7IHJldHVybiBlbGVtZW50Lmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5hbWVz
Ojoke25hbWV9VGFnKTsgfQorICAgIHN0YXRpYyBib29sIGNoZWNrVGFnTmFtZShjb25zdCBOb2Rl
JiBub2RlKSB7IHJldHVybiBub2RlLmhhc1RhZ05hbWUoJHBhcmFtZXRlcnN7bmFtZXNwYWNlfU5h
bWVzOjoke25hbWV9VGFnKTsgfQogRU5ECi0gICAgICAgICAgICA7Ci0gICAgICAgIH0KLSAgICAg
ICAgcHJpbnQgRiA8PEVORAotaW5saW5lIGJvb2wgJGNoZWNrSGVscGVyKGNvbnN0ICRwYXJhbWV0
ZXJze25hbWVzcGFjZX1FbGVtZW50KiBlbGVtZW50KSB7IEFTU0VSVChlbGVtZW50KTsgcmV0dXJu
ICRjaGVja0hlbHBlcigqZWxlbWVudCk7IH0KLWlubGluZSBib29sICRjaGVja0hlbHBlcihjb25z
dCBOb2RlKiBub2RlKSB7IEFTU0VSVChub2RlKTsgcmV0dXJuICRjaGVja0hlbHBlcigqbm9kZSk7
IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBBcmdUeXBlPgotc3RydWN0IEVsZW1lbnRUeXBlQ2FzdFRy
YWl0czxjb25zdCAkY2xhc3MsIEFyZ1R5cGU+IHsKLSAgICBzdGF0aWMgYm9vbCBpcyhBcmdUeXBl
JiBub2RlKSB7IHJldHVybiAkY2hlY2tIZWxwZXIobm9kZSk7IH0KKyAgICAgICAgICAgOworICAg
ICAgIH0KKyAgICAgICBwcmludCBGIDw8RU5ECiB9OworCisvLyBGSVhNRTogUmVtb3ZlIHRoZXNl
IG1hY3JvcyBvbmNlIHRoZSBjb2RlIGhhcyBiZWVuIHBvcnRlZCB0byB1c2luZworLy8gaXM8KkVs
ZW1lbnQ+KCkuCisjZGVmaW5lIGlzJGNsYXNzKHgpIFdlYkNvcmU6OmlzPFdlYkNvcmU6OiRjbGFz
cz4oeCkKIEVORAogICAgICAgICA7CiAgICAgICAgIHByaW50IEYgIlxuIjsK
</data>

          </attachment>
      

    </bug>

</bugzilla>