<?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>147925</bug_id>
          
          <creation_ts>2015-08-11 23:32:05 -0700</creation_ts>
          <short_desc>[ES6] Implement Reflect.get</short_desc>
          <delta_ts>2015-08-17 11:56:56 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>oliver</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1116902</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-11 23:32:05 -0700</bug_when>
    <thetext>[ES6] Implement Reflect.get</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116903</commentid>
    <comment_count>1</comment_count>
      <attachid>258809</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-11 23:33:22 -0700</bug_when>
    <thetext>Created attachment 258809
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1116904</commentid>
    <comment_count>2</comment_count>
      <attachid>258809</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-11 23:34:28 -0700</bug_when>
    <thetext>Comment on attachment 258809
Patch

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

&gt; Source/JavaScriptCore/runtime/SparseArrayValueMap.cpp:-154
&gt; -}

This is only the place that does not use the PropertySlot::thisValue() as the |this| value.
But this code is not used anymore, so just drop it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118161</commentid>
    <comment_count>3</comment_count>
      <attachid>258809</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-17 11:16:42 -0700</bug_when>
    <thetext>Comment on attachment 258809
Patch

Should we be implementing these in JavaScript? Seems like it might be faster that way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118166</commentid>
    <comment_count>4</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 11:22:05 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 258809 [details]
&gt; Patch
&gt; 
&gt; Should we be implementing these in JavaScript? Seems like it might be faster
&gt; that way.

Reflect.get can take the receiver as its optional argument.
`Reflect.get ( target, propertyKey [ , receiver ])`

When the receiver is specified, we need to call the getter with the receiver as the |this|.
So, how about the mixed implementation?

in JS:

if (receiver === target)
    return target[propertyName];
return @getSlowCase(target, propertyKey, receiver);

in C++
the above code.

http://www.ecma-international.org/ecma-262/6.0/#sec-reflect.get</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118171</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2015-08-17 11:28:34 -0700</bug_when>
    <thetext>&gt; When the receiver is specified, we need to call the getter with the receiver
&gt; as the |this|.
&gt; So, how about the mixed implementation?
&gt; 
&gt; in JS:
&gt; 
&gt; if (receiver === target)
&gt;     return target[propertyName];
&gt; return @getSlowCase(target, propertyKey, receiver);

Interesting.

Ryosuke is working on a similar problem, where the same behavior is required by super.getter.

I can see that it would be awkward to override the receiver in JS. Perhaps we should just go with your current patch for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118177</commentid>
    <comment_count>6</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 11:46:34 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; When the receiver is specified, we need to call the getter with the receiver
&gt; &gt; as the |this|.
&gt; &gt; So, how about the mixed implementation?
&gt; &gt; 
&gt; &gt; in JS:
&gt; &gt; 
&gt; &gt; if (receiver === target)
&gt; &gt;     return target[propertyName];
&gt; &gt; return @getSlowCase(target, propertyKey, receiver);
&gt; 
&gt; Interesting.
&gt; 
&gt; Ryosuke is working on a similar problem, where the same behavior is required
&gt; by super.getter.
&gt; 
&gt; I can see that it would be awkward to override the receiver in JS. Perhaps
&gt; we should just go with your current patch for now.

Oh, that&apos;s very nice!
Maybe, super.setter = value; also has the same problem. Reflect.set has the receiver argument optionally.

Anyway, if Ryosuke is working on this &quot;taking receiver optionally&quot; by adding the byte code, when landing this change, we can easily use it for Reflect.get by adding the byte code intrinsics (maybe @get()?). This makes the Reflect.get written in JS (in the future) and seems cleanest way.

So agree with you. In the meantime, I&apos;ll land this current C++ implementation patch.
When the new byte code is introduced, we&apos;ll replace Reflect.get with the JS implementation :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1118184</commentid>
    <comment_count>7</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2015-08-17 11:56:56 -0700</bug_when>
    <thetext>Committed r188532: &lt;http://trac.webkit.org/changeset/188532&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>258809</attachid>
            <date>2015-08-11 23:33:22 -0700</date>
            <delta_ts>2015-08-17 11:16:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-147925-20150811233305.patch</filename>
            <type>text/plain</type>
            <size>8151</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg4MzE5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
