<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugzilla.yoctoproject.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugzilla.yoctoproject.org/"
          
          maintainer="it-coreprojects-helpdesk@linuxfoundation.org"
>

    <bug>
          <bug_id>8625</bug_id>
          
          <creation_ts>2015-11-02 15:50:26 +0000</creation_ts>
          <short_desc>Extensible SDK should prevent users from installing it in locations with special characters</short_desc>
          <delta_ts>2015-12-02 02:25:42 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>7</classification_id>
          <classification>Build System, Metadata &amp; Runtime</classification>
          <product>OE-Core</product>
          <component>devtools / tool chain</component>
          <version>2.0</version>
          <rep_platform>x86</rep_platform>
          <op_sys>Multiple</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>Low</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>2.1</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexandru Georgescu">alexandru.c.georgescu</reporter>
          <assigned_to name="Paul Eggleton">bluelightning</assigned_to>
          <cc>meta.mr.watcher</cc>
    
    <cc>meta.watcher</cc>
          
          <qa_contact name="Alexandru Georgescu">alexandru.c.georgescu</qa_contact>
          <cf_os>---</cf_os>
          <cf_regression_type>New (Never tested)</cf_regression_type>
          
          <cf_docchange>No (bug/feature does not impact docs)</cf_docchange>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>56096</commentid>
    <comment_count>0</comment_count>
    <who name="Alexandru Georgescu">alexandru.c.georgescu</who>
    <bug_when>2015-11-02 15:50:26 +0000</bug_when>
    <thetext>If a user specifies a location for the extensible SDK with a special character, the user should be warned and stopped before attempting installation. 

Currently, the SDK continues the install process and informs the user after installation was done that the installation failed.

[alex@fed tmp]$ ./poky-glibc-x86_64-core-image-sato-corei7-64-toolchain-ext-2.0.sh
Poky (Yocto Project Reference Distro) Extensible SDK installer version 2.0
==========================================================================
Enter target directory for SDK (default: ~/poky_sdk): ./sdk$
You are about to install the SDK to &quot;/home/alex/tmp/sdk$&quot;. Proceed[Y/n]? Y
Extracting SDK.........................................................................................................done
Setting it up...
Extracting buildtools...
Preparing build system...
SDK preparation failed: see /home/alex/tmp/sdk$/preparing_build_system.log

[alex@fed tmp]$ cd sdk\$/
[alex@fed sdk$]$ . environment-setup-corei7-64-poky-linux
SDK environment now set up; additionally you may now run devtool to perform development tasks.
Run devtool --help for further details.
[alex@fed sdk$]$ devtool --help
ImportError: No module named site
[alex@fed sdk$]$</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56100</commentid>
    <comment_count>1</comment_count>
      <attachid>2836</attachid>
    <who name="Alexandru Georgescu">alexandru.c.georgescu</who>
    <bug_when>2015-11-02 16:24:34 +0000</bug_when>
    <thetext>Created attachment 2836
added preparing build system log</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>56917</commentid>
    <comment_count>2</comment_count>
    <who name="Paul Eggleton">bluelightning</who>
    <bug_when>2015-12-02 02:25:42 +0000</bug_when>
    <thetext>Fix merged to master:

http://git.yoctoproject.org/cgit/cgit.cgi/poky/commit/?id=7f3c20f87d8e9113a14bbac3080cb6dee2469e8d</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>2836</attachid>
            <date>2015-11-02 16:24:34 +0000</date>
            <delta_ts>2015-11-02 16:24:34 +0000</delta_ts>
            <desc>added preparing build system log</desc>
            <filename>preparing_build_system.log</filename>
            <type>application/octet-stream</type>
            <size>40544</size>
            <attacher name="Alexandru Georgescu">alexandru.c.georgescu</attacher>
            
              <data encoding="base64">VHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9ob21lL2FsZXgvdG1w
