From owner-freebsd-hackers@FreeBSD.ORG Wed Aug 8 20:59:52 2012 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A6DC5106564A for ; Wed, 8 Aug 2012 20:59:52 +0000 (UTC) (envelope-from danismostlikely@gmail.com) Received: from mail-vc0-f182.google.com (mail-vc0-f182.google.com [209.85.220.182]) by mx1.freebsd.org (Postfix) with ESMTP id 58BFA8FC12 for ; Wed, 8 Aug 2012 20:59:52 +0000 (UTC) Received: by vcbgb22 with SMTP id gb22so1540401vcb.13 for ; Wed, 08 Aug 2012 13:59:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=l00kD5N93Nq5Betwah33x4UkH2MvnN/0ZemtkJk8iww=; b=vNFnlIQRjilKSC7MWM3ZuEYBL7TSsrP4vA9Kf/lf91JQOnrSjX4gGF1mhncUPYMEOa Kkgsfa5xed4QJ65VUsjHMpgrNbjJUxWyU2eD2K9qLEhfISOGse2JY4PKNhpVWOA1WvMb Yw2eCROItOVefN0x+mnrdQWVYOlF7afVUL5OP3UDpZXpin61TGpAGWJwTs7giWv1VtC4 L+bsphC74JOGVSYC90D9zFVbPvcJdCSBn8AgQ3dR9raOddyky03B2+IpoxSgfYQ70EWK aFjc+z/pf0yV3kmopIWIHhM5QTG+AFfcn3hzXjy65e0HBI/hjA/4479CYlaXznYCtD2T Ky4g== MIME-Version: 1.0 Received: by 10.52.36.129 with SMTP id q1mr1075835vdj.120.1344459591703; Wed, 08 Aug 2012 13:59:51 -0700 (PDT) Received: by 10.58.248.71 with HTTP; Wed, 8 Aug 2012 13:59:51 -0700 (PDT) Date: Wed, 8 Aug 2012 14:59:51 -0600 Message-ID: From: Dan McGregor To: freebsd-hackers@freebsd.org Content-Type: multipart/mixed; boundary=20cf3079b7e260dccd04c6c76427 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Subject: Consistent use of lex flags X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 08 Aug 2012 20:59:52 -0000 --20cf3079b7e260dccd04c6c76427 Content-Type: text/plain; charset=ISO-8859-1 Hi. I was just noticing that mkcsmapper doesn't build with clang. I saw two ways to do this, the first being to #define YY_NO_INPUT, and the other to use the %option noinput lex flag. While there, I decided to explore and I changed a bunch of #defines to the standard lex way of doing things. I thought it would be good if all the code that originated in FreeBSD could be consistent. Thoughts? --20cf3079b7e260dccd04c6c76427 Content-Type: application/octet-stream; name="lex.diff" Content-Disposition: attachment; filename="lex.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5mwidc60 SW5kZXg6IHVzci5iaW4vY3N1cC90b2tlbi5sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHVzci5iaW4vY3N1cC90 b2tlbi5sCShyZXZpc2lvbiAyMzkxNDEpCisrKyB1c3IuYmluL2NzdXAvdG9rZW4ubAkod29ya2lu ZyBjb3B5KQpAQCAtMzUsMTMgKzM1LDEyIEBACiAjaW5jbHVkZSAibWlzYy5oIgogI2luY2x1ZGUg InRva2VuLmgiCiAKLSNkZWZpbmUJWVlfTk9fVU5QVVQKLQogaW50IGxpbmVubyA9IDE7CiAKICV9 CiAKICVvcHRpb24gbm95eXdyYXAKKyVvcHRpb24gbm91bnB1dAogCiAlJQogCkluZGV4OiB1c3Iu YmluL2NvbGxkZWYvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdXNyLmJpbi9jb2xsZGVmL01ha2Vm aWxlCShyZXZpc2lvbiAyMzkxNDEpCisrKyB1c3IuYmluL2NvbGxkZWYvTWFrZWZpbGUJKHdvcmtp bmcgY29weSkKQEAgLTQsNyArNCw3IEBACiBTUkNTPQlwYXJzZS55IHNjYW4ubCB5LnRhYi5oCiBM RkxBR1M9CS04IC1pCiBDRkxBR1MrPS1JLiAtSSR7LkNVUkRJUn0gLUkkey5DVVJESVJ9Ly4uLy4u L2xpYi9saWJjL2xvY2FsZQotQ0ZMQUdTKz0tRENPTExBVEVfREVCVUcgLURZWV9OT19VTlBVVCAt RFlZX05PX0lOUFVUCitDRkxBR1MrPS1EQ09MTEFURV9ERUJVRwogTERBREQ9CS1sbAogRFBBREQ9 CSR7TElCTH0KIApJbmRleDogdXNyLmJpbi9jb2xsZGVmL3NjYW4ubAo9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1 c3IuYmluL2NvbGxkZWYvc2Nhbi5sCShyZXZpc2lvbiAyMzkxNDEpCisrKyB1c3IuYmluL2NvbGxk ZWYvc2Nhbi5sCSh3b3JraW5nIGNvcHkpCkBAIC00OSw2ICs0OSw4IEBACiAjZW5kaWYgLyogRkxF WF9ERUJVRyAqLwogaW50IHl5bGV4KHZvaWQpOwogJX0KKyVvcHRpb24gbm9pbnB1dAorJW9wdGlv biBub3VucHV0CiAlJQogPElOSVRJQUwsY2hhcm1hcCxuY2hhcixzdWJzLHN1YnMyPlsgXHRdKyAg ICAgIDsKIDxzdWJzMj5cIiAgICAgICAgICAgICAgIHsgcHRyID0gYnVmOyBCRUdJTihzdHJpbmcp OyB9CkluZGV4OiB1c3IuYmluL3hsaW50L2xpbnQxL3NjYW4ubAo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1c3Iu YmluL3hsaW50L2xpbnQxL3NjYW4ubAkocmV2aXNpb24gMjM5MTQxKQorKysgdXNyLmJpbi94bGlu dC9saW50MS9zY2FuLmwJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDYgQEAKICNpbmNsdWRl ICJjZ3JhbS5oIgogCiAjZGVmaW5lIENIQVJfTUFTSwkofih+MCA8PCBDSEFSX0JJVCkpCi0jZGVm aW5lIFlZX05PX1VOUFVUCiAKIC8qIEN1cnJlbnQgcG9zaXRpb24gKGl0cyBhbHNvIHVwZGF0ZWQg d2hlbiBhbiBpbmNsdWRlZCBmaWxlIGlzIHBhcnNlZCkgKi8KIHBvc190CWN1cnJfcG9zID0geyAx LCAiIiwgMCB9OwpAQCAtODYsNiArODUsOCBAQAogCiAlfQogCislb3B0aW9uIG5vdW5wdXQKKwog TAlbX0EtWmEtel0KIEQJWzAtOV0KIE5aRAlbMS05XQpJbmRleDogdXNyLmJpbi9hci9hY3BsZXgu bAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLSB1c3IuYmluL2FyL2FjcGxleC5sCShyZXZpc2lvbiAyMzkxNDEpCisr KyB1c3IuYmluL2FyL2FjcGxleC5sCSh3b3JraW5nIGNvcHkpCkBAIC0zNiw4ICszNiw2IEBACiAK ICNpbmNsdWRlICJ5LnRhYi5oIgogCi0jZGVmaW5lIFlZX05PX1VOUFVUCi0jZGVmaW5lIFlZX05P X0lOUFVUCiBpbnQgbGluZW5vID0gMTsKIAogaW50CXl5bGV4KHZvaWQpOwpAQCAtNDUsNiArNDMs OCBAQAogJX0KIAogJW9wdGlvbiBub3l5d3JhcAorJW9wdGlvbiBub2lucHV0Cislb3B0aW9uIG5v dW5wdXQKIAogJSUKIApJbmRleDogdXNyLmJpbi9iYy9zY2FuLmwKPT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdXNy LmJpbi9iYy9zY2FuLmwJKHJldmlzaW9uIDIzOTE0MSkKKysrIHVzci5iaW4vYmMvc2Nhbi5sCSh3 b3JraW5nIGNvcHkpCkBAIC00NiwxMyArNDYsMTMgQEAKIHN0YXRpYyB2b2lkCSBhZGRfc3RyKGNv bnN0IGNoYXIgKik7CiBzdGF0aWMgaW50CSBiY195eWlucHV0KGNoYXIgKiwgaW50KTsKIAotI2Rl ZmluZSBZWV9OT19JTlBVVAogI3VuZGVmIFlZX0lOUFVUCiAjZGVmaW5lIFlZX0lOUFVUKGJ1Zixy ZXR2YWwsbWF4KSBcCiAJKHJldHZhbCA9IGJjX3l5aW5wdXQoYnVmLCBtYXgpKQogJX0KIAogJW9w dGlvbiBhbHdheXMtaW50ZXJhY3RpdmUKKyVvcHRpb24gbm9pbnB1dAogCiBESUdJVAkJWzAtOUEt Rl0KIEFMUEhBCQlbYS16X10KSW5kZXg6IHVzci5iaW4vbWtjc21hcHBlci9sZXgubAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB1c3IuYmluL21rY3NtYXBwZXIvbGV4LmwJKHJldmlzaW9uIDIzOTE0MSkKKysrIHVz ci5iaW4vbWtjc21hcHBlci9sZXgubAkod29ya2luZyBjb3B5KQpAQCAtNDMsNiArNDMsNyBAQAog CiBpbnQgbGluZV9udW1iZXIgPSAxOwogJX0KKyVvcHRpb24Jbm9pbnB1dAogJW9wdGlvbglub3Vu cHV0CiAKICV4CUNPTU1FTlQKSW5kZXg6IHVzci5zYmluL3JyZW51bWQvbGV4ZXIubAo9PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSB1c3Iuc2Jpbi9ycmVudW1kL2xleGVyLmwJKHJldmlzaW9uIDIzOTE0MSkKKysrIHVz ci5zYmluL3JyZW51bWQvbGV4ZXIubAkod29ya2luZyBjb3B5KQpAQCAtMzIsOCArMzIsNiBAQAog ICovCiAKICV7Ci0jZGVmaW5lIFlZX05PX1VOUFVUCi0KICNpbmNsdWRlIDxzeXMvcGFyYW0uaD4K ICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CkBAIC02NCw2 ICs2Miw4IEBACiBpbnQgeXlsZXgodm9pZCk7CiAlfQogCislb3B0aW9uIG5vdW5wdXQKKwogLyog Y29tbW9uIHNlY3Rpb24gKi8KIG5sCQlcbgogd3MJCVsgXHRdKwpJbmRleDogdXNyLnNiaW4va2Jk Y29udHJvbC9sZXgubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1c3Iuc2Jpbi9rYmRjb250cm9sL2xleC5sCShy ZXZpc2lvbiAyMzkxNDEpCisrKyB1c3Iuc2Jpbi9rYmRjb250cm9sL2xleC5sCSh3b3JraW5nIGNv cHkpCkBAIC0zMSwxMSArMzEsMTIgQEAKICV7CiAKICNpbmNsdWRlICJsZXguaCIKLSNkZWZpbmUg WVlfTk9fVU5QVVQKLSNkZWZpbmUgWVlfTk9fSU5QVVQKIAogJX0KIAorJW9wdGlvbiBub2lucHV0 Cislb3B0aW9uIG5vdW5wdXQKKwogRAlbMC05XQogWAlbMC05YS1mQS1GXQogQQkuCkluZGV4OiB1 c3Iuc2Jpbi9qYWlsL2phaWxsZXgubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1c3Iuc2Jpbi9qYWlsL2phaWxs ZXgubAkocmV2aXNpb24gMjM5MTQxKQorKysgdXNyLnNiaW4vamFpbC9qYWlsbGV4LmwJKHdvcmtp bmcgY29weSkKQEAgLTM2LDkgKzM2LDYgQEAKICNpbmNsdWRlICJqYWlscC5oIgogI2luY2x1ZGUg InkudGFiLmgiCiAKLSNkZWZpbmUgWVlfTk9fSU5QVVQKLSNkZWZpbmUgWVlfTk9fVU5QVVQKLQog ZXh0ZXJuIGludCB5eW5lcnJzOwogCiBzdGF0aWMgc3NpemVfdCB0ZXh0Mmx2YWwoc2l6ZV90IHRy aW1sLCBzaXplX3QgdHJpbXIsIGludCB0b3Zhcik7CkBAIC00Nyw2ICs0NCw5IEBACiBzdGF0aWMg aW50IGxpbmVubyA9IDE7CiAlfQogCislb3B0aW9uIG5vaW5wdXQKKyVvcHRpb24gbm91bnB1dAor CiAlc3RhcnQgXyBEUQogCiAlJQpJbmRleDogdXNyLnNiaW4vbmRpc2N2dC9pbmYtdG9rZW4ubAo9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09Ci0tLSB1c3Iuc2Jpbi9uZGlzY3Z0L2luZi10b2tlbi5sCShyZXZpc2lvbiAyMzkx NDEpCisrKyB1c3Iuc2Jpbi9uZGlzY3Z0L2luZi10b2tlbi5sCSh3b3JraW5nIGNvcHkpCkBAIC00 Myw4ICs0Myw2IEBACiAjaW5jbHVkZSAieS50YWIuaCIKIAogaW50IGxpbmVubyA9IDE7Ci0jZGVm aW5lIFlZX05PX1VOUFVUCi0jZGVmaW5lIFlZX05PX0lOUFVUCiAKIGludCB5eWxleCh2b2lkKTsK IHZvaWQgeXllcnJvcihjb25zdCBjaGFyICopOwpAQCAtNTksNiArNTcsOSBAQAogCiAlfQogCisl b3B0aW9uIG5vaW5wdXQKKyVvcHRpb24gbm91bnB1dAorCiAlJQogCiBbIFx0XSsJCQk7CkluZGV4 OiB1c3Iuc2Jpbi9hcG1kL2FwbWRsZXgubAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB1c3Iuc2Jpbi9hcG1kL2Fw bWRsZXgubAkocmV2aXNpb24gMjM5MTQxKQorKysgdXNyLnNiaW4vYXBtZC9hcG1kbGV4LmwJKHdv cmtpbmcgY29weSkKQEAgLTM2LDE0ICszNiwxMyBAQAogI2luY2x1ZGUgImFwbWQuaCIKICNpbmNs dWRlICJ5LnRhYi5oIgogCi0vKiBXZSBkb24ndCBuZWVkIGl0LCBhdm9pZCB0aGUgd2FybmluZy4g Ki8KLSNkZWZpbmUgWVlfTk9fVU5QVVQKLSNkZWZpbmUgWVlfTk9fSU5QVVQKLQogaW50IGxpbmVu bzsKIGludCBmaXJzdF90aW1lOwogJX0KIAorJW9wdGlvbiBub2lucHV0Cislb3B0aW9uIG5vdW5w dXQKKwogJXMgVE9QCiAKICUlCkluZGV4OiB1c3Iuc2Jpbi9jb25maWcvbGFuZy5sCj09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT0KLS0tIHVzci5zYmluL2NvbmZpZy9sYW5nLmwJKHJldmlzaW9uIDIzOTE0MSkKKysrIHVzci5z YmluL2NvbmZpZy9sYW5nLmwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDkgKzM4LDYgQEAKICNpbmNs dWRlICJ5LnRhYi5oIgogI2luY2x1ZGUgImNvbmZpZy5oIgogCi0jZGVmaW5lIFlZX05PX1VOUFVU Ci0jZGVmaW5lIFlZX05PX0lOUFVUCi0KIC8qCiAgKiBEYXRhIGZvciByZXR1cm5pbmcgdG8gcHJl dmlvdXMgZmlsZXMgZnJvbSBpbmNsdWRlIGZpbGVzLgogICovCkBAIC05Nyw2ICs5NCwxMCBAQAog aW50IHl5ZXJyb3IoY29uc3QgY2hhciAqKTsKIAogJX0KKworJW9wdGlvbiBub2lucHV0Cislb3B0 aW9uIG5vdW5wdXQKKwogSUQJW0EtWmEtel9dWy1BLVphLXpfMC05XSoKIFBBVEgJWy4vXVstLy4l XkEtWmEtel8wLTldKwogJVNUQVJUIFRPRU9MCkluZGV4OiBsaWIvbGliYy9uZXQvbnNsZXhlci5s Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KLS0tIGxpYi9saWJjL25ldC9uc2xleGVyLmwJKHJldmlzaW9uIDIzOTE0MSkK KysrIGxpYi9saWJjL25ldC9uc2xleGVyLmwJKHdvcmtpbmcgY29weSkKQEAgLTUzLDEyICs1Mywx MSBAQAogCiAjaW5jbHVkZSAibnNwYXJzZXIuaCIKIAotI2RlZmluZQlZWV9OT19JTlBVVAotI2Rl ZmluZSBZWV9OT19VTlBVVAotCiAlfQogCiAlb3B0aW9uIHl5bGluZW5vCislb3B0aW9uIG5vaW5w dXQKKyVvcHRpb24gbm91bnB1dAogCiBCTEFOSwkJWyBcdF0KIENSCQlcbgpJbmRleDogc2Jpbi9k ZXZkL3Rva2VuLmwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2Jpbi9kZXZkL3Rva2VuLmwJKHJldmlzaW9uIDIz OTE0MSkKKysrIHNiaW4vZGV2ZC90b2tlbi5sCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw4ICszNyw2 IEBACiAjaW5jbHVkZSAieS50YWIuaCIKIAogaW50IGxpbmVubyA9IDE7Ci0jZGVmaW5lIFlZX05P X1VOUFVUCi0jZGVmaW5lIFlZX05PX0lOUFVUCiAKIHN0YXRpYyB2b2lkCiB1cGRhdGVfbGluZW5v KGNvbnN0IGNoYXIgKmNwKQpAQCAtNTAsNiArNDgsOSBAQAogCiAlfQogCislb3B0aW9uIG5vaW5w dXQKKyVvcHRpb24gbm91bnB1dAorCiAlJQogCiBbIFx0XSsJCQk7CkluZGV4OiBzYmluL2hhc3Rj dGwvTWFrZWZpbGUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotLS0gc2Jpbi9oYXN0Y3RsL01ha2VmaWxlCShyZXZpc2lv biAyMzkxNDEpCisrKyBzYmluL2hhc3RjdGwvTWFrZWZpbGUJKHdvcmtpbmcgY29weSkKQEAgLTI3 LDkgKzI3LDYgQEAKIC5pZiAke01LX0lORVQ2X1NVUFBPUlR9ICE9ICJubyIKIENGTEFHUys9LURJ TkVUNgogLmVuZGlmCi0jIFRoaXMgaXMgbmVlZGVkIHRvIGhhdmUgV0FSTlMgPiAxLgotQ0ZMQUdT Kz0tRFlZX05PX1VOUFVUCi1DRkxBR1MrPS1EWVlfTk9fSU5QVVQKIAogRFBBREQ9CSR7TElCTH0g JHtMSUJVVElMfQogTERBREQ9CS1sbCAtbHV0aWwKSW5kZXg6IHNiaW4vc2V0a2V5L3Rva2VuLmwK PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0gc2Jpbi9zZXRrZXkvdG9rZW4ubAkocmV2aXNpb24gMjM5MTQxKQorKysg c2Jpbi9zZXRrZXkvdG9rZW4ubAkod29ya2luZyBjb3B5KQpAQCAtNjUsNiArNjUsOCBAQAogaW50 IHl5cGFyc2Uodm9pZCk7CiAlfQogCislb3B0aW9uIG5vdW5wdXQKKwogLyogY29tbW9uIHNlY3Rp b24gKi8KIG5sCQlcbgogd3MJCVsgXHRdKwpJbmRleDogc2Jpbi9zZXRrZXkvTWFrZWZpbGUKPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0gc2Jpbi9zZXRrZXkvTWFrZWZpbGUJKHJldmlzaW9uIDIzOTE0MSkKKysrIHNi aW4vc2V0a2V5L01ha2VmaWxlCSh3b3JraW5nIGNvcHkpCkBAIC01MCw3ICs1MCw3IEBACiAKIFNS Q1MrPQl5LnRhYi5oCiB5LnRhYi5oOiBwYXJzZS55Ci1DRkxBR1MrPSAtRElQU0VDX0RFQlVHIC1E WVlfTk9fVU5QVVQKK0NGTEFHUys9IC1ESVBTRUNfREVCVUcKIC5pZiAke01LX0lORVQ2X1NVUFBP UlR9ICE9ICJubyIKIENGTEFHUys9IC1ESU5FVDYKIC5lbmRpZgo= --20cf3079b7e260dccd04c6c76427--