From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 41698 invoked by alias); 12 Jun 2017 17:03:07 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 41603 invoked by uid 89); 12 Jun 2017 17:03:07 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-26.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30047.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.47) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Jun 2017 17:03:04 +0000 Received: from VI1PR0802MB2176.eurprd08.prod.outlook.com (10.172.12.21) by VI1PR0802MB2175.eurprd08.prod.outlook.com (10.172.12.20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1157.12; Mon, 12 Jun 2017 17:03:07 +0000 Received: from VI1PR0802MB2176.eurprd08.prod.outlook.com ([fe80::2dae:8af1:7884:bb6d]) by VI1PR0802MB2176.eurprd08.prod.outlook.com ([fe80::2dae:8af1:7884:bb6d%18]) with mapi id 15.01.1157.017; Mon, 12 Jun 2017 17:03:07 +0000 From: Bin Cheng To: "gcc-patches@gcc.gnu.org" CC: nd Subject: [PATCH GCC][09/13]Simply cost model merges partitions with the same references Date: Mon, 12 Jun 2017 17:03:00 -0000 Message-ID: authentication-results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email x-microsoft-exchange-diagnostics: 1;VI1PR0802MB2175;7:xswrTehNxk2Zw4hYEZtkKaHGzXTa8o8ewi5uUmWgt3mWh65OGhbYiTpZPxM4Z0NRB42UJcTCJgFYmKHiN8I6g0+7+26gbVXvpSPQkxDScl5iTU69d6cUhMi1x0HTQDruxwR6/rnqpxqxngSim7HDh3EEmwEKUrJHi6tuY3Hku3gGK/X788MUK4YKaNnH4i92SbBmEh09qPHxMloa7RJuUMVj2iu4EPIMCGhYQUhSL1ajCZwOoF3j/YcGRnpTmpNBidsnoGsrFEz9+DXkDVNW/UUyDuSvSiKwSIyqpfYTQjj91mb2UtorN4SRfaLG+fAgNr4xtU1jZKCq82lsfm2gXQ== x-ms-traffictypediagnostic: VI1PR0802MB2175: x-ms-office365-filtering-correlation-id: 2f797b26-6125-4ba2-ee69-08d4b1b4e599 x-ms-office365-filtering-ht: Tenant x-microsoft-antispam: UriScan:;BCL:0;PCL:0;RULEID:(22001)(2017030254075)(48565401081)(201703131423075)(201703031133081);SRVR:VI1PR0802MB2175; nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0;PCL:0;RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(102415395)(6040450)(601004)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6055026)(6041248)(20161123560025)(20161123564025)(20161123562025)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(6072148)(100000704101)(100105200095)(100000705101)(100105500095);SRVR:VI1PR0802MB2175;BCL:0;PCL:0;RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095);SRVR:VI1PR0802MB2175; x-forefront-prvs: 03361FCC43 x-forefront-antispam-report: SFV:NSPM;SFS:(10009020)(6009001)(39450400003)(39400400002)(39410400002)(39860400002)(39850400002)(39840400002)(377424004)(38730400002)(55016002)(50986999)(110136004)(99286003)(72206003)(14454004)(33656002)(53936002)(8936002)(478600001)(9686003)(5660300001)(86362001)(8676002)(3280700002)(2906002)(6506006)(99936001)(2351001)(189998001)(2501003)(7696004)(6436002)(25786009)(2900100001)(54356999)(74316002)(81166006)(3660700001)(4326008)(7736002)(5640700003)(5250100002)(305945005)(6916009)(66066001)(102836003)(3846002);DIR:OUT;SFP:1101;SCL:1;SRVR:VI1PR0802MB2175;H:VI1PR0802MB2176.eurprd08.prod.outlook.com;FPR:;SPF:None;MLV:sfv;LANG:en; spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM Content-Type: multipart/mixed; boundary="_002_VI1PR0802MB2176931CED7602FD019479E1E7CD0VI1PR0802MB2176_" MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 12 Jun 2017 17:03:06.8481 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2175 X-IsSubscribed: yes X-SW-Source: 2017-06/txt/msg00824.txt.bz2 --_002_VI1PR0802MB2176931CED7602FD019479E1E7CD0VI1PR0802MB2176_ Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable Content-length: 691 Hi, Current primitive cost model merges partitions with data references sharing= the same base address. I believe it's designed to maximize data reuse in distributi= on, but that should be done by dedicated data reusing algorithm. At this stage of = merging, we should be conservative and only merge partitions with the same reference= s. Bootstrap and test on x86_64 and AArch64. Is it OK? Thanks, bin 2017-06-07 Bin Cheng * tree-loop-distribution.c (ref_base_address): Delete. (similar_memory_accesses): Rename ... (share_memory_accesses): ... to this. Check if partitions access the same memory reference. (distribute_loop): Call share_memory_accesses.= --_002_VI1PR0802MB2176931CED7602FD019479E1E7CD0VI1PR0802MB2176_ Content-Type: text/plain; name="0009-share-memory-access-20170607.txt" Content-Description: 0009-share-memory-access-20170607.txt Content-Disposition: attachment; filename="0009-share-memory-access-20170607.txt"; size=5624; creation-date="Mon, 12 Jun 2017 16:49:00 GMT"; modification-date="Mon, 12 Jun 2017 16:49:00 GMT" Content-Transfer-Encoding: base64 Content-length: 7625 RnJvbSBjZTk0YmJiMzgyZWFjYjhkMTcwYTgzNDk0MTViN2QyYzg4NTI4ZDc0 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBCaW4gQ2hlbmcgPGJp bmNoZTAxQGUxMDg0NTEtbGluLmNhbWJyaWRnZS5hcm0uY29tPgpEYXRlOiBG cmksIDkgSnVuIDIwMTcgMTI6NDE6MzYgKzAxMDAKU3ViamVjdDogW1BBVENI IDA5LzE0XSBzaGFyZS1tZW1vcnktYWNjZXNzLTIwMTcwNjA3LnR4dAoKLS0t CiBnY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlvbi5jIHwgMTI2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KIDEgZmlsZSBj aGFuZ2VkLCA4OCBpbnNlcnRpb25zKCspLCAzOCBkZWxldGlvbnMoLSkKCmRp ZmYgLS1naXQgYS9nY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlvbi5jIGIvZ2Nj L3RyZWUtbG9vcC1kaXN0cmlidXRpb24uYwppbmRleCA5YTBlMTAxLi45MGRj OGVhIDEwMDY0NAotLS0gYS9nY2MvdHJlZS1sb29wLWRpc3RyaWJ1dGlvbi5j CisrKyBiL2djYy90cmVlLWxvb3AtZGlzdHJpYnV0aW9uLmMKQEAgLTEyNzYs MzAgKzEyNzYsMTYgQEAgY2xhc3NpZnlfcGFydGl0aW9uIChsb29wX3AgbG9v cCwgc3RydWN0IGdyYXBoICpyZGcsIHBhcnRpdGlvbiAqcGFydGl0aW9uKQog ICAgIH0KIH0KIAotLyogRm9yIGEgZGF0YSByZWZlcmVuY2UgUkVGLCByZXR1 cm4gdGhlIGRlY2xhcmF0aW9uIG9mIGl0cyBiYXNlCi0gICBhZGRyZXNzIG9y IE5VTExfVFJFRSBpZiB0aGUgYmFzZSBpcyBub3QgZGV0ZXJtaW5lZC4gICov Ci0KLXN0YXRpYyB0cmVlCi1yZWZfYmFzZV9hZGRyZXNzIChkYXRhX3JlZmVy ZW5jZV9wIGRyKQotewotICB0cmVlIGJhc2VfYWRkcmVzcyA9IERSX0JBU0Vf QUREUkVTUyAoZHIpOwotICBpZiAoYmFzZV9hZGRyZXNzCi0gICAgICAmJiBU UkVFX0NPREUgKGJhc2VfYWRkcmVzcykgPT0gQUREUl9FWFBSKQotICAgIHJl dHVybiBUUkVFX09QRVJBTkQgKGJhc2VfYWRkcmVzcywgMCk7Ci0KLSAgcmV0 dXJuIGJhc2VfYWRkcmVzczsKLX0KLQotLyogUmV0dXJucyB0cnVlIHdoZW4g UEFSVElUSU9OMSBhbmQgUEFSVElUSU9OMiBoYXZlIHNpbWlsYXIgbWVtb3J5 Ci0gICBhY2Nlc3NlcyBpbiBSREcuICAqLworLyogUmV0dXJucyB0cnVlIHdo ZW4gUEFSVElUSU9OMSBhbmQgUEFSVElUSU9OMiBhY2Nlc3MgdGhlIHNhbWUg bWVtb3J5CisgICBvYmplY3QgaW4gUkRHLiAgKi8KIAogc3RhdGljIGJvb2wK LXNpbWlsYXJfbWVtb3J5X2FjY2Vzc2VzIChzdHJ1Y3QgZ3JhcGggKnJkZywg cGFydGl0aW9uICpwYXJ0aXRpb24xLAotCQkJIHBhcnRpdGlvbiAqcGFydGl0 aW9uMikKK3NoYXJlX21lbW9yeV9hY2Nlc3NlcyAoc3RydWN0IGdyYXBoICpy ZGcsCisJCSAgICAgICBwYXJ0aXRpb24gKnBhcnRpdGlvbjEsIHBhcnRpdGlv biAqcGFydGl0aW9uMikKIHsKLSAgdW5zaWduZWQgaSwgaiwgaywgbDsKKyAg dW5zaWduZWQgaSwgajsKICAgYml0bWFwX2l0ZXJhdG9yIGJpLCBiajsKLSAg ZGF0YV9yZWZlcmVuY2VfcCByZWYxLCByZWYyOworICBkYXRhX3JlZmVyZW5j ZV9wIGRyMSwgZHIyOwogCiAgIC8qIEZpcnN0IGNoZWNrIHdoZXRoZXIgaW4g dGhlIGludGVyc2VjdGlvbiBvZiB0aGUgdHdvIHBhcnRpdGlvbnMgYXJlCiAg ICAgIGFueSBsb2FkcyBvciBzdG9yZXMuICBDb21tb24gbG9hZHMgYXJlIHRo ZSBzaXR1YXRpb24gdGhhdCBoYXBwZW5zCkBAIC0xMzA5LDI0ICsxMjk1LDg4 IEBAIHNpbWlsYXJfbWVtb3J5X2FjY2Vzc2VzIChzdHJ1Y3QgZ3JhcGggKnJk ZywgcGFydGl0aW9uICpwYXJ0aXRpb24xLAogCXx8IFJER19NRU1fUkVBRFNf U1RNVCAocmRnLCBpKSkKICAgICAgIHJldHVybiB0cnVlOwogCi0gIC8qIFRo ZW4gY2hlY2sgYWxsIGRhdGEtcmVmZXJlbmNlcyBhZ2FpbnN0IGVhY2ggb3Ro ZXIuICAqLwotICBFWEVDVVRFX0lGX1NFVF9JTl9CSVRNQVAgKHBhcnRpdGlv bjEtPnN0bXRzLCAwLCBpLCBiaSkKLSAgICBpZiAoUkRHX01FTV9XUklURV9T VE1UIChyZGcsIGkpCi0JfHwgUkRHX01FTV9SRUFEU19TVE1UIChyZGcsIGkp KQotICAgICAgRVhFQ1VURV9JRl9TRVRfSU5fQklUTUFQIChwYXJ0aXRpb24y LT5zdG10cywgMCwgaiwgYmopCi0JaWYgKFJER19NRU1fV1JJVEVfU1RNVCAo cmRnLCBqKQotCSAgICB8fCBSREdfTUVNX1JFQURTX1NUTVQgKHJkZywgaikp Ci0JICB7Ci0JICAgIEZPUl9FQUNIX1ZFQ19FTFQgKFJER19EQVRBUkVGUyAo cmRnLCBpKSwgaywgcmVmMSkKLQkgICAgICB7Ci0JCXRyZWUgYmFzZTEgPSBy ZWZfYmFzZV9hZGRyZXNzIChyZWYxKTsKLQkJaWYgKGJhc2UxKQotCQkgIEZP Ul9FQUNIX1ZFQ19FTFQgKFJER19EQVRBUkVGUyAocmRnLCBqKSwgbCwgcmVm MikKLQkJICAgIGlmIChiYXNlMSA9PSByZWZfYmFzZV9hZGRyZXNzIChyZWYy KSkKLQkJICAgICAgcmV0dXJuIHRydWU7Ci0JICAgICAgfQotCSAgfQorICAv KiBUaGVuIGNoZWNrIHdoZXRoZXIgdGhlIHR3byBwYXJ0aXRpb25zIGFjY2Vz cyB0aGUgc2FtZSBtZW1vcnkgb2JqZWN0LiAgKi8KKyAgRVhFQ1VURV9JRl9T RVRfSU5fQklUTUFQIChwYXJ0aXRpb24xLT5yZWFkcywgMCwgaSwgYmkpCisg ICAgeworICAgICAgZ2NjX2Fzc2VydCAoaSA8IGRhdGFyZWZzX3ZlYy0+bGVu Z3RoICgpKTsKKyAgICAgIGRyMSA9ICgqZGF0YXJlZnNfdmVjKVtpXTsKKwor ICAgICAgaWYgKCFEUl9CQVNFX0FERFJFU1MgKGRyMSkKKwkgIHx8ICFEUl9P RkZTRVQgKGRyMSkgfHwgIURSX0lOSVQgKGRyMSkgfHwgIURSX1NURVAgKGRy MSkpCisJY29udGludWU7CisKKyAgICAgIEVYRUNVVEVfSUZfU0VUX0lOX0JJ VE1BUCAocGFydGl0aW9uMi0+cmVhZHMsIDAsIGosIGJqKQorCXsKKwkgIGdj Y19hc3NlcnQgKGogPCBkYXRhcmVmc192ZWMtPmxlbmd0aCAoKSk7CisJICBk cjIgPSAoKmRhdGFyZWZzX3ZlYylbal07CisKKwkgIGlmICghRFJfQkFTRV9B RERSRVNTIChkcjIpCisJICAgICAgfHwgIURSX09GRlNFVCAoZHIyKSB8fCAh RFJfSU5JVCAoZHIyKSB8fCAhRFJfU1RFUCAoZHIyKSkKKwkgICAgY29udGlu dWU7CiAKKwkgIGlmIChvcGVyYW5kX2VxdWFsX3AgKERSX0JBU0VfQUREUkVT UyAoZHIxKSwgRFJfQkFTRV9BRERSRVNTIChkcjIpLCAwKQorCSAgICAgICYm IG9wZXJhbmRfZXF1YWxfcCAoRFJfT0ZGU0VUIChkcjEpLCBEUl9PRkZTRVQg KGRyMiksIDApCisJICAgICAgJiYgb3BlcmFuZF9lcXVhbF9wIChEUl9JTklU IChkcjEpLCBEUl9JTklUIChkcjIpLCAwKQorCSAgICAgICYmIG9wZXJhbmRf ZXF1YWxfcCAoRFJfU1RFUCAoZHIxKSwgRFJfU1RFUCAoZHIyKSwgMCkpCisJ ICAgIHJldHVybiB0cnVlOworCX0KKyAgICAgIEVYRUNVVEVfSUZfU0VUX0lO X0JJVE1BUCAocGFydGl0aW9uMi0+d3JpdGVzLCAwLCBqLCBiaikKKwl7CisJ ICBnY2NfYXNzZXJ0IChqIDwgZGF0YXJlZnNfdmVjLT5sZW5ndGggKCkpOwor CSAgZHIyID0gKCpkYXRhcmVmc192ZWMpW2pdOworCisJICBpZiAoIURSX0JB U0VfQUREUkVTUyAoZHIyKQorCSAgICAgIHx8ICFEUl9PRkZTRVQgKGRyMikg fHwgIURSX0lOSVQgKGRyMikgfHwgIURSX1NURVAgKGRyMikpCisJICAgIGNv bnRpbnVlOworCisJICBpZiAob3BlcmFuZF9lcXVhbF9wIChEUl9CQVNFX0FE RFJFU1MgKGRyMSksIERSX0JBU0VfQUREUkVTUyAoZHIyKSwgMCkKKwkgICAg ICAmJiBvcGVyYW5kX2VxdWFsX3AgKERSX09GRlNFVCAoZHIxKSwgRFJfT0ZG U0VUIChkcjIpLCAwKQorCSAgICAgICYmIG9wZXJhbmRfZXF1YWxfcCAoRFJf SU5JVCAoZHIxKSwgRFJfSU5JVCAoZHIyKSwgMCkKKwkgICAgICAmJiBvcGVy YW5kX2VxdWFsX3AgKERSX1NURVAgKGRyMSksIERSX1NURVAgKGRyMiksIDAp KQorCSAgICByZXR1cm4gdHJ1ZTsKKwl9CisgICAgfQorCisgIEVYRUNVVEVf SUZfU0VUX0lOX0JJVE1BUCAocGFydGl0aW9uMS0+d3JpdGVzLCAwLCBpLCBi aSkKKyAgICB7CisgICAgICBnY2NfYXNzZXJ0IChpIDwgZGF0YXJlZnNfdmVj LT5sZW5ndGggKCkpOworICAgICAgZHIxID0gKCpkYXRhcmVmc192ZWMpW2ld OworCisgICAgICBpZiAoIURSX0JBU0VfQUREUkVTUyAoZHIxKQorCSAgfHwg IURSX09GRlNFVCAoZHIxKSB8fCAhRFJfSU5JVCAoZHIxKSB8fCAhRFJfU1RF UCAoZHIxKSkKKwljb250aW51ZTsKKworICAgICAgRVhFQ1VURV9JRl9TRVRf SU5fQklUTUFQIChwYXJ0aXRpb24yLT5yZWFkcywgMCwgaiwgYmopCisJewor CSAgZ2NjX2Fzc2VydCAoaiA8IGRhdGFyZWZzX3ZlYy0+bGVuZ3RoICgpKTsK KwkgIGRyMiA9ICgqZGF0YXJlZnNfdmVjKVtqXTsKKworCSAgaWYgKCFEUl9C QVNFX0FERFJFU1MgKGRyMikKKwkgICAgICB8fCAhRFJfT0ZGU0VUIChkcjIp IHx8ICFEUl9JTklUIChkcjIpIHx8ICFEUl9TVEVQIChkcjIpKQorCSAgICBj b250aW51ZTsKKworCSAgaWYgKG9wZXJhbmRfZXF1YWxfcCAoRFJfQkFTRV9B RERSRVNTIChkcjEpLCBEUl9CQVNFX0FERFJFU1MgKGRyMiksIDApCisJICAg ICAgJiYgb3BlcmFuZF9lcXVhbF9wIChEUl9PRkZTRVQgKGRyMSksIERSX09G RlNFVCAoZHIyKSwgMCkKKwkgICAgICAmJiBvcGVyYW5kX2VxdWFsX3AgKERS X0lOSVQgKGRyMSksIERSX0lOSVQgKGRyMiksIDApCisJICAgICAgJiYgb3Bl cmFuZF9lcXVhbF9wIChEUl9TVEVQIChkcjEpLCBEUl9TVEVQIChkcjIpLCAw KSkKKwkgICAgcmV0dXJuIHRydWU7CisJfQorICAgICAgRVhFQ1VURV9JRl9T RVRfSU5fQklUTUFQIChwYXJ0aXRpb24yLT53cml0ZXMsIDAsIGosIGJqKQor CXsKKwkgIGdjY19hc3NlcnQgKGogPCBkYXRhcmVmc192ZWMtPmxlbmd0aCAo KSk7CisJICBkcjIgPSAoKmRhdGFyZWZzX3ZlYylbal07CisKKwkgIGlmICgh RFJfQkFTRV9BRERSRVNTIChkcjIpCisJICAgICAgfHwgIURSX09GRlNFVCAo ZHIyKSB8fCAhRFJfSU5JVCAoZHIyKSB8fCAhRFJfU1RFUCAoZHIyKSkKKwkg ICAgY29udGludWU7CisKKwkgIGlmIChvcGVyYW5kX2VxdWFsX3AgKERSX0JB U0VfQUREUkVTUyAoZHIxKSwgRFJfQkFTRV9BRERSRVNTIChkcjIpLCAwKQor CSAgICAgICYmIG9wZXJhbmRfZXF1YWxfcCAoRFJfT0ZGU0VUIChkcjEpLCBE Ul9PRkZTRVQgKGRyMiksIDApCisJICAgICAgJiYgb3BlcmFuZF9lcXVhbF9w IChEUl9JTklUIChkcjEpLCBEUl9JTklUIChkcjIpLCAwKQorCSAgICAgICYm IG9wZXJhbmRfZXF1YWxfcCAoRFJfU1RFUCAoZHIxKSwgRFJfU1RFUCAoZHIy KSwgMCkpCisJICAgIHJldHVybiB0cnVlOworCX0KKyAgICB9CiAgIHJldHVy biBmYWxzZTsKIH0KIApAQCAtMTY2Niw3ICsxNzE2LDcgQEAgZGlzdHJpYnV0 ZV9sb29wIChzdHJ1Y3QgbG9vcCAqbG9vcCwgdmVjPGdpbXBsZSAqPiBzdG10 cywKICAgICAgIGZvciAoaW50IGogPSBpICsgMTsKIAkgICBwYXJ0aXRpb25z Lml0ZXJhdGUgKGosICZwYXJ0aXRpb24pOyArK2opCiAJewotCSAgaWYgKHNp bWlsYXJfbWVtb3J5X2FjY2Vzc2VzIChyZGcsIGludG8sIHBhcnRpdGlvbikp CisJICBpZiAoc2hhcmVfbWVtb3J5X2FjY2Vzc2VzIChyZGcsIGludG8sIHBh cnRpdGlvbikpCiAJICAgIHsKIAkgICAgICBwYXJ0aXRpb25fbWVyZ2VfaW50 byAoaW50bywgcGFydGl0aW9uLCBGVVNFX1NIQVJFX1JFRik7CiAJICAgICAg cGFydGl0aW9ucy51bm9yZGVyZWRfcmVtb3ZlIChqKTsKLS0gCjEuOS4xCgo= --_002_VI1PR0802MB2176931CED7602FD019479E1E7CD0VI1PR0802MB2176_--