L3NkayQvbGF5ZXJzL3Bva3kvc2NyaXB0cy9yZWNpcGV0b29sIiwgbGluZSAxMDksIGluIDxtb2R1
bGU+CiAgICByZXQgPSBtYWluKCkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9w
b2t5L3NjcmlwdHMvcmVjaXBldG9vbCIsIGxpbmUgNzcsIGluIG1haW4KICAgIHRpbmZvaWwgPSB0
aW5mb2lsX2luaXQoRmFsc2UpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9r
eS9zY3JpcHRzL3JlY2lwZXRvb2wiLCBsaW5lIDM3LCBpbiB0aW5mb2lsX2luaXQKICAgIHRpbmZv
aWwgPSBiYi50aW5mb2lsLlRpbmZvaWwoKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5
ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weSIsIGxpbmUgNTQsIGluIF9faW5pdF9f
CiAgICBzZWxmLmNvb2tlciA9IEJCQ29va2VyKHNlbGYuY29uZmlnLCBmZWF0dXJlcykKICBGaWxl
ICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5w
eSIsIGxpbmUgMTQwLCBpbiBfX2luaXRfXwogICAgc2VsZi5pbml0Q29uZmlndXJhdGlvbkRhdGEo
KQpCQkhhbmRsZWRFeGNlcHRpb24KL2hvbWUvYWxleC90bXAvc2RrJC9leHQtc2RrLXByZXBhcmUu
c2g6IGxpbmUgMTM6IEVSUk9SOiBFcnJvciBpbiBjb21waWxpbmcgcHl0aG9uIGZ1bmN0aW9uIGlu
IC9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFz
czoKClRoZSBjb2RlIGxpbmVzIHJlc3VsdGluZyBpbiB0aGlzIGVycm9yIHdlcmU6CiAqKiogMDAw
MTpkZWYgX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xh
c3Nlc19iYXNlX2JiY2xhc3MoZCk6CiAgICAgMDAwMjogICAgaW1wb3J0IHN0cmluZywgcmUKICAg
ICAwMDAzOgogICAgIDAwMDQ6ICAgICMgSGFuZGxlIFBBQ0tBR0VDT05GSUcKICAgICAwMDA1OiAg
ICAjClN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3Rt
cF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxpbmUgMSkKRVJS
T1I6IEVycm9yIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcwpUcmFjZWJhY2sgKG1vc3QgcmVj
ZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9i
aXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAyNTUsIGluIHBhcnNlQmFzZUNvbmZp
Z3VyYXRpb24KICAgIHNlbGYucGFyc2VDb25maWd1cmF0aW9uRmlsZXMoc2VsZi5wcmVmaWxlcywg
c2VsZi5wb3N0ZmlsZXMpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9i
aXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAzMTUsIGluIHBhcnNlQ29uZmlndXJh
dGlvbkZpbGVzCiAgICBkYXRhID0gX2luaGVyaXQoYmJjbGFzcywgZGF0YSkKICBGaWxlICIvaG9t
ZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHki
LCBsaW5lIDE3OCwgaW4gd3JhcHBlZAogICAgcmV0dXJuIGZ1bmMoZm4sICphcmdzKQogIEZpbGUg
Ii9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0
YS5weSIsIGxpbmUgMjA0LCBpbiBfaW5oZXJpdAogICAgYmIucGFyc2UuQkJIYW5kbGVyLmluaGVy
aXQoYmJjbGFzcywgImNvbmZpZ3VyYXRpb24gSU5IRVJJVHMiLCAwLCBkYXRhKQogIEZpbGUgIi9o
b21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2Vf
cHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MSwgaW4gaW5oZXJpdAogICAgaW5jbHVkZShmbiwgZmls
ZSwgbGluZW5vLCBkLCAiaW5oZXJpdCIpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXll
cnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weSIsIGxp
bmUgOTYsIGluIGluY2x1ZGUKICAgIGJiLnBhcnNlLmhhbmRsZShmbiwgZGF0YSwgVHJ1ZSkKICBG
aWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNl
L19faW5pdF9fLnB5IiwgbGluZSAxMTMsIGluIGhhbmRsZQogICAgcmV0dXJuIGhbJ2hhbmRsZSdd
KGZuLCBkYXRhLCBpbmNsdWRlKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bv
a3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSAxNTUs
IGluIGhhbmRsZQogICAgc3RhdGVtZW50cy5ldmFsKGQpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAv
c2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkiLCBsaW5lIDM5LCBp
biBldmFsCiAgICBzdGF0ZW1lbnQuZXZhbChkYXRhKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3Nk
ayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5IiwgbGluZSAxNTQsIGlu
IGV2YWwKICAgIGJiLm1ldGhvZHBvb2wuaW5zZXJ0X21ldGhvZChmdW5jbmFtZSwgdGV4dCwgc2Vs
Zi5maWxlbmFtZSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJh
a2UvbGliL2JiL21ldGhvZHBvb2wucHkiLCBsaW5lIDI3LCBpbiBpbnNlcnRfbWV0aG9kCiAgICBj
b21wID0gYmV0dGVyX2NvbXBpbGUoY29kZSwgbW9kdWxlbmFtZSwgZm4gKQogIEZpbGUgIi9ob21l
L2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkiLCBsaW5l
IDMxOCwgaW4gYmV0dGVyX2NvbXBpbGUKICAgIHJhaXNlIGUKQkJIYW5kbGVkRXhjZXB0aW9uOiBp
bnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5
X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxpbmUgMSk6IE5vIHN1Y2ggZmlsZSBvciBkaXJl
Y3RvcnkKL2hvbWUvYWxleC90bXAvc2RrJC9leHQtc2RrLXByZXBhcmUuc2g6IGxpbmUgMTQ6IEVS
Uk9SOiBFcnJvciBpbiBjb21waWxpbmcgcHl0aG9uIGZ1bmN0aW9uIGluIC9ob21lL2FsZXgvdG1w
L3NkayQvbGF5ZXJzL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzczoKClRoZSBjb2RlIGxp
bmVzIHJlc3VsdGluZyBpbiB0aGlzIGVycm9yIHdlcmU6CiAqKiogMDAwMTpkZWYgX19hbm9uXzYw
OV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xh
c3MoZCk6CiAgICAgMDAwMjogICAgaW1wb3J0IHN0cmluZywgcmUKICAgICAwMDAzOgogICAgIDAw
MDQ6ICAgICMgSGFuZGxlIFBBQ0tBR0VDT05GSUcKICAgICAwMDA1OiAgICAjClN5bnRheEVycm9y
OiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19w
b2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxpbmUgMSkKRVJST1I6IEVycm9yIHBhcnNp
bmcgY29uZmlndXJhdGlvbiBmaWxlcwpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6
CiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9j
b29rZXJkYXRhLnB5IiwgbGluZSAyNTUsIGluIHBhcnNlQmFzZUNvbmZpZ3VyYXRpb24KICAgIHNl
bGYucGFyc2VDb25maWd1cmF0aW9uRmlsZXMoc2VsZi5wcmVmaWxlcywgc2VsZi5wb3N0ZmlsZXMp
CiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9j
b29rZXJkYXRhLnB5IiwgbGluZSAzMTUsIGluIHBhcnNlQ29uZmlndXJhdGlvbkZpbGVzCiAgICBk
YXRhID0gX2luaGVyaXQoYmJjbGFzcywgZGF0YSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGsk
L2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE3OCwgaW4g
d3JhcHBlZAogICAgcmV0dXJuIGZ1bmMoZm4sICphcmdzKQogIEZpbGUgIi9ob21lL2FsZXgvdG1w
L3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUgMjA0
LCBpbiBfaW5oZXJpdAogICAgYmIucGFyc2UuQkJIYW5kbGVyLmluaGVyaXQoYmJjbGFzcywgImNv
bmZpZ3VyYXRpb24gSU5IRVJJVHMiLCAwLCBkYXRhKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3Nk
ayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5
IiwgbGluZSA5MSwgaW4gaW5oZXJpdAogICAgaW5jbHVkZShmbiwgZmlsZSwgbGluZW5vLCBkLCAi
aW5oZXJpdCIpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtl
L2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFuZGxlci5weSIsIGxpbmUgOTYsIGluIGluY2x1
ZGUKICAgIGJiLnBhcnNlLmhhbmRsZShmbiwgZGF0YSwgVHJ1ZSkKICBGaWxlICIvaG9tZS9hbGV4
L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5Iiwg
bGluZSAxMTMsIGluIGhhbmRsZQogICAgcmV0dXJuIGhbJ2hhbmRsZSddKGZuLCBkYXRhLCBpbmNs
dWRlKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIv
YmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSAxNTUsIGluIGhhbmRsZQogICAg
c3RhdGVtZW50cy5ldmFsKGQpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9r
eS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkiLCBsaW5lIDM5LCBpbiBldmFsCiAgICBzdGF0
ZW1lbnQuZXZhbChkYXRhKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kv
Yml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5IiwgbGluZSAxNTQsIGluIGV2YWwKICAgIGJiLm1l
dGhvZHBvb2wuaW5zZXJ0X21ldGhvZChmdW5jbmFtZSwgdGV4dCwgc2VsZi5maWxlbmFtZSkKICBG
aWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL21ldGhv
ZHBvb2wucHkiLCBsaW5lIDI3LCBpbiBpbnNlcnRfbWV0aG9kCiAgICBjb21wID0gYmV0dGVyX2Nv
bXBpbGUoY29kZSwgbW9kdWxlbmFtZSwgZm4gKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQv
bGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkiLCBsaW5lIDMxOCwgaW4gYmV0dGVy
X2NvbXBpbGUKICAgIHJhaXNlIGUKQkJIYW5kbGVkRXhjZXB0aW9uOiBpbnZhbGlkIHN5bnRheCAo
X19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19i
YXNlX2JiY2xhc3MsIGxpbmUgMSk6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKL2hvbWUvYWxl
eC90bXAvc2RrJC9leHQtc2RrLXByZXBhcmUuc2g6IGxpbmUgMTU6IEVSUk9SOiBFcnJvciBpbiBj
b21waWxpbmcgcHl0aG9uIGZ1bmN0aW9uIGluIC9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bv
a3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzczoKClRoZSBjb2RlIGxpbmVzIHJlc3VsdGluZyBp
biB0aGlzIGVycm9yIHdlcmU6CiAqKiogMDAwMTpkZWYgX19hbm9uXzYwOV9faG9tZV9hbGV4X3Rt
cF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MoZCk6CiAgICAgMDAw
MjogICAgaW1wb3J0IHN0cmluZywgcmUKICAgICAwMDAzOgogICAgIDAwMDQ6ICAgICMgSGFuZGxl
IFBBQ0tBR0VDT05GSUcKICAgICAwMDA1OiAgICAjClN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRh
eCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nl
c19iYXNlX2JiY2xhc3MsIGxpbmUgMSkKRVJST1I6IEVycm9yIHBhcnNpbmcgY29uZmlndXJhdGlv
biBmaWxlcwpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hvbWUv
YWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5Iiwg
bGluZSAyNTUsIGluIHBhcnNlQmFzZUNvbmZpZ3VyYXRpb24KICAgIHNlbGYucGFyc2VDb25maWd1
cmF0aW9uRmlsZXMoc2VsZi5wcmVmaWxlcywgc2VsZi5wb3N0ZmlsZXMpCiAgRmlsZSAiL2hvbWUv
YWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5Iiwg
bGluZSAzMTUsIGluIHBhcnNlQ29uZmlndXJhdGlvbkZpbGVzCiAgICBkYXRhID0gX2luaGVyaXQo
YmJjbGFzcywgZGF0YSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2Jp
dGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDE3OCwgaW4gd3JhcHBlZAogICAgcmV0
dXJuIGZ1bmMoZm4sICphcmdzKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bv
a3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUgMjA0LCBpbiBfaW5oZXJpdAog
ICAgYmIucGFyc2UuQkJIYW5kbGVyLmluaGVyaXQoYmJjbGFzcywgImNvbmZpZ3VyYXRpb24gSU5I
RVJJVHMiLCAwLCBkYXRhKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kv
Yml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MSwgaW4g
aW5oZXJpdAogICAgaW5jbHVkZShmbiwgZmlsZSwgbGluZW5vLCBkLCAiaW5oZXJpdCIpCiAgRmls
ZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9w
YXJzZV9weS9Db25mSGFuZGxlci5weSIsIGxpbmUgOTYsIGluIGluY2x1ZGUKICAgIGJiLnBhcnNl
LmhhbmRsZShmbiwgZGF0YSwgVHJ1ZSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVy
cy9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL19faW5pdF9fLnB5IiwgbGluZSAxMTMsIGluIGhh
bmRsZQogICAgcmV0dXJuIGhbJ2hhbmRsZSddKGZuLCBkYXRhLCBpbmNsdWRlKQogIEZpbGUgIi9o
b21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2Vf
cHkvQkJIYW5kbGVyLnB5IiwgbGluZSAxNTUsIGluIGhhbmRsZQogICAgc3RhdGVtZW50cy5ldmFs
KGQpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9i
Yi9wYXJzZS9hc3QucHkiLCBsaW5lIDM5LCBpbiBldmFsCiAgICBzdGF0ZW1lbnQuZXZhbChkYXRh
KQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIv
cGFyc2UvYXN0LnB5IiwgbGluZSAxNTQsIGluIGV2YWwKICAgIGJiLm1ldGhvZHBvb2wuaW5zZXJ0
X21ldGhvZChmdW5jbmFtZSwgdGV4dCwgc2VsZi5maWxlbmFtZSkKICBGaWxlICIvaG9tZS9hbGV4
L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL21ldGhvZHBvb2wucHkiLCBsaW5l
IDI3LCBpbiBpbnNlcnRfbWV0aG9kCiAgICBjb21wID0gYmV0dGVyX2NvbXBpbGUoY29kZSwgbW9k
dWxlbmFtZSwgZm4gKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0
YmFrZS9saWIvYmIvdXRpbHMucHkiLCBsaW5lIDMxOCwgaW4gYmV0dGVyX2NvbXBpbGUKICAgIHJh
aXNlIGUKQkJIYW5kbGVkRXhjZXB0aW9uOiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9t
ZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxp
bmUgMSk6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKL2hvbWUvYWxleC90bXAvc2RrJC9leHQt
c2RrLXByZXBhcmUuc2g6IGxpbmUgMTY6IEVSUk9SOiBFcnJvciBpbiBjb21waWxpbmcgcHl0aG9u
IGZ1bmN0aW9uIGluIC9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvbWV0YS9jbGFzc2Vz
L2Jhc2UuYmJjbGFzczoKClRoZSBjb2RlIGxpbmVzIHJlc3VsdGluZyBpbiB0aGlzIGVycm9yIHdl
cmU6CiAqKiogMDAwMTpkZWYgX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19w
b2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MoZCk6CiAgICAgMDAwMjogICAgaW1wb3J0IHN0
cmluZywgcmUKICAgICAwMDAzOgogICAgIDAwMDQ6ICAgICMgSGFuZGxlIFBBQ0tBR0VDT05GSUcK
ICAgICAwMDA1OiAgICAjClN5bnRheEVycm9yOiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9f
aG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3Ms
IGxpbmUgMSkKRVJST1I6IEVycm9yIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcwpUcmFjZWJh
Y2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9s
YXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAyNTUsIGluIHBh
cnNlQmFzZUNvbmZpZ3VyYXRpb24KICAgIHNlbGYucGFyc2VDb25maWd1cmF0aW9uRmlsZXMoc2Vs
Zi5wcmVmaWxlcywgc2VsZi5wb3N0ZmlsZXMpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9s
YXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAzMTUsIGluIHBh
cnNlQ29uZmlndXJhdGlvbkZpbGVzCiAgICBkYXRhID0gX2luaGVyaXQoYmJjbGFzcywgZGF0YSkK
ICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL2Nv
b2tlcmRhdGEucHkiLCBsaW5lIDE3OCwgaW4gd3JhcHBlZAogICAgcmV0dXJuIGZ1bmMoZm4sICph
cmdzKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIv
YmIvY29va2VyZGF0YS5weSIsIGxpbmUgMjA0LCBpbiBfaW5oZXJpdAogICAgYmIucGFyc2UuQkJI
YW5kbGVyLmluaGVyaXQoYmJjbGFzcywgImNvbmZpZ3VyYXRpb24gSU5IRVJJVHMiLCAwLCBkYXRh
KQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIv
cGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IiwgbGluZSA5MSwgaW4gaW5oZXJpdAogICAgaW5j
bHVkZShmbiwgZmlsZSwgbGluZW5vLCBkLCAiaW5oZXJpdCIpCiAgRmlsZSAiL2hvbWUvYWxleC90
bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9Db25mSGFu
ZGxlci5weSIsIGxpbmUgOTYsIGluIGluY2x1ZGUKICAgIGJiLnBhcnNlLmhhbmRsZShmbiwgZGF0
YSwgVHJ1ZSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2Uv
bGliL2JiL3BhcnNlL19faW5pdF9fLnB5IiwgbGluZSAxMTMsIGluIGhhbmRsZQogICAgcmV0dXJu
IGhbJ2hhbmRsZSddKGZuLCBkYXRhLCBpbmNsdWRlKQogIEZpbGUgIi9ob21lL2FsZXgvdG1wL3Nk
ayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5
IiwgbGluZSAxNTUsIGluIGhhbmRsZQogICAgc3RhdGVtZW50cy5ldmFsKGQpCiAgRmlsZSAiL2hv
bWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHki
LCBsaW5lIDM5LCBpbiBldmFsCiAgICBzdGF0ZW1lbnQuZXZhbChkYXRhKQogIEZpbGUgIi9ob21l
L2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvYXN0LnB5Iiwg
bGluZSAxNTQsIGluIGV2YWwKICAgIGJiLm1ldGhvZHBvb2wuaW5zZXJ0X21ldGhvZChmdW5jbmFt
ZSwgdGV4dCwgc2VsZi5maWxlbmFtZSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVy
cy9wb2t5L2JpdGJha2UvbGliL2JiL21ldGhvZHBvb2wucHkiLCBsaW5lIDI3LCBpbiBpbnNlcnRf
bWV0aG9kCiAgICBjb21wID0gYmV0dGVyX2NvbXBpbGUoY29kZSwgbW9kdWxlbmFtZSwgZm4gKQog
IEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvdXRp
bHMucHkiLCBsaW5lIDMxOCwgaW4gYmV0dGVyX2NvbXBpbGUKICAgIHJhaXNlIGUKQkJIYW5kbGVk
RXhjZXB0aW9uOiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGsk
X2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxpbmUgMSk6IE5vIHN1Y2gg
ZmlsZSBvciBkaXJlY3RvcnkKQ3JlYXRlZCBiYmFwcGVuZCBFUlJPUjogRXJyb3IgaW4gY29tcGls
aW5nIHB5dGhvbiBmdW5jdGlvbiBpbiAvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L21l
dGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3M6CgpUaGUgY29kZSBsaW5lcyByZXN1bHRpbmcgaW4gdGhp
cyBlcnJvciB3ZXJlOgogKioqIDAwMDE6ZGVmIF9fYW5vbl82MDlfX2hvbWVfYWxleF90bXBfc2Rr
JF9sYXllcnNfcG9reV9tZXRhX2NsYXNzZXNfYmFzZV9iYmNsYXNzKGQpOgogICAgIDAwMDI6ICAg
IGltcG9ydCBzdHJpbmcsIHJlCiAgICAgMDAwMzoKICAgICAwMDA0OiAgICAjIEhhbmRsZSBQQUNL
QUdFQ09ORklHCiAgICAgMDAwNTogICAgIwpTeW50YXhFcnJvcjogaW52YWxpZCBzeW50YXggKF9f
YW5vbl82MDlfX2hvbWVfYWxleF90bXBfc2RrJF9sYXllcnNfcG9reV9tZXRhX2NsYXNzZXNfYmFz
ZV9iYmNsYXNzLCBsaW5lIDEpCkVSUk9SOiBFcnJvciBwYXJzaW5nIGNvbmZpZ3VyYXRpb24gZmls
ZXMKVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgogIEZpbGUgIi9ob21lL2FsZXgv
dG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUg
MjU1LCBpbiBwYXJzZUJhc2VDb25maWd1cmF0aW9uCiAgICBzZWxmLnBhcnNlQ29uZmlndXJhdGlv
bkZpbGVzKHNlbGYucHJlZmlsZXMsIHNlbGYucG9zdGZpbGVzKQogIEZpbGUgIi9ob21lL2FsZXgv
dG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyZGF0YS5weSIsIGxpbmUg
MzE1LCBpbiBwYXJzZUNvbmZpZ3VyYXRpb25GaWxlcwogICAgZGF0YSA9IF9pbmhlcml0KGJiY2xh
c3MsIGRhdGEpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtl
L2xpYi9iYi9jb29rZXJkYXRhLnB5IiwgbGluZSAxNzgsIGluIHdyYXBwZWQKICAgIHJldHVybiBm
dW5jKGZuLCAqYXJncykKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2Jp
dGJha2UvbGliL2JiL2Nvb2tlcmRhdGEucHkiLCBsaW5lIDIwNCwgaW4gX2luaGVyaXQKICAgIGJi
LnBhcnNlLkJCSGFuZGxlci5pbmhlcml0KGJiY2xhc3MsICJjb25maWd1cmF0aW9uIElOSEVSSVRz
IiwgMCwgZGF0YSkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJh
a2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JCSGFuZGxlci5weSIsIGxpbmUgOTEsIGluIGluaGVy
aXQKICAgIGluY2x1ZGUoZm4sIGZpbGUsIGxpbmVubywgZCwgImluaGVyaXQiKQogIEZpbGUgIi9o
b21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2Vf
cHkvQ29uZkhhbmRsZXIucHkiLCBsaW5lIDk2LCBpbiBpbmNsdWRlCiAgICBiYi5wYXJzZS5oYW5k
bGUoZm4sIGRhdGEsIFRydWUpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9r
eS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9fX2luaXRfXy5weSIsIGxpbmUgMTEzLCBpbiBoYW5kbGUK
ICAgIHJldHVybiBoWydoYW5kbGUnXShmbiwgZGF0YSwgaW5jbHVkZSkKICBGaWxlICIvaG9tZS9h
bGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL3BhcnNlX3B5L0JC
SGFuZGxlci5weSIsIGxpbmUgMTU1LCBpbiBoYW5kbGUKICAgIHN0YXRlbWVudHMuZXZhbChkKQog
IEZpbGUgIi9ob21lL2FsZXgvdG1wL3NkayQvbGF5ZXJzL3Bva3kvYml0YmFrZS9saWIvYmIvcGFy
c2UvYXN0LnB5IiwgbGluZSAzOSwgaW4gZXZhbAogICAgc3RhdGVtZW50LmV2YWwoZGF0YSkKICBG
aWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNl
L2FzdC5weSIsIGxpbmUgMTU0LCBpbiBldmFsCiAgICBiYi5tZXRob2Rwb29sLmluc2VydF9tZXRo
b2QoZnVuY25hbWUsIHRleHQsIHNlbGYuZmlsZW5hbWUpCiAgRmlsZSAiL2hvbWUvYWxleC90bXAv
c2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9tZXRob2Rwb29sLnB5IiwgbGluZSAyNywg
aW4gaW5zZXJ0X21ldGhvZAogICAgY29tcCA9IGJldHRlcl9jb21waWxlKGNvZGUsIG1vZHVsZW5h
bWUsIGZuICkKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2Uv
bGliL2JiL3V0aWxzLnB5IiwgbGluZSAzMTgsIGluIGJldHRlcl9jb21waWxlCiAgICByYWlzZSBl
CkJCSGFuZGxlZEV4Y2VwdGlvbjogaW52YWxpZCBzeW50YXggKF9fYW5vbl82MDlfX2hvbWVfYWxl
eF90bXBfc2RrJF9sYXllcnNfcG9reV9tZXRhX2NsYXNzZXNfYmFzZV9iYmNsYXNzLCBsaW5lIDEp
CkVSUk9SOiBFcnJvciBpbiBjb21waWxpbmcgcHl0aG9uIGZ1bmN0aW9uIGluIC9ob21lL2FsZXgv
dG1wL3NkayQvbGF5ZXJzL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzczoKClRoZSBjb2Rl
IGxpbmVzIHJlc3VsdGluZyBpbiB0aGlzIGVycm9yIHdlcmU6CiAqKiogMDAwMTpkZWYgX19hbm9u
XzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVyc19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2Ji
Y2xhc3MoZCk6CiAgICAgMDAwMjogICAgaW1wb3J0IHN0cmluZywgcmUKICAgICAwMDAzOgogICAg
IDAwMDQ6ICAgICMgSGFuZGxlIFBBQ0tBR0VDT05GSUcKICAgICAwMDA1OiAgICAjClN5bnRheEVy
cm9yOiBpbnZhbGlkIHN5bnRheCAoX19hbm9uXzYwOV9faG9tZV9hbGV4X3RtcF9zZGskX2xheWVy
c19wb2t5X21ldGFfY2xhc3Nlc19iYXNlX2JiY2xhc3MsIGxpbmUgMSkKRVJST1I6IEVycm9yIHBh
cnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcwpUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFz
dCk6CiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9i
Yi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkiLCBsaW5lIDE1NSwgaW4gaGFuZGxlKGZuPScv
aG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3Mn
LCBkPTxiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCBvYmplY3QgYXQgMHg3ZmVlMjVjYjNiOTA+LCBp
bmNsdWRlPVRydWUpOgogICAgICAgICB0cnk6CiAgICA+ICAgICAgICBzdGF0ZW1lbnRzLmV2YWwo
ZCkKICAgICAgICAgZXhjZXB0IGJiLnBhcnNlLlNraXBSZWNpcGU6CiAgRmlsZSAiL2hvbWUvYWxl
eC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkiLCBsaW5l
IDM5LCBpbiBTdGF0ZW1lbnRHcm91cC5ldmFsKGRhdGE9PGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0
IG9iamVjdCBhdCAweDdmZWUyNWNiM2I5MD4pOgogICAgICAgICAgICAgZm9yIHN0YXRlbWVudCBp
biBzZWxmOgogICAgPiAgICAgICAgICAgIHN0YXRlbWVudC5ldmFsKGRhdGEpCiAgICAgCiAgRmls
ZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9h
c3QucHkiLCBsaW5lIDE1NCwgaW4gTWV0aG9kTm9kZS5ldmFsKGRhdGE9PGJiLmRhdGFfc21hcnQu
RGF0YVNtYXJ0IG9iamVjdCBhdCAweDdmZWUyNWNiM2I5MD4pOgogICAgICAgICAgICAgICAgIHRl
eHQgPSAiZGVmICVzKGQpOlxuIiAlIChmdW5jbmFtZSkgKyB0ZXh0CiAgICA+ICAgICAgICAgICAg
YmIubWV0aG9kcG9vbC5pbnNlcnRfbWV0aG9kKGZ1bmNuYW1lLCB0ZXh0LCBzZWxmLmZpbGVuYW1l
KQogICAgICAgICAgICAgICAgIGFub25mdW5jcyA9IGRhdGEuZ2V0VmFyKCdfX0JCQU5PTkZVTkNT
JywgRmFsc2UpIG9yIFtdCiAgRmlsZSAiL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9i
aXRiYWtlL2xpYi9iYi9tZXRob2Rwb29sLnB5IiwgbGluZSAyNywgaW4gaW5zZXJ0X21ldGhvZCht
b2R1bGVuYW1lPSdfX2Fub25fNjA5X19ob21lX2FsZXhfdG1wX3NkayRfbGF5ZXJzX3Bva3lfbWV0
YV9jbGFzc2VzX2Jhc2VfYmJjbGFzcycsIGNvZGU9J2RlZiBfX2Fub25fNjA5X19ob21lX2FsZXhf
dG1wX3NkayRfbGF5ZXJzX3Bva3lfbWV0YV9jbGFzc2VzX2Jhc2VfYmJjbGFzcyhkKTpcbiAgICBp
bXBvcnQgc3RyaW5nLCByZVxuXG4gICAgIyBIYW5kbGUgUEFDS0FHRUNPTkZJR1xuICAgICNcbiAg
ICAjIFRoZXNlIHRha2UgdGhlIGZvcm06XG4gICAgI1xuICAgICMgUEFDS0FHRUNPTkZJRyA/Pz0g
IjxkZWZhdWx0IG9wdGlvbnM+IlxuICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxl
LWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMiXG4gICAg
cGtnY29uZmlnZmxhZ3MgPSBkLmdldFZhckZsYWdzKCJQQUNLQUdFQ09ORklHIikgb3Ige31cbiAg
ICBpZiBwa2djb25maWdmbGFnczpcbiAgICAgICAgcGtnY29uZmlnID0gKGQuZ2V0VmFyKFwnUEFD
S0FHRUNPTkZJR1wnLCBUcnVlKSBvciAiIikuc3BsaXQoKVxuICAgICAgICBwbiA9IGQuZ2V0VmFy
KCJQTiIsIFRydWUpXG5cbiAgICAgICAgbWxwcmVmaXggPSBkLmdldFZhcigiTUxQUkVGSVgiLCBU
cnVlKVxuXG4gICAgICAgIGRlZiBleHBhbmRGaWx0ZXIoYXBwZW5kcywgZXh0ZW5zaW9uLCBwcmVm
aXgpOlxuICAgICAgICAgICAgYXBwZW5kcyA9IGJiLnV0aWxzLmV4cGxvZGVfZGVwcyhkLmV4cGFu
ZCgiICIuam9pbihhcHBlbmRzKSkpXG4gICAgICAgICAgICBuZXdhcHBlbmRzID0gW11cbiAgICAg
ICAgICAgIGZvciBhIGluIGFwcGVuZHM6XG4gICAgICAgICAgICAgICAgaWYgYS5lbmRzd2l0aCgi
LW5hdGl2ZSIpIG9yICgiLWNyb3NzLSIgaW4gYSk6XG4gICAgICAgICAgICAgICAgICAgIG5ld2Fw
cGVuZHMuYXBwZW5kKGEpXG4gICAgICAgICAgICAgICAgZWxpZiBhLnN0YXJ0c3dpdGgoInZpcnR1
YWwvIik6XG4gICAgICAgICAgICAgICAgICAgIHN1YnMgPSBhLnNwbGl0KCIvIiwgMSlbMV1cbiAg
ICAgICAgICAgICAgICAgICAgbmV3YXBwZW5kcy5hcHBlbmQoInZpcnR1YWwvIiArIHByZWZpeCAr
IHN1YnMgKyBleHRlbnNpb24pXG4gICAgICAgICAgICAgICAgZWxzZTpcbiAgICAgICAgICAgICAg
ICAgICAgaWYgYS5zdGFydHN3aXRoKHByZWZpeCk6XG4gICAgICAgICAgICAgICAgICAgICAgICBu
ZXdhcHBlbmRzLmFwcGVuZChhICsgZXh0ZW5zaW9uKVxuICAgICAgICAgICAgICAgICAgICBlbHNl
OlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3YXBwZW5kcy5hcHBlbmQocHJlZml4ICsgYSAr
IGV4dGVuc2lvbilcbiAgICAgICAgICAgIHJldHVybiBuZXdhcHBlbmRzXG5cbiAgICAgICAgZGVm
IGFwcGVuZFZhcih2YXJuYW1lLCBhcHBlbmRzKTpcbiAgICAgICAgICAgIGlmIG5vdCBhcHBlbmRz
OlxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgaWYgdmFybmFtZS5maW5kKCJE
RVBFTkRTIikgIT0gLTE6XG4gICAgICAgICAgICAgICAgaWYgcG4uc3RhcnRzd2l0aCgibmF0aXZl
c2RrLSIpOlxuICAgICAgICAgICAgICAgICAgICBhcHBlbmRzID0gZXhwYW5kRmlsdGVyKGFwcGVu
ZHMsICIiLCAibmF0aXZlc2RrLSIpXG4gICAgICAgICAgICAgICAgaWYgcG4uZW5kc3dpdGgoIi1u
YXRpdmUiKTpcbiAgICAgICAgICAgICAgICAgICAgYXBwZW5kcyA9IGV4cGFuZEZpbHRlcihhcHBl
bmRzLCAiLW5hdGl2ZSIsICIiKVxuICAgICAgICAgICAgICAgIGlmIG1scHJlZml4OlxuICAgICAg
ICAgICAgICAgICAgICBhcHBlbmRzID0gZXhwYW5kRmlsdGVyKGFwcGVuZHMsICIiLCBtbHByZWZp
eClcbiAgICAgICAgICAgIHZhcm5hbWUgPSBkLmV4cGFuZCh2YXJuYW1lKVxuICAgICAgICAgICAg
ZC5hcHBlbmRWYXIodmFybmFtZSwgIiAiICsgIiAiLmpvaW4oYXBwZW5kcykpXG5cbiAgICAgICAg
ZXh0cmFkZXBzID0gW11cbiAgICAgICAgZXh0cmFyZGVwcyA9IFtdXG4gICAgICAgIGV4dHJhY29u
ZiA9IFtdXG4gICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHNvcnRlZChwa2djb25maWdmbGFn
cy5pdGVtcygpKTpcbiAgICAgICAgICAgIGl0ZW1zID0gZmxhZ3ZhbC5zcGxpdCgiLCIpXG4gICAg
ICAgICAgICBudW0gPSBsZW4oaXRlbXMpXG4gICAgICAgICAgICBpZiBudW0gPiA0OlxuICAgICAg
ICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gT25seSBlbmFibGUsZGlz
YWJsZSxkZXBlbmQscmRlcGVuZCBjYW4gYmUgc3BlY2lmaWVkISJcbiAgICAgICAgICAgICAgICAg
ICAgJSAoZC5nZXRWYXIoXCdQTlwnLCBUcnVlKSwgZmxhZykpXG5cbiAgICAgICAgICAgIGlmIGZs
YWcgaW4gcGtnY29uZmlnOlxuICAgICAgICAgICAgICAgIGlmIG51bSA+PSAzIGFuZCBpdGVtc1sy
XTpcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFkZXBzLmFwcGVuZChpdGVtc1syXSlcbiAgICAg
ICAgICAgICAgICBpZiBudW0gPj0gNCBhbmQgaXRlbXNbM106XG4gICAgICAgICAgICAgICAgICAg
IGV4dHJhcmRlcHMuYXBwZW5kKGl0ZW1zWzNdKVxuICAgICAgICAgICAgICAgIGlmIG51bSA+PSAx
IGFuZCBpdGVtc1swXTpcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFjb25mLmFwcGVuZChpdGVt
c1swXSlcbiAgICAgICAgICAgIGVsaWYgbnVtID49IDIgYW5kIGl0ZW1zWzFdOlxuICAgICAgICAg
ICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzFdKVxuICAgICAgICBhcHBlbmRWYXIo
XCdERVBFTkRTXCcsIGV4dHJhZGVwcylcbiAgICAgICAgYXBwZW5kVmFyKFwnUkRFUEVORFNfJHtQ
Tn1cJywgZXh0cmFyZGVwcylcbiAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcyhcJ2Nt
YWtlXCcsIGQpOlxuICAgICAgICAgICAgYXBwZW5kVmFyKFwnRVhUUkFfT0VDTUFLRVwnLCBleHRy
YWNvbmYpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBhcHBlbmRWYXIoXCdFWFRSQV9PRUNP
TkZcJywgZXh0cmFjb25mKVxuXG4gICAgcG4gPSBkLmdldFZhcihcJ1BOXCcsIFRydWUpXG4gICAg
bGljZW5zZSA9IGQuZ2V0VmFyKFwnTElDRU5TRVwnLCBUcnVlKVxuICAgIGlmIGxpY2Vuc2UgPT0g
IklOVkFMSUQiOlxuICAgICAgICBiYi5mYXRhbChcJ1RoaXMgcmVjaXBlIGRvZXMgbm90IGhhdmUg
dGhlIExJQ0VOU0UgZmllbGQgc2V0ICglcylcJyAlIHBuKVxuXG4gICAgaWYgYmIuZGF0YS5pbmhl
cml0c19jbGFzcyhcJ2xpY2Vuc2VcJywgZCk6XG4gICAgICAgIGNoZWNrX2xpY2Vuc2VfZm9ybWF0
KGQpXG4gICAgICAgIHVubWF0Y2hlZF9saWNlbnNlX2ZsYWcgPSBjaGVja19saWNlbnNlX2ZsYWdz
KGQpXG4gICAgICAgIGlmIHVubWF0Y2hlZF9saWNlbnNlX2ZsYWc6XG4gICAgICAgICAgICBiYi5k
ZWJ1ZygxLCAiU2tpcHBpbmcgJXMgYmVjYXVzZSBpdCBoYXMgYSByZXN0cmljdGVkIGxpY2Vuc2Ug
bm90IlxuICAgICAgICAgICAgICAgICAiIHdoaXRlbGlzdGVkIGluIExJQ0VOU0VfRkxBR1NfV0hJ
VEVMSVNUIiAlIHBuKVxuICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImJl
Y2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCJcbiAgICAgICAgICAgICAgICAg
IiB3aGl0ZWxpc3RlZCBpbiBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIpXG5cbiAgICAjIElmIHdl
XCdyZSBidWlsZGluZyBhIHRhcmdldCBwYWNrYWdlIHdlIG5lZWQgdG8gdXNlIGZha2Vyb290IChw
c2V1ZG8pXG4gICAgIyBpbiBvcmRlciB0byBjYXB0dXJlIHBlcm1pc3Npb25zLCBvd25lcnMsIGdy
b3VwcyBhbmQgc3BlY2lhbCBmaWxlc1xuICAgIGlmIG5vdCBiYi5kYXRhLmluaGVyaXRzX2NsYXNz
KFwnbmF0aXZlXCcsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcyhcJ2Nyb3NzXCcs
IGQpOlxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb191bnBhY2tcJywgXCd1bWFza1wnLCBcJzAy
MlwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19jb25maWd1cmVcJywgXCd1bWFza1wnLCBc
JzAyMlwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19jb21waWxlXCcsIFwndW1hc2tcJywg
XCcwMjJcJylcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9faW5zdGFsbFwnLCBcJ2RlcGVu
ZHNcJywgXCcgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxu
ICAgICAgICBkLnNldFZhckZsYWcoXCdkb19pbnN0YWxsXCcsIFwnZmFrZXJvb3RcJywgMSlcbiAg
ICAgICAgZC5zZXRWYXJGbGFnKFwnZG9faW5zdGFsbFwnLCBcJ3VtYXNrXCcsIFwnMDIyXCcpXG4g
ICAgICAgIGQuYXBwZW5kVmFyRmxhZyhcJ2RvX3BhY2thZ2VcJywgXCdkZXBlbmRzXCcsIFwnIHZp
cnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3RcJylcbiAgICAgICAgZC5z
ZXRWYXJGbGFnKFwnZG9fcGFja2FnZVwnLCBcJ2Zha2Vyb290XCcsIDEpXG4gICAgICAgIGQuc2V0
VmFyRmxhZyhcJ2RvX3BhY2thZ2VcJywgXCd1bWFza1wnLCBcJzAyMlwnKVxuICAgICAgICBkLnNl
dFZhckZsYWcoXCdkb19wYWNrYWdlX3NldHNjZW5lXCcsIFwnZmFrZXJvb3RcJywgMSlcbiAgICAg
ICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9fcGFja2FnZV9zZXRzY2VuZVwnLCBcJ2RlcGVuZHNcJywg
XCcgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxuICAgICAg
ICBkLnNldFZhckZsYWcoXCdkb19kZXZzaGVsbFwnLCBcJ2Zha2Vyb290XCcsIDEpXG4gICAgICAg
IGQuYXBwZW5kVmFyRmxhZyhcJ2RvX2RldnNoZWxsXCcsIFwnZGVwZW5kc1wnLCBcJyB2aXJ0dWFs
L2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290XCcpXG4gICAgc291cmNlX21pcnJv
cl9mZXRjaCA9IGQuZ2V0VmFyKFwnU09VUkNFX01JUlJPUl9GRVRDSFwnLCAwKVxuICAgIGlmIG5v
dCBzb3VyY2VfbWlycm9yX2ZldGNoOlxuICAgICAgICBuZWVkX2hvc3QgPSBkLmdldFZhcihcJ0NP
TVBBVElCTEVfSE9TVFwnLCBUcnVlKVxuICAgICAgICBpZiBuZWVkX2hvc3Q6XG4gICAgICAgICAg
ICBpbXBvcnQgcmVcbiAgICAgICAgICAgIHRoaXNfaG9zdCA9IGQuZ2V0VmFyKFwnSE9TVF9TWVNc
JywgVHJ1ZSlcbiAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaChuZWVkX2hvc3QsIHRoaXNfaG9z
dCk6XG4gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoImluY29tcGF0
aWJsZSB3aXRoIGhvc3QgJXMgKG5vdCBpbiBDT01QQVRJQkxFX0hPU1QpIiAlIHRoaXNfaG9zdClc
blxuICAgICAgICBuZWVkX21hY2hpbmUgPSBkLmdldFZhcihcJ0NPTVBBVElCTEVfTUFDSElORVwn
LCBUcnVlKVxuICAgICAgICBpZiBuZWVkX21hY2hpbmU6XG4gICAgICAgICAgICBpbXBvcnQgcmVc
biAgICAgICAgICAgIGNvbXBhdF9tYWNoaW5lcyA9IChkLmdldFZhcihcJ01BQ0hJTkVPVkVSUklE
RVNcJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCI6IilcbiAgICAgICAgICAgIGZvciBtIGluIGNvbXBh
dF9tYWNoaW5lczpcbiAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChuZWVkX21hY2hpbmUsIG0p
OlxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAgZWxzZTpcbiAgICAgICAg
ICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21wYXRpYmxlIHdpdGggbWFj
aGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5nZXRWYXIoXCdNQUNISU5F
XCcsIFRydWUpKVxuXG5cbiAgICAgICAgYmFkX2xpY2Vuc2VzID0gKGQuZ2V0VmFyKFwnSU5DT01Q
QVRJQkxFX0xJQ0VOU0VcJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KClcblxuICAgICAgICBjaGVja19s
aWNlbnNlID0gRmFsc2UgaWYgcG4uc3RhcnRzd2l0aCgibmF0aXZlc2RrLSIpIGVsc2UgVHJ1ZVxu
ICAgICAgICBmb3IgdCBpbiBbIi1uYXRpdmUiLCAiLWNyb3NzLSR7VEFSR0VUX0FSQ0h9IiwgIi1j
cm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IixcbiAgICAgICAgICAgICAgIi1jcm9zc3Nkay0k
e1NES19BUkNIfSIsICItY3Jvc3NzZGstaW5pdGlhbC0ke1NES19BUkNIfSIsXG4gICAgICAgICAg
ICAgICItY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9BUkNIfSJdOlxuICAgICAg
ICAgICAgaWYgcG4uZW5kc3dpdGgoZC5leHBhbmQodCkpOlxuICAgICAgICAgICAgICAgIGNoZWNr
X2xpY2Vuc2UgPSBGYWxzZVxuICAgICAgICBpZiBwbi5zdGFydHN3aXRoKCJnY2Mtc291cmNlLSIp
OlxuICAgICAgICAgICAgY2hlY2tfbGljZW5zZSA9IEZhbHNlXG5cbiAgICAgICAgaWYgY2hlY2tf
bGljZW5zZSBhbmQgYmFkX2xpY2Vuc2VzOlxuICAgICAgICAgICAgYmFkX2xpY2Vuc2VzID0gZXhw
YW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIGJhZF9saWNlbnNlcylcblxuICAgICAgICAgICAgd2hp
dGVsaXN0ID0gW11cbiAgICAgICAgICAgIGluY29tcGF0d2wgPSBbXVxuICAgICAgICAgICAgaHRp
bmNvbXBhdHdsID0gW11cbiAgICAgICAgICAgIGZvciBsaWMgaW4gYmFkX2xpY2Vuc2VzOlxuICAg
ICAgICAgICAgICAgIHNwZHhfbGljZW5zZSA9IHJldHVybl9zcGR4KGQsIGxpYylcbiAgICAgICAg
ICAgICAgICBmb3IgdyBpbiBbIkhPU1RUT09MU19XSElURUxJU1RfIiwgIkxHUEx2Ml9XSElURUxJ
U1RfIiwgIldISVRFTElTVF8iXTpcbiAgICAgICAgICAgICAgICAgICAgd2hpdGVsaXN0LmV4dGVu
ZCgoZC5nZXRWYXIodyArIGxpYywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpXG4gICAgICAgICAgICAg
ICAgICAgIGlmIHNwZHhfbGljZW5zZTpcbiAgICAgICAgICAgICAgICAgICAgICAgIHdoaXRlbGlz
dC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBzcGR4X2xpY2Vuc2UsIFRydWUpIG9yICIiKS5zcGxpdCgp
KVxuICAgICAgICAgICAgICAgICAgICBcJ1wnXCdcbiAgICAgICAgICAgICAgICAgICAgV2UgbmVl
ZCB0byB0cmFjayB3aGF0IHdlIGFyZSB3aGl0ZWxpc3RpbmcgYW5kIHdoeS4gSWYgcG4gaXNcbiAg
ICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlIGFuZCBpcyBub3QgSE9TVFRPT0xTX1dISVRF
TElTVF8gd2UgbmVlZCB0byBiZVxuICAgICAgICAgICAgICAgICAgICBhYmxlIHRvIG5vdGUgdGhh
dCB0aGUgaW1hZ2UgdGhhdCBpcyBjcmVhdGVkIG1heSBpbmZhY3RcbiAgICAgICAgICAgICAgICAg
ICAgY29udGFpbiBpbmNvbXBhdGlibGUgbGljZW5zZXMgZGVzcGl0ZSBJTkNPTVBBVElCTEVfTElD
RU5TRVxuICAgICAgICAgICAgICAgICAgICBiZWluZyBzZXQuXG4gICAgICAgICAgICAgICAgICAg
IFwnXCdcJ1xuICAgICAgICAgICAgICAgICAgICBpZiAiSE9TVFRPT0xTIiBpbiB3OlxuICAgICAg
ICAgICAgICAgICAgICAgICAgaHRpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIodyArIGxpYywg
VHJ1ZSkgb3IgIiIpLnNwbGl0KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzcGR4X2xp
Y2Vuc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRpbmNvbXBhdHdsLmV4dGVuZCgo
ZC5nZXRWYXIodyArIHNwZHhfbGljZW5zZSwgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpXG4gICAgICAg
ICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdHdsLmV4
dGVuZCgoZC5nZXRWYXIodyArIGxpYywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpXG4gICAgICAgICAg
ICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBzcGR4X2xpY2Vuc2UsIFRydWUpIG9y
ICIiKS5zcGxpdCgpKVxuXG4gICAgICAgICAgICBpZiBub3QgcG4gaW4gd2hpdGVsaXN0OlxuICAg
ICAgICAgICAgICAgIHJlY2lwZV9saWNlbnNlID0gZC5nZXRWYXIoXCdMSUNFTlNFXCcsIFRydWUp
XG4gICAgICAgICAgICAgICAgcGtncyA9IGQuZ2V0VmFyKFwnUEFDS0FHRVNcJywgVHJ1ZSkuc3Bs
aXQoKVxuICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncyA9IFtdXG4gICAgICAgICAgICAgICAg
dW5za2lwcGVkX3BrZ3MgPSBbXVxuICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gcGtnczpcbiAg
ICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX2xpY2Vuc2UoZCwgYmFkX2xpY2Vuc2Vz
LCBwa2cpOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzLmFwcGVuZChwa2cp
XG4gICAgICAgICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNr
aXBwZWRfcGtncy5hcHBlbmQocGtnKVxuICAgICAgICAgICAgICAgIGFsbF9za2lwcGVkID0gc2tp
cHBlZF9wa2dzIGFuZCBub3QgdW5za2lwcGVkX3BrZ3NcbiAgICAgICAgICAgICAgICBpZiB1bnNr
aXBwZWRfcGtnczpcbiAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBza2lwcGVkX3BrZ3M6
XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJUFBJTkcgdGhlIHBhY2th
Z2UgIiArIHBrZyArICIgYXQgZG9fcm9vdGZzIGJlY2F1c2UgaXRcJ3MgIiArIHJlY2lwZV9saWNl
bnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgbWxwcmVmaXggPSBkLmdldFZhcihcJ01MUFJF
RklYXCcsIFRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnNldFZhcihcJ0xJQ0VOU0Vf
RVhDTFVTSU9OLVwnICsgbWxwcmVmaXggKyBwa2csIDEpXG4gICAgICAgICAgICAgICAgICAgIGZv
ciBwa2cgaW4gdW5za2lwcGVkX3BrZ3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1
ZygxLCAiSU5DTFVESU5HIHRoZSBwYWNrYWdlICIgKyBwa2cpXG4gICAgICAgICAgICAgICAgZWxp
ZiBhbGxfc2tpcHBlZCBvciBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBiYWRfbGljZW5zZXMpOlxu
ICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJUFBJTkcgcmVjaXBlICVzIGJlY2F1
c2UgaXRcJ3MgJXMiICUgKHBuLCByZWNpcGVfbGljZW5zZSkpXG4gICAgICAgICAgICAgICAgICAg
IHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUgd2l0aCBsaWNlbnNlICVz
IiAlIHJlY2lwZV9saWNlbnNlKVxuICAgICAgICAgICAgZWxpZiBwbiBpbiB3aGl0ZWxpc3Q6XG4g
ICAgICAgICAgICAgICAgaWYgcG4gaW4gaW5jb21wYXR3bDpcbiAgICAgICAgICAgICAgICAgICAg
YmIubm90ZSgiSU5DTFVESU5HICIgKyBwbiArICIgYXMgYnVpbGRhYmxlIGRlc3BpdGUgSU5DT01Q
QVRJQkxFX0xJQ0VOU0UgYmVjYXVzZSBpdCBoYXMgYmVlbiB3aGl0ZWxpc3RlZCIpXG4gICAgICAg
ICAgICAgICAgZWxpZiBwbiBpbiBodGluY29tcGF0d2w6XG4gICAgICAgICAgICAgICAgICAgIGJi
Lm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIElOQ09NUEFU
SUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0ZWQgZm9yIEhPU1RUT09M
UyIpXG5cbiAgICBzcmN1cmkgPSBkLmdldFZhcihcJ1NSQ19VUklcJywgVHJ1ZSlcbiAgICAjIFN2
biBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIHN1YnZlcnNpb24tbmF0aXZlXG4gICAgaWYgInN2
bjovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb19mZXRjaFwnLCBc
J2RlcGVuZHNcJywgXCcgc3VidmVyc2lvbi1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxu
XG4gICAgIyBHaXQgcGFja2FnZXMgc2hvdWxkIERFUEVORCBvbiBnaXQtbmF0aXZlXG4gICAgaWYg
ImdpdDovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb19mZXRjaFwn
LCBcJ2RlcGVuZHNcJywgXCcgZ2l0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290XCcpXG5cbiAg
ICAjIE1lcmN1cmlhbCBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIG1lcmN1cmlhbC1uYXRpdmVc
biAgICBlbGlmICJoZzovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdk
b19mZXRjaFwnLCBcJ2RlcGVuZHNcJywgXCcgbWVyY3VyaWFsLW5hdGl2ZTpkb19wb3B1bGF0ZV9z
eXNyb290XCcpXG5cbiAgICAjIE9TQyBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIG9zYy1uYXRp
dmVcbiAgICBlbGlmICJvc2M6Ly8iIGluIHNyY3VyaTpcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFn
KFwnZG9fZmV0Y2hcJywgXCdkZXBlbmRzXCcsIFwnIG9zYy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lz
cm9vdFwnKVxuXG4gICAgIyAqLmx6NCBzaG91bGQgZGVwZW5kcyBvbiBsejQtbmF0aXZlIGZvciB1
bnBhY2tpbmdcbiAgICAjIE5vdCBlbmRzd2l0aCBiZWNhdXNlIG9mICIqLnBhdGNoLmx6NDtwYXRj
aD0xIi4gTmVlZCBiYi5mZXRjaC5kZWNvZGV1cmwgaW4gZnV0dXJlXG4gICAgaWYgXCcubHo0XCcg
aW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb191bnBhY2tcJywgXCdkZXBl
bmRzXCcsIFwnIGx6NC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxuXG4gICAgIyAqLnh6
IHNob3VsZCBkZXBlbmRzIG9uIHh6LW5hdGl2ZSBmb3IgdW5wYWNraW5nXG4gICAgIyBOb3QgZW5k
c3dpdGggYmVjYXVzZSBvZiAiKi5wYXRjaC54ejtwYXRjaD0xIi4gTmVlZCBiYi5mZXRjaC5kZWNv
ZGV1cmwgaW4gZnV0dXJlXG4gICAgaWYgXCcueHpcJyBpbiBzcmN1cmk6XG4gICAgICAgIGQuYXBw
ZW5kVmFyRmxhZyhcJ2RvX3VucGFja1wnLCBcJ2RlcGVuZHNcJywgXCcgeHotbmF0aXZlOmRvX3Bv
cHVsYXRlX3N5c3Jvb3RcJylcblxuICAgICMgdW56aXAtbmF0aXZlIHNob3VsZCBhbHJlYWR5IGJl
IHN0YWdlZCBiZWZvcmUgdW5wYWNraW5nIFpJUCByZWNpcGVzXG4gICAgaWYgIi56aXAiIGluIHNy
Y3VyaTpcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9fdW5wYWNrXCcsIFwnZGVwZW5kc1wn
LCBcJyB1bnppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxuXG4gICAgIyBmaWxlIGlz
IG5lZWRlZCBieSBycG0yY3Bpby5zaFxuICAgIGlmICIuc3JjLnJwbSIgaW4gc3JjdXJpOlxuICAg
ICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb191bnBhY2tcJywgXCdkZXBlbmRzXCcsIFwnIGZpbGUt
bmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3RcJylcblxuICAgIHNldF9wYWNrYWdldHJpcGxldChk
KVxuXG4gICAgIyBcJ211bHRpbWFjaGluZVwnIGhhbmRsaW5nXG4gICAgbWFjaF9hcmNoID0gZC5n
ZXRWYXIoXCdNQUNISU5FX0FSQ0hcJywgVHJ1ZSlcbiAgICBwa2dfYXJjaCA9IGQuZ2V0VmFyKFwn
UEFDS0FHRV9BUkNIXCcsIFRydWUpXG5cbiAgICBpZiAocGtnX2FyY2ggPT0gbWFjaF9hcmNoKTpc
biAgICAgICAgIyBBbHJlYWR5IG1hY2hpbmUgc3BlY2lmaWMgLSBub3RoaW5nIGZ1cnRoZXIgdG8g
ZG9cbiAgICAgICAgcmV0dXJuXG5cbiAgICAjXG4gICAgIyBXZSBhbHdheXMgdHJ5IHRvIHNjYW4g
U1JDX1VSSSBmb3IgdXJscyB3aXRoIG1hY2hpbmUgb3ZlcnJpZGVzXG4gICAgIyB1bmxlc3MgdGhl
IHBhY2thZ2Ugc2V0cyBTUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FSQ0g9MFxuICAgICNcbiAg
ICBvdmVycmlkZSA9IGQuZ2V0VmFyKFwnU1JDX1VSSV9PVkVSUklERVNfUEFDS0FHRV9BUkNIXCcs
IFRydWUpXG4gICAgaWYgb3ZlcnJpZGUgIT0gXCcwXCc6XG4gICAgICAgIHBhdGhzID0gW11cbiAg
ICAgICAgZnBhdGhzID0gKGQuZ2V0VmFyKFwnRklMRVNQQVRIXCcsIFRydWUpIG9yIFwnXCcpLnNw
bGl0KFwnOlwnKVxuICAgICAgICBtYWNoaW5lID0gZC5nZXRWYXIoXCdNQUNISU5FXCcsIFRydWUp
XG4gICAgICAgIGZvciBwIGluIGZwYXRoczpcbiAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5h
bWUocCkgPT0gbWFjaGluZSBhbmQgb3MucGF0aC5pc2RpcihwKTpcbiAgICAgICAgICAgICAgICBw
YXRocy5hcHBlbmQocClcblxuICAgICAgICBpZiBsZW4ocGF0aHMpICE9IDA6XG4gICAgICAgICAg
ICBmb3IgcyBpbiBzcmN1cmkuc3BsaXQoKTpcbiAgICAgICAgICAgICAgICBpZiBub3Qgcy5zdGFy
dHN3aXRoKCJmaWxlOi8vIik6XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAg
ICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbc10sIGQpXG4gICAgICAgICAgICAg
ICAgbG9jYWwgPSBmZXRjaGVyLmxvY2FscGF0aChzKVxuICAgICAgICAgICAgICAgIGZvciBtcCBp
biBwYXRoczpcbiAgICAgICAgICAgICAgICAgICAgaWYgbG9jYWwuc3RhcnRzd2l0aChtcCk6XG4g
ICAgICAgICAgICAgICAgICAgICAgICAjYmIubm90ZSgib3ZlcnJpZGluZyBQQUNLQUdFX0FSQ0gg
ZnJvbSAlcyB0byAlcyBmb3IgJXMiICUgKHBrZ19hcmNoLCBtYWNoX2FyY2gsIHBuKSlcbiAgICAg
ICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKFwnUEFDS0FHRV9BUkNIXCcsICIke01BQ0hJTkVf
QVJDSH0iKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5cbiAgICBwYWNrYWdlcyA9
IGQuZ2V0VmFyKFwnUEFDS0FHRVNcJywgVHJ1ZSkuc3BsaXQoKVxuICAgIGZvciBwa2cgaW4gcGFj
a2FnZXM6XG4gICAgICAgIHBrZ2FyY2ggPSBkLmdldFZhcigiUEFDS0FHRV9BUkNIXyVzIiAlIHBr
ZywgVHJ1ZSlcblxuICAgICAgICAjIFdlIGNvdWxkIGxvb2sgZm9yICE9IFBBQ0tBR0VfQVJDSCBo
ZXJlIGJ1dCBob3cgdG8gY2hvb3NlXG4gICAgICAgICMgaWYgbXVsdGlwbGUgZGlmZmVyZW5jZXMg
YXJlIHByZXNlbnQ/XG4gICAgICAgICMgTG9vayB0aHJvdWdoIFBBQ0tBR0VfQVJDSFMgZm9yIHRo
ZSBwcmlvcml0eSBvcmRlcj9cbiAgICAgICAgaWYgcGtnYXJjaCBhbmQgcGtnYXJjaCA9PSBtYWNo
X2FyY2g6XG4gICAgICAgICAgICBkLnNldFZhcihcJ1BBQ0tBR0VfQVJDSFwnLCAiJHtNQUNISU5F
X0FSQ0h9IilcbiAgICAgICAgICAgIGJiLndhcm4oIlJlY2lwZSAlcyBpcyBtYXJrZWQgYXMgb25s
eSBiZWluZyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgYnV0IHNlZW1zIHRvIGhhdmUgbWFjaGluZSBz
cGVjaWZpYyBwYWNrYWdlcz8hIFRoZSByZWNpcGUgbWF5IGFzIHdlbGwgbWFyayBpdHNlbGYgYXMg
bWFjaGluZSBzcGVjaWZpYyBkaXJlY3RseS4iICUgZC5nZXRWYXIoIlBOIiwgVHJ1ZSkpXG4nLCBm
bj0nL2hvbWUvYWxleC90bXAvc2RrJC9sYXllcnMvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNs
YXNzJyk6CiAgICAgICAgICIiIgogICAgPiAgICBjb21wID0gYmV0dGVyX2NvbXBpbGUoY29kZSwg
bW9kdWxlbmFtZSwgZm4gKQogICAgICAgICBiZXR0ZXJfZXhlYyhjb21wLCBOb25lLCBjb2RlLCBm
bikKICBGaWxlICIvaG9tZS9hbGV4L3RtcC9zZGskL2xheWVycy9wb2t5L2JpdGJha2UvbGliL2Ji
L3V0aWxzLnB5IiwgbGluZSAzMTgsIGluIGJldHRlcl9jb21waWxlKHRleHQ9J2RlZiBfX2Fub25f
NjA5X19ob21lX2FsZXhfdG1wX3NkayRfbGF5ZXJzX3Bva3lfbWV0YV9jbGFzc2VzX2Jhc2VfYmJj
bGFzcyhkKTpcbiAgICBpbXBvcnQgc3RyaW5nLCByZVxuXG4gICAgIyBIYW5kbGUgUEFDS0FHRUNP
TkZJR1xuICAgICNcbiAgICAjIFRoZXNlIHRha2UgdGhlIGZvcm06XG4gICAgI1xuICAgICMgUEFD
S0FHRUNPTkZJRyA/Pz0gIjxkZWZhdWx0IG9wdGlvbnM+IlxuICAgICMgUEFDS0FHRUNPTkZJR1tm
b29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1l
X2RlcGVuZHMiXG4gICAgcGtnY29uZmlnZmxhZ3MgPSBkLmdldFZhckZsYWdzKCJQQUNLQUdFQ09O
RklHIikgb3Ige31cbiAgICBpZiBwa2djb25maWdmbGFnczpcbiAgICAgICAgcGtnY29uZmlnID0g
KGQuZ2V0VmFyKFwnUEFDS0FHRUNPTkZJR1wnLCBUcnVlKSBvciAiIikuc3BsaXQoKVxuICAgICAg
ICBwbiA9IGQuZ2V0VmFyKCJQTiIsIFRydWUpXG5cbiAgICAgICAgbWxwcmVmaXggPSBkLmdldFZh
cigiTUxQUkVGSVgiLCBUcnVlKVxuXG4gICAgICAgIGRlZiBleHBhbmRGaWx0ZXIoYXBwZW5kcywg
ZXh0ZW5zaW9uLCBwcmVmaXgpOlxuICAgICAgICAgICAgYXBwZW5kcyA9IGJiLnV0aWxzLmV4cGxv
ZGVfZGVwcyhkLmV4cGFuZCgiICIuam9pbihhcHBlbmRzKSkpXG4gICAgICAgICAgICBuZXdhcHBl
bmRzID0gW11cbiAgICAgICAgICAgIGZvciBhIGluIGFwcGVuZHM6XG4gICAgICAgICAgICAgICAg
aWYgYS5lbmRzd2l0aCgiLW5hdGl2ZSIpIG9yICgiLWNyb3NzLSIgaW4gYSk6XG4gICAgICAgICAg
ICAgICAgICAgIG5ld2FwcGVuZHMuYXBwZW5kKGEpXG4gICAgICAgICAgICAgICAgZWxpZiBhLnN0
YXJ0c3dpdGgoInZpcnR1YWwvIik6XG4gICAgICAgICAgICAgICAgICAgIHN1YnMgPSBhLnNwbGl0
KCIvIiwgMSlbMV1cbiAgICAgICAgICAgICAgICAgICAgbmV3YXBwZW5kcy5hcHBlbmQoInZpcnR1
YWwvIiArIHByZWZpeCArIHN1YnMgKyBleHRlbnNpb24pXG4gICAgICAgICAgICAgICAgZWxzZTpc
biAgICAgICAgICAgICAgICAgICAgaWYgYS5zdGFydHN3aXRoKHByZWZpeCk6XG4gICAgICAgICAg
ICAgICAgICAgICAgICBuZXdhcHBlbmRzLmFwcGVuZChhICsgZXh0ZW5zaW9uKVxuICAgICAgICAg
ICAgICAgICAgICBlbHNlOlxuICAgICAgICAgICAgICAgICAgICAgICAgbmV3YXBwZW5kcy5hcHBl
bmQocHJlZml4ICsgYSArIGV4dGVuc2lvbilcbiAgICAgICAgICAgIHJldHVybiBuZXdhcHBlbmRz
XG5cbiAgICAgICAgZGVmIGFwcGVuZFZhcih2YXJuYW1lLCBhcHBlbmRzKTpcbiAgICAgICAgICAg
IGlmIG5vdCBhcHBlbmRzOlxuICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgaWYg
dmFybmFtZS5maW5kKCJERVBFTkRTIikgIT0gLTE6XG4gICAgICAgICAgICAgICAgaWYgcG4uc3Rh
cnRzd2l0aCgibmF0aXZlc2RrLSIpOlxuICAgICAgICAgICAgICAgICAgICBhcHBlbmRzID0gZXhw
YW5kRmlsdGVyKGFwcGVuZHMsICIiLCAibmF0aXZlc2RrLSIpXG4gICAgICAgICAgICAgICAgaWYg
cG4uZW5kc3dpdGgoIi1uYXRpdmUiKTpcbiAgICAgICAgICAgICAgICAgICAgYXBwZW5kcyA9IGV4
cGFuZEZpbHRlcihhcHBlbmRzLCAiLW5hdGl2ZSIsICIiKVxuICAgICAgICAgICAgICAgIGlmIG1s
cHJlZml4OlxuICAgICAgICAgICAgICAgICAgICBhcHBlbmRzID0gZXhwYW5kRmlsdGVyKGFwcGVu
ZHMsICIiLCBtbHByZWZpeClcbiAgICAgICAgICAgIHZhcm5hbWUgPSBkLmV4cGFuZCh2YXJuYW1l
KVxuICAgICAgICAgICAgZC5hcHBlbmRWYXIodmFybmFtZSwgIiAiICsgIiAiLmpvaW4oYXBwZW5k
cykpXG5cbiAgICAgICAgZXh0cmFkZXBzID0gW11cbiAgICAgICAgZXh0cmFyZGVwcyA9IFtdXG4g
ICAgICAgIGV4dHJhY29uZiA9IFtdXG4gICAgICAgIGZvciBmbGFnLCBmbGFndmFsIGluIHNvcnRl
ZChwa2djb25maWdmbGFncy5pdGVtcygpKTpcbiAgICAgICAgICAgIGl0ZW1zID0gZmxhZ3ZhbC5z
cGxpdCgiLCIpXG4gICAgICAgICAgICBudW0gPSBsZW4oaXRlbXMpXG4gICAgICAgICAgICBpZiBu
dW0gPiA0OlxuICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10g
T25seSBlbmFibGUsZGlzYWJsZSxkZXBlbmQscmRlcGVuZCBjYW4gYmUgc3BlY2lmaWVkISJcbiAg
ICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoXCdQTlwnLCBUcnVlKSwgZmxhZykpXG5cbiAg
ICAgICAgICAgIGlmIGZsYWcgaW4gcGtnY29uZmlnOlxuICAgICAgICAgICAgICAgIGlmIG51bSA+
PSAzIGFuZCBpdGVtc1syXTpcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFkZXBzLmFwcGVuZChp
dGVtc1syXSlcbiAgICAgICAgICAgICAgICBpZiBudW0gPj0gNCBhbmQgaXRlbXNbM106XG4gICAg
ICAgICAgICAgICAgICAgIGV4dHJhcmRlcHMuYXBwZW5kKGl0ZW1zWzNdKVxuICAgICAgICAgICAg
ICAgIGlmIG51bSA+PSAxIGFuZCBpdGVtc1swXTpcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFj
b25mLmFwcGVuZChpdGVtc1swXSlcbiAgICAgICAgICAgIGVsaWYgbnVtID49IDIgYW5kIGl0ZW1z
WzFdOlxuICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzFdKVxuICAg
ICAgICBhcHBlbmRWYXIoXCdERVBFTkRTXCcsIGV4dHJhZGVwcylcbiAgICAgICAgYXBwZW5kVmFy
KFwnUkRFUEVORFNfJHtQTn1cJywgZXh0cmFyZGVwcylcbiAgICAgICAgaWYgYmIuZGF0YS5pbmhl
cml0c19jbGFzcyhcJ2NtYWtlXCcsIGQpOlxuICAgICAgICAgICAgYXBwZW5kVmFyKFwnRVhUUkFf
T0VDTUFLRVwnLCBleHRyYWNvbmYpXG4gICAgICAgIGVsc2U6XG4gICAgICAgICAgICBhcHBlbmRW
YXIoXCdFWFRSQV9PRUNPTkZcJywgZXh0cmFjb25mKVxuXG4gICAgcG4gPSBkLmdldFZhcihcJ1BO
XCcsIFRydWUpXG4gICAgbGljZW5zZSA9IGQuZ2V0VmFyKFwnTElDRU5TRVwnLCBUcnVlKVxuICAg
IGlmIGxpY2Vuc2UgPT0gIklOVkFMSUQiOlxuICAgICAgICBiYi5mYXRhbChcJ1RoaXMgcmVjaXBl
IGRvZXMgbm90IGhhdmUgdGhlIExJQ0VOU0UgZmllbGQgc2V0ICglcylcJyAlIHBuKVxuXG4gICAg
aWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcyhcJ2xpY2Vuc2VcJywgZCk6XG4gICAgICAgIGNoZWNr
X2xpY2Vuc2VfZm9ybWF0KGQpXG4gICAgICAgIHVubWF0Y2hlZF9saWNlbnNlX2ZsYWcgPSBjaGVj
a19saWNlbnNlX2ZsYWdzKGQpXG4gICAgICAgIGlmIHVubWF0Y2hlZF9saWNlbnNlX2ZsYWc6XG4g
ICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU2tpcHBpbmcgJXMgYmVjYXVzZSBpdCBoYXMgYSByZXN0
cmljdGVkIGxpY2Vuc2Ugbm90IlxuICAgICAgICAgICAgICAgICAiIHdoaXRlbGlzdGVkIGluIExJ
Q0VOU0VfRkxBR1NfV0hJVEVMSVNUIiAlIHBuKVxuICAgICAgICAgICAgcmFpc2UgYmIucGFyc2Uu
U2tpcFBhY2thZ2UoImJlY2F1c2UgaXQgaGFzIGEgcmVzdHJpY3RlZCBsaWNlbnNlIG5vdCJcbiAg
ICAgICAgICAgICAgICAgIiB3aGl0ZWxpc3RlZCBpbiBMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIp
XG5cbiAgICAjIElmIHdlXCdyZSBidWlsZGluZyBhIHRhcmdldCBwYWNrYWdlIHdlIG5lZWQgdG8g
dXNlIGZha2Vyb290IChwc2V1ZG8pXG4gICAgIyBpbiBvcmRlciB0byBjYXB0dXJlIHBlcm1pc3Np
b25zLCBvd25lcnMsIGdyb3VwcyBhbmQgc3BlY2lhbCBmaWxlc1xuICAgIGlmIG5vdCBiYi5kYXRh
LmluaGVyaXRzX2NsYXNzKFwnbmF0aXZlXCcsIGQpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19j
bGFzcyhcJ2Nyb3NzXCcsIGQpOlxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb191bnBhY2tcJywg
XCd1bWFza1wnLCBcJzAyMlwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19jb25maWd1cmVc
JywgXCd1bWFza1wnLCBcJzAyMlwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19jb21waWxl
XCcsIFwndW1hc2tcJywgXCcwMjJcJylcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9faW5z
dGFsbFwnLCBcJ2RlcGVuZHNcJywgXCcgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxh
dGVfc3lzcm9vdFwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19pbnN0YWxsXCcsIFwnZmFr
ZXJvb3RcJywgMSlcbiAgICAgICAgZC5zZXRWYXJGbGFnKFwnZG9faW5zdGFsbFwnLCBcJ3VtYXNr
XCcsIFwnMDIyXCcpXG4gICAgICAgIGQuYXBwZW5kVmFyRmxhZyhcJ2RvX3BhY2thZ2VcJywgXCdk
ZXBlbmRzXCcsIFwnIHZpcnR1YWwvZmFrZXJvb3QtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3Rc
JylcbiAgICAgICAgZC5zZXRWYXJGbGFnKFwnZG9fcGFja2FnZVwnLCBcJ2Zha2Vyb290XCcsIDEp
XG4gICAgICAgIGQuc2V0VmFyRmxhZyhcJ2RvX3BhY2thZ2VcJywgXCd1bWFza1wnLCBcJzAyMlwn
KVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19wYWNrYWdlX3NldHNjZW5lXCcsIFwnZmFrZXJv
b3RcJywgMSlcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9fcGFja2FnZV9zZXRzY2VuZVwn
LCBcJ2RlcGVuZHNcJywgXCcgdmlydHVhbC9mYWtlcm9vdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lz
cm9vdFwnKVxuICAgICAgICBkLnNldFZhckZsYWcoXCdkb19kZXZzaGVsbFwnLCBcJ2Zha2Vyb290
XCcsIDEpXG4gICAgICAgIGQuYXBwZW5kVmFyRmxhZyhcJ2RvX2RldnNoZWxsXCcsIFwnZGVwZW5k
c1wnLCBcJyB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290XCcpXG4g
ICAgc291cmNlX21pcnJvcl9mZXRjaCA9IGQuZ2V0VmFyKFwnU09VUkNFX01JUlJPUl9GRVRDSFwn
LCAwKVxuICAgIGlmIG5vdCBzb3VyY2VfbWlycm9yX2ZldGNoOlxuICAgICAgICBuZWVkX2hvc3Qg
PSBkLmdldFZhcihcJ0NPTVBBVElCTEVfSE9TVFwnLCBUcnVlKVxuICAgICAgICBpZiBuZWVkX2hv
c3Q6XG4gICAgICAgICAgICBpbXBvcnQgcmVcbiAgICAgICAgICAgIHRoaXNfaG9zdCA9IGQuZ2V0
VmFyKFwnSE9TVF9TWVNcJywgVHJ1ZSlcbiAgICAgICAgICAgIGlmIG5vdCByZS5tYXRjaChuZWVk
X2hvc3QsIHRoaXNfaG9zdCk6XG4gICAgICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBh
Y2thZ2UoImluY29tcGF0aWJsZSB3aXRoIGhvc3QgJXMgKG5vdCBpbiBDT01QQVRJQkxFX0hPU1Qp
IiAlIHRoaXNfaG9zdClcblxuICAgICAgICBuZWVkX21hY2hpbmUgPSBkLmdldFZhcihcJ0NPTVBB
VElCTEVfTUFDSElORVwnLCBUcnVlKVxuICAgICAgICBpZiBuZWVkX21hY2hpbmU6XG4gICAgICAg
ICAgICBpbXBvcnQgcmVcbiAgICAgICAgICAgIGNvbXBhdF9tYWNoaW5lcyA9IChkLmdldFZhcihc
J01BQ0hJTkVPVkVSUklERVNcJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCI6IilcbiAgICAgICAgICAg
IGZvciBtIGluIGNvbXBhdF9tYWNoaW5lczpcbiAgICAgICAgICAgICAgICBpZiByZS5tYXRjaChu
ZWVkX21hY2hpbmUsIG0pOlxuICAgICAgICAgICAgICAgICAgICBicmVha1xuICAgICAgICAgICAg
ZWxzZTpcbiAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiaW5jb21w
YXRpYmxlIHdpdGggbWFjaGluZSAlcyAobm90IGluIENPTVBBVElCTEVfTUFDSElORSkiICUgZC5n
ZXRWYXIoXCdNQUNISU5FXCcsIFRydWUpKVxuXG5cbiAgICAgICAgYmFkX2xpY2Vuc2VzID0gKGQu
Z2V0VmFyKFwnSU5DT01QQVRJQkxFX0xJQ0VOU0VcJywgVHJ1ZSkgb3IgIiIpLnNwbGl0KClcblxu
ICAgICAgICBjaGVja19saWNlbnNlID0gRmFsc2UgaWYgcG4uc3RhcnRzd2l0aCgibmF0aXZlc2Rr
LSIpIGVsc2UgVHJ1ZVxuICAgICAgICBmb3IgdCBpbiBbIi1uYXRpdmUiLCAiLWNyb3NzLSR7VEFS
R0VUX0FSQ0h9IiwgIi1jcm9zcy1pbml0aWFsLSR7VEFSR0VUX0FSQ0h9IixcbiAgICAgICAgICAg
ICAgIi1jcm9zc3Nkay0ke1NES19BUkNIfSIsICItY3Jvc3NzZGstaW5pdGlhbC0ke1NES19BUkNI
fSIsXG4gICAgICAgICAgICAgICItY3Jvc3MtY2FuYWRpYW4tJHtUUkFOU0xBVEVEX1RBUkdFVF9B
UkNIfSJdOlxuICAgICAgICAgICAgaWYgcG4uZW5kc3dpdGgoZC5leHBhbmQodCkpOlxuICAgICAg
ICAgICAgICAgIGNoZWNrX2xpY2Vuc2UgPSBGYWxzZVxuICAgICAgICBpZiBwbi5zdGFydHN3aXRo
KCJnY2Mtc291cmNlLSIpOlxuICAgICAgICAgICAgY2hlY2tfbGljZW5zZSA9IEZhbHNlXG5cbiAg
ICAgICAgaWYgY2hlY2tfbGljZW5zZSBhbmQgYmFkX2xpY2Vuc2VzOlxuICAgICAgICAgICAgYmFk
X2xpY2Vuc2VzID0gZXhwYW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIGJhZF9saWNlbnNlcylcblxu
ICAgICAgICAgICAgd2hpdGVsaXN0ID0gW11cbiAgICAgICAgICAgIGluY29tcGF0d2wgPSBbXVxu
ICAgICAgICAgICAgaHRpbmNvbXBhdHdsID0gW11cbiAgICAgICAgICAgIGZvciBsaWMgaW4gYmFk
X2xpY2Vuc2VzOlxuICAgICAgICAgICAgICAgIHNwZHhfbGljZW5zZSA9IHJldHVybl9zcGR4KGQs
IGxpYylcbiAgICAgICAgICAgICAgICBmb3IgdyBpbiBbIkhPU1RUT09MU19XSElURUxJU1RfIiwg
IkxHUEx2Ml9XSElURUxJU1RfIiwgIldISVRFTElTVF8iXTpcbiAgICAgICAgICAgICAgICAgICAg
d2hpdGVsaXN0LmV4dGVuZCgoZC5nZXRWYXIodyArIGxpYywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkp
XG4gICAgICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZTpcbiAgICAgICAgICAgICAgICAg
ICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBzcGR4X2xpY2Vuc2UsIFRydWUp
IG9yICIiKS5zcGxpdCgpKVxuICAgICAgICAgICAgICAgICAgICBcJ1wnXCdcbiAgICAgICAgICAg
ICAgICAgICAgV2UgbmVlZCB0byB0cmFjayB3aGF0IHdlIGFyZSB3aGl0ZWxpc3RpbmcgYW5kIHdo
eS4gSWYgcG4gaXNcbiAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlIGFuZCBpcyBub3Qg
SE9TVFRPT0xTX1dISVRFTElTVF8gd2UgbmVlZCB0byBiZVxuICAgICAgICAgICAgICAgICAgICBh
YmxlIHRvIG5vdGUgdGhhdCB0aGUgaW1hZ2UgdGhhdCBpcyBjcmVhdGVkIG1heSBpbmZhY3RcbiAg
ICAgICAgICAgICAgICAgICAgY29udGFpbiBpbmNvbXBhdGlibGUgbGljZW5zZXMgZGVzcGl0ZSBJ
TkNPTVBBVElCTEVfTElDRU5TRVxuICAgICAgICAgICAgICAgICAgICBiZWluZyBzZXQuXG4gICAg
ICAgICAgICAgICAgICAgIFwnXCdcJ1xuICAgICAgICAgICAgICAgICAgICBpZiAiSE9TVFRPT0xT
IiBpbiB3OlxuICAgICAgICAgICAgICAgICAgICAgICAgaHRpbmNvbXBhdHdsLmV4dGVuZCgoZC5n
ZXRWYXIodyArIGxpYywgVHJ1ZSkgb3IgIiIpLnNwbGl0KCkpXG4gICAgICAgICAgICAgICAgICAg
ICAgICBpZiBzcGR4X2xpY2Vuc2U6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaHRpbmNv
bXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIodyArIHNwZHhfbGljZW5zZSwgVHJ1ZSkgb3IgIiIpLnNw
bGl0KCkpXG4gICAgICAgICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAgICAgICAgICAg
ICBpbmNvbXBhdHdsLmV4dGVuZCgoZC5nZXRWYXIodyArIGxpYywgVHJ1ZSkgb3IgIiIpLnNwbGl0
KCkpXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiBzcGR4X2xpY2Vuc2U6XG4gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKHcgKyBzcGR4X2xp
Y2Vuc2UsIFRydWUpIG9yICIiKS5zcGxpdCgpKVxuXG4gICAgICAgICAgICBpZiBub3QgcG4gaW4g
d2hpdGVsaXN0OlxuICAgICAgICAgICAgICAgIHJlY2lwZV9saWNlbnNlID0gZC5nZXRWYXIoXCdM
SUNFTlNFXCcsIFRydWUpXG4gICAgICAgICAgICAgICAgcGtncyA9IGQuZ2V0VmFyKFwnUEFDS0FH
RVNcJywgVHJ1ZSkuc3BsaXQoKVxuICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncyA9IFtdXG4g
ICAgICAgICAgICAgICAgdW5za2lwcGVkX3BrZ3MgPSBbXVxuICAgICAgICAgICAgICAgIGZvciBw
a2cgaW4gcGtnczpcbiAgICAgICAgICAgICAgICAgICAgaWYgaW5jb21wYXRpYmxlX2xpY2Vuc2Uo
ZCwgYmFkX2xpY2Vuc2VzLCBwa2cpOlxuICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF9w
a2dzLmFwcGVuZChwa2cpXG4gICAgICAgICAgICAgICAgICAgIGVsc2U6XG4gICAgICAgICAgICAg
ICAgICAgICAgICB1bnNraXBwZWRfcGtncy5hcHBlbmQocGtnKVxuICAgICAgICAgICAgICAgIGFs
bF9za2lwcGVkID0gc2tpcHBlZF9wa2dzIGFuZCBub3QgdW5za2lwcGVkX3BrZ3NcbiAgICAgICAg
ICAgICAgICBpZiB1bnNraXBwZWRfcGtnczpcbiAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBp
biBza2lwcGVkX3BrZ3M6XG4gICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJ
UFBJTkcgdGhlIHBhY2thZ2UgIiArIHBrZyArICIgYXQgZG9fcm9vdGZzIGJlY2F1c2UgaXRcJ3Mg
IiArIHJlY2lwZV9saWNlbnNlKVxuICAgICAgICAgICAgICAgICAgICAgICAgbWxwcmVmaXggPSBk
LmdldFZhcihcJ01MUFJFRklYXCcsIFRydWUpXG4gICAgICAgICAgICAgICAgICAgICAgICBkLnNl
dFZhcihcJ0xJQ0VOU0VfRVhDTFVTSU9OLVwnICsgbWxwcmVmaXggKyBwa2csIDEpXG4gICAgICAg
ICAgICAgICAgICAgIGZvciBwa2cgaW4gdW5za2lwcGVkX3BrZ3M6XG4gICAgICAgICAgICAgICAg
ICAgICAgICBiYi5kZWJ1ZygxLCAiSU5DTFVESU5HIHRoZSBwYWNrYWdlICIgKyBwa2cpXG4gICAg
ICAgICAgICAgICAgZWxpZiBhbGxfc2tpcHBlZCBvciBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBi
YWRfbGljZW5zZXMpOlxuICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJUFBJTkcg
cmVjaXBlICVzIGJlY2F1c2UgaXRcJ3MgJXMiICUgKHBuLCByZWNpcGVfbGljZW5zZSkpXG4gICAg
ICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCJpbmNvbXBhdGlibGUg
d2l0aCBsaWNlbnNlICVzIiAlIHJlY2lwZV9saWNlbnNlKVxuICAgICAgICAgICAgZWxpZiBwbiBp
biB3aGl0ZWxpc3Q6XG4gICAgICAgICAgICAgICAgaWYgcG4gaW4gaW5jb21wYXR3bDpcbiAgICAg
ICAgICAgICAgICAgICAgYmIubm90ZSgiSU5DTFVESU5HICIgKyBwbiArICIgYXMgYnVpbGRhYmxl
IGRlc3BpdGUgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVjYXVzZSBpdCBoYXMgYmVlbiB3aGl0ZWxp
c3RlZCIpXG4gICAgICAgICAgICAgICAgZWxpZiBwbiBpbiBodGluY29tcGF0d2w6XG4gICAgICAg
ICAgICAgICAgICAgIGJiLm5vdGUoIklOQ0xVRElORyAiICsgcG4gKyAiIGFzIGJ1aWxkYWJsZSBk
ZXNwaXRlIElOQ09NUEFUSUJMRV9MSUNFTlNFIGJlY2F1c2UgaXQgaGFzIGJlZW4gd2hpdGVsaXN0
ZWQgZm9yIEhPU1RUT09MUyIpXG5cbiAgICBzcmN1cmkgPSBkLmdldFZhcihcJ1NSQ19VUklcJywg
VHJ1ZSlcbiAgICAjIFN2biBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIHN1YnZlcnNpb24tbmF0
aXZlXG4gICAgaWYgInN2bjovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWco
XCdkb19mZXRjaFwnLCBcJ2RlcGVuZHNcJywgXCcgc3VidmVyc2lvbi1uYXRpdmU6ZG9fcG9wdWxh
dGVfc3lzcm9vdFwnKVxuXG4gICAgIyBHaXQgcGFja2FnZXMgc2hvdWxkIERFUEVORCBvbiBnaXQt
bmF0aXZlXG4gICAgaWYgImdpdDovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZs
YWcoXCdkb19mZXRjaFwnLCBcJ2RlcGVuZHNcJywgXCcgZ2l0LW5hdGl2ZTpkb19wb3B1bGF0ZV9z
eXNyb290XCcpXG5cbiAgICAjIE1lcmN1cmlhbCBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIG1l
cmN1cmlhbC1uYXRpdmVcbiAgICBlbGlmICJoZzovLyIgaW4gc3JjdXJpOlxuICAgICAgICBkLmFw
cGVuZFZhckZsYWcoXCdkb19mZXRjaFwnLCBcJ2RlcGVuZHNcJywgXCcgbWVyY3VyaWFsLW5hdGl2
ZTpkb19wb3B1bGF0ZV9zeXNyb290XCcpXG5cbiAgICAjIE9TQyBwYWNrYWdlcyBzaG91bGQgREVQ
RU5EIG9uIG9zYy1uYXRpdmVcbiAgICBlbGlmICJvc2M6Ly8iIGluIHNyY3VyaTpcbiAgICAgICAg
ZC5hcHBlbmRWYXJGbGFnKFwnZG9fZmV0Y2hcJywgXCdkZXBlbmRzXCcsIFwnIG9zYy1uYXRpdmU6
ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxuXG4gICAgIyAqLmx6NCBzaG91bGQgZGVwZW5kcyBvbiBs
ejQtbmF0aXZlIGZvciB1bnBhY2tpbmdcbiAgICAjIE5vdCBlbmRzd2l0aCBiZWNhdXNlIG9mICIq
LnBhdGNoLmx6NDtwYXRjaD0xIi4gTmVlZCBiYi5mZXRjaC5kZWNvZGV1cmwgaW4gZnV0dXJlXG4g
ICAgaWYgXCcubHo0XCcgaW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb191
bnBhY2tcJywgXCdkZXBlbmRzXCcsIFwnIGx6NC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwn
KVxuXG4gICAgIyAqLnh6IHNob3VsZCBkZXBlbmRzIG9uIHh6LW5hdGl2ZSBmb3IgdW5wYWNraW5n
XG4gICAgIyBOb3QgZW5kc3dpdGggYmVjYXVzZSBvZiAiKi5wYXRjaC54ejtwYXRjaD0xIi4gTmVl
ZCBiYi5mZXRjaC5kZWNvZGV1cmwgaW4gZnV0dXJlXG4gICAgaWYgXCcueHpcJyBpbiBzcmN1cmk6
XG4gICAgICAgIGQuYXBwZW5kVmFyRmxhZyhcJ2RvX3VucGFja1wnLCBcJ2RlcGVuZHNcJywgXCcg
eHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3RcJylcblxuICAgICMgdW56aXAtbmF0aXZlIHNo
b3VsZCBhbHJlYWR5IGJlIHN0YWdlZCBiZWZvcmUgdW5wYWNraW5nIFpJUCByZWNpcGVzXG4gICAg
aWYgIi56aXAiIGluIHNyY3VyaTpcbiAgICAgICAgZC5hcHBlbmRWYXJGbGFnKFwnZG9fdW5wYWNr
XCcsIFwnZGVwZW5kc1wnLCBcJyB1bnppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdFwnKVxu
XG4gICAgIyBmaWxlIGlzIG5lZWRlZCBieSBycG0yY3Bpby5zaFxuICAgIGlmICIuc3JjLnJwbSIg
aW4gc3JjdXJpOlxuICAgICAgICBkLmFwcGVuZFZhckZsYWcoXCdkb191bnBhY2tcJywgXCdkZXBl
bmRzXCcsIFwnIGZpbGUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3RcJylcblxuICAgIHNldF9w
YWNrYWdldHJpcGxldChkKVxuXG4gICAgIyBcJ211bHRpbWFjaGluZVwnIGhhbmRsaW5nXG4gICAg
bWFjaF9hcmNoID0gZC5nZXRWYXIoXCdNQUNISU5FX0FSQ0hcJywgVHJ1ZSlcbiAgICBwa2dfYXJj
aCA9IGQuZ2V0VmFyKFwnUEFDS0FHRV9BUkNIXCcsIFRydWUpXG5cbiAgICBpZiAocGtnX2FyY2gg
PT0gbWFjaF9hcmNoKTpcbiAgICAgICAgIyBBbHJlYWR5IG1hY2hpbmUgc3BlY2lmaWMgLSBub3Ro
aW5nIGZ1cnRoZXIgdG8gZG9cbiAgICAgICAgcmV0dXJuXG5cbiAgICAjXG4gICAgIyBXZSBhbHdh
eXMgdHJ5IHRvIHNjYW4gU1JDX1VSSSBmb3IgdXJscyB3aXRoIG1hY2hpbmUgb3ZlcnJpZGVzXG4g
ICAgIyB1bmxlc3MgdGhlIHBhY2thZ2Ugc2V0cyBTUkNfVVJJX09WRVJSSURFU19QQUNLQUdFX0FS
Q0g9MFxuICAgICNcbiAgICBvdmVycmlkZSA9IGQuZ2V0VmFyKFwnU1JDX1VSSV9PVkVSUklERVNf
UEFDS0FHRV9BUkNIXCcsIFRydWUpXG4gICAgaWYgb3ZlcnJpZGUgIT0gXCcwXCc6XG4gICAgICAg
IHBhdGhzID0gW11cbiAgICAgICAgZnBhdGhzID0gKGQuZ2V0VmFyKFwnRklMRVNQQVRIXCcsIFRy
dWUpIG9yIFwnXCcpLnNwbGl0KFwnOlwnKVxuICAgICAgICBtYWNoaW5lID0gZC5nZXRWYXIoXCdN
QUNISU5FXCcsIFRydWUpXG4gICAgICAgIGZvciBwIGluIGZwYXRoczpcbiAgICAgICAgICAgIGlm
IG9zLnBhdGguYmFzZW5hbWUocCkgPT0gbWFjaGluZSBhbmQgb3MucGF0aC5pc2RpcihwKTpcbiAg
ICAgICAgICAgICAgICBwYXRocy5hcHBlbmQocClcblxuICAgICAgICBpZiBsZW4ocGF0aHMpICE9
IDA6XG4gICAgICAgICAgICBmb3IgcyBpbiBzcmN1cmkuc3BsaXQoKTpcbiAgICAgICAgICAgICAg
ICBpZiBub3Qgcy5zdGFydHN3aXRoKCJmaWxlOi8vIik6XG4gICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlXG4gICAgICAgICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbc10sIGQp
XG4gICAgICAgICAgICAgICAgbG9jYWwgPSBmZXRjaGVyLmxvY2FscGF0aChzKVxuICAgICAgICAg
ICAgICAgIGZvciBtcCBpbiBwYXRoczpcbiAgICAgICAgICAgICAgICAgICAgaWYgbG9jYWwuc3Rh
cnRzd2l0aChtcCk6XG4gICAgICAgICAgICAgICAgICAgICAgICAjYmIubm90ZSgib3ZlcnJpZGlu
ZyBQQUNLQUdFX0FSQ0ggZnJvbSAlcyB0byAlcyBmb3IgJXMiICUgKHBrZ19hcmNoLCBtYWNoX2Fy
Y2gsIHBuKSlcbiAgICAgICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKFwnUEFDS0FHRV9BUkNI
XCcsICIke01BQ0hJTkVfQVJDSH0iKVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuXG5c
biAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKFwnUEFDS0FHRVNcJywgVHJ1ZSkuc3BsaXQoKVxuICAg
IGZvciBwa2cgaW4gcGFja2FnZXM6XG4gICAgICAgIHBrZ2FyY2ggPSBkLmdldFZhcigiUEFDS0FH
RV9BUkNIXyVzIiAlIHBrZywgVHJ1ZSlcblxuICAgICAgICAjIFdlIGNvdWxkIGxvb2sgZm9yICE9
IFBBQ0tBR0VfQVJDSCBoZXJlIGJ1dCBob3cgdG8gY2hvb3NlXG4gICAgICAgICMgaWYgbXVsdGlw
bGUgZGlmZmVyZW5jZXMgYXJlIHByZXNlbnQ/XG4gICAgICAgICMgTG9vayB0aHJvdWdoIFBBQ0tB
R0VfQVJDSFMgZm9yIHRoZSBwcmlvcml0eSBvcmRlcj9cbiAgICAgICAgaWYgcGtnYXJjaCBhbmQg
cGtnYXJjaCA9PSBtYWNoX2FyY2g6XG4gICAgICAgICAgICBkLnNldFZhcihcJ1BBQ0tBR0VfQVJD
SFwnLCAiJHtNQUNISU5FX0FSQ0h9IilcbiAgICAgICAgICAgIGJiLndhcm4oIlJlY2lwZSAlcyBp
cyBtYXJrZWQgYXMgb25seSBiZWluZyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgYnV0IHNlZW1zIHRv
IGhhdmUgbWFjaGluZSBzcGVjaWZpYyBwYWNrYWdlcz8hIFRoZSByZWNpcGUgbWF5IGFzIHdlbGwg
bWFyayBpdHNlbGYgYXMgbWFjaGluZSBzcGVjaWZpYyBkaXJlY3RseS4iICUgZC5nZXRWYXIoIlBO
IiwgVHJ1ZSkpXG4nLCBmaWxlPSdfX2Fub25fNjA5X19ob21lX2FsZXhfdG1wX3NkayRfbGF5ZXJz
X3Bva3lfbWV0YV9jbGFzc2VzX2Jhc2VfYmJjbGFzcycsIHJlYWxmaWxlPScvaG9tZS9hbGV4L3Rt
cC9zZGskL2xheWVycy9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MnLCBtb2RlPSdleGVj
Jyk6CiAgICAgICAgICAgICBlID0gYmIuQkJIYW5kbGVkRXhjZXB0aW9uKGUpCiAgICA+ICAgICAg
ICByYWlzZSBlCiAgICAgCkJCSGFuZGxlZEV4Y2VwdGlvbjogaW52YWxpZCBzeW50YXggKF9fYW5v
bl82MDlfX2hvbWVfYWxleF90bXBfc2RrJF9sYXllcnNfcG9reV9tZXRhX2NsYXNzZXNfYmFzZV9i
YmNsYXNzLCBsaW5lIDEpCgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>