From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 11CA0A0531; Tue, 4 Feb 2020 00:26:45 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 0BBF61BFB0; Tue, 4 Feb 2020 00:26:44 +0100 (CET) Received: from mail-qk1-f196.google.com (mail-qk1-f196.google.com [209.85.222.196]) by dpdk.org (Postfix) with ESMTP id 3DC581BFAE for ; Tue, 4 Feb 2020 00:26:42 +0100 (CET) Received: by mail-qk1-f196.google.com with SMTP id g3so7521271qka.1 for ; Mon, 03 Feb 2020 15:26:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=ZNyjOoytg+vjzG6SQUjjq0dEVMJ2SL9e8wbqm46Qmjk=; b=IWWUIa43WL7Advx+025U0PJ81t1fJnt2pnuevNsoRY+A9ewca7Yy06Nc5k7fJJs1h1 E8cBadf01Qu0JEVDEZS0ISnVVx0tZU+fyx0goo5DVlrBtBZOPKgujX1JRx2aac6Wf3NW rnhwuTYAit8FkPCpd8T1uVEN2E1Dd0v940axfwHPsxLaDnhQMWL4+lpizB5oDccj+lIG vMspDB+9QsR6w5WxWpmZVMYIWLEHVVgvSw/8nTF7NCz7zo1VRTF8FS5C0mcT2psFVT4V FaprSaEfN3VRMOz9ga1wV/YzAWKvSC+SJ1yPDny5tMTezfn/HEFgik3H3ktnY+Xy6cl0 TcBQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=ZNyjOoytg+vjzG6SQUjjq0dEVMJ2SL9e8wbqm46Qmjk=; b=i+Z+JPbEWECVS1jaA+MKXtLTpsOlGjc1n133SKMsqxboivEvXRwSZPt3dx6Q7MQhPV tiKamCMygwSBuBMbxCyRRA2QbcmpU8ez5QwQkMXhSVpQmTLPk/CSDNxCwxPUBnqEWx8e 8Byt3fS6WQWUvEtON5EDgbuEVEX+LS9Op4WbRlT4U3pgeupPufHESagyb6vn6x0mKKFb +mfNiE52gcT5dr6wZlUiSvtXcYIHpYWolpb1T83Ovqq83/N4yjD+uXIbTwP27hVtG4VS oWSiEFPNXh31u50BEsLqKzWSRnWqPhEj+wnB/yrFJyxib2o7dnhBv5+efoSie9msSsti fD0A== X-Gm-Message-State: APjAAAVqe4WAK+Go2G5Ldi7YniEQtE35lrxHgKam0MeO0kJ/uYWs5Yc7 GrIO7XoRLKbRdUef40NHI/j/hwLKheYtVvp1iUs= X-Google-Smtp-Source: APXvYqwwobHYwHhgIEUmBx+cjUAQva7V9isBPDPVLxZGJf9SDt34zbDUyYLFqveIMY28r5mmNd95kLUuUU9rcwhiEYo= X-Received: by 2002:a05:620a:1472:: with SMTP id j18mr26773844qkl.184.1580772401369; Mon, 03 Feb 2020 15:26:41 -0800 (PST) MIME-Version: 1.0 References: <20c66c3e-35ee-9433-467d-6d72cd336149@iol.unh.edu> <20200201144347.487e20f2@Sovereign> <20200204010832.3501b03a@Sovereign> <20200204020258.089cc360@Sovereign> In-Reply-To: <20200204020258.089cc360@Sovereign> From: William Tu Date: Mon, 3 Feb 2020 15:26:05 -0800 Message-ID: To: Dmitry Kozlyuk Cc: Jeremy Plsek , dev@dpdk.org Content-Type: multipart/mixed; boundary="000000000000747430059db44191" Subject: Re: [dpdk-dev] DPDK Windows Build X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" --000000000000747430059db44191 Content-Type: text/plain; charset="UTF-8" On Mon, Feb 3, 2020 at 3:03 PM Dmitry Kozlyuk wrote: > > > From the step in > > https://mesonbuild.com/Quick-guide.html#installation-from-source > > I tried to compile meson by doing: > > $ git clone https://github.com/mesonbuild/meson.git > > $ cd meson > > $ meson builddir > > ERROR: Neither directory contains a build file meson.build. > > > > How do I generate a meson.build file? > > I build Meson from Windows command line (not Git Bash) as pip package: > > C:\src\meson> python setup.py install --user > > You need write permissions for C:\Python, so use elevated command prompt or > an administrator account. To use the new version, make sure C:\Python\Scripts > is in the beginning of your PATH (assuming C:\Python being your Python 3 > installation directory). > > Don't forget to apply the patch, it's not in upstream yet. You can instead > clone the fork directly: > > git clone -b msvc-linker-arg-prefix https://github.com/PlushBeaver/meson.git > > -- Hi Dmitry, Thanks! I now passed the issue of "'/OPT:REF" now with "ninja -v", I got another error saying: C:\dpdk-draft-windows>meson build9 C:\dpdk-draft-windows>cd build9 C:\dpdk-draft-windows\build9>ninja -v [1/14] clang @lib/76b5a35@@rte_kvargs@sta/librte_kvargs_rte_kvargs.c.obj.rsp [2/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_errno.c.obj.rsp [3/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_launch.c.obj.rsp [4/14] llvm-ar "csrD" lib/librte_kvargs.a @lib/librte_kvargs.a.rsp [5/14] clang @lib/librte_kvargs-1.dll.rsp clang.exe: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] LINK : warning LNK4044: unrecognized option '/-no-as-needed'; ignored Creating library lib\librte_kvargs.dll.a and object lib\librte_kvargs.dll.exp [6/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_windows_eal_eal_lcore.c.obj.rsp [7/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_log.c.obj.rsp [8/14] "C:\Python38\Scripts\meson" --internal symbolextractor lib/librte_kvargs-1.dll lib/76b5a35@@rte_kvargs@sha/librte_kvargs-1.dll.symbols [9/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_common_eal_common_lcore.c.obj.rsp [10/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_windows_eal_eal.c.obj.rsp [11/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_windows_eal_eal_debug.c.obj.rsp [12/14] clang @lib/76b5a35@@rte_eal@sta/librte_eal_windows_eal_eal_thread.c.obj.rsp [13/14] llvm-ar "csrD" lib/librte_eal.a @lib/librte_eal.a.rsp [14/14] clang @lib/librte_eal-10.dll.rsp clang.exe: warning: argument unused during compilation: '-pthread' [-Wunused-command-line-argument] LINK : warning LNK4044: unrecognized option '/-no-as-needed'; ignored Creating library lib\librte_eal.dll.a and object lib\librte_eal.dll.exp Do I mess up some linker's configurations? I attached the meson log, thanks for your help! William --000000000000747430059db44191 Content-Type: text/plain; charset="US-ASCII"; name="dpdk-windows-build-error.txt" Content-Disposition: attachment; filename="dpdk-windows-build-error.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_k6731ku20 DQoNCg0KDQo9PT0gQlVJTEQ5ID09PQ0KQzpcZHBkay1kcmFmdC13aW5kb3dzPm1lc29uIGJ1aWxk OQ0KQzpcZHBkay1kcmFmdC13aW5kb3dzPmNkIGJ1aWxkOQ0KQzpcZHBkay1kcmFmdC13aW5kb3dz XGJ1aWxkOT5uaW5qYSAtdg0KWzEvMTRdIGNsYW5nIEBsaWIvNzZiNWEzNUBAcnRlX2t2YXJnc0Bz dGEvbGlicnRlX2t2YXJnc19ydGVfa3ZhcmdzLmMub2JqLnJzcA0KWzIvMTRdIGNsYW5nIEBsaWIv NzZiNWEzNUBAcnRlX2VhbEBzdGEvbGlicnRlX2VhbF9jb21tb25fZWFsX2NvbW1vbl9lcnJuby5j Lm9iai5yc3ANClszLzE0XSBjbGFuZyBAbGliLzc2YjVhMzVAQHJ0ZV9lYWxAc3RhL2xpYnJ0ZV9l YWxfY29tbW9uX2VhbF9jb21tb25fbGF1bmNoLmMub2JqLnJzcA0KWzQvMTRdIGxsdm0tYXIgImNz ckQiIGxpYi9saWJydGVfa3ZhcmdzLmEgQGxpYi9saWJydGVfa3ZhcmdzLmEucnNwDQpbNS8xNF0g Y2xhbmcgQGxpYi9saWJydGVfa3ZhcmdzLTEuZGxsLnJzcA0KY2xhbmcuZXhlOiB3YXJuaW5nOiBh cmd1bWVudCB1bnVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uOiAnLXB0aHJlYWQnIFstV3VudXNlZC1j b21tYW5kLWxpbmUtYXJndW1lbnRdDQpMSU5LIDogd2FybmluZyBMTks0MDQ0OiB1bnJlY29nbml6 ZWQgb3B0aW9uICcvLW5vLWFzLW5lZWRlZCc7IGlnbm9yZWQNCiAgIENyZWF0aW5nIGxpYnJhcnkg bGliXGxpYnJ0ZV9rdmFyZ3MuZGxsLmEgYW5kIG9iamVjdCBsaWJcbGlicnRlX2t2YXJncy5kbGwu ZXhwDQpbNi8xNF0gY2xhbmcgQGxpYi83NmI1YTM1QEBydGVfZWFsQHN0YS9saWJydGVfZWFsX3dp bmRvd3NfZWFsX2VhbF9sY29yZS5jLm9iai5yc3ANCls3LzE0XSBjbGFuZyBAbGliLzc2YjVhMzVA QHJ0ZV9lYWxAc3RhL2xpYnJ0ZV9lYWxfY29tbW9uX2VhbF9jb21tb25fbG9nLmMub2JqLnJzcA0K WzgvMTRdICJDOlxQeXRob24zOFxTY3JpcHRzXG1lc29uIiAtLWludGVybmFsIHN5bWJvbGV4dHJh Y3RvciBsaWIvbGlicnRlX2t2YXJncy0xLmRsbCBsaWIvNzZiNWEzNUBAcnRlX2t2YXJnc0BzaGEv bGlicnRlX2t2YXJncy0xLmRsbC5zeW1ib2xzDQpbOS8xNF0gY2xhbmcgQGxpYi83NmI1YTM1QEBy dGVfZWFsQHN0YS9saWJydGVfZWFsX2NvbW1vbl9lYWxfY29tbW9uX2xjb3JlLmMub2JqLnJzcA0K WzEwLzE0XSBjbGFuZyBAbGliLzc2YjVhMzVAQHJ0ZV9lYWxAc3RhL2xpYnJ0ZV9lYWxfd2luZG93 c19lYWxfZWFsLmMub2JqLnJzcA0KWzExLzE0XSBjbGFuZyBAbGliLzc2YjVhMzVAQHJ0ZV9lYWxA c3RhL2xpYnJ0ZV9lYWxfd2luZG93c19lYWxfZWFsX2RlYnVnLmMub2JqLnJzcA0KWzEyLzE0XSBj bGFuZyBAbGliLzc2YjVhMzVAQHJ0ZV9lYWxAc3RhL2xpYnJ0ZV9lYWxfd2luZG93c19lYWxfZWFs X3RocmVhZC5jLm9iai5yc3ANClsxMy8xNF0gbGx2bS1hciAiY3NyRCIgbGliL2xpYnJ0ZV9lYWwu YSBAbGliL2xpYnJ0ZV9lYWwuYS5yc3ANClsxNC8xNF0gY2xhbmcgQGxpYi9saWJydGVfZWFsLTEw LmRsbC5yc3ANCmNsYW5nLmV4ZTogd2FybmluZzogYXJndW1lbnQgdW51c2VkIGR1cmluZyBjb21w aWxhdGlvbjogJy1wdGhyZWFkJyBbLVd1bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50XQ0KTElO SyA6IHdhcm5pbmcgTE5LNDA0NDogdW5yZWNvZ25pemVkIG9wdGlvbiAnLy1uby1hcy1uZWVkZWQn OyBpZ25vcmVkDQogICBDcmVhdGluZyBsaWJyYXJ5IGxpYlxsaWJydGVfZWFsLmRsbC5hIGFuZCBv YmplY3QgbGliXGxpYnJ0ZV9lYWwuZGxsLmV4cA0KDQovLy8NCg0KQnVpbGQgc3RhcnRlZCBhdCAy MDIwLTAyLTAzVDE1OjE0OjEwLjg4ODU5MA0KTWFpbiBiaW5hcnk6IEM6XFB5dGhvbjM4XHB5dGhv bi5leGUNCkJ1aWxkIE9wdGlvbnM6IA0KUHl0aG9uIHN5c3RlbTogV2luZG93cw0KVGhlIE1lc29u IGJ1aWxkIHN5c3RlbQ0KVmVyc2lvbjogMC41My45OTkNClNvdXJjZSBkaXI6IEM6XGRwZGstZHJh ZnQtd2luZG93cw0KQnVpbGQgZGlyOiBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcYnVpbGQ5DQpCdWls ZCB0eXBlOiBuYXRpdmUgYnVpbGQNClByb2dyYW0gY2F0IGZvdW5kOiBOTw0KUHJvZ3JhbSBtb3Jl IGZvdW5kOiBZRVMgKEM6XFdJTkRPV1Ncc3lzdGVtMzJcbW9yZS5DT00pDQpSdW5uaW5nIGNvbW1h bmQ6IEM6XFdJTkRPV1Ncc3lzdGVtMzJcbW9yZS5DT00gQzpcZHBkay1kcmFmdC13aW5kb3dzXFZF UlNJT04NCi0tLSBzdGRvdXQgLS0tDQoxOS4wNS4wLXJjNA0KDQotLS0gc3RkZXJyIC0tLQ0KDQoN ClByb2plY3QgbmFtZTogRFBESw0KUHJvamVjdCB2ZXJzaW9uOiAxOS4wNS4wLXJjNA0KTm8gQ0ZM QUdTIGluIHRoZSBlbnZpcm9ubWVudCwgbm90IGNoYW5naW5nIGdsb2JhbCBmbGFncy4NCk5vIExE RkxBR1MgaW4gdGhlIGVudmlyb25tZW50LCBub3QgY2hhbmdpbmcgZ2xvYmFsIGZsYWdzLg0KTm8g Q1BQRkxBR1MgaW4gdGhlIGVudmlyb25tZW50LCBub3QgY2hhbmdpbmcgZ2xvYmFsIGZsYWdzLg0K U2FuaXR5IHRlc3RpbmcgQyBjb21waWxlcjogY2xhbmcNCklzIGNyb3NzIGNvbXBpbGVyOiBGYWxz ZS4NClNhbml0eSBjaGVjayBjb21waWxlciBjb21tYW5kIGxpbmU6IGNsYW5nIEM6XGRwZGstZHJh ZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVxzYW5pdHljaGVja2MuYyAtbyBDOlxkcGRr LWRyYWZ0LXdpbmRvd3NcYnVpbGQ5XG1lc29uLXByaXZhdGVcc2FuaXR5Y2hlY2tjLmV4ZSAtV2ws L01EZCAtcGlwZQ0KU2FuaXR5IGNoZWNrIGNvbXBpbGUgc3Rkb3V0Og0KTElOSyA6IHdhcm5pbmcg TE5LNDA0NDogdW5yZWNvZ25pemVkIG9wdGlvbiAnL01EZCc7IGlnbm9yZWQNCg0KLS0tLS0NClNh bml0eSBjaGVjayBjb21waWxlIHN0ZGVycjoNCg0KLS0tLS0NClJ1bm5pbmcgdGVzdCBiaW5hcnkg Y29tbWFuZDogQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHNhbml0 eWNoZWNrYy5leGUNCkMgY29tcGlsZXIgZm9yIHRoZSBidWlsZCBtYWNoaW5lOiBjbGFuZyAoY2xh bmcgNy4wLjEgImNsYW5nIHZlcnNpb24gNy4wLjEgKHRhZ3MvUkVMRUFTRV83MDEvZmluYWwpIikN CkMgbGlua2VyIGZvciB0aGUgYnVpbGQgbWFjaGluZTogY2xhbmcgbGluayAxNC4yNC4yODMxNi4w DQpObyBDRkxBR1MgaW4gdGhlIGVudmlyb25tZW50LCBub3QgY2hhbmdpbmcgZ2xvYmFsIGZsYWdz Lg0KTm8gTERGTEFHUyBpbiB0aGUgZW52aXJvbm1lbnQsIG5vdCBjaGFuZ2luZyBnbG9iYWwgZmxh Z3MuDQpObyBDUFBGTEFHUyBpbiB0aGUgZW52aXJvbm1lbnQsIG5vdCBjaGFuZ2luZyBnbG9iYWwg ZmxhZ3MuDQpTYW5pdHkgdGVzdGluZyBDIGNvbXBpbGVyOiBjbGFuZw0KSXMgY3Jvc3MgY29tcGls ZXI6IEZhbHNlLg0KU2FuaXR5IGNoZWNrIGNvbXBpbGVyIGNvbW1hbmQgbGluZTogY2xhbmcgQzpc ZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHNhbml0eWNoZWNrYy5jIC1v IEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVxzYW5pdHljaGVja2Mu ZXhlIC1XbCwvTURkIC1waXBlDQpTYW5pdHkgY2hlY2sgY29tcGlsZSBzdGRvdXQ6DQpMSU5LIDog d2FybmluZyBMTks0MDQ0OiB1bnJlY29nbml6ZWQgb3B0aW9uICcvTURkJzsgaWdub3JlZA0KDQot LS0tLQ0KU2FuaXR5IGNoZWNrIGNvbXBpbGUgc3RkZXJyOg0KDQotLS0tLQ0KUnVubmluZyB0ZXN0 IGJpbmFyeSBjb21tYW5kOiBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcYnVpbGQ5XG1lc29uLXByaXZh dGVcc2FuaXR5Y2hlY2tjLmV4ZQ0KQyBjb21waWxlciBmb3IgdGhlIGhvc3QgbWFjaGluZTogY2xh bmcgKGNsYW5nIDcuMC4xICJjbGFuZyB2ZXJzaW9uIDcuMC4xICh0YWdzL1JFTEVBU0VfNzAxL2Zp bmFsKSIpDQpDIGxpbmtlciBmb3IgdGhlIGhvc3QgbWFjaGluZTogY2xhbmcgbGluayAxNC4yNC4y ODMxNi4wDQpCdWlsZCBtYWNoaW5lIGNwdSBmYW1pbHk6IHg4Nl82NA0KQnVpbGQgbWFjaGluZSBj cHU6IHg4Nl82NA0KSG9zdCBtYWNoaW5lIGNwdSBmYW1pbHk6IHg4Nl82NA0KSG9zdCBtYWNoaW5l IGNwdTogeDg2XzY0DQpUYXJnZXQgbWFjaGluZSBjcHUgZmFtaWx5OiB4ODZfNjQNClRhcmdldCBt YWNoaW5lIGNwdTogeDg2XzY0DQpQcm9ncmFtIC4uL2J1aWxkdG9vbHMvc3ltbGluay1kcml2ZXJz LXNvbGlicy5zaCBmb3VuZDogWUVTIChzaCBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcY29uZmlnXC4u L2J1aWxkdG9vbHMvc3ltbGluay1kcml2ZXJzLXNvbGlicy5zaCkNClJ1bm5pbmcgY29tcGlsZToN CldvcmtpbmcgZGlyZWN0b3J5OiAgQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNvbi1w cml2YXRlXHRtcHluZnJyeDVxDQpDb21tYW5kIGxpbmU6ICBjbGFuZyBDOlxkcGRrLWRyYWZ0LXdp bmRvd3NcYnVpbGQ5XG1lc29uLXByaXZhdGVcdG1weW5mcnJ4NXFcdGVzdGZpbGUuYyAtbyBDOlxk cGRrLWRyYWZ0LXdpbmRvd3NcYnVpbGQ5XG1lc29uLXByaXZhdGVcdG1weW5mcnJ4NXFcb3V0cHV0 LmV4ZSAtcGlwZSAtV2wsL01EZCAtTzAgDQoNCkNvZGU6DQogI2luY2x1ZGU8c3RkaW8uaD4NCiAg ICAgICAgDQogICAgICAgIGludCBtYWluKHZvaWQpIHsNCiAgICAgICAgICAgIHByaW50ZigiJWxk XG4iLCAobG9uZykoc2l6ZW9mKHZvaWQgKikpKTsNCiAgICAgICAgICAgIHJldHVybiAwOw0KICAg ICAgICB9Ow0KQ29tcGlsZXIgc3Rkb3V0Og0KIExJTksgOiB3YXJuaW5nIExOSzQwNDQ6IHVucmVj b2duaXplZCBvcHRpb24gJy9NRGQnOyBpZ25vcmVkDQoNCkNvbXBpbGVyIHN0ZGVycjoNCiANClBy b2dyYW0gc3Rkb3V0Og0KDQo4DQoNClByb2dyYW0gc3RkZXJyOg0KDQoNCkNoZWNraW5nIGZvciBz aXplIG9mICJ2b2lkICoiIDogOA0KUnVubmluZyBjb21waWxlOg0KV29ya2luZyBkaXJlY3Rvcnk6 ICBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcYnVpbGQ5XG1lc29uLXByaXZhdGVcdG1wbXFnNXl4MGkN CkNvbW1hbmQgbGluZTogIGNsYW5nIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24t cHJpdmF0ZVx0bXBtcWc1eXgwaVx0ZXN0ZmlsZS5jIC1vIEM6XGRwZGstZHJhZnQtd2luZG93c1xi dWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBtcWc1eXgwaVxvdXRwdXQuZXhlIC1waXBlIC1XbCwvTURk IC1PMCAtbGxpYm0gDQoNCkNvZGU6DQogaW50IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQ0KQ29t cGlsZXIgc3Rkb3V0Og0KIExJTksgOiB3YXJuaW5nIExOSzQwNDQ6IHVucmVjb2duaXplZCBvcHRp b24gJy9NRGQnOyBpZ25vcmVkDQpMSU5LIDogZmF0YWwgZXJyb3IgTE5LMTE4MTogY2Fubm90IG9w ZW4gaW5wdXQgZmlsZSAnbGlibS5saWInDQoNCkNvbXBpbGVyIHN0ZGVycjoNCiBjbGFuZy5leGU6 IGVycm9yOiBsaW5rZXIgY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgMTE4MSAodXNlIC12 IHRvIHNlZSBpbnZvY2F0aW9uKQ0KDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVjdG9y eTogIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXA2d3hiM2pu NA0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNv bi1wcml2YXRlXHRtcDZ3eGIzam40XHRlc3RmaWxlLmMgLW8gQzpcZHBkay1kcmFmdC13aW5kb3dz XGJ1aWxkOVxtZXNvbi1wcml2YXRlXHRtcDZ3eGIzam40XG91dHB1dC5leGUgLXBpcGUgLVdsLC9N RGQgLU8wIA0KDQpDb2RlOg0KICNpbmNsdWRlPHN0ZGlvLmg+DQogICAgICAgIA0KICAgICAgICBp bnQgbWFpbih2b2lkKSB7DQogICAgICAgICAgICBwcmludGYoIiVsZFxuIiwgKGxvbmcpKHNpemVv Zih2b2lkICopKSk7DQogICAgICAgICAgICByZXR1cm4gMDsNCiAgICAgICAgfTsNCkNvbXBpbGVy IHN0ZG91dDoNCiBMSU5LIDogd2FybmluZyBMTks0MDQ0OiB1bnJlY29nbml6ZWQgb3B0aW9uICcv TURkJzsgaWdub3JlZA0KDQpDb21waWxlciBzdGRlcnI6DQogDQpQcm9ncmFtIHN0ZG91dDoNCg0K OA0KDQpQcm9ncmFtIHN0ZGVycjoNCg0KDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVj dG9yeTogIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBybTJw Y3hfMg0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxt ZXNvbi1wcml2YXRlXHRtcHJtMnBjeF8yXHRlc3RmaWxlLmMgLW8gQzpcZHBkay1kcmFmdC13aW5k b3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHRtcHJtMnBjeF8yXG91dHB1dC5vYmogLXBpcGUgLWMg LU8wIC0tcHJpbnQtc2VhcmNoLWRpcnMgDQoNCkNvZGU6DQogDQpDb21waWxlciBzdGRvdXQ6DQog cHJvZ3JhbXM6ID1DOlxMTFZNXGJpbg0KbGlicmFyaWVzOiA9QzpcTExWTVxsaWJcY2xhbmdcNy4w LjENCg0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KTGlicmFyeSBsaWJtIGZvdW5kOiBOTw0KUnVubmlu ZyBjb21waWxlOg0KV29ya2luZyBkaXJlY3Rvcnk6ICBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcYnVp bGQ5XG1lc29uLXByaXZhdGVcdG1wcGJoZW85c2sNCkNvbW1hbmQgbGluZTogIGNsYW5nIEM6XGRw ZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBwYmhlbzlza1x0ZXN0Zmls ZS5jIC1vIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBwYmhl bzlza1xvdXRwdXQuZXhlIC1waXBlIC1XbCwvTURkIC1PMCAtbG51bWEgDQoNCkNvZGU6DQogaW50 IG1haW4odm9pZCkgeyByZXR1cm4gMDsgfQ0KQ29tcGlsZXIgc3Rkb3V0Og0KIExJTksgOiB3YXJu aW5nIExOSzQwNDQ6IHVucmVjb2duaXplZCBvcHRpb24gJy9NRGQnOyBpZ25vcmVkDQpMSU5LIDog ZmF0YWwgZXJyb3IgTE5LMTE4MTogY2Fubm90IG9wZW4gaW5wdXQgZmlsZSAnbnVtYS5saWInDQoN CkNvbXBpbGVyIHN0ZGVycjoNCiBjbGFuZy5leGU6IGVycm9yOiBsaW5rZXIgY29tbWFuZCBmYWls ZWQgd2l0aCBleGl0IGNvZGUgMTE4MSAodXNlIC12IHRvIHNlZSBpbnZvY2F0aW9uKQ0KDQpMaWJy YXJ5IG51bWEgZm91bmQ6IE5PDQpQa2ctY29uZmlnIGJpbmFyeSBmb3IgTWFjaGluZUNob2ljZS5I T1NUIGlzIG5vdCBjYWNoZWQuDQpQa2ctY29uZmlnIGJpbmFyeSBtaXNzaW5nIGZyb20gY3Jvc3Mg b3IgbmF0aXZlIGZpbGUsIG9yIGVudiB2YXIgdW5kZWZpbmVkLg0KVHJ5aW5nIGEgZGVmYXVsdCBQ a2ctY29uZmlnIGZhbGxiYWNrIGF0IHBrZy1jb25maWcNClRyeWluZyBwa2ctY29uZmlnIGJpbmFy eSBwa2ctY29uZmlnIGZvciBtYWNoaW5lIE1hY2hpbmVDaG9pY2UuSE9TVCBhdCBbTm9uZV0NCkRp ZCBub3QgZmluZCBwa2ctY29uZmlnIGJ5IG5hbWUgJ3BrZy1jb25maWcnDQpGb3VuZCBQa2ctY29u ZmlnOiBOTw0KUGtnLWNvbmZpZyBiaW5hcnkgZm9yIG1hY2hpbmUgTWFjaGluZUNob2ljZS5IT1NU IG5vdCBmb3VuZC4gR2l2aW5nIHVwLg0KQ01ha2UgYmluYXJ5IGZvciBNYWNoaW5lQ2hvaWNlLkhP U1QgaXMgbm90IGNhY2hlZA0KQ01ha2UgYmluYXJ5IG1pc3NpbmcgZnJvbSBjcm9zcyBvciBuYXRp dmUgZmlsZSwgb3IgZW52IHZhciB1bmRlZmluZWQuDQpUcnlpbmcgYSBkZWZhdWx0IENNYWtlIGZh bGxiYWNrIGF0IGNtYWtlDQpUcnlpbmcgQ01ha2UgYmluYXJ5IGNtYWtlIGZvciBtYWNoaW5lIE1h Y2hpbmVDaG9pY2UuSE9TVCBhdCBbTm9uZV0NCkRpZCBub3QgZmluZCBDTWFrZSAnY21ha2UnDQpG b3VuZCBDTWFrZTogTk8NCk5vIENNYWtlIGJpbmFyeSBmb3IgbWFjaGluZSBNYWNoaW5lQ2hvaWNl LkhPU1Qgbm90IGZvdW5kLiBHaXZpbmcgdXAuDQpSdW4tdGltZSBkZXBlbmRlbmN5IGxpYmJzZCBm b3VuZDogTk8gKHRyaWVkIHBrZ2NvbmZpZyBhbmQgY21ha2UpDQpSdW5uaW5nIGNvbXBpbGU6DQpX b3JraW5nIGRpcmVjdG9yeTogIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJp dmF0ZVx0bXBoOTNmeGFxbQ0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcZHBkay1kcmFmdC13aW5k b3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHRtcGg5M2Z4YXFtXHRlc3RmaWxlLmMgLW8gQzpcZHBk ay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHRtcGg5M2Z4YXFtXG91dHB1dC5v YmogLXBpcGUgLWMgLU8wIC1XZXJyb3I9dW5rbm93bi13YXJuaW5nLW9wdGlvbiAtV2Vycm9yPXVu dXNlZC1jb21tYW5kLWxpbmUtYXJndW1lbnQgLVdlcnJvcj1pZ25vcmVkLW9wdGltaXphdGlvbi1h cmd1bWVudCAtV3NpZ24tY29tcGFyZSANCg0KQ29kZToNCiBpbnQgaTsNCg0KQ29tcGlsZXIgc3Rk b3V0Og0KIA0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KQ29tcGlsZXIgZm9yIEMgc3VwcG9ydHMgYXJn dW1lbnRzIC1Xc2lnbi1jb21wYXJlOiBZRVMgDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRp cmVjdG9yeTogIEM6XGRwZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBx azE5N2dhNQ0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxk OVxtZXNvbi1wcml2YXRlXHRtcHFrMTk3Z2E1XHRlc3RmaWxlLmMgLW8gQzpcZHBkay1kcmFmdC13 aW5kb3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRlXHRtcHFrMTk3Z2E1XG91dHB1dC5vYmogLXBpcGUg LWMgLU8wIC1XZXJyb3I9dW5rbm93bi13YXJuaW5nLW9wdGlvbiAtV2Vycm9yPXVudXNlZC1jb21t YW5kLWxpbmUtYXJndW1lbnQgLVdlcnJvcj1pZ25vcmVkLW9wdGltaXphdGlvbi1hcmd1bWVudCAt V2Nhc3QtcXVhbCANCg0KQ29kZToNCiBpbnQgaTsNCg0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KQ29t cGlsZXIgc3RkZXJyOg0KIA0KQ29tcGlsZXIgZm9yIEMgc3VwcG9ydHMgYXJndW1lbnRzIC1XY2Fz dC1xdWFsOiBZRVMgDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVjdG9yeTogIEM6XGRw ZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBrYzZfNjZnMw0KQ29tbWFu ZCBsaW5lOiAgY2xhbmcgQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxtZXNvbi1wcml2YXRl XHRtcGtjNl82NmczXHRlc3RmaWxlLmMgLW8gQzpcZHBkay1kcmFmdC13aW5kb3dzXGJ1aWxkOVxt ZXNvbi1wcml2YXRlXHRtcGtjNl82NmczXG91dHB1dC5vYmogLXBpcGUgLWMgLU8wIC1XZXJyb3I9 dW5rbm93bi13YXJuaW5nLW9wdGlvbiAtV2Vycm9yPXVudXNlZC1jb21tYW5kLWxpbmUtYXJndW1l bnQgLVdlcnJvcj1pZ25vcmVkLW9wdGltaXphdGlvbi1hcmd1bWVudCAtV25vLWFkZHJlc3Mtb2Yt cGFja2VkLW1lbWJlciAtV2FkZHJlc3Mtb2YtcGFja2VkLW1lbWJlciANCg0KQ29kZToNCiBpbnQg aTsNCg0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KQ29tcGlsZXIg Zm9yIEMgc3VwcG9ydHMgYXJndW1lbnRzIC1Xbm8tYWRkcmVzcy1vZi1wYWNrZWQtbWVtYmVyOiBZ RVMgDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVjdG9yeTogIEM6XFVzZXJzXENIRU5H Q34xXEFwcERhdGFcTG9jYWxcVGVtcFx0bXBvOWkxZjNqXw0KQ29tbWFuZCBsaW5lOiAgY2xhbmcg QzpcVXNlcnNcQ0hFTkdDfjFcQXBwRGF0YVxMb2NhbFxUZW1wXHRtcG85aTFmM2pfXHRlc3RmaWxl LmMgLXBpcGUgLUUgLVAgLVAgLU8wIC1tYXJjaD1uYXRpdmUgDQoNCkNvZGU6DQogDQogICAgICAg IA0KICAgICAgICAjaWZuZGVmIF9fU1NFNF8yX18NCiAgICAgICAgIyBkZWZpbmUgX19TU0U0XzJf Xw0KICAgICAgICAjZW5kaWYNCiAgICAgICAgIk1FU09OX0dFVF9ERUZJTkVfREVMSU1JVEVSIg0K X19TU0U0XzJfXw0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KDQoNCg0KDQogICAgICAgICJNRVNPTl9H RVRfREVGSU5FX0RFTElNSVRFUiINCjENCg0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KRmV0Y2hpbmcg dmFsdWUgb2YgZGVmaW5lICJfX1NTRTRfMl9fIiA6IDEgDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3Jr aW5nIGRpcmVjdG9yeTogIEM6XFVzZXJzXENIRU5HQ34xXEFwcERhdGFcTG9jYWxcVGVtcFx0bXBw ZWd2Z3BoYw0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcVXNlcnNcQ0hFTkdDfjFcQXBwRGF0YVxM b2NhbFxUZW1wXHRtcHBlZ3ZncGhjXHRlc3RmaWxlLmMgLXBpcGUgLUUgLVAgLVAgLU8wIC1tYXJj aD1uYXRpdmUgDQoNCkNvZGU6DQogDQogICAgICAgIA0KICAgICAgICAjaWZuZGVmIF9fQUVTX18N CiAgICAgICAgIyBkZWZpbmUgX19BRVNfXw0KICAgICAgICAjZW5kaWYNCiAgICAgICAgIk1FU09O X0dFVF9ERUZJTkVfREVMSU1JVEVSIg0KX19BRVNfXw0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KDQoN Cg0KDQogICAgICAgICJNRVNPTl9HRVRfREVGSU5FX0RFTElNSVRFUiINCjENCg0KQ29tcGlsZXIg c3RkZXJyOg0KIA0KRmV0Y2hpbmcgdmFsdWUgb2YgZGVmaW5lICJfX0FFU19fIiA6IDEgDQpSdW5u aW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVjdG9yeTogIEM6XFVzZXJzXENIRU5HQ34xXEFwcERh dGFcTG9jYWxcVGVtcFx0bXAyemdfYmVzeg0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcVXNlcnNc Q0hFTkdDfjFcQXBwRGF0YVxMb2NhbFxUZW1wXHRtcDJ6Z19iZXN6XHRlc3RmaWxlLmMgLXBpcGUg LUUgLVAgLVAgLU8wIC1tYXJjaD1uYXRpdmUgDQoNCkNvZGU6DQogDQogICAgICAgIA0KICAgICAg ICAjaWZuZGVmIF9fUENMTVVMX18NCiAgICAgICAgIyBkZWZpbmUgX19QQ0xNVUxfXw0KICAgICAg ICAjZW5kaWYNCiAgICAgICAgIk1FU09OX0dFVF9ERUZJTkVfREVMSU1JVEVSIg0KX19QQ0xNVUxf Xw0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KDQoNCg0KDQogICAgICAgICJNRVNPTl9HRVRfREVGSU5F X0RFTElNSVRFUiINCjENCg0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KRmV0Y2hpbmcgdmFsdWUgb2Yg ZGVmaW5lICJfX1BDTE1VTF9fIiA6IDEgDQpSdW5uaW5nIGNvbXBpbGU6DQpXb3JraW5nIGRpcmVj dG9yeTogIEM6XFVzZXJzXENIRU5HQ34xXEFwcERhdGFcTG9jYWxcVGVtcFx0bXBfZ2hsNnB6MA0K Q29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcVXNlcnNcQ0hFTkdDfjFcQXBwRGF0YVxMb2NhbFxUZW1w XHRtcF9naGw2cHowXHRlc3RmaWxlLmMgLXBpcGUgLUUgLVAgLVAgLU8wIC1tYXJjaD1uYXRpdmUg DQoNCkNvZGU6DQogDQogICAgICAgIA0KICAgICAgICAjaWZuZGVmIF9fQVZYX18NCiAgICAgICAg IyBkZWZpbmUgX19BVlhfXw0KICAgICAgICAjZW5kaWYNCiAgICAgICAgIk1FU09OX0dFVF9ERUZJ TkVfREVMSU1JVEVSIg0KX19BVlhfXw0KQ29tcGlsZXIgc3Rkb3V0Og0KIA0KDQoNCg0KDQogICAg ICAgICJNRVNPTl9HRVRfREVGSU5FX0RFTElNSVRFUiINCjENCg0KQ29tcGlsZXIgc3RkZXJyOg0K IA0KRmV0Y2hpbmcgdmFsdWUgb2YgZGVmaW5lICJfX0FWWF9fIiA6IDEgDQpSdW5uaW5nIGNvbXBp bGU6DQpXb3JraW5nIGRpcmVjdG9yeTogIEM6XFVzZXJzXENIRU5HQ34xXEFwcERhdGFcTG9jYWxc VGVtcFx0bXBxdTRheGduNg0KQ29tbWFuZCBsaW5lOiAgY2xhbmcgQzpcVXNlcnNcQ0hFTkdDfjFc QXBwRGF0YVxMb2NhbFxUZW1wXHRtcHF1NGF4Z242XHRlc3RmaWxlLmMgLXBpcGUgLUUgLVAgLVAg LU8wIC1tYXJjaD1uYXRpdmUgDQoNCkNvZGU6DQogDQogICAgICAgIA0KICAgICAgICAjaWZuZGVm IF9fQVZYMl9fDQogICAgICAgICMgZGVmaW5lIF9fQVZYMl9fDQogICAgICAgICNlbmRpZg0KICAg ICAgICAiTUVTT05fR0VUX0RFRklORV9ERUxJTUlURVIiDQpfX0FWWDJfXw0KQ29tcGlsZXIgc3Rk b3V0Og0KIA0KDQoNCg0KDQogICAgICAgICJNRVNPTl9HRVRfREVGSU5FX0RFTElNSVRFUiINCjEN Cg0KQ29tcGlsZXIgc3RkZXJyOg0KIA0KRmV0Y2hpbmcgdmFsdWUgb2YgZGVmaW5lICJfX0FWWDJf XyIgOiAxIA0KUnVubmluZyBjb21waWxlOg0KV29ya2luZyBkaXJlY3Rvcnk6ICBDOlxVc2Vyc1xD SEVOR0N+MVxBcHBEYXRhXExvY2FsXFRlbXBcdG1weWllazkyYXMNCkNvbW1hbmQgbGluZTogIGNs YW5nIEM6XFVzZXJzXENIRU5HQ34xXEFwcERhdGFcTG9jYWxcVGVtcFx0bXB5aWVrOTJhc1x0ZXN0 ZmlsZS5jIC1waXBlIC1FIC1QIC1QIC1PMCAtbWFyY2g9bmF0aXZlIA0KDQpDb2RlOg0KIA0KICAg ICAgICANCiAgICAgICAgI2lmbmRlZiBfX0FWWDUxMkZfXw0KICAgICAgICAjIGRlZmluZSBfX0FW WDUxMkZfXw0KICAgICAgICAjZW5kaWYNCiAgICAgICAgIk1FU09OX0dFVF9ERUZJTkVfREVMSU1J VEVSIg0KX19BVlg1MTJGX18NCkNvbXBpbGVyIHN0ZG91dDoNCiANCg0KDQoNCg0KICAgICAgICAi TUVTT05fR0VUX0RFRklORV9ERUxJTUlURVIiDQoNCkNvbXBpbGVyIHN0ZGVycjoNCiANCkZldGNo aW5nIHZhbHVlIG9mIGRlZmluZSAiX19BVlg1MTJGX18iIDogIA0KUnVubmluZyBjb21waWxlOg0K V29ya2luZyBkaXJlY3Rvcnk6ICBDOlxkcGRrLWRyYWZ0LXdpbmRvd3NcYnVpbGQ5XG1lc29uLXBy aXZhdGVcdG1wYXp2Mnc5aXkNCkNvbW1hbmQgbGluZTogIGNsYW5nIEM6XGRwZGstZHJhZnQtd2lu ZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBhenYydzlpeVx0ZXN0ZmlsZS5jIC1vIEM6XGRw ZGstZHJhZnQtd2luZG93c1xidWlsZDlcbWVzb24tcHJpdmF0ZVx0bXBhenYydzlpeVxvdXRwdXQu b2JqIC1waXBlIC1jIC1PMCAtV2Vycm9yPXVua25vd24td2FybmluZy1vcHRpb24gLVdlcnJvcj11 bnVzZWQtY29tbWFuZC1saW5lLWFyZ3VtZW50IC1XZXJyb3I9aWdub3JlZC1vcHRpbWl6YXRpb24t YXJndW1lbnQgLVduby1mb3JtYXQtdHJ1bmNhdGlvbiAtV2Zvcm1hdC10cnVuY2F0aW9uIA0KDQpD b2RlOg0KIGludCBpOw0KDQpDb21waWxlciBzdGRvdXQ6DQogDQpDb21waWxlciBzdGRlcnI6DQog ZXJyb3I6IHVua25vd24gd2FybmluZyBvcHRpb24gJy1Xbm8tZm9ybWF0LXRydW5jYXRpb24nIFst V2Vycm9yLC1XdW5rbm93bi13YXJuaW5nLW9wdGlvbl0NCmVycm9yOiB1bmtub3duIHdhcm5pbmcg b3B0aW9uICctV2Zvcm1hdC10cnVuY2F0aW9uJyBbLVdlcnJvciwtV3Vua25vd24td2FybmluZy1v cHRpb25dDQoNCkNvbXBpbGVyIGZvciBDIHN1cHBvcnRzIGFyZ3VtZW50cyAtV25vLWZvcm1hdC10 cnVuY2F0aW9uOiBOTyANClByb2dyYW0gZG94eWdlbiBmb3VuZDogTk8NClByb2dyYW0gc3BoaW54 LWJ1aWxkIGZvdW5kOiBOTw0KQ29uZmlndXJpbmcgcnRlX2J1aWxkX2NvbmZpZy5oIHVzaW5nIGNv bmZpZ3VyYXRpb24NCk1lc3NhZ2U6IA0KPT09PT09PT09PT09PT09PT0NCkxpYnJhcmllcyBFbmFi bGVkDQo9PT09PT09PT09PT09PT09PQ0KDQpsaWJzOg0KCWt2YXJncywgZWFsLCANCg0KTWVzc2Fn ZTogDQo9PT09PT09PT09PT09PT0NCkRyaXZlcnMgRW5hYmxlZA0KPT09PT09PT09PT09PT09DQoN Cg0KQnVpbGQgdGFyZ2V0cyBpbiBwcm9qZWN0OiA1DQoNCkZvdW5kIG5pbmphLkVYRS0xLjkuMCBh dCBDOlxNZXNvblxuaW5qYS5FWEUNCg== --000000000000747430059db44191--