--0016e659f7f20f1790049694da7f
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi,

2010/12/3 Yusuke ENDOH <mame / tsg.ne.jp>:
>>> ... Oops!  ¨Âèéäïåó îï÷ïòë áó åøãåðôåä ¨Â èáâåìéåöåä ôèáô ôèéó
>>> would work...  ¨Âèù äïî§ùïáììïôèéó>>
>> Currently refine doesn't work without blocks, but do you mean that?
>
> Ah sorry.
>
>  ¨ÂïäõìÆïïÅøô
>  ¨Âåæéî卯éøîõíäï
>  ¨Âåæ ¯¨ïôèåò©ñõï¨ïôèåò©åî>  ¨Âîä
>  ¨Âîä
>  ¨ÂïäõìÂáòÅøô
>  ¨Âîãìõäå ÆïïÅøô ïò õóéîÆïïÅøô
>  ¨Âîä
>  ¨Âóéîç ÂáòÅøô
>  ¨Â £½áãôõáì°¬ åøðåãôå䨱¯²
I forgot to support it.  Please apply the attached patch.  I have also
added Kernel#refine.

>> I think it's hard to add new keywords by a gem.  ¨Âáöùïáâáîäïîå>> keywords?  ¨Â ðòåæåò ôï ôèëåù÷ïòòåæéîå ôï ôèíåôèïä òåæéîå ÷éôèïõ>> blocks suggested by you.
>
> I first said in [ruby-core:33375]:
>
>> However, we should discuss this topic (new keyword) towards
>> 2.0.  ¨Âïäõìå§íåôèïäáòîïâáä¬ áó ðáòô ïæ òåæìåãôéïî
>> features (such as Module#define_method for `def' keyword).
>
> Needless to say, we must not add any new keywords to 1.9.x, especially
> normal simple word like "refine."  ¨Â§í ïë ôï éîãìõäôèéó æåáôõòéî
> 1.9.x, and now I believe that gem is a good idea as the first step.
>
> However, I received many negative comments to this approach (gem),
> from nars*, kosak*, ko*, nakad*, shyouhe*.  ¨Âèåóååí ôï ôèéîôèáô
> it is better to import your patch "as is".

I also wouldn't like to see such a language core feature in a gem.

>> Isn't it enough to introduce refinements as an experimental feature,
>> at least in trunk?
>
> I don't like to include a feature called "experimental", not because
> it is not complete yet, but because it becomes "de facto standard."
> It would be good if there are not only "document" but also "mechanism"
> to inform users that the feature is experimental, such as warning or
> a new method like "RubyVM.enable_experimental_features".

As far as I know, the current status of trunk is unstable, and if new
features break backward compatibility, Yugui will create the branch
ruby_1_9, won't you, Yugui?  So, we don't need the above mechanism
until new experimental features are decided to include to 1.9.x.

> Note that this is just my opinion, and that I seem to be in the
> minority ;-)
> I hope that 1.9.x would be stable, but many other committers seem to
> hope to include new feature in 1.9.x aggressively.

I also hope that 1.9.x would be stable, but I'd like to develop
aggressively in trunk.  I don't think the current design and
implementation of refinements are mature, but I can't make them mature
on my own, so I'd like to have help from other committers.

-- 
Shugo Maeda

--0016e659f7f20f1790049694da7f
Content-Type: text/x-patch; charset=US-ASCII; 
	namendirect_using_and_kernel_refine_20101204.diff"
Content-Disposition: attachment; 
	filenamendirect_using_and_kernel_refine_20101204.diff"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_ghagnoyy0

