<?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>163160</bug_id>
          
          <creation_ts>2016-10-07 17:24:52 -0700</creation_ts>
          <short_desc>Object.freeze() and seal() should throw if [[PreventExtensions]]() fails.</short_desc>
          <delta_ts>2016-10-07 20:24:14 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Local Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1237874</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 17:24:52 -0700</bug_when>
    <thetext>See https://tc39.github.io/ecma262/#sec-object.freeze and https://tc39.github.io/ecma262/#sec-setintegritylevel.  If O.[[PreventExtensions]]() returns false, we should throw a TypeError but currently does not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237875</commentid>
    <comment_count>1</comment_count>
      <attachid>290987</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 17:26:58 -0700</bug_when>
    <thetext>Created attachment 290987
repro test case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237886</commentid>
    <comment_count>2</comment_count>
      <attachid>290994</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 18:18:19 -0700</bug_when>
    <thetext>Created attachment 290994
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237887</commentid>
    <comment_count>3</comment_count>
      <attachid>290994</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 18:19:24 -0700</bug_when>
    <thetext>Comment on attachment 290994
proposed patch.

Bad patch.  That&apos;s what I get for making last minute changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237890</commentid>
    <comment_count>4</comment_count>
      <attachid>290996</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 18:20:11 -0700</bug_when>
    <thetext>Created attachment 290996
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237893</commentid>
    <comment_count>5</comment_count>
      <attachid>290996</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-10-07 18:24:54 -0700</bug_when>
    <thetext>Comment on attachment 290996
proposed patch.

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

r=me

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:480
&gt; +template&lt;IntegrityLevel level&gt;
&gt; +bool setIntegrityLevel(ExecState* exec, VM&amp; vm, JSObject* object)

Maybe it&apos;s worth including a link to the spec here.

&gt; Source/JavaScriptCore/runtime/ObjectConstructor.cpp:496
&gt; +        if (exec-&gt;propertyNames().isPrivateName(propertyName))

You should use vm to get the PropertyNames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1237921</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-10-07 20:24:14 -0700</bug_when>
    <thetext>Thanks for the review.  I&apos;ve made the suggested changes.

Landed in r206948: &lt;http://trac.webkit.org/r206948&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>290987</attachid>
            <date>2016-10-07 17:26:58 -0700</date>
            <delta_ts>2016-10-07 17:26:58 -0700</delta_ts>
            <desc>repro test case.</desc>
            <filename>object-freeze-with-proxy-preventExtensions.js</filename>
            <type>application/x-javascript</type>
            <size>696</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">Ly8gU2VlIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLW9iamVjdC5mcmVlemUK
Ly8gU2VlIGh0dHBzOi8vdGMzOS5naXRodWIuaW8vZWNtYTI2Mi8jc2VjLXNldGludGVncml0eWxl
dmVsCgp2YXIgeCA9IFsxMF07CnZhciB2aXNpdGVkID0gW107Cgp2YXIgcHJveHkgPSBuZXcgUHJv
eHkoeCwgewogICAgcHJldmVudEV4dGVuc2lvbnMoKSB7CiAgICAgICAgdmlzaXRlZC5wdXNoKCJw
cm94eV9wcmV2ZW50RXh0ZW5zaW9ucyIpOwogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KfSk7
Cgp2YXIgZXhjZXB0aW9uOwp0cnkgIHsKICAgIHZpc2l0ZWQucHVzaCgiYmVmb3JlX2ZyZWV6ZSIp
OwogICAgT2JqZWN0LmZyZWV6ZShwcm94eSk7CiAgICB2aXNpdGVkLnB1c2goImFmdGVyX2ZyZWV6
ZSIpOwp9IGNhdGNoIChlKSB7CiAgICB2aXNpdGVkLnB1c2goImNhdGNoIik7CiAgICBleGNlcHRp
b24gPSBlOwp9Cgp2YXIgZXhjZXB0aW9uU3RyID0gIiIgKyBleGNlcHRpb247CmlmICghZXhjZXB0
aW9uU3RyLnN0YXJ0c1dpdGgoIlR5cGVFcnJvcjoiKSkKICAgIHRocm93ICJEaWQgbm90IHRocm93
IGV4cGVjdGVkIFR5cGVFcnJvciI7CgppZiAodmlzaXRlZCAhPSAiYmVmb3JlX2ZyZWV6ZSxwcm94
eV9wcmV2ZW50RXh0ZW5zaW9ucyxjYXRjaCIpCiAgICB0aHJvdyAiRVJST1I6IHZpc2l0ZWQgPSAi
ICsgdmlzaXRlZDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290994</attachid>
            <date>2016-10-07 18:18:19 -0700</date>
            <delta_ts>2016-10-07 18:20:11 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163160.patch</filename>
            <type>text/plain</type>
            <size>9643</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDY5NDYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBPYmplY3QuZnJlZXplKCkgYW5kIHNlYWwoKSBzaG91bGQgdGhyb3cgaWYg