NzUzYWZiMjQ4YTY3MGE4NjIyMDcxZjE5ZDY1ZDA0OWFjZjJhNzFkLi4wOTI3MWFjNTMzZTUyMmMz
ZDI5ZDNjZGQ0N2RlNzUxMjBlNWJlNDJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wOC0xMSAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbRVM2XSBJbXBsZW1lbnQgUmVmbGVjdC5nZXQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NzkyNQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50
cyBSZWZsZWN0LmdldCBBUEkuCisgICAgICAgIEl0IGNhbiB0YWtlIHRoZSByZWNlaXZlciBvYmpl
Y3QgYXMgdGhlIHRoaXJkIGFyZ3VtZW50LgorICAgICAgICBXaGVuIHRoZSByZWNlaXZlciBpcyBz
cGVjaWZpZWQgYW5kIHRoZXJlJ3MgYSBnZXR0ZXIgZm9yIHRoZSBnaXZlbiBwcm9wZXJ0eSBuYW1l
LAorICAgICAgICB3ZSBjYWxsIHRoZSBnZXR0ZXIgd2l0aCB0aGUgcmVjZWl2ZXIgYXMgdGhlIHx0
aGlzfCB2YWx1ZS4KKworICAgICAgICAqIHJ1bnRpbWUvUmVmbGVjdE9iamVjdC5jcHA6CisgICAg
ICAgIChKU0M6OnJlZmxlY3RPYmplY3RHZXQpOgorICAgICAgICAqIHJ1bnRpbWUvU3BhcnNlQXJy
YXlWYWx1ZU1hcC5jcHA6CisgICAgICAgIChKU0M6OlNwYXJzZUFycmF5RW50cnk6OmdldCk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmg6CisgICAgICAg
ICogdGVzdHMvc3RyZXNzL3JlZmxlY3QtZ2V0LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJl
KToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKC5nZXQgc2hvdWxkVGhyb3cpOgor
ICAgICAgICAoLmdldCB2YXIpOgorICAgICAgICAoZ2V0IHZhci5vYmplY3QuZ2V0IGhlbGxvKToK
KyAgICAgICAgKC5nZXQgc2hvdWxkQmUpOgorICAgICAgICAoZ2V0IHZhci5vYmplY3Quc2V0IGhl
bGxvKToKKwogMjAxNS0wOC0xMSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4K
IAogICAgICAgICBNYWtlIEFTYW4gYnVpbGQgbm90IGRlcGVuZCBvbiBhc2FuLnhjY29uZmlnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9SZWZsZWN0T2JqZWN0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCmluZGV4
IDI3NWEyNDdiYzdjMjIyMTFmYWVmNTg4MTU0NzFkOGQ1MWFlMTgxMWUuLjVjNDU4NTIyZWJiMmI2
MzZiYTkyOTUzMzhjOWY0N2EwOGRlMDJkNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1JlZmxlY3RPYmplY3QuY3BwCkBAIC0zNSw2ICszNSw3IEBACiBuYW1lc3BhY2Ug
SlNDIHsKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVmbGVjdE9iamVj
dEVudW1lcmF0ZShFeGVjU3RhdGUqKTsKK3N0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIHJlZmxlY3RPYmplY3RHZXQoRXhlY1N0YXRlKik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUg
SlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKik7CiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0SXNFeHRlbnNp
YmxlKEV4ZWNTdGF0ZSopOwogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVm
bGVjdE9iamVjdE93bktleXMoRXhlY1N0YXRlKik7CkBAIC01Niw2ICs1Nyw3IEBAIGNvbnN0IENs
YXNzSW5mbyBSZWZsZWN0T2JqZWN0OjpzX2luZm8gPSB7ICJSZWZsZWN0IiwgJkJhc2U6OnNfaW5m
bywgJnJlZmxlY3RPYmplCiAgICAgYXBwbHkgICAgICAgICAgICAgcmVmbGVjdE9iamVjdEFwcGx5
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDMKICAgICBkZWxldGVQcm9wZXJ0eSAgICBy
ZWZsZWN0T2JqZWN0RGVsZXRlUHJvcGVydHkgICAgRG9udEVudW18RnVuY3Rpb24gMgogICAgIGVu
dW1lcmF0ZSAgICAgICAgIHJlZmxlY3RPYmplY3RFbnVtZXJhdGUgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAxCisgICAgZ2V0ICAgICAgICAgICAgICAgcmVmbGVjdE9iamVjdEdldCAgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKICAgICBnZXRQcm90b3R5cGVPZiAgICByZWZsZWN0
T2JqZWN0R2V0UHJvdG90eXBlT2YgICAgRG9udEVudW18RnVuY3Rpb24gMQogICAgIGhhcyAgICAg
ICAgICAgICAgIHJlZmxlY3RPYmplY3RIYXMgICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAyCiAgICAgaXNFeHRlbnNpYmxlICAgICAgcmVmbGVjdE9iamVjdElzRXh0ZW5zaWJsZSAgICAg
IERvbnRFbnVtfEZ1bmN0aW9uIDEKQEAgLTkxLDYgKzkzLDI0IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgcmVmbGVjdE9iamVjdEVudW1lcmF0ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShKU1Byb3BlcnR5TmFtZUl0ZXJhdG9yOjpjcmVhdGUoZXhl
YywgZXhlYy0+bGV4aWNhbEdsb2JhbE9iamVjdCgpLT5wcm9wZXJ0eU5hbWVJdGVyYXRvclN0cnVj
dHVyZSgpLCBhc09iamVjdCh0YXJnZXQpKSk7CiB9CiAKK0VuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgcmVmbGVjdE9iamVjdEdldChFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgSlNWYWx1ZSB0
YXJnZXQgPSBleGVjLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRhcmdldC5pc09iamVjdCgpKQor
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93VHlwZUVycm9yKGV4ZWMsIEFTQ0lJ
TGl0ZXJhbCgiUmVmbGVjdC5nZXQgcmVxdWlyZXMgdGhlIGZpcnN0IGFyZ3VtZW50IGJlIGFuIG9i
amVjdCIpKSk7CisKKyAgICBjb25zdCBJZGVudGlmaWVyIHByb3BlcnR5TmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpLnRvUHJvcGVydHlLZXkoZXhlYyk7CisgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKKworICAgIEpT
VmFsdWUgcmVjZWl2ZXIgPSB0YXJnZXQ7CisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+
PSAzKQorICAgICAgICByZWNlaXZlciA9IGV4ZWMtPmFyZ3VtZW50KDIpOworCisgICAgUHJvcGVy
dHlTbG90IHNsb3QocmVjZWl2ZXIpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGFyZ2V0
LmdldChleGVjLCBwcm9wZXJ0eU5hbWUsIHNsb3QpKTsKK30KKwogRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCByZWZsZWN0T2JqZWN0R2V0UHJvdG90eXBlT2YoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEpTVmFsdWUgdGFyZ2V0ID0gZXhlYy0+YXJndW1lbnQoMCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCmluZGV4
IDYyZDM0YmFhZmRkYjQwZWVhMGY2MTVmMDYyMDdhMjlhYjlmZjk5ODMuLmIzOTU5ODQ1MWI2OTk2
NTZiNGE3N2FjNTI2YWRjMGJkMDBjYmRhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuY3BwCkBAIC0xNDIsMTcgKzE0Miw2
IEBAIHZvaWQgU3BhcnNlQXJyYXlFbnRyeTo6Z2V0KFByb3BlcnR5RGVzY3JpcHRvciYgZGVzY3Jp
cHRvcikgY29uc3QKICAgICBkZXNjcmlwdG9yLnNldERlc2NyaXB0b3IoQmFzZTo6Z2V0KCksIGF0
dHJpYnV0ZXMpOwogfQogCi1KU1ZhbHVlIFNwYXJzZUFycmF5RW50cnk6OmdldChFeGVjU3RhdGUq
IGV4ZWMsIEpTT2JqZWN0KiBhcnJheSkgY29uc3QKLXsKLSAgICBKU1ZhbHVlIHZhbHVlID0gQmFz
ZTo6Z2V0KCk7Ci0gICAgQVNTRVJUKHZhbHVlKTsKLQotICAgIGlmIChMSUtFTFkoIXZhbHVlLmlz
R2V0dGVyU2V0dGVyKCkpKQotICAgICAgICByZXR1cm4gdmFsdWU7Ci0KLSAgICByZXR1cm4gY2Fs
bEdldHRlcihleGVjLCBhcnJheSwganNDYXN0PEdldHRlclNldHRlcio+KHZhbHVlKSk7Ci19Ci0K
IHZvaWQgU3BhcnNlQXJyYXlFbnRyeTo6cHV0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSB0aGlz
VmFsdWUsIFNwYXJzZUFycmF5VmFsdWVNYXAqIG1hcCwgSlNWYWx1ZSB2YWx1ZSwgYm9vbCBzaG91
bGRUaHJvdykKIHsKICAgICBpZiAoIShhdHRyaWJ1dGVzICYgQWNjZXNzb3IpKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TcGFyc2VBcnJheVZhbHVlTWFwLmgKaW5k
ZXggZmYzNmNhYTcxMWYxYmMzZWQ2NzY4YjFkNWFiODU1ZWVhZTdkZTVhYi4uMDc1NGI1M2Q5ZDYw
MWRmMmFjZDdiY2FmMmU5NGFlZjZkMzM3ZGZhMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3BhcnNlQXJyYXlWYWx1ZU1hcC5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1NwYXJzZUFycmF5VmFsdWVNYXAuaApAQCAtNDIsNyArNDIsNiBAQCBz
dHJ1Y3QgU3BhcnNlQXJyYXlFbnRyeSA6IHB1YmxpYyBXcml0ZUJhcnJpZXI8VW5rbm93bj4gewog
CiAgICAgU3BhcnNlQXJyYXlFbnRyeSgpIDogYXR0cmlidXRlcygwKSB7IH0KIAotICAgIEpTVmFs
dWUgZ2V0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KikgY29uc3Q7CiAgICAgdm9pZCBnZXQoSlNPYmpl
Y3QqLCBQcm9wZXJ0eVNsb3QmKSBjb25zdDsKICAgICB2b2lkIGdldChQcm9wZXJ0eURlc2NyaXB0
b3ImKSBjb25zdDsKICAgICB2b2lkIHB1dChFeGVjU3RhdGUqLCBKU1ZhbHVlIHRoaXNWYWx1ZSwg
U3BhcnNlQXJyYXlWYWx1ZU1hcCosIEpTVmFsdWUsIGJvb2wgc2hvdWxkVGhyb3cpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy9yZWZsZWN0LWdldC5qcyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVmbGVjdC1nZXQuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uNDg0MTliZGI3OWU1NWE0OTU0YTUxZTMxZjM4MDZhYTRmMDg0Nzk4MQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvcmVmbGVjdC1nZXQu
anMKQEAgLTAsMCArMSw5MSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
J2JhZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IG1lc3NhZ2UpIHsKKyAgICB2YXIgZXJyb3IgPSBudWxsOworICAgIHRyeSB7CisgICAgICAgIGZ1
bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisgICAg
aWYgKCFlcnJvcikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJub3QgdGhyb3duLiIpOworICAg
IGlmIChTdHJpbmcoZXJyb3IpICE9PSBtZXNzYWdlKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
ImJhZCBlcnJvcjogIiArIFN0cmluZyhlcnJvcikpOworfQorCitzaG91bGRCZShSZWZsZWN0Lmdl
dC5sZW5ndGgsIDIpOworCitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgUmVmbGVjdC5nZXQoImhl
bGxvIik7Cit9LCBgVHlwZUVycm9yOiBSZWZsZWN0LmdldCByZXF1aXJlcyB0aGUgZmlyc3QgYXJn
dW1lbnQgYmUgYW4gb2JqZWN0YCk7CisKK3ZhciBvYmplY3QgPSB7IGhlbGxvOiA0MiB9Oworc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgNDIpOworc2hvdWxkQmUoUmVmbGVj
dC5nZXQob2JqZWN0LCAnd29ybGQnKSwgdW5kZWZpbmVkKTsKK3ZhciBwcm90byA9IFtdOworb2Jq
ZWN0Ll9fcHJvdG9fXyA9IHByb3RvOworc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnbGVu
Z3RoJyksIDApOworCit2YXIgYXJyYXkgPSBbIDAsIDEsIDIgXTsKK3Nob3VsZEJlKFJlZmxlY3Qu
Z2V0KGFycmF5LCAwKSwgMCk7Cit2YXIgcHJvdG8gPSBbIDAsIDEsIDIsIDUsIDYgXTsKK2FycmF5
Ll9fcHJvdG9fXyA9IHByb3RvOworc2hvdWxkQmUoUmVmbGVjdC5nZXQoYXJyYXksIDMpLCA1KTsK
K2FycmF5Ll9fcHJvdG9fXyA9IE9iamVjdC5wcm90b3R5cGU7CitzaG91bGRCZShSZWZsZWN0Lmdl
dChhcnJheSwgMyksIHVuZGVmaW5lZCk7CisKK3ZhciBvYmplY3QgPSB7CisgICAgdmFsdWU6IDQy
LAorICAgIHdvcmxkOiAyMDAsCisgICAgZ2V0IGhlbGxvKCkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLnZhbHVlOworICAgIH0KK307CitzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdo
ZWxsbycpLCA0Mik7CitzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICdoZWxsbycsIHsgdmFs
dWU6IDIwMCB9KSwgMjAwKTsKK3Nob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJywg
Ik9LIiksIHVuZGVmaW5lZCk7CitzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICd3b3JsZCcp
LCAyMDApOworc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnd29ybGQnLCB7IHZhbHVlOiAy
MDAgfSksIDIwMCk7CitzaG91bGRCZShSZWZsZWN0LmdldChvYmplY3QsICd3b3JsZCcsICJPSyIp
LCAyMDApOwordmFyIHZhbHVlID0gNDAwOworc2hvdWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAn
aGVsbG8nLCBudWxsKSwgNDAwKTsKK3Nob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxv
JywgdW5kZWZpbmVkKSwgNDAwKTsKKwordmFyIG9iamVjdCA9IHsKKyAgICB2YWx1ZTogNDIsCisg
ICAgd29ybGQ6IDIwMCwKKyAgICBnZXQgaGVsbG8oKQorICAgIHsKKyAgICAgICAgInVzZSBzdHJp
Y3QiOworICAgICAgICByZXR1cm4gdGhpcy52YWx1ZTsKKyAgICB9Cit9Oworc2hvdWxkQmUoUmVm
bGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nKSwgNDIpOworc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnaGVsbG8nLCB7IHZhbHVlOiAyMDAgfSksIDIwMCk7CitzaG91bGRCZShSZWZsZWN0Lmdl
dChvYmplY3QsICdoZWxsbycsICJPSyIpLCB1bmRlZmluZWQpOworc2hvdWxkQmUoUmVmbGVjdC5n
ZXQob2JqZWN0LCAnd29ybGQnKSwgMjAwKTsKK3Nob3VsZEJlKFJlZmxlY3QuZ2V0KG9iamVjdCwg
J3dvcmxkJywgeyB2YWx1ZTogMjAwIH0pLCAyMDApOworc2hvdWxkQmUoUmVmbGVjdC5nZXQob2Jq
ZWN0LCAnd29ybGQnLCAiT0siKSwgMjAwKTsKKworc2hvdWxkVGhyb3coKCkgPT4geworICAgIFJl
ZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJywgbnVsbCk7Cit9LCBgVHlwZUVycm9yOiBudWxsIGlz
IG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3RoaXMudmFsdWUnKWApOworCitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgUmVmbGVjdC5nZXQob2JqZWN0LCAnaGVsbG8nLCB1bmRlZmluZWQpOwor
fSwgYFR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ3Ro
aXMudmFsdWUnKWApOworCit2YXIgb2JqZWN0ID0geworICAgIHZhbHVlOiA0MiwKKyAgICB3b3Js
ZDogMjAwLAorICAgIHNldCBoZWxsbyh2YWx1ZSkKKyAgICB7CisgICAgfQorfTsKK3Nob3VsZEJl
KFJlZmxlY3QuZ2V0KG9iamVjdCwgJ2hlbGxvJyksIHVuZGVmaW5lZCk7CitzaG91bGRCZShSZWZs
ZWN0LmdldChvYmplY3QsICdoZWxsbycsIHsgaGVsbG86IDQyIH0pLCB1bmRlZmluZWQpOworc2hv
dWxkQmUoUmVmbGVjdC5nZXQob2JqZWN0LCAnb2snLCB7IG9rOiA0MiB9KSwgdW5kZWZpbmVkKTsK
</data>
<flag name="review"
          id="283992"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>