ZGlmZiAtLWdpdCBhL2V2YWwuYyBiL2V2YWwuYwppbmRleCA2ZDVhZjdiLi5iY2VmMWQ5IDEwMDY0
NAotLS0gYS9ldmFsLmMKKysrIGIvZXZhbC5jCkBAIC04OTgsOCArODk4LDE5IEBAIHJiX292ZXJs
YXlfbW9kdWxlKE5PREUgKmNyZWYsIFZBTFVFIGtsYXNzLCBWQUxVRSBtb2R1bGUpCiAgICAgcmJf
Y2xlYXJfY2FjaGVfYnlfY2xhc3Moa2xhc3MpOwogfQogCit2b2lkIHJiX3VzaW5nX21vZHVsZShO
T0RFICpjcmVmLCBWQUxVRSBtb2R1bGUpOworCitzdGF0aWMgaW50Cit1c2luZ19tb2R1bGVfaShW
QUxVRSBtb2R1bGUsIFZBTFVFIHZhbHVlLCBWQUxVRSBhcmcpCit7CisgICAgTk9ERSAqY3JlZiA9
IChOT0RFICopIGFyZzsKKworICAgIHJiX3VzaW5nX21vZHVsZShjcmVmLCBtb2R1bGUpOworICAg
IHJldHVybiBTVF9DT05USU5VRTsKK30KKwogc3RhdGljIGludAotdXNpbmdfbW9kdWxlX2koVkFM
VUUga2xhc3MsIFZBTFVFIG1vZHVsZSwgVkFMVUUgYXJnKQorb3ZlcmxheV9tb2R1bGVfaShWQUxV
RSBrbGFzcywgVkFMVUUgbW9kdWxlLCBWQUxVRSBhcmcpCiB7CiAgICAgTk9ERSAqY3JlZiA9IChO
T0RFICopIGFyZzsKICAgICBpbnQgaTsKQEAgLTkxMSwxNCArOTIyLDE4IEBAIHVzaW5nX21vZHVs
ZV9pKFZBTFVFIGtsYXNzLCBWQUxVRSBtb2R1bGUsIFZBTFVFIGFyZykKIHZvaWQKIHJiX3VzaW5n
X21vZHVsZShOT0RFICpjcmVmLCBWQUxVRSBtb2R1bGUpCiB7Ci0gICAgSUQgaWRfb3ZlcmxheWVk
X21vZHVsZXM7Ci0gICAgVkFMVUUgb3ZlcmxheWVkX21vZHVsZXM7CisgICAgSUQgaWRfb3Zlcmxh
eWVkX21vZHVsZXMsIGlkX3VzaW5nX21vZHVsZXM7CisgICAgVkFMVUUgb3ZlcmxheWVkX21vZHVs
ZXMsIHVzaW5nX21vZHVsZXM7CiAKLSAgICBDaGVja19UeXBlKG1vZHVsZSwgVF9NT0RVTEUpOwor
ICAgIENPTlNUX0lEKGlkX3VzaW5nX21vZHVsZXMsICJfX3VzaW5nX21vZHVsZXNfXyIpOworICAg
IHVzaW5nX21vZHVsZXMgPSByYl9hdHRyX2dldChtb2R1bGUsIGlkX3VzaW5nX21vZHVsZXMpOwor
ICAgIGlmICghTklMX1AodXNpbmdfbW9kdWxlcykpIHsKKwlyYl9oYXNoX2ZvcmVhY2godXNpbmdf
bW9kdWxlcywgdXNpbmdfbW9kdWxlX2ksIChWQUxVRSkgY3JlZik7CisgICAgfQogICAgIENPTlNU
X0lEKGlkX292ZXJsYXllZF9tb2R1bGVzLCAiX19vdmVybGF5ZWRfbW9kdWxlc19fIik7CiAgICAg
b3ZlcmxheWVkX21vZHVsZXMgPSByYl9hdHRyX2dldChtb2R1bGUsIGlkX292ZXJsYXllZF9tb2R1
bGVzKTsKICAgICBpZiAoTklMX1Aob3ZlcmxheWVkX21vZHVsZXMpKSByZXR1cm47Ci0gICAgcmJf
aGFzaF9mb3JlYWNoKG92ZXJsYXllZF9tb2R1bGVzLCB1c2luZ19tb2R1bGVfaSwgKFZBTFVFKSBj
cmVmKTsKKyAgICByYl9oYXNoX2ZvcmVhY2gob3ZlcmxheWVkX21vZHVsZXMsIG92ZXJsYXlfbW9k
dWxlX2ksIChWQUxVRSkgY3JlZik7CiB9CiAKIC8qCkBAIC05MzUsNiArOTUwLDcgQEAgcmJfbW9k
X3VzaW5nKFZBTFVFIHNlbGYsIFZBTFVFIG1vZHVsZSkKICAgICBJRCBpZF91c2luZ19tb2R1bGVz
OwogICAgIFZBTFVFIHVzaW5nX21vZHVsZXM7CiAKKyAgICBDaGVja19UeXBlKG1vZHVsZSwgVF9N
T0RVTEUpOwogICAgIENPTlNUX0lEKGlkX3VzaW5nX21vZHVsZXMsICJfX3VzaW5nX21vZHVsZXNf
XyIpOwogICAgIHVzaW5nX21vZHVsZXMgPSByYl9hdHRyX2dldChzZWxmLCBpZF91c2luZ19tb2R1
bGVzKTsKICAgICBpZiAoTklMX1AodXNpbmdfbW9kdWxlcykpIHsKQEAgLTk5NCw2ICsxMDEwLDIx
IEBAIHJlZmluZW1lbnRfbW9kdWxlX2luY2x1ZGUoaW50IGFyZ2MsIFZBTFVFICphcmd2LCBWQUxV
RSBtb2R1bGUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIFZBTFVFCityZWZpbmVt
ZW50X21vZHVsZV9uZXcoVkFMVUUga2xhc3MpCit7CisgICAgSUQgaWRfcmVmaW5lZF9jbGFzczsK
KyAgICBWQUxVRSBtb2QgPSByYl9tb2R1bGVfbmV3KCk7CisKKyAgICBDT05TVF9JRChpZF9yZWZp
bmVkX2NsYXNzLCAiX19yZWZpbmVkX2NsYXNzX18iKTsKKyAgICByYl9pdmFyX3NldChtb2QsIGlk
X3JlZmluZWRfY2xhc3MsIGtsYXNzKTsKKyAgICByYl9kZWZpbmVfc2luZ2xldG9uX21ldGhvZCht
b2QsICJtZXRob2RfYWRkZWQiLAorCQkJICAgICAgIHJlZmluZW1lbnRfbW9kdWxlX21ldGhvZF9h
ZGRlZCwgMSk7CisgICAgcmJfZGVmaW5lX3NpbmdsZXRvbl9tZXRob2QobW9kLCAiaW5jbHVkZSIs
CisJCQkgICAgICAgcmVmaW5lbWVudF9tb2R1bGVfaW5jbHVkZSwgLTEpOworICAgIHJldHVybiBt
b2Q7Cit9CisKIC8qCiAgKiAgY2FsbC1zZXE6CiAgKiAgICAgcmVmaW5lKGtsYXNzKSB7IGJsb2Nr
IH0gICAtPiBzZWxmCkBAIC0xMDA2LDcgKzEwMzcsNyBAQCByYl9tb2RfcmVmaW5lKFZBTFVFIG1v
ZHVsZSwgVkFMVUUga2xhc3MpCiB7CiAgICAgTk9ERSAqY3JlZiA9IHJiX3ZtX2NyZWYoKTsKICAg
ICBWQUxVRSBtb2Q7Ci0gICAgSUQgaWRfb3ZlcmxheWVkX21vZHVsZXMsIGlkX3JlZmluZWRfY2xh
c3M7CisgICAgSUQgaWRfb3ZlcmxheWVkX21vZHVsZXM7CiAgICAgVkFMVUUgb3ZlcmxheWVkX21v
ZHVsZXMsIG1vZHVsZXM7CiAKICAgICBDaGVja19UeXBlKGtsYXNzLCBUX0NMQVNTKTsKQEAgLTEw
MTksMTMgKzEwNTAsNyBAQCByYl9tb2RfcmVmaW5lKFZBTFVFIG1vZHVsZSwgVkFMVUUga2xhc3Mp
CiAgICAgfQogICAgIG1vZCA9IHJiX2hhc2hfYXJlZihvdmVybGF5ZWRfbW9kdWxlcywga2xhc3Mp
OwogICAgIGlmIChOSUxfUChtb2QpKSB7Ci0JbW9kID0gcmJfbW9kdWxlX25ldygpOwotCUNPTlNU
X0lEKGlkX3JlZmluZWRfY2xhc3MsICJfX3JlZmluZWRfY2xhc3NfXyIpOwotCXJiX2l2YXJfc2V0
KG1vZCwgaWRfcmVmaW5lZF9jbGFzcywga2xhc3MpOwotCXJiX2RlZmluZV9zaW5nbGV0b25fbWV0
aG9kKG1vZCwgIm1ldGhvZF9hZGRlZCIsCi0JCQkJICAgcmVmaW5lbWVudF9tb2R1bGVfbWV0aG9k
X2FkZGVkLCAxKTsKLQlyYl9kZWZpbmVfc2luZ2xldG9uX21ldGhvZChtb2QsICJpbmNsdWRlIiwK
LQkJCQkgICByZWZpbmVtZW50X21vZHVsZV9pbmNsdWRlLCAtMSk7CisJbW9kID0gcmVmaW5lbWVu
dF9tb2R1bGVfbmV3KGtsYXNzKTsKIAlyYl9vdmVybGF5X21vZHVsZShjcmVmLCBrbGFzcywgbW9k
KTsKIAlyYl9oYXNoX2FzZXQob3ZlcmxheWVkX21vZHVsZXMsIGtsYXNzLCBtb2QpOwogICAgIH0K
QEAgLTEwMzMsNiArMTA1OCwyNiBAQCByYl9tb2RfcmVmaW5lKFZBTFVFIG1vZHVsZSwgVkFMVUUg
a2xhc3MpCiAgICAgcmV0dXJuIG1vZDsKIH0KIAorLyoKKyAqICBjYWxsLXNlcToKKyAqICAgICBy
ZWZpbmUoa2xhc3MpIHsgYmxvY2sgfSAgIC0+IHNlbGYKKyAqCisgKiAgUmVmaW5lIDxpPmtsYXNz
PC9pPiBpbiB0aGUgc2NvcGUgd2hlcmUgdGhlIG1ldGhvZCBpcyBjYWxsZWQuCisgKi8KKworc3Rh
dGljIFZBTFVFCitmX3JlZmluZShWQUxVRSBzZWxmLCBWQUxVRSBrbGFzcykKK3sKKyAgICBOT0RF
ICpjcmVmID0gcmJfdm1fY3JlZigpOworICAgIFZBTFVFIG1vZDsKKworICAgIENoZWNrX1R5cGUo
a2xhc3MsIFRfQ0xBU1MpOworICAgIG1vZCA9IHJlZmluZW1lbnRfbW9kdWxlX25ldyhrbGFzcyk7
CisgICAgcmJfb3ZlcmxheV9tb2R1bGUoY3JlZiwga2xhc3MsIG1vZCk7CisgICAgcmJfbW9kX21v
ZHVsZV9ldmFsKDAsIE5VTEwsIG1vZCk7CisgICAgcmV0dXJuIG1vZDsKK30KKwogdm9pZAogcmJf
b2JqX2NhbGxfaW5pdChWQUxVRSBvYmosIGludCBhcmdjLCBWQUxVRSAqYXJndikKIHsKQEAgLTEx
NTcsNiArMTIwMiw3IEBAIGZfdXNpbmcoVkFMVUUgc2VsZiwgVkFMVUUgbW9kdWxlKQogewogICAg
IE5PREUgKmNyZWYgPSByYl92bV9jcmVmKCk7CiAKKyAgICBDaGVja19UeXBlKG1vZHVsZSwgVF9N
T0RVTEUpOwogICAgIHJiX3VzaW5nX21vZHVsZShjcmVmLCBtb2R1bGUpOwogICAgIHJldHVybiBz
ZWxmOwogfQpAQCAtMTMzMSw2ICsxMzc3LDcgQEAgSW5pdF9ldmFsKHZvaWQpCiAgICAgcmJfZGVm
aW5lX3NpbmdsZXRvbl9tZXRob2QocmJfdm1fdG9wX3NlbGYoKSwgImluY2x1ZGUiLCB0b3BfaW5j
bHVkZSwgLTEpOwogCiAgICAgcmJfZGVmaW5lX2dsb2JhbF9mdW5jdGlvbigidXNpbmciLCBmX3Vz
aW5nLCAxKTsKKyAgICByYl9kZWZpbmVfZ2xvYmFsX2Z1bmN0aW9uKCJyZWZpbmUiLCBmX3JlZmlu
ZSwgMSk7CiAKICAgICByYl9kZWZpbmVfbWV0aG9kKHJiX21LZXJuZWwsICJleHRlbmQiLCByYl9v
YmpfZXh0ZW5kLCAtMSk7CiAKZGlmZiAtLWdpdCBhL3Rlc3QvcnVieS90ZXN0X3JlZmluZW1lbnQu
cmIgYi90ZXN0L3J1YnkvdGVzdF9yZWZpbmVtZW50LnJiCmluZGV4IDA1YTRmMzMuLmVkMDFjNzcg
MTAwNjQ0Ci0tLSBhL3Rlc3QvcnVieS90ZXN0X3JlZmluZW1lbnQucmIKKysrIGIvdGVzdC9ydWJ5
L3Rlc3RfcmVmaW5lbWVudC5yYgpAQCAtODYsNiArODYsMTggQEAgY2xhc3MgVGVzdFJlZmluZW1l
bnQgPCBUZXN0OjpVbml0OjpUZXN0Q2FzZQogICAgIGVuZAogICBlbmQKIAorICBtb2R1bGUgRm9v
RXh0MworICAgIHVzaW5nIEZvb0V4dAorICBlbmQKKworICBjbGFzcyBGb29FeHRDbGllbnQzCisg
ICAgdXNpbmcgRm9vRXh0MworCisgICAgZGVmIHNlbGYuaW52b2tlX3hfb24oZm9vKQorICAgICAg
cmV0dXJuIGZvby54CisgICAgZW5kCisgIGVuZAorCiAgIGRlZiB0ZXN0X292ZXJyaWRlCiAgICAg
Zm9vID0gRm9vLm5ldwogICAgIGFzc2VydF9lcXVhbCgiRm9vI3giLCBmb28ueCkKQEAgLTE1MCw2
ICsxNjIsMTMgQEAgY2xhc3MgVGVzdFJlZmluZW1lbnQgPCBUZXN0OjpVbml0OjpUZXN0Q2FzZQog
ICAgIGFzc2VydF9yYWlzZShOb01ldGhvZEVycm9yKSB7IHN1Yi56IH0KICAgZW5kCiAKKyAgZGVm
IHRlc3RfaW5kaXJlY3RfdXNpbmcKKyAgICBmb28gPSBGb28ubmV3CisgICAgYXNzZXJ0X2VxdWFs
KCJGb28jeCIsIGZvby54KQorICAgIGFzc2VydF9lcXVhbCgiRm9vRXh0I3giLCBGb29FeHRDbGll
bnQzLmludm9rZV94X29uKGZvbykpCisgICAgYXNzZXJ0X2VxdWFsKCJGb28jeCIsIGZvby54KQor
ICBlbmQKKwogICBkZWYgdGVzdF9tb2R1bGVfZXZhbAogICAgIGZvbyA9IEZvby5uZXcKICAgICBh
c3NlcnRfZXF1YWwoIkZvbyN4IiwgZm9vLngpCkBAIC0zMDcsNSArMzI2LDMzIEBAIGNsYXNzIFRl
c3RSZWZpbmVtZW50IDwgVGVzdDo6VW5pdDo6VGVzdENhc2UKICAgICBhc3NlcnRfZXF1YWwoIm0y
I2JhciIsIG0uY2FsbF9iYXIoImFiYyIpKQogICAgIGFzc2VydF9lcXVhbCgibTMjYmF6IiwgbS5j
YWxsX2JheigiYWJjIikpCiAgIGVuZAorCisgIGRlZiB0ZXN0X3JlZmluZV9hdF90b3BsZXZlbAor
ICAgIGFzc2VydF9lcXVhbCgwLCAxIC8gMikKKyAgICByZXN1bHQgPSBldmFsKDw8LUVPRiwgVE9Q
TEVWRUxfQklORElORykKKyAgICAgIHJlZmluZSBGaXhudW0gZG8KKyAgICAgICAgZGVmIC8ob3Ro
ZXIpIHF1byhvdGhlcikgZW5kCisgICAgICBlbmQKKworICAgICAgMSAvIDIKKyAgICBFT0YKKyAg
ICBhc3NlcnRfZXF1YWwoUmF0aW9uYWwoMSwgMiksIHJlc3VsdCkKKyAgICBhc3NlcnRfZXF1YWwo
MCwgMSAvIDIpCisgIGVuZAorCisgIGRlZiByZWZpbmVfaW5fbWV0aG9kCisgICAgcmVmaW5lIEZp
eG51bSBkbworICAgICAgZGVmIC8ob3RoZXIpIHF1byhvdGhlcikgZW5kCisgICAgZW5kCisKKyAg
ICByZXR1cm4gMSAvIDIKKyAgZW5kCisgIHByaXZhdGUgOnJlZmluZV9pbl9tZXRob2QKKworICBk
ZWYgdGVzdF9yZWZpbmVfaW5fbWV0aG9kCisgICAgYXNzZXJ0X2VxdWFsKDAsIDEgLyAyKQorICAg
IGFzc2VydF9lcXVhbChSYXRpb25hbCgxLCAyKSwgcmVmaW5lX2luX21ldGhvZCkKKyAgICBhc3Nl
cnRfZXF1YWwoMCwgMSAvIDIpCisgIGVuZAogZW5kCiAKZGlmZiAtLWdpdCBhL3ZtX2luc25oZWxw
ZXIuYyBiL3ZtX2luc25oZWxwZXIuYwppbmRleCA2YmI2ZjViLi40YTQxNTZhIDEwMDY0NAotLS0g
YS92bV9pbnNuaGVscGVyLmMKKysrIGIvdm1faW5zbmhlbHBlci5jCkBAIC0xNzYzLDEwICsxNzYz
LDkgQEAgcmJfdm1fdXNpbmdfbW9kdWxlcyhOT0RFICpjcmVmLCBWQUxVRSBrbGFzcykKICAgICBJ
RCBpZF91c2luZ19tb2R1bGVzOwogICAgIFZBTFVFIHVzaW5nX21vZHVsZXM7CiAKLSAgICBDT05T
VF9JRChpZF91c2luZ19tb2R1bGVzLCAiX191c2luZ19tb2R1bGVzX18iKTsKLSAgICB1c2luZ19t
b2R1bGVzID0gcmJfYXR0cl9nZXQoa2xhc3MsIGlkX3VzaW5nX21vZHVsZXMpOwotICAgIHN3aXRj
aCAoVFlQRShrbGFzcykpIHsKLSAgICBjYXNlIFRfQ0xBU1M6CisgICAgaWYgKFRZUEUoa2xhc3Mp
ID09IFRfQ0xBU1MpIHsKKwlDT05TVF9JRChpZF91c2luZ19tb2R1bGVzLCAiX191c2luZ19tb2R1
bGVzX18iKTsKKwl1c2luZ19tb2R1bGVzID0gcmJfYXR0cl9nZXQoa2xhc3MsIGlkX3VzaW5nX21v
ZHVsZXMpOwogCWlmIChOSUxfUCh1c2luZ19tb2R1bGVzKSkgewogCSAgICBWQUxVRSBzdXBlciA9
IHJiX2NsYXNzX3JlYWwoUkNMQVNTX1NVUEVSKGtsYXNzKSk7CiAJICAgIHVzaW5nX21vZHVsZXMg
PSByYl9hdHRyX2dldChzdXBlciwgaWRfdXNpbmdfbW9kdWxlcyk7CkBAIC0xNzc1LDE0ICsxNzc0
LDcgQEAgcmJfdm1fdXNpbmdfbW9kdWxlcyhOT0RFICpjcmVmLCBWQUxVRSBrbGFzcykKIAkJcmJf
aXZhcl9zZXQoa2xhc3MsIGlkX3VzaW5nX21vZHVsZXMsIHVzaW5nX21vZHVsZXMpOwogCSAgICB9
CiAJfQotCWJyZWFrOwotICAgIGNhc2UgVF9NT0RVTEU6Ci0JcmJfdXNpbmdfbW9kdWxlKGNyZWYs
IGtsYXNzKTsKLQlicmVhazsKLSAgICB9Ci0gICAgaWYgKCFOSUxfUCh1c2luZ19tb2R1bGVzKSkg
ewotCXJiX2hhc2hfZm9yZWFjaCh1c2luZ19tb2R1bGVzLCB2bV91c2luZ19tb2R1bGVfaSwKLQkJ
ICAgICAgIAkoVkFMVUUpIGNyZWYpOwogICAgIH0KKyAgICByYl91c2luZ19tb2R1bGUoY3JlZiwg
a2xhc3MpOwogfQogCg--0016e659f7f20f1790049694da7f--