W1tQcmV2ZW50RXh0ZW5zaW9uc11dKCkgZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vYmplY3QtZnJlZXplLXdpdGgtcHJveHkt
cHJldmVudEV4dGVuc2lvbnMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qtc2Vh
bC13aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzOiBBZGRlZC4KKwogMjAxNi0xMC0wNSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklU
XSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL29iamVjdC1mcmVlemUtd2l0aC1wcm94eS1wcmV2ZW50RXh0ZW5zaW9u
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmplY3QtZnJlZXplLXdpdGgtcHJv
eHktcHJldmVudEV4dGVuc2lvbnMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWZyZWV6ZS13aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8vIFNlZSBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1vYmplY3QuZnJlZXplCisvLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtc2V0aW50ZWdyaXR5bGV2ZWwKKwordmFyIHggPSBbMTBdOwordmFyIHZpc2l0ZWQg
PSBbXTsKKwordmFyIHByb3h5ID0gbmV3IFByb3h5KHgsIHsKKyAgICBwcmV2ZW50RXh0ZW5zaW9u
cygpIHsKKyAgICAgICAgdmlzaXRlZC5wdXNoKCJwcm94eV9wcmV2ZW50RXh0ZW5zaW9ucyIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSk7CisKK3ZhciBleGNlcHRpb247Cit0cnkg
IHsKKyAgICB2aXNpdGVkLnB1c2goImJlZm9yZV9mcmVlemUiKTsKKyAgICBPYmplY3QuZnJlZXpl
KHByb3h5KTsKKyAgICB2aXNpdGVkLnB1c2goImFmdGVyX2ZyZWV6ZSIpOworfSBjYXRjaCAoZSkg
eworICAgIHZpc2l0ZWQucHVzaCgiY2F0Y2giKTsKKyAgICBleGNlcHRpb24gPSBlOworfQorCit2
YXIgZXhjZXB0aW9uU3RyID0gIiIgKyBleGNlcHRpb247CitpZiAoIWV4Y2VwdGlvblN0ci5zdGFy
dHNXaXRoKCJUeXBlRXJyb3I6IikpCisgICAgdGhyb3cgIkRpZCBub3QgdGhyb3cgZXhwZWN0ZWQg
VHlwZUVycm9yIjsKKworaWYgKHZpc2l0ZWQgIT0gImJlZm9yZV9mcmVlemUscHJveHlfcHJldmVu
dEV4dGVuc2lvbnMsY2F0Y2giKQorICAgIHRocm93ICJFUlJPUjogdmlzaXRlZCA9ICIgKyB2aXNp
dGVkOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXNlYWwtd2l0aC1wcm94eS1wcmV2ZW50
RXh0ZW5zaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmplY3Qtc2VhbC13
aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMv
c3RyZXNzL29iamVjdC1zZWFsLXdpdGgtcHJveHktcHJldmVudEV4dGVuc2lvbnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLy8gU2VlIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLW9iamVjdC5zZWFsCisvLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtc2V0aW50ZWdyaXR5bGV2ZWwKKwordmFyIHggPSBbMTBdOwordmFyIHZpc2l0
ZWQgPSBbXTsKKwordmFyIHByb3h5ID0gbmV3IFByb3h5KHgsIHsKKyAgICBwcmV2ZW50RXh0ZW5z
aW9ucygpIHsKKyAgICAgICAgdmlzaXRlZC5wdXNoKCJwcm94eV9wcmV2ZW50RXh0ZW5zaW9ucyIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSk7CisKK3ZhciBleGNlcHRpb247Cit0
cnkgIHsKKyAgICB2aXNpdGVkLnB1c2goImJlZm9yZV9zZWFsIik7CisgICAgT2JqZWN0LnNlYWwo
cHJveHkpOworICAgIHZpc2l0ZWQucHVzaCgiYWZ0ZXJfc2VhbCIpOworfSBjYXRjaCAoZSkgewor
ICAgIHZpc2l0ZWQucHVzaCgiY2F0Y2giKTsKKyAgICBleGNlcHRpb24gPSBlOworfQorCit2YXIg
ZXhjZXB0aW9uU3RyID0gIiIgKyBleGNlcHRpb247CitpZiAoIWV4Y2VwdGlvblN0ci5zdGFydHNX
aXRoKCJUeXBlRXJyb3I6IikpCisgICAgdGhyb3cgIkRpZCBub3QgdGhyb3cgZXhwZWN0ZWQgVHlw
ZUVycm9yIjsKKworaWYgKHZpc2l0ZWQgIT0gImJlZm9yZV9zZWFsLHByb3h5X3ByZXZlbnRFeHRl
bnNpb25zLGNhdGNoIikKKyAgICB0aHJvdyAiRVJST1I6IHZpc2l0ZWQgPSAiICsgdmlzaXRlZDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2ODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE2LTEwLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBP
YmplY3QuZnJlZXplKCkgYW5kIHNlYWwoKSBzaG91bGQgdGhyb3cgaWYgW1tQcmV2ZW50RXh0ZW5z
aW9uc11dKCkgZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjMxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmZy
ZWV6ZSwKKyAgICAgICAgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0
LnNlYWwsIGFuZAorICAgICAgICBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1z
ZXRpbnRlZ3JpdHlsZXZlbC4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICBwcmV2ZW50RXh0ZW5z
aW9ucyBmaXJzdCBiZWZvcmUgcHJvY2VlZGluZyB0byBmcmVlemUgLyBzZWFsIHRoZSBvYmplY3Qu
ICBJZgorICAgICAgICBwcmV2ZW50RXh0ZW5zaW9ucyBmYWlscywgd2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OnNldEludGVncml0eUxldmVsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUpOgor
CiAyMDE2LTEwLTA2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEhhc093blByb3BlcnR5Q2FjaGUgZmxhdHRlbmluZyBkaWN0aW9uYXJpZXMgaXMgY2F1c2luZyBp
bnNhbmUgbWVtb3J5IHVzYWdlIHdpdGggdGhlIHVCbG9jayBTYWZhcmkgZXh0ZW5zaW9uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyMDY4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCitlbnVtIGNsYXNzIEludGVncml0eUxldmVsIHsK
KyAgICBTZWFsZWQsCisgICAgRnJvemVuCit9OworCit0ZW1wbGF0ZTxJbnRlZ3JpdHlMZXZlbCBs
ZXZlbD4KK2Jvb2wgc2V0SW50ZWdyaXR5TGV2ZWwoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpT
T2JqZWN0KiBvYmplY3QpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZl
bnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOworICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisKKyAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKKyAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7Cisg
ICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShwcm9wZXJ0eU5h
bWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2M7CisgICAgICAgIGlmIChsZXZlbCA9PSBJbnRlZ3JpdHlMZXZlbDo6U2VhbGVkKQorICAg
ICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKGRlc2MuaXNEYXRhRGVzY3JpcHRvcigpKQorICAgICAgICAgICAgICAgIGRlc2Muc2V0
V3JpdGFibGUoZmFsc2UpOworCisgICAgICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxz
ZSk7CisgICAgICAgIH0KKworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MsIHRydWUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CkBAIC00ODcsMzEgKzUzMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CiAKLSAg
ICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCi0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
QW5kU3ltYm9scyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIGJvb2wgc3VjY2VzcyA9IHNldEludGVncml0
eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGV4ZWMsIHZtLCBvYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwotICAgIGZv
ciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSAqaXRlcjsKLSAgICAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZh
dGVOYW1lKHByb3BlcnR5TmFtZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgLy8g
YS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5
XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgotICAgICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzYzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW0NvbmZp
Z3VyYWJsZV1dIHRvIGZhbHNlLgotICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxzZSk7
Ci0gICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4KLSAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjLCB0cnVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBwcmV2ZW50
IGV4dGVuc2lvbiBpbiBPYmplY3Quc2VhbCIpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CiAgICAgfQogCi0gICAgLy8gMy4gU2V0IHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5h
bCBwcm9wZXJ0eSBvZiBPIHRvIGZhbHNlLgotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
cmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgLy8gNC4gUmV0dXJuIE8uCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQogCkBAIC01MjUsMzUgKzU1MSwxMCBAQCBKU09i
amVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0CiAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgfQogCi0gICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUg
UCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKLSAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKLSAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7Ci0gICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7Ci0g
ICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShwcm9wZXJ0eU5h
bWUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIC8vIGEuIExldCBkZXNjIGJlIHRo
ZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhv
ZCBvZiBPIHdpdGggUC4KLSAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9yIGRlc2M7Ci0gICAgICAg
IGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJvcGVydHlOYW1l
LCBkZXNjKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAvLyBiLiBJZiBJc0RhdGFE
ZXNjcmlwdG9yKGRlc2MpIGlzIHRydWUsIHRoZW4KLSAgICAgICAgLy8gaS4gSWYgZGVzYy5bW1dy
aXRhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tXcml0YWJsZV1dIHRvIGZhbHNlLgotICAgICAg
ICBpZiAoZGVzYy5pc0RhdGFEZXNjcmlwdG9yKCkpCi0gICAgICAgICAgICBkZXNjLnNldFdyaXRh
YmxlKGZhbHNlKTsKLSAgICAgICAgLy8gYy4gSWYgZGVzYy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRy
dWUsIHNldCBkZXNjLltbQ29uZmlndXJhYmxlXV0gdG8gZmFsc2UuCi0gICAgICAgIGRlc2Muc2V0
Q29uZmlndXJhYmxlKGZhbHNlKTsKLSAgICAgICAgLy8gZC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUCwgZGVzYywgYW5kIHRydWUgYXMg
YXJndW1lbnRzLgotICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJv
cGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MsIHRydWUpOwotICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICB9Ci0KLSAgICAvLyAzLiBT
ZXQgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHByb3BlcnR5IG9mIE8gdG8gZmFsc2UuCi0g
ICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZlbnRFeHRlbnNpb25zKG9iamVjdCwgZXhl
Yyk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7Ci0KLSAgICAvLyA0
LiBSZXR1cm4gTy4KKyAgICBib29sIHN1Y2Nlc3MgPSBzZXRJbnRlZ3JpdHlMZXZlbDxJbnRlZ3Jp
dHlMZXZlbDo6RnJvemVuPihleGVjLCB2bSwgb2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJVbmFibGUg
dG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LmZyZWV6ZSIpKTsKICAgICByZXR1cm4gb2Jq
ZWN0OwogfQogCg==
</data>
<flag name="review"
          id="314145"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>290996</attachid>
            <date>2016-10-07 18:20:11 -0700</date>
            <delta_ts>2016-10-07 18:24:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-163160.patch</filename>
            <type>text/plain</type>
            <size>9592</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMDY5NDYpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE2LTEwLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBPYmplY3QuZnJlZXplKCkgYW5kIHNlYWwoKSBzaG91bGQgdGhyb3cgaWYg
