From nobody Fri Jan 13 02:30:09 2023 X-Original-To: freebsd-ports@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4NtQPW6VJFz2pCQV for ; Fri, 13 Jan 2023 02:30:23 +0000 (UTC) (envelope-from hiroo.ono@gmail.com) Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "smtp.gmail.com", Issuer "GTS CA 1D4" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4NtQPV6k8Hz3rDf for ; Fri, 13 Jan 2023 02:30:22 +0000 (UTC) (envelope-from hiroo.ono@gmail.com) Authentication-Results: mx1.freebsd.org; dkim=pass header.d=gmail.com header.s=20210112 header.b=lfHFmgk2; spf=pass (mx1.freebsd.org: domain of hiroo.ono@gmail.com designates 2607:f8b0:4864:20::532 as permitted sender) smtp.mailfrom=hiroo.ono@gmail.com; dmarc=pass (policy=none) header.from=gmail.com Received: by mail-pg1-x532.google.com with SMTP id 7so14089142pga.1 for ; Thu, 12 Jan 2023 18:30:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=to:subject:message-id:date:from:reply-to:mime-version:from:to:cc :subject:date:message-id:reply-to; bh=cPpYNDOySBUmfTichy6ONg6o4RuqbPRhJ8SSMGzvZTU=; b=lfHFmgk2xuqX+dljk+oapxyfPMX/qIdtJ8EA10ahUjxj6IacgSdWgCaVHp/Ivhf9XY OUU/a8vSp0XQDxL4K8t7UVvAiGyKEh7BDoPTvtM2TAfLM7aZ6Xs2mEcxNKRAKvqm1k7T 2d8z7IFRi1244ngsjnOhaaGolN738B6zatp1g/jBKWNjV4jAmu7g5J821buXGf+15F08 REHXKv76n25kukCqZK4Pqd4be9lHKwRlyq7elD83GJoU/c3Md8jPthi1Tc10Km0mKC4P oul3+saRnlhh1hS4AzNHA7FS1b9uKbdyAdR2r0sY5qI1dZuIZ/lsLBOgHBy/2lEf2m2B tK3w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:reply-to:mime-version :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=cPpYNDOySBUmfTichy6ONg6o4RuqbPRhJ8SSMGzvZTU=; b=1RI97MQg+pp7ciMX+3OkncTk24W48hznepcodAgtEfWJpvJHqdLJ/P09+vy2RGEHo3 HirHmXTaHjW9HKMxBXhXhUj1gKO2ztSpo+ZfZKuwh93rnmOJW39kR0HBqRfZNDHDnicp 49iCdW+1t46jqBOpqOcOUvcRFJfIQl1tSM8EjieRK6mSC79ofKTaJozUexzTGo6BDCTY HUt8C9+tbDrzXsVHFTowCSt6UZKh2x4NZeW695Y9n3Q0O38OtJU0YuJPrgVRCP8G4VKj zIUtQWV5BpSDNqgQ6SLbI80Wmq2yXgA0YsRctS6zvcLu2i6TE5pRvO4ryvpGNgSoS5th p7zw== X-Gm-Message-State: AFqh2kql1J9nGNM2esH2AZVneWWQ9paR2vMlL5HylDsDJYfMyYfAEVNc 1KfsrWZv0WRLtaKxoLTZpWWXuMj6eXu+10V4dKt3pOrAwe0= X-Google-Smtp-Source: AMrXdXuUBjcK/U/xAhxjfCq7wJsYNqx6+l6SyDfspIW1BnfyFggdG0sfNI2HBe8DN8NhvFT7AaIuVhaOmFl84yIBGjs= X-Received: by 2002:a63:571d:0:b0:478:d3a8:6ba5 with SMTP id l29-20020a63571d000000b00478d3a86ba5mr4083533pgb.619.1673577021508; Thu, 12 Jan 2023 18:30:21 -0800 (PST) List-Id: Porting software to FreeBSD List-Archive: https://lists.freebsd.org/archives/freebsd-ports List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-freebsd-ports@freebsd.org X-BeenThere: freebsd-ports@freebsd.org MIME-Version: 1.0 Reply-To: hiroo.ono+freebsd@gmail.com From: =?UTF-8?B?SGlyb28gT25vICjlsI/ph47lr5vnlJ8p?= Date: Fri, 13 Jan 2023 11:30:09 +0900 Message-ID: Subject: npm install, ports and poudriere To: freebsd-ports@freebsd.org Content-Type: multipart/mixed; boundary="000000000000df3a0d05f21c031b" X-Spamd-Result: default: False [-4.00 / 15.00]; NEURAL_HAM_MEDIUM(-1.00)[-1.000]; NEURAL_HAM_LONG(-1.00)[-1.000]; NEURAL_HAM_SHORT(-1.00)[-0.997]; DMARC_POLICY_ALLOW(-0.50)[gmail.com,none]; R_DKIM_ALLOW(-0.20)[gmail.com:s=20210112]; R_SPF_ALLOW(-0.20)[+ip6:2607:f8b0:4000::/36]; MIME_GOOD(-0.10)[multipart/mixed,text/plain]; TO_MATCH_ENVRCPT_ALL(0.00)[]; FROM_HAS_DN(0.00)[]; HAS_REPLYTO(0.00)[hiroo.ono+freebsd@gmail.com]; PREVIOUSLY_DELIVERED(0.00)[freebsd-ports@freebsd.org]; RCVD_IN_DNSWL_NONE(0.00)[2607:f8b0:4864:20::532:from]; ARC_NA(0.00)[]; RCPT_COUNT_ONE(0.00)[1]; FREEMAIL_REPLYTO(0.00)[gmail.com]; RCVD_TLS_LAST(0.00)[]; TAGGED_FROM(0.00)[freebsd]; MLMMJ_DEST(0.00)[freebsd-ports@freebsd.org]; REPLYTO_ADDR_EQ_FROM(0.00)[]; TO_DN_NONE(0.00)[]; HAS_ATTACHMENT(0.00)[]; FREEMAIL_FROM(0.00)[gmail.com]; DWL_DNSWL_NONE(0.00)[gmail.com:dkim]; MID_RHS_MATCH_FROMTLD(0.00)[]; FROM_EQ_ENVFROM(0.00)[]; ASN(0.00)[asn:15169, ipnet:2607:f8b0::/32, country:US]; DKIM_TRACE(0.00)[gmail.com:+]; FREEMAIL_ENVFROM(0.00)[gmail.com]; MIME_TRACE(0.00)[0:+,1:+,2:~]; RCVD_COUNT_TWO(0.00)[2] X-Rspamd-Queue-Id: 4NtQPV6k8Hz3rDf X-Spamd-Bar: --- X-ThisMailContainsUnwantedMimeParts: N --000000000000df3a0d05f21c031b Content-Type: text/plain; charset="UTF-8" Hello, I made a port of MongoDB Compass https://www.mongodb.com/docs/compass/current/ . As it is an electron app, I need to use "npm install" to build it. npm install does not work without network connection, while poudriere allow network connection only at fetch time. As a result, I need to do bunch of things in fetch mode, and the Makefile became as attached. Is this acceptable as a port? If not, I need to rework the Makefile to do npm install at build time, but that makes the port not officially buildable I think. (though to each of us, there is ALLOW_NETWORKING_PACKAGES option in poudriere.conf) --000000000000df3a0d05f21c031b Content-Type: application/octet-stream; name=Makefile Content-Disposition: attachment; filename=Makefile Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lctw0r4e0 UE9SVE5BTUU9CWNvbXBhc3MKRElTVFZFUlNJT05QUkVGSVg9CXYKRElTVFZFUlNJT049CTEuMzUu MC1iZXRhLjUKQ0FURUdPUklFUz0JZGF0YWJhc2VzCk1BU1RFUl9TSVRFUz0JaHR0cHM6Ly9yZWdp c3RyeS5ucG1qcy5vcmcva2VyYmVyb3MvLS86a2VyYmVyb3MgXAoJCWh0dHBzOi8vcmVnaXN0cnku bnBtanMub3JnL21vbmdvZGItY2xpZW50LWVuY3J5cHRpb24vLS86bW9uZ29jbGllbmMgXAoJCWh0 dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL29zLWRucy1uYXRpdmUvLS86ZG5zCkRJU1RfU1VCRElS PQkke1BPUlROQU1FfQpESVNURklMRVM9CWtlcmJlcm9zLSR7TlBNX0tFUkJFUk9TX1ZFUn0udGd6 OmtlcmJlcm9zIFwKCQltb25nb2RiLWNsaWVudC1lbmNyeXB0aW9uLSR7TU9OR09fQ0xJRU5DX1ZF Un0udGd6Om1vbmdvY2xpZW5jIFwKCQlvcy1kbnMtbmF0aXZlLSR7TlBNX0ROU05BVElWRV9WRVJ9 LnRnejpkbnMKRVhUUkFDVF9PTkxZPQkke0RJU1RGSUxFX0RFRkFVTFR9Ck1PTkdPX0NMSUVOQ19W RVI9Mi4zLjAKTU9OR09fTkFQSV9WRVI9CUBuYXBpLXJzL2NsaUAyLjkuMApNT05HT19aU1REX1ZF Uj0JMS4wLjAKTlBNX0ROU05BVElWRV9WRVI9MS4yLjAKTlBNX0tFUkJFUk9TX1ZFUj0yLjAuMQoK TUFJTlRBSU5FUj0JaGlyb28ub25vK2ZyZWVic2RAZ21haWwuY29tCkNPTU1FTlQ9CVBvd2VyZnVs IEdVSSBmb3IgTW9uZ29EQgpXV1c9CQlodHRwczovL3d3dy5tb25nb2RiLmNvbS9wcm9kdWN0cy9j b21wYXNzLwoKTElDRU5TRT0JU1NQTHYxCkxJQ0VOU0VfTkFNRT0JU2VydmVyIFNpZGUgUHVibGlj IExpY2Vuc2UKTElDRU5TRV9GSUxFPQkke1dSS1NSQ30vTElDRU5TRQpMSUNFTlNFX1BFUk1TPQlk aXN0LW1pcnJvciBkaXN0LXNlbGwgcGtnLW1pcnJvciBwa2ctc2VsbCBhdXRvLWFjY2VwdAoKT05M WV9GT1JfQVJDSFM9CWFtZDY0IGFybTY0ClVTRVM9CQlnZXR0ZXh0LXJ1bnRpbWUgZ2wgZ25vbWUg aWNvbnYganBlZyBweXRob246YnVpbGQgeG9yZwpVU0VfR0w9CQlnYm0gZ2wKVVNFX0dOT01FPQlh dGsgY2Fpcm8gZ2RrcGl4YnVmMiBnbGliMjAgZ3RrMzAgbGlieG1sMiBsaWJ4c2x0IHBhbmdvClVT RV9YT1JHPQl4MTEgeGNiIHhjb21wb3NpdGUgeGRhbWFnZSB4ZXh0IHhmaXhlcyB4aSB4cmFuZHIg eHJlbmRlciB4dHN0ClVTRV9MRENPTkZJRz0JJHtEQVRBRElSfQoKVVNFX0dJVEhVQj0JeWVzCkdI X1RVUExFPQltb25nb2RiLWpzOmNvbXBhc3M6JHtESVNUVkVSU0lPTlBSRUZJWH0ke0RJU1RWRVJT SU9OfSBcCgkJbW9uZ29kYi1qczp6c3RkOiR7RElTVFZFUlNJT05QUkVGSVh9JHtNT05HT19aU1RE X1ZFUn06enN0ZCBcCgkJbmFwaS1yczpuYXBpLXJzOiR7TU9OR09fTkFQSV9WRVJ9Om5hcGkKCiMg QSB0cmljayB0byBhdm9pZCBucG0gaW5zdGFsbCBkdXJpbmcgbWFrZSBtYWtlc3VtLgouaWYgJHsu VEFSR0VUUzpObWFrZXN1bX0KRkVUQ0hfREVQRU5EUz0JZ2l0OmRldmVsL2dpdCBcCgkJbnBtLW5v ZGUke05PREVfVkVSX01BSk9SfT4wOnd3dy9ucG0tbm9kZSR7Tk9ERV9WRVJfTUFKT1J9IFwKCQlj bWFrZTpkZXZlbC9jbWFrZS1jb3JlIFwKCQlwa2ctY29uZmlnOmRldmVsL3BrZ2NvbmYgXAoJCSR7 UFlUSE9OX1ZFUlNJT059OmxhbmcvcHl0aG9uJHtQWVRIT05fU1VGRklYfSBcCgkJY2FyZ286bGFu Zy9ydXN0IFwKCQl5YXJuOnd3dy95YXJuLW5vZGUke05PREVfVkVSX01BSk9SfSBcCgkJJHtQUkVG SVh9L2xpYi9saWJtb25nb2NyeXB0LnNvOmRhdGFiYXNlcy9saWJtb25nb2NyeXB0IFwKCQkke1BS RUZJWH0vbGliL2xpYnNlY3JldC0xLnNvOnNlY3VyaXR5L2xpYnNlY3JldAouICBpZiAhZW1wdHko UE9SVF9PUFRJT05TOk1HU1NBUElfTUlUKQpGRVRDSF9ERVBFTkRTKz0JJHtfTUlUS1JCNV9ERVBF TkRTfQouICBlbHNlCkZFVENIX0RFUEVORFMrPQkke19IRUlNREFMX0RFUEVORFN9Ci4gIGVuZGlm Ci5lbmRpZgpCVUlMRF9ERVBFTkRTPQllbGVjdHJvbiR7RUxFQ1RST05fVkVSX01BSk9SfTpkZXZl bC9lbGVjdHJvbiR7RUxFQ1RST05fVkVSX01BSk9SfSBcCgkJbnBtLW5vZGUke05PREVfVkVSX01B Sk9SfT4wOnd3dy9ucG0tbm9kZSR7Tk9ERV9WRVJfTUFKT1J9IFwKCQlwa2ctY29uZmlnOmRldmVs L3BrZ2NvbmYgXAoJCXppcDphcmNoaXZlcnMvemlwCkxJQl9ERVBFTkRTPQlsaWJhdGstYnJpZGdl LTIuMC5zbzphY2Nlc3NpYmlsaXR5L2F0LXNwaTItYXRrIFwKCQlsaWJhdHNwaS5zbzphY2Nlc3Np YmlsaXR5L2F0LXNwaTItY29yZSBcCgkJbGlic25hcHB5LnNvOmFyY2hpdmVycy9zbmFwcHkgXAoJ CWxpYmFzb3VuZC5zbzphdWRpby9hbHNhLWxpYiBcCgkJbGliRkxBQy5zbzphdWRpby9mbGFjIFwK CQlsaWJvcHVzLnNvOmF1ZGlvL29wdXMgXAoJCWxpYmRidXMtMS5zbzpkZXZlbC9kYnVzIFwKCQls aWJwY2kuc286ZGV2ZWwvbGlicGNpIFwKCQlsaWJwbGRzNC5zbzpkZXZlbC9uc3ByIFwKCQlsaWJk cm0uc286Z3JhcGhpY3MvbGliZHJtIFwKCQlsaWJwbmcxNi5zbzpncmFwaGljcy9wbmcgXAoJCWxp YndheWxhbmQtY2xpZW50LnNvOmdyYXBoaWNzL3dheWxhbmQgXAoJCWxpYndlYnBkZW11eC5zbzpn cmFwaGljcy93ZWJwIFwKCQlsaWJvcGVuaDI2NC5zbzptdWx0aW1lZGlhL29wZW5oMjY0IFwKCQls aWJjdXBzLnNvOnByaW50L2N1cHMgXAoJCWxpYmhhcmZidXp6LnNvOnByaW50L2hhcmZidXp6IFwK CQlsaWJzZWNyZXQtMS5zbzpzZWN1cml0eS9saWJzZWNyZXQgXAoJCWxpYm5zczMuc286c2VjdXJp dHkvbnNzIFwKCQlsaWJleHBhdC5zbzp0ZXh0cHJvYy9leHBhdDIgXAoJCWxpYnhrYmNvbW1vbi5z bzp4MTEvbGlieGtiY29tbW9uIFwKCQlsaWJ4c2htZmVuY2Uuc286eDExL2xpYnhzaG1mZW5jZSBc CgkJbGliZm9udGNvbmZpZy5zbzp4MTEtZm9udHMvZm9udGNvbmZpZwpURVNUX0RFUEVORFM9CVh2 ZmI6eDExLXNlcnZlcnMveG9yZy1zZXJ2ZXJAeHZmYgoKUE9SVERPQ1M9CUFVVEhPUlMgQ09OVFJJ QlVUSU5HLm1kIFJFQURNRS5tZCBUSElSRC1QQVJUWS1OT1RJQ0VTLm1kCgpPUFRJT05TX0RFRklO RT0JCURPQ1MKT1BUSU9OU19TSU5HTEU9CQlHU1NBUEkKT1BUSU9OU19TSU5HTEVfR1NTQVBJPQlH U1NBUElfQkFTRSBHU1NBUElfSEVJTURBTCBHU1NBUElfTUlUCk9QVElPTlNfREVGQVVMVD0JRE9D UyBHU1NBUElfQkFTRQoKR1NTQVBJX0JBU0VfREVTQz0gICAgICAgVXNpbmcgSGVpbWRhbCBpbiBi YXNlCkdTU0FQSV9IRUlNREFMX0RFU0M9ICAgIFVzaW5nIHNlY3VyaXR5L2hlaW1kYWwKR1NTQVBJ X01JVF9ERVNDPSAgICAgICAgVXNpbmcgc2VjdXJpdHkva3JiNQpHU1NBUElfQkFTRV9VU0VTPQln c3NhcGkKR1NTQVBJX0hFSU1EQUxfVVNFUz0JZ3NzYXBpOmhlaW1kYWwKR1NTQVBJX01JVF9VU0VT PQlnc3NhcGk6bWl0CgpQQVRDSF9TVFJJUD0JLXAxCgpQQVRIX0VOVj0JUEFUSD0kJHtQQVRIfTok e1dSS1NSQ30vbm9kZV9tb2R1bGVzLy5iaW4KUEFUSF9FTlZfenN0ZD0JUEFUSD0kJHtQQVRIfTok e01PTkdPX1pTVERfRElSfS9ub2RlX21vZHVsZXMvLmJpbgpNQUtFX0VOVis9CSR7UEFUSF9FTlZ9 Ck1BS0VfRU5WKz0JSEFEUk9OX1NLSVBfSU5TVEFMTEVSPXRydWUKTUFLRV9FTlYrPQlIT01FPSR7 V1JLRElSfQpNQUtFX0VOVis9CUVMRUNUUk9OX1NLSVBfQklOQVJZX0RPV05MT0FEPTEKTUFLRV9F TlYrPQlBUFBNT0Q9JHtESVNURElSfS8ke0RJU1RfU1VCRElSfS9jb21wYXNzX25vZGVfbW9kdWxl cy50YXIKLmlmIGRlZmluZWQoUVVJRVQpCk1BS0VfRU5WKz0JUVVJRVQ9eWVzCi5lbHNlCk1BS0Vf RU5WKz0JREVCVUc9dHJ1ZQouZW5kaWYKVEVTVF9FTlYrPQlIT01FPSR7V1JLRElSfQpURVNUX0VO Vis9CVBBVEg9JCR7UEFUSH06JHtXUktTUkN9L25vZGVfbW9kdWxlcy8uYmluCgojIERBVEFESVI9 CSR7UFJFRklYfS9zaGFyZS8ke1BPUlROQU1FfQoKTk9ERV9WRVJfTUFKT1I9CTE2Ck5PREVfTU9E VUxFU19ESVI9CSR7V1JLU1JDfS9ub2RlX21vZHVsZXMKTU9OR09fWlNURF9ESVI9CQkke1dSS0RJ Un0venN0ZC0ke01PTkdPX1pTVERfVkVSfQpOQVBJX0RJUj0JJHtXUktESVJ9L25hcGktcnMtJHtN T05HT19OQVBJX1ZFUjpDfFtcQC9dfC18Z30KQ09NUEFTU19ESVI9CSR7V1JLU1JDfS9wYWNrYWdl cy9jb21wYXNzCkRJU1RUTVBfRElSPQkke1dSS0RJUn0vZGlzdC10bXAKCkVMRUNUUk9OX0RJUj0J JHsuQ1VSRElSfS8uLi8uLi9kZXZlbC9lbGVjdHJvbjE4Ci5pbmNsdWRlCSIke0VMRUNUUk9OX0RJ Un0vTWFrZWZpbGUudmVyc2lvbiIKRUxFQ1RST05fRE9XTkxPQURfVVJMPQlodHRwczovL2dpdGh1 Yi5jb20vZWxlY3Ryb24vZWxlY3Ryb24vcmVsZWFzZXMvZG93bmxvYWQvdiR7RUxFQ1RST05fVkVS fQpFTEVDVFJPTl9ET1dOTE9BRF9VUkxfSEFTSCE9CS9zYmluL3NoYTI1NiAtcSAtcyAke0VMRUNU Uk9OX0RPV05MT0FEX1VSTH0KLmlmIGRlZmluZWQoQVJDSCkgJiYgJHtBUkNIfSA9PSBhbWQ2NApF TEVDVFJPTl9BUkNIPQl4NjQKTkFQSV9UQVJHRVQ9CXg4Nl82NC11bmtub3duLWZyZWVic2QKLmVs aWYgZGVmaW5lZChBUkNIKSAmJiAke0FSQ0h9ID09IGFybTY0CkVMRUNUUk9OX0FSQ0g9CWFybTY0 Ck5BUElfVEFSR0VUPQlhYXJjaDY0LXVua25vd24tZnJlZWJzZAouZW5kaWYKCnByZS1ldmVyeXRo aW5nOjoKCUAke0VDSE9fTVNHfSAiIgoJQCR7RUNIT19NU0d9ICJUaGUgbGltaXQgaW1wb3NlZCBi eSBwb3VkcmllcmUoOCkgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiBmaWxlcyBhbGxvd2VkIHRv IGJlIgoJQCR7RUNIT19NU0d9ICJvcGVuZWQgYnkgYSBqYWlsIChkZWZhdWx0IDEwMjQpIGlzIGV4 Y2VlZGVkIGR1cmluZyB0aGUgYnVpbGQgb2YgJHtQT1JUTkFNRX0uIgoJQCR7RUNIT19NU0d9ICJU byBzdWNjZXNzZnVsbHkgYnVpbGQgJHtQT1JUTkFNRX0gd2l0aCBwb3VkcmllcmUoOCksIHlvdSBt dXN0IGFkZCB0aGUgZm9sbG93aW5nIgoJQCR7RUNIT19NU0d9ICJsaW5lIHRvIHBvdWRyaWVyZS5j b25mOiIKCUAke0VDSE9fTVNHfSAiTUFYX0ZJTEVTXyR7UE9SVE5BTUV9PTQwOTYiCglAJHtFQ0hP X01TR30gIiIKCnBvc3QtZmV0Y2g6CiMgQSB0cmljayB0byBhdm9pZCBucG0gaW5zdGFsbCBkdXJp bmcgdGFyZ2V0cyBvdGhlciB0aGFuIGZldGNoCi5pZiAkey5NQUtFLkxFVkVMfSA9PSAwICYmIChl bXB0eSguVEFSR0VUUykgfHwgJHsuVEFSR0VUU30gPT0gZmV0Y2gpCgkke1RBUn0geGYgJHtESVNU RElSfS8ke0RJU1RfU1VCRElSfS8ke0RJU1RGSUxFX0RFRkFVTFR9IC1DICR7V1JLRElSfQoJIyBm b3JjZSB1c2Ugb2YgZWxlY3Ryb24gdmVyc2lvbiBtYXRjaGluZyBwb3J0IG9uZQoJJHtSRUlOUExB Q0VfQ01EfSAtRSBcCgkJJ3N8XiggKiJlbGVjdHJvbiIpOiAqIi4qIiguKikkJHxcMTogIiR7RUxF Q1RST05fVkVSfSJcMnwnIFwKCQkke1dSS1NSQ30vcGFja2FnZS1sb2NrLmpzb24KCWZvciBwanNv biBpbiAkJChmaW5kICR7V1JLU1JDfSAtbmFtZSBwYWNrYWdlLmpzb24gLXByaW50KTsgZG8gXAoJ CSR7UkVJTlBMQUNFX0NNRH0gLUUgXAoJCSdzfF4oICoiZWxlY3Ryb24iKTogKiIuKiIoLiopJCR8 XDE6ICIke0VMRUNUUk9OX1ZFUn0iXDJ8JyBcCgkJJCR7cGpzb259OyBkb25lCgljZCAke1dSS1NS Q30gJiYgJHtQQVRDSH0gLXAxIDwgJHtGSUxFU0RJUn0vcGF0Y2gtcGFja2FnZXNfY29tcGFzc19w YWNrYWdlLmpzb24KCgkke1RBUn0geGYgJHtESVNURElSfS8ke0RJU1RfU1VCRElSfS8ke0RJU1RG SUxFX25hcGl9IC1DICR7V1JLRElSfQoJJHtNS0RJUn0gJHtOQVBJX0RJUn0vbm9kZV9tb2R1bGVz CgljZCAke05BUElfRElSfSAmJiBcCgkJJHtQQVRDSH0gLXAxIDwgJHtGSUxFU0RJUn0vbmFwaS1j bGkucGF0Y2gKCWNkICR7TkFQSV9ESVJ9ICYmICR7U0VURU5WfSAke01BS0VfRU5WfSBQQVRIPSQk e1BBVEh9IFwKCQlucG0gaW5zdGFsbCBjaGFsa0BeNC4xLjIKCWNkICR7TkFQSV9ESVJ9ICYmICR7 U0VURU5WfSAke01BS0VfRU5WfSBcCgkJUEFUSD0kJHtQQVRIfToke05BUElfRElSfS9ub2RlX21v ZHVsZXMvLmJpbiBucG0gcnVuIGJ1aWxkCgljZCAke1dSS0RJUn0gJiYgJHtTRVRFTlZ9ICR7TUFL RV9FTlZ9IG5wbSBwYWNrIGZpbGU6JHtOQVBJX0RJUn0vY2xpCgoJJHtUQVJ9IHhmICR7RElTVERJ Un0vJHtESVNUX1NVQkRJUn0vJHtESVNURklMRV96c3RkfSAtQyAke1dSS0RJUn0KCS0ke01LRElS fSAke01PTkdPX1pTVERfRElSfS9ub2RlX21vZHVsZXMKCWNkICR7TU9OR09fWlNURF9ESVJ9ICYm IFwKCQkke1BBVENIfSAtcDEgPCAke0ZJTEVTRElSfS9tb25nb2RiLWpzLXpzdGQucGF0Y2gKCWNk ICR7TU9OR09fWlNURF9ESVJ9ICYmIFwKCQkke1NFVEVOVn0gJHtNQUtFX0VOVn0gJHtQQVRIX0VO Vl96c3RkfSBcCgkJbnBtIGluc3RhbGwgJHtXUktESVJ9LyR7TU9OR09fTkFQSV9WRVI6Q3xeLnx8 OkN8W1xAL118LXxnfS50Z3oKCWNkICR7TU9OR09fWlNURF9ESVJ9ICYmIFwKCQkke1NFVEVOVn0g JHtNQUtFX0VOVn0gJHtQQVRIX0VOVl96c3RkfSBuYXBpIGJ1aWxkIC0tcGxhdGZvcm0gLS1yZWxl YXNlIC0tdGFyZ2V0ICR7TkFQSV9UQVJHRVR9ICYmIFwKCQkke1NFVEVOVn0gJHtNQUtFX0VOVn0g JHtQQVRIX0VOVl96c3RkfSAke0lOU1RBTExfTElCfSBcCgkJenN0ZC5mcmVlYnNkLSR7RUxFQ1RS T05fQVJDSH0ubm9kZSBucG0vZnJlZWJzZC0ke0VMRUNUUk9OX0FSQ0h9LwoJJHtSTX0gJHtNT05H T19aU1REX0RJUn0vbnBtL2ZyZWVic2QtJHtFTEVDVFJPTl9BUkNIfS8qLm9yaWcKCWNkICR7V1JL RElSfSAmJiAke1NFVEVOVn0gJHtNQUtFX0VOVn0gbnBtIHBhY2sgZmlsZToke01PTkdPX1pTVERf RElSfQoJY2QgJHtXUktESVJ9ICYmICR7U0VURU5WfSAke01BS0VfRU5WfSBucG0gcGFjayBcCgkJ ZmlsZToke01PTkdPX1pTVERfRElSfS9ucG0vZnJlZWJzZC0ke0VMRUNUUk9OX0FSQ0h9CgoJJHtU QVJ9IHhmICR7RElTVERJUn0vJHtESVNUX1NVQkRJUn0va2VyYmVyb3MtJHtOUE1fS0VSQkVST1Nf VkVSfS50Z3ogXAoJCS1DICR7V1JLRElSfQoJY2QgJHtXUktESVJ9L3BhY2thZ2UgJiYgXAoJCSR7 UEFUQ0h9IC1wMCA8ICR7RklMRVNESVJ9L2tlcmJlcm9zLWtlcmJlcm9zX2dzcy5oLnBhdGNoCgkk e1JFSU5QTEFDRV9DTUR9IC1FIFwKCQknc3woZGVmaW5lZFwoX19BUFBMRV9fXCkpLiokJHxcMSBc fFx8IGRlZmluZWQoX19GcmVlQlNEX18pfCcgXAoJCSR7V1JLRElSfS9wYWNrYWdlL3NyYy9rZXJi ZXJvc19jb21tb24uaAouICBpZiBlbXB0eShQT1JUX09QVElPTlM6TUdTU0FQSV9NSVQpCgkke1JF SU5QTEFDRV9DTUR9IC1FIFwKCQknc3xeKCAqKSguKi9nc3NhcGlfZ2VuZXJpYy5oPi4qKSQkfFwx Ly9cMnwnIFwKCQkke1dSS0RJUn0vcGFja2FnZS9zcmMvdW5peC9rZXJiZXJvc19nc3MuaAoJJHtS RUlOUExBQ0VfQ01EfSAtRSBcCgkJInN8KE9TPT0nbGludXgnKXxcMSBvciBPUz09J2ZyZWVic2Qn fCIgXAoJCSR7V1JLRElSfS9wYWNrYWdlL2JpbmRpbmcuZ3lwCi4gIGVuZGlmCgljZCAke1dSS0RJ Un0gJiYgJHtTRVRFTlZ9ICR7TUFLRV9FTlZ9IG5wbSBwYWNrIGZpbGU6JHtXUktESVJ9L3BhY2th Z2UKCSR7Uk19IC1yZCAke1dSS0RJUn0vcGFja2FnZQoKCSR7VEFSfSB4ZiAke0RJU1RESVJ9LyR7 RElTVF9TVUJESVJ9L21vbmdvZGItY2xpZW50LWVuY3J5cHRpb24tJHtNT05HT19DTElFTkNfVkVS fS50Z3ogLUMgJHtXUktESVJ9Cgkke1JFSU5QTEFDRV9DTUR9IC1FIFwKCQknc3xeKC4qXC5pbmNs dWRlX2Rpci4qKSQkfFwxICIvdXNyL2luY2x1ZGUiLCAiJHtQUkVGSVh9L2luY2x1ZGUifCcgXAoJ CSR7V1JLRElSfS9wYWNrYWdlL2JpbmRpbmcuZ3lwCgkke1JFSU5QTEFDRV9DTUR9IC1FIFwKCQki c3xeKCAqJykuKihsaWIuKi1zdGF0aWMuKlwuYSkoJy4qKSQkfFwxL3Vzci9sb2NhbC9saWIvXDJc M3wiIFwKCQkke1dSS0RJUn0vcGFja2FnZS9iaW5kaW5nLmd5cAoJY2QgJHtXUktESVJ9ICYmICR7 U0VURU5WfSAke01BS0VfRU5WfSBucG0gcGFjayBmaWxlOiR7V1JLRElSfS9wYWNrYWdlCgkke1JN fSAtcmQgJHtXUktESVJ9L3BhY2thZ2UKCgkke1RBUn0geGYgJHtESVNURElSfS8ke0RJU1RfU1VC RElSfS9vcy1kbnMtbmF0aXZlLSR7TlBNX0ROU05BVElWRV9WRVJ9LnRneiAtQyAke1dSS0RJUn0K CWNkICR7V1JLRElSfSAmJiAke1BBVENIfSAtcDAgPCAke0ZJTEVTRElSfS9vcy1kbnMtbmF0aXZl LnBhdGNoCgkke01LRElSfSAke1dSS0RJUn0vcGFja2FnZS9ub2RlX21vZHVsZXMKCWNkICR7V1JL RElSfS9wYWNrYWdlICYmICR7U0VURU5WfSAke01BS0VfRU5WfSBucG0gaW5zdGFsbAoJY2QgJHtX UktESVJ9L3BhY2thZ2UgJiYgJHtTRVRFTlZ9ICR7TUFLRV9FTlZ9IFwKCQlQQVRIPSQke1BBVEh9 OiR7V1JLRElSfS9wYWNrYWdlL25vZGVfbW9kdWxlcy8uYmluIFwKCQlucG0gcnVuIGluc3RhbGwK CWNkICR7V1JLRElSfSAmJiAke1NFVEVOVn0gJHtNQUtFX0VOVn0gbnBtIHBhY2sgZmlsZToke1dS S0RJUn0vcGFja2FnZQoJJHtSTX0gLXJkICR7V1JLRElSfS9wYWNrYWdlCgoJLSR7TUtESVJ9ICR7 Tk9ERV9NT0RVTEVTX0RJUn0KCSMgaHR0cHM6Ly9naXRodWIuY29tL25wbS9jbGkvaXNzdWVzLzMw NzgKCS0ke1JNfSAtcmQgJHtXUktESVJ9Ly5ucG0KCSR7U0VURU5WfSAke01BS0VfRU5WfSBucG0g Y29uZmlnIHNldCBtYXhzb2NrZXRzPTEKCSMgQ29ycmVjdCBwYWNrYWdlLWxvY2suanNvbgoJIyAq IEF2b2lkIEBiYWJlbC9jb3JlIGFuZCBiYWJlbC1sb2FkZXIgdmVyc2lvbiB1bm1hdGNoLgoJJHtS RUlOUExBQ0VfQ01EfSAtRSBcCgkJJ3MsXiggKiJiYWJlbC1sb2FkZXIiKTogKiIuKiIoLiopJCQs XDE6ICJeOC4zLjAiXDIsJyBcCgkJJHtXUktTUkN9L3BhY2thZ2UtbG9jay5qc29uCgkjICogUmVt b3ZlIHB1cHBldGVlcgoJLWdyZXAgLXIgcHVwcGV0ZWVyICR7Tk9ERV9NT0RVTEVTX0RJUn0gICMg WFhYCgkke1BZVEhPTl9DTUR9ICR7RklMRVNESVJ9L3VwZGF0ZS1wYWNrYWdlLWxvY2sucHkgXAoJ CSR7V1JLU1JDfS9wYWNrYWdlLWxvY2suanNvbgoJJHtQWVRIT05fQ01EfSAke0ZJTEVTRElSfS91 cGRhdGUtcGFja2FnZS1sb2NrLnB5IFwKCQkke1dSS1NSQ30vcGFja2FnZXMvY29tcGFzcy1lMmUt dGVzdHMvcGFja2FnZS5qc29uCgoJIyBpbnN0YWxsIG5wbSBsaWJyYXJpZXMgbmVlZGVkLgoJY2Qg JHtXUktTUkN9ICYmICR7U0VURU5WfSAke01BS0VfRU5WfSBucG0gaW5zdGFsbCBcCgkJJHtXUktE SVJ9L2tlcmJlcm9zLSR7TlBNX0tFUkJFUk9TX1ZFUn0udGd6IFwKCQkke1dSS0RJUn0vJHtNT05H T19OQVBJX1ZFUjpDfF4ufHw6Q3xbXEAvXXwtfGd9LnRneiBcCgkJJHtXUktESVJ9L21vbmdvZGIt anMtenN0ZC0qLnRneiBcCgkJJHtXUktESVJ9L21vbmdvZGItY2xpZW50LWVuY3J5cHRpb24tJHtN T05HT19DTElFTkNfVkVSfS50Z3ogXAoJCSR7V1JLRElSfS9vcy1kbnMtbmF0aXZlLSR7TlBNX0RO U05BVElWRV9WRVJ9LnRneiBcCgkJImF3cy1jcnRAPj0xLjAuMCIgXAoJCSJ3ZWJwYWNrQF41LjUy LjEiICJ3ZWJwYWNrLW1lcmdlQF41LjguMCIgXAoJCWh0bWwtd2VicGFjay1wbHVnaW5AXjUuMy4y IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luQF4yLjYuMCBcCgkJImJhYmVsLWxvYWRlckBeOC4zLjAi IFwKCQkic3RyaXAtYm9tLXN0cmVhbUBeNC4wLjAiIFwKCQlqcXVlcnkgXAoJCWVuc3VyZS1lcnJv ckBeMy4wLjEKCgljZCAke1dSS1NSQ30vcGFja2FnZXMvY29tcGFzcyAmJiBub2RlIHNjcmlwdHMv ZG93bmxvYWQtZm9udHMuanMKCgktJHtSTX0gJHtESVNURElSfS8ke0RJU1RfU1VCRElSfS9mb250 cy50YXIKCS0ke1JNfSAke0RJU1RESVJ9LyR7RElTVF9TVUJESVJ9L25vZGVfbW9kdWxlcy50YXIK CS0ke1JNfSAke0RJU1RESVJ9LyR7RElTVF9TVUJESVJ9L3BhY2thZ2UqLmpzb24KCWNkICR7V1JL U1JDfS9wYWNrYWdlcy9jb21wYXNzICYmIFwKCQkke1RBUn0gY2YgJHtESVNURElSfS8ke0RJU1Rf U1VCRElSfS9mb250cy50YXIgc3JjL2FwcC9mb250cwoJY2QgJHtXUktTUkN9ICYmIFwKCQkke1RB Un0gY2YgJHtESVNURElSfS8ke0RJU1RfU1VCRElSfS9ub2RlX21vZHVsZXMudGFyIG5vZGVfbW9k dWxlcwoJJHtDUH0gJHtXUktTUkN9L3BhY2thZ2UtbG9jay5qc29uICR7RElTVERJUn0vJHtESVNU X1NVQkRJUn0KCSR7Q1B9ICR7V1JLU1JDfS9wYWNrYWdlLmpzb24gJHtESVNURElSfS8ke0RJU1Rf U1VCRElSfQoKCSMgUHJlcGFyZSBub2RlX21vZHVsZXMgZm9yIHByb2R1Y3Rpb24KCS0ke01LRElS fSAke0RJU1RUTVBfRElSfS9ub2RlX21vZHVsZXMKCWNkICR7RElTVFRNUF9ESVJ9ICYmICR7U0VU RU5WfSAke01BS0VfRU5WfSBucG0gaW5zdGFsbCBcCgkJJHtXUktESVJ9L2tlcmJlcm9zLSR7TlBN X0tFUkJFUk9TX1ZFUn0udGd6IFwKCQkke1dSS0RJUn0vbW9uZ29kYi1jbGllbnQtZW5jcnlwdGlv bi0ke01PTkdPX0NMSUVOQ19WRVJ9LnRneiBcCgkJJHtXUktESVJ9L29zLWRucy1uYXRpdmUtJHtO UE1fRE5TTkFUSVZFX1ZFUn0udGd6IFwKCQlAbW9uZ29zaC9ub2RlLXJ1bnRpbWUtd29ya2VyLXRo cmVhZEBeMS42LjEgXAoJCWNsaXBib2FyZEBeMi4wLjYgXAoJCWtleXRhckBeNy43LjAgXAoJCXN5 c3RlbS1jYUBeMS4wLjIgXAoJCWludGVycnVwdG9yQF4xLjAuMSBcCgkJLS1vbWl0PWRldgoKCS0k e1JNfSAke0RJU1RESVJ9LyR7RElTVF9TVUJESVJ9L2NvbXBhc3Nfbm9kZV9tb2R1bGVzLnRhcgoJ Y2QgJHtESVNUVE1QX0RJUn0gJiYgXAoJCSR7VEFSfSBjZiAke0RJU1RESVJ9LyR7RElTVF9TVUJE SVJ9L2NvbXBhc3Nfbm9kZV9tb2R1bGVzLnRhciBcCgkJCS0tZXhjbHVkZT1weXRob24zIG5vZGVf bW9kdWxlcwouZW5kaWYKCnBvc3QtZXh0cmFjdDoKCSR7VEFSfSB4ZiAke0RJU1RESVJ9LyR7RElT VF9TVUJESVJ9L25vZGVfbW9kdWxlcy50YXIgLUMgJHtXUktTUkN9Cgkke1RBUn0geGYgJHtESVNU RElSfS8ke0RJU1RfU1VCRElSfS9mb250cy50YXIgXAoJCS1DICR7V1JLU1JDfS9wYWNrYWdlcy9j b21wYXNzCgkke0NQfSAke1dSS1NSQ30vcGFja2FnZS1sb2NrLmpzb24gJHtXUktTUkN9L3BhY2th Z2UtbG9jay5qc29uLm9yaWcKCSR7Q1B9ICR7RElTVERJUn0vJHtESVNUX1NVQkRJUn0vcGFja2Fn ZSouanNvbiAke1dSS1NSQ30KCnBvc3QtcGF0Y2g6CgkjIFNvdXJjZSBjb3JyZWN0aW9uCgkjICog VW5zdXBwb3J0ZWQgc29tZXRoaW5nLgoJJHtSRUlOUExBQ0VfQ01EfSAtRSBcCgkJJ3N8XiggKiko aW5pdGlhbEluVmlldy4qKXxcMS8vXDJ8JyBcCgkJJHtXUktTUkN9L3BhY2thZ2VzL2NvbXBhc3Mt Y29tcG9uZW50cy9zcmMvY29tcG9uZW50cy93b3Jrc3BhY2UtY29udGFpbmVyLnRzeAoJIyAqIERv IG5vdCBkb3dubG9hZCBpbiBidWlsZC4KCSR7UkVJTlBMQUNFX0NNRH0gLUUgXAoJCSdzfF4oICoi aW5zdGFsbCIpOiAibm9kZSBzY3JpcHRzXC9kb3dubG9hZC1mb250c1wuanMuKiIoLiopJCR8XDE6 ICIiXDJ8JyBcCgkJJHtXUktTUkN9L3BhY2thZ2VzL2NvbXBhc3MvcGFja2FnZS5qc29uCgpkby1i dWlsZDoKCUAke1NFVEVOVn0gJHtNQUtFX0VOVn0gbnBtIGNvbmZpZyBzZXQgbWF4c29ja2V0cz0x CglAJHtTRVRFTlZ9ICR7TUFLRV9FTlZ9IG5wbSBjb25maWcgc2V0IGZldGNoLXJldHJpZXMgMAoJ QCR7U0VURU5WfSAke01BS0VfRU5WfSBucG0gY29uZmlnIHNldCBmZXRjaC1yZXRyeS1taW50aW1l b3V0IDAKCUAke1NFVEVOVn0gJHtNQUtFX0VOVn0gbnBtIGNvbmZpZyBzZXQgZmV0Y2gtcmV0cnkt bWF4dGltZW91dCAwCgoJIyBzZXQgdXAgZG93bmxvYWQgemlwIGZpbGUgZm9yIGVsZWN0cm9uLXBh Y2thZ2VyLgoJY2QgJHtOT0RFX01PRFVMRVNfRElSfS9lbGVjdHJvbi1wYWNrYWdlci9zcmMgJiYg XAoJCSR7UEFUQ0h9IC1wMSA8ICR7RklMRVNESVJ9L2VsZWN0cm9uLXBhY2thZ2VyLnBhdGNoCglj ZCAke0xPQ0FMQkFTRX0vc2hhcmUvZWxlY3Ryb24ke0VMRUNUUk9OX1ZFUl9NQUpPUn0gJiYgXAoJ CXppcCAtcSAtciAke1dSS0RJUn0vZWxlY3Ryb24tdiR7RUxFQ1RST05fVkVSfS1mcmVlYnNkLSR7 RUxFQ1RST05fQVJDSH0uemlwIC4KCgkjIGluc3RhbGwgZWxlY3Ryb24KCSR7Q1B9IC1SICR7TE9D QUxCQVNFfS9zaGFyZS9lbGVjdHJvbiR7RUxFQ1RST05fVkVSX01BSk9SfSBcCgkJJHtXUktTUkN9 L25vZGVfbW9kdWxlcy9lbGVjdHJvbi9kaXN0Cgkke0VDSE99ICJlbGVjdHJvbiIgPiAke1dSS1NS Q30vbm9kZV9tb2R1bGVzL2VsZWN0cm9uL3BhdGgudHh0CgoJIyBidWlsZCBNb25nb0RCIGNvbXBh c3MKCWNkICR7V1JLU1JDfSAmJiAke1NFVEVOVn0gJHtNQUtFX0VOVn0gbGVybmEgcnVuIGJvb3Rz dHJhcCAtLXN0cmVhbQoJY2QgJHtXUktTUkN9ICYmICR7U0VURU5WfSAke01BS0VfRU5WfSBERUJV Rz1oYWRyb24qIG5wbSBydW4gcGFja2FnZS1jb21wYXNzCgpkby1pbnN0YWxsOgoJLSR7TUtESVJ9 ICR7U1RBR0VESVJ9JHtQUkVGSVh9L3NoYXJlL3BpeG1hcHMKCSR7SU5TVEFMTF9EQVRBfSAke1dS S1NSQ30vcGFja2FnZXMvY29tcGFzcy9hcHAtaWNvbnMvbGludXgvbW9uZ29kYi1jb21wYXNzLnBu ZyBcCgkJJHtTVEFHRURJUn0ke1BSRUZJWH0vc2hhcmUvcGl4bWFwcy8KCS0ke01LRElSfSAke1NU QUdFRElSfSR7REVTS1RPUERJUn0KCSR7SU5TVEFMTF9EQVRBfSAke0ZJTEVTRElSfS9tb25nb2Ri LWNvbXBhc3MuZGVza3RvcCBcCgkJJHtTVEFHRURJUn0ke0RFU0tUT1BESVJ9LwoJLSR7TUtESVJ9 ICR7U1RBR0VESVJ9JHtEQVRBRElSfQoJY2QgJHtDT01QQVNTX0RJUn0vZGlzdC9Nb25nb0RCKiAm JiAke1RBUn0gY2YgLSAuICB8IFwKCQkke1RBUn0geGYgLSAtQyAke1NUQUdFRElSfSR7REFUQURJ Un0KLmZvciBmIGluIGNocm9tZWRyaXZlciBta3NuYXBzaG90IHY4X2NvbnRleHRfc25hcHNob3Rf Z2VuZXJhdG9yCgkke1JNfSAke1NUQUdFRElSfSR7REFUQURJUn0vJHtmfQouZW5kZm9yCgkke1JN fSAtciAke1NUQUdFRElSfSR7REFUQURJUn0vZ2VuCgkke1JNfSAtciAke1NUQUdFRElSfSR7REFU QURJUn0vbm9kZV9oZWFkZXJzCgkke1JMTn0gJHtTVEFHRURJUn0ke0RBVEFESVJ9L01vbmdvREIq IFwKCQkke1NUQUdFRElSfSR7UFJFRklYfS9iaW4vJHtQT1JUTkFNRX0KCmRvLWluc3RhbGwtRE9D Uy1vbjoKCUAke01LRElSfSAke1NUQUdFRElSfSR7RE9DU0RJUn0KCSR7SU5TVEFMTF9EQVRBfSAk e1BPUlRET0NTOlMsXiwke1dSS1NSQ30vLH0gJHtTVEFHRURJUn0ke0RPQ1NESVJ9LwoKZG8tdGVz dDoKCWNkICR7V1JLU1JDfS9wYWNrYWdlcy9jb21wYXNzICYmIFwKCQkke1NFVEVOVn0gJHtURVNU X0VOVn0gXAoJCXh2ZmItbWF5YmUgZWxlY3Ryb24tbW9jaGEgLS1uby1zYW5kYm94ICIuL3NyYy9t YWluLyouc3BlYy4qIgoKLmluY2x1ZGUgPGJzZC5wb3J0Lm1rPgo= --000000000000df3a0d05f21c031b--