W1tQcmV2ZW50RXh0ZW5zaW9uc11dKCkgZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjMxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVzcy9vYmplY3QtZnJlZXplLXdpdGgtcHJveHkt
cHJldmVudEV4dGVuc2lvbnMuanM6IEFkZGVkLgorICAgICAgICAqIHN0cmVzcy9vYmplY3Qtc2Vh
bC13aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzOiBBZGRlZC4KKwogMjAxNi0xMC0wNSAg
WXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbRE9NSklU
XSBBZGQgaW5pdGlhbCBDaGVja0RPTSBhbmQgQ2FsbERPTSBpbXBsZW1lbnRhdGlvbnMKSW5kZXg6
IEpTVGVzdHMvc3RyZXNzL29iamVjdC1mcmVlemUtd2l0aC1wcm94eS1wcmV2ZW50RXh0ZW5zaW9u
cy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmplY3QtZnJlZXplLXdpdGgtcHJv
eHktcHJldmVudEV4dGVuc2lvbnMuanMJKG5vbmV4aXN0ZW50KQorKysgSlNUZXN0cy9zdHJlc3Mv
b2JqZWN0LWZyZWV6ZS13aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMjkgQEAKKy8vIFNlZSBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEy
NjIvI3NlYy1vYmplY3QuZnJlZXplCisvLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21h
MjYyLyNzZWMtc2V0aW50ZWdyaXR5bGV2ZWwKKwordmFyIHggPSBbMTBdOwordmFyIHZpc2l0ZWQg
PSBbXTsKKwordmFyIHByb3h5ID0gbmV3IFByb3h5KHgsIHsKKyAgICBwcmV2ZW50RXh0ZW5zaW9u
cygpIHsKKyAgICAgICAgdmlzaXRlZC5wdXNoKCJwcm94eV9wcmV2ZW50RXh0ZW5zaW9ucyIpOwor
ICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSk7CisKK3ZhciBleGNlcHRpb247Cit0cnkg
IHsKKyAgICB2aXNpdGVkLnB1c2goImJlZm9yZV9mcmVlemUiKTsKKyAgICBPYmplY3QuZnJlZXpl
KHByb3h5KTsKKyAgICB2aXNpdGVkLnB1c2goImFmdGVyX2ZyZWV6ZSIpOworfSBjYXRjaCAoZSkg
eworICAgIHZpc2l0ZWQucHVzaCgiY2F0Y2giKTsKKyAgICBleGNlcHRpb24gPSBlOworfQorCit2
YXIgZXhjZXB0aW9uU3RyID0gIiIgKyBleGNlcHRpb247CitpZiAoIWV4Y2VwdGlvblN0ci5zdGFy
dHNXaXRoKCJUeXBlRXJyb3I6IikpCisgICAgdGhyb3cgIkRpZCBub3QgdGhyb3cgZXhwZWN0ZWQg
VHlwZUVycm9yIjsKKworaWYgKHZpc2l0ZWQgIT0gImJlZm9yZV9mcmVlemUscHJveHlfcHJldmVu
dEV4dGVuc2lvbnMsY2F0Y2giKQorICAgIHRocm93ICJFUlJPUjogdmlzaXRlZCA9ICIgKyB2aXNp
dGVkOwpJbmRleDogSlNUZXN0cy9zdHJlc3Mvb2JqZWN0LXNlYWwtd2l0aC1wcm94eS1wcmV2ZW50
RXh0ZW5zaW9ucy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKU1Rlc3RzL3N0cmVzcy9vYmplY3Qtc2VhbC13
aXRoLXByb3h5LXByZXZlbnRFeHRlbnNpb25zLmpzCShub25leGlzdGVudCkKKysrIEpTVGVzdHMv
c3RyZXNzL29iamVjdC1zZWFsLXdpdGgtcHJveHktcHJldmVudEV4dGVuc2lvbnMuanMJKHdvcmtp
bmcgY29weSkKQEAgLTAsMCArMSwyOSBAQAorLy8gU2VlIGh0dHBzOi8vdGMzOS5naXRodWIuaW8v
ZWNtYTI2Mi8jc2VjLW9iamVjdC5zZWFsCisvLyBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9l
Y21hMjYyLyNzZWMtc2V0aW50ZWdyaXR5bGV2ZWwKKwordmFyIHggPSBbMTBdOwordmFyIHZpc2l0
ZWQgPSBbXTsKKwordmFyIHByb3h5ID0gbmV3IFByb3h5KHgsIHsKKyAgICBwcmV2ZW50RXh0ZW5z
aW9ucygpIHsKKyAgICAgICAgdmlzaXRlZC5wdXNoKCJwcm94eV9wcmV2ZW50RXh0ZW5zaW9ucyIp
OworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfSk7CisKK3ZhciBleGNlcHRpb247Cit0
cnkgIHsKKyAgICB2aXNpdGVkLnB1c2goImJlZm9yZV9zZWFsIik7CisgICAgT2JqZWN0LnNlYWwo
cHJveHkpOworICAgIHZpc2l0ZWQucHVzaCgiYWZ0ZXJfc2VhbCIpOworfSBjYXRjaCAoZSkgewor
ICAgIHZpc2l0ZWQucHVzaCgiY2F0Y2giKTsKKyAgICBleGNlcHRpb24gPSBlOworfQorCit2YXIg
ZXhjZXB0aW9uU3RyID0gIiIgKyBleGNlcHRpb247CitpZiAoIWV4Y2VwdGlvblN0ci5zdGFydHNX
aXRoKCJUeXBlRXJyb3I6IikpCisgICAgdGhyb3cgIkRpZCBub3QgdGhyb3cgZXhwZWN0ZWQgVHlw
ZUVycm9yIjsKKworaWYgKHZpc2l0ZWQgIT0gImJlZm9yZV9zZWFsLHByb3h5X3ByZXZlbnRFeHRl
bnNpb25zLGNhdGNoIikKKyAgICB0aHJvdyAiRVJST1I6IHZpc2l0ZWQgPSAiICsgdmlzaXRlZDsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA2ODg4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBA
CisyMDE2LTEwLTA3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBP
YmplY3QuZnJlZXplKCkgYW5kIHNlYWwoKSBzaG91bGQgdGhyb3cgaWYgW1tQcmV2ZW50RXh0ZW5z
aW9uc11dKCkgZmFpbHMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjMxNjAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBTZWUgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0LmZy
ZWV6ZSwKKyAgICAgICAgaHR0cHM6Ly90YzM5LmdpdGh1Yi5pby9lY21hMjYyLyNzZWMtb2JqZWN0
LnNlYWwsIGFuZAorICAgICAgICBodHRwczovL3RjMzkuZ2l0aHViLmlvL2VjbWEyNjIvI3NlYy1z
ZXRpbnRlZ3JpdHlsZXZlbC4gIFdlIG5lZWQgdG8gY2FsbAorICAgICAgICBwcmV2ZW50RXh0ZW5z
aW9ucyBmaXJzdCBiZWZvcmUgcHJvY2VlZGluZyB0byBmcmVlemUgLyBzZWFsIHRoZSBvYmplY3Qu
ICBJZgorICAgICAgICBwcmV2ZW50RXh0ZW5zaW9ucyBmYWlscywgd2Ugc2hvdWxkIHRocm93IGEg
VHlwZUVycm9yLgorCisgICAgICAgICogcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHA6Cisg
ICAgICAgIChKU0M6OnNldEludGVncml0eUxldmVsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29u
c3RydWN0b3JTZWFsKToKKyAgICAgICAgKEpTQzo6b2JqZWN0Q29uc3RydWN0b3JGcmVlemUpOgor
CiAyMDE2LTEwLTA2ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAg
IEhhc093blByb3BlcnR5Q2FjaGUgZmxhdHRlbmluZyBkaWN0aW9uYXJpZXMgaXMgY2F1c2luZyBp
bnNhbmUgbWVtb3J5IHVzYWdlIHdpdGggdGhlIHVCbG9jayBTYWZhcmkgZXh0ZW5zaW9uCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0
b3IuY3BwCShyZXZpc2lvbiAyMDY4ODgpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9PYmplY3RDb25zdHJ1Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3MSw2ICs0NzEsNTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25zdAogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoZGVmaW5lUHJvcGVydGllcyhleGVjLCBuZXdPYmplY3QsIGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDEpKSkpOwogfQogCitlbnVtIGNsYXNzIEludGVncml0eUxldmVsIHsK
KyAgICBTZWFsZWQsCisgICAgRnJvemVuCit9OworCit0ZW1wbGF0ZTxJbnRlZ3JpdHlMZXZlbCBs
ZXZlbD4KK2Jvb2wgc2V0SW50ZWdyaXR5TGV2ZWwoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpT
T2JqZWN0KiBvYmplY3QpCit7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYm9vbCBzdWNjZXNzID0gb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZl
bnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZmFsc2UpOworICAgIGlmIChVTkxJS0VMWSghc3VjY2VzcykpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpOworICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisKKyAgICBQcm9wZXJ0eU5hbWVBcnJheTo6Y29uc3Rf
aXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsKKyAgICBmb3IgKFByb3BlcnR5TmFtZUFy
cmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVydGllcy5iZWdpbigpOyBpdGVyICE9IGVu
ZDsgKytpdGVyKSB7CisgICAgICAgIElkZW50aWZpZXIgcHJvcGVydHlOYW1lID0gKml0ZXI7Cisg
ICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCkuaXNQcml2YXRlTmFtZShwcm9wZXJ0eU5h
bWUpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgUHJvcGVydHlEZXNjcmlwdG9y
IGRlc2M7CisgICAgICAgIGlmIChsZXZlbCA9PSBJbnRlZ3JpdHlMZXZlbDo6U2VhbGVkKQorICAg
ICAgICAgICAgZGVzYy5zZXRDb25maWd1cmFibGUoZmFsc2UpOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoZXhlYywgcHJv
cGVydHlOYW1lLCBkZXNjKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAg
ICAgaWYgKGRlc2MuaXNEYXRhRGVzY3JpcHRvcigpKQorICAgICAgICAgICAgICAgIGRlc2Muc2V0
V3JpdGFibGUoZmFsc2UpOworCisgICAgICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxz
ZSk7CisgICAgICAgIH0KKworICAgICAgICBvYmplY3QtPm1ldGhvZFRhYmxlKHZtKS0+ZGVmaW5l
T3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MsIHRydWUpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBmYWxzZSk7CisgICAgfQorICAgIHJldHVy
biB0cnVlOworfQorICAgIAogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBvYmplY3RDb25z
dHJ1Y3RvclNlYWwoRXhlY1N0YXRlKiBleGVjKQogewogICAgIFZNJiB2bSA9IGV4ZWMtPnZtKCk7
CkBAIC00ODcsMzEgKzUzMSwxMyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIG9iamVj
dENvbnN0CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUob2JqKTsKICAgICB9CiAKLSAg
ICAvLyAyLiBGb3IgZWFjaCBuYW1lZCBvd24gcHJvcGVydHkgbmFtZSBQIG9mIE8sCi0gICAgUHJv
cGVydHlOYW1lQXJyYXkgcHJvcGVydGllcyhleGVjLCBQcm9wZXJ0eU5hbWVNb2RlOjpTdHJpbmdz
QW5kU3ltYm9scyk7Ci0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmdldE93blByb3BlcnR5
TmFtZXMob2JqZWN0LCBleGVjLCBwcm9wZXJ0aWVzLCBFbnVtZXJhdGlvbk1vZGUoRG9udEVudW1Q
cm9wZXJ0aWVzTW9kZTo6SW5jbHVkZSkpOworICAgIGJvb2wgc3VjY2VzcyA9IHNldEludGVncml0
eUxldmVsPEludGVncml0eUxldmVsOjpTZWFsZWQ+KGV4ZWMsIHZtLCBvYmplY3QpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotICAgIFByb3BlcnR5
TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBwcm9wZXJ0aWVzLmVuZCgpOwotICAgIGZv
ciAoUHJvcGVydHlOYW1lQXJyYXk6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBwcm9wZXJ0aWVzLmJl
Z2luKCk7IGl0ZXIgIT0gZW5kOyArK2l0ZXIpIHsKLSAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0
eU5hbWUgPSAqaXRlcjsKLSAgICAgICAgaWYgKGV4ZWMtPnByb3BlcnR5TmFtZXMoKS5pc1ByaXZh
dGVOYW1lKHByb3BlcnR5TmFtZSkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgLy8g
YS4gTGV0IGRlc2MgYmUgdGhlIHJlc3VsdCBvZiBjYWxsaW5nIHRoZSBbW0dldE93blByb3BlcnR5
XV0gaW50ZXJuYWwgbWV0aG9kIG9mIE8gd2l0aCBQLgotICAgICAgICBQcm9wZXJ0eURlc2NyaXB0
b3IgZGVzYzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdldE93blByb3BlcnR5RGVzY3JpcHRvcihl
eGVjLCBwcm9wZXJ0eU5hbWUsIGRlc2MpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAg
IC8vIGIuIElmIGRlc2MuW1tDb25maWd1cmFibGVdXSBpcyB0cnVlLCBzZXQgZGVzYy5bW0NvbmZp
Z3VyYWJsZV1dIHRvIGZhbHNlLgotICAgICAgICBkZXNjLnNldENvbmZpZ3VyYWJsZShmYWxzZSk7
Ci0gICAgICAgIC8vIGMuIENhbGwgdGhlIFtbRGVmaW5lT3duUHJvcGVydHldXSBpbnRlcm5hbCBt
ZXRob2Qgb2YgTyB3aXRoIFAsIGRlc2MsIGFuZCB0cnVlIGFzIGFyZ3VtZW50cy4KLSAgICAgICAg
b2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPmRlZmluZU93blByb3BlcnR5KG9iamVjdCwgZXhlYywg
cHJvcGVydHlOYW1lLCBkZXNjLCB0cnVlKTsKLSAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgaWYgKCFzdWNjZXNzKSB7CisgICAgICAgIHRo
cm93VHlwZUVycm9yKGV4ZWMsIHNjb3BlLCBBU0NJSUxpdGVyYWwoIlVuYWJsZSB0byBwcmV2ZW50
IGV4dGVuc2lvbiBpbiBPYmplY3Quc2VhbCIpKTsKKyAgICAgICAgcmV0dXJuIGVuY29kZWRKU1Zh
bHVlKCk7CiAgICAgfQogCi0gICAgLy8gMy4gU2V0IHRoZSBbW0V4dGVuc2libGVdXSBpbnRlcm5h
bCBwcm9wZXJ0eSBvZiBPIHRvIGZhbHNlLgotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0pLT5w
cmV2ZW50RXh0ZW5zaW9ucyhvYmplY3QsIGV4ZWMpOwotICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwotCi0gICAgLy8gNC4gUmV0dXJuIE8uCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShvYmopOwogfQogCkBAIC01MjUsMzUgKzU1MSwxMCBAQCBKU09i
amVjdCogb2JqZWN0Q29uc3RydWN0b3JGcmVlemUoRXhlY1N0CiAgICAgICAgIHJldHVybiBvYmpl
Y3Q7CiAgICAgfQogCi0gICAgLy8gMi4gRm9yIGVhY2ggbmFtZWQgb3duIHByb3BlcnR5IG5hbWUg
UCBvZiBPLAotICAgIFByb3BlcnR5TmFtZUFycmF5IHByb3BlcnRpZXMoZXhlYywgUHJvcGVydHlO
YW1lTW9kZTo6U3RyaW5nc0FuZFN5bWJvbHMpOwotICAgIG9iamVjdC0+bWV0aG9kVGFibGUodm0p
LT5nZXRPd25Qcm9wZXJ0eU5hbWVzKG9iamVjdCwgZXhlYywgcHJvcGVydGllcywgRW51bWVyYXRp
b25Nb2RlKERvbnRFbnVtUHJvcGVydGllc01vZGU6OkluY2x1ZGUpKTsKKyAgICBib29sIHN1Y2Nl
c3MgPSBzZXRJbnRlZ3JpdHlMZXZlbDxJbnRlZ3JpdHlMZXZlbDo6RnJvemVuPihleGVjLCB2bSwg
b2JqZWN0KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKLSAgICBQ
cm9wZXJ0eU5hbWVBcnJheTo6Y29uc3RfaXRlcmF0b3IgZW5kID0gcHJvcGVydGllcy5lbmQoKTsK
LSAgICBmb3IgKFByb3BlcnR5TmFtZUFycmF5Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gcHJvcGVy
dGllcy5iZWdpbigpOyBpdGVyICE9IGVuZDsgKytpdGVyKSB7Ci0gICAgICAgIElkZW50aWZpZXIg
cHJvcGVydHlOYW1lID0gKml0ZXI7Ci0gICAgICAgIGlmIChleGVjLT5wcm9wZXJ0eU5hbWVzKCku
aXNQcml2YXRlTmFtZShwcm9wZXJ0eU5hbWUpKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAg
ICAgIC8vIGEuIExldCBkZXNjIGJlIHRoZSByZXN1bHQgb2YgY2FsbGluZyB0aGUgW1tHZXRPd25Q
cm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdpdGggUC4KLSAgICAgICAgUHJvcGVydHlE
ZXNjcmlwdG9yIGRlc2M7Ci0gICAgICAgIGlmICghb2JqZWN0LT5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoZXhlYywgcHJvcGVydHlOYW1lLCBkZXNjKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAvLyBiLiBJZiBJc0RhdGFEZXNjcmlwdG9yKGRlc2MpIGlzIHRydWUsIHRoZW4KLSAg
ICAgICAgLy8gaS4gSWYgZGVzYy5bW1dyaXRhYmxlXV0gaXMgdHJ1ZSwgc2V0IGRlc2MuW1tXcml0
YWJsZV1dIHRvIGZhbHNlLgotICAgICAgICBpZiAoZGVzYy5pc0RhdGFEZXNjcmlwdG9yKCkpCi0g
ICAgICAgICAgICBkZXNjLnNldFdyaXRhYmxlKGZhbHNlKTsKLSAgICAgICAgLy8gYy4gSWYgZGVz
Yy5bW0NvbmZpZ3VyYWJsZV1dIGlzIHRydWUsIHNldCBkZXNjLltbQ29uZmlndXJhYmxlXV0gdG8g
ZmFsc2UuCi0gICAgICAgIGRlc2Muc2V0Q29uZmlndXJhYmxlKGZhbHNlKTsKLSAgICAgICAgLy8g
ZC4gQ2FsbCB0aGUgW1tEZWZpbmVPd25Qcm9wZXJ0eV1dIGludGVybmFsIG1ldGhvZCBvZiBPIHdp
dGggUCwgZGVzYywgYW5kIHRydWUgYXMgYXJndW1lbnRzLgotICAgICAgICBvYmplY3QtPm1ldGhv
ZFRhYmxlKHZtKS0+ZGVmaW5lT3duUHJvcGVydHkob2JqZWN0LCBleGVjLCBwcm9wZXJ0eU5hbWUs
IGRlc2MsIHRydWUpOwotICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRy
KTsKLSAgICB9Ci0KLSAgICAvLyAzLiBTZXQgdGhlIFtbRXh0ZW5zaWJsZV1dIGludGVybmFsIHBy
b3BlcnR5IG9mIE8gdG8gZmFsc2UuCi0gICAgb2JqZWN0LT5tZXRob2RUYWJsZSh2bSktPnByZXZl
bnRFeHRlbnNpb25zKG9iamVjdCwgZXhlYyk7Ci0gICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7Ci0KLSAgICAvLyA0LiBSZXR1cm4gTy4KKyAgICBpZiAoIXN1Y2Nlc3MpCisg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjLCBzY29wZSwgQVNDSUlMaXRlcmFsKCJV
bmFibGUgdG8gcHJldmVudCBleHRlbnNpb24gaW4gT2JqZWN0LmZyZWV6ZSIpKTsKICAgICByZXR1
cm4gb2JqZWN0OwogfQogCg==
</data>
<flag name="review"
          id="314147"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>