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

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>237394</bug_id>
          
          <creation_ts>2022-03-02 15:11:36 -0800</creation_ts>
          <short_desc>Copy WebKit frameworks and XPC processes to Secondary Path</short_desc>
          <delta_ts>2022-03-03 17:27:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          <cc>ap</cc>
    
    <cc>dino</cc>
    
    <cc>emw</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>kbr</cc>
    
    <cc>keith_miller</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>pangle</cc>
    
    <cc>rhoule</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1847633</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-02 15:11:36 -0800</bug_when>
    <thetext>Copy the various WebKit Frameworks, XPC services and other dylibs to the SYSTEM_SECONDARY_CONTENT_PATH when it is set.

For the copied executables, we also need to update the binaries to use the frameworks copied to SYSTEM_SECONDARY_CONTENT_PATH.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847634</commentid>
    <comment_count>1</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-02 15:12:01 -0800</bug_when>
    <thetext>&lt;rdar://89053248&gt;
&lt;rdar://86558002&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847691</commentid>
    <comment_count>2</comment_count>
      <attachid>453681</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-02 17:21:03 -0800</bug_when>
    <thetext>Created attachment 453681
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847693</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2022-03-02 17:23:32 -0800</bug_when>
    <thetext>Note that there are important steps to take when updating ANGLE. See https://trac.webkit.org/wiki/UpdatingANGLE</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847705</commentid>
    <comment_count>4</comment_count>
      <attachid>453681</attachid>
    <who name="Elliott Williams">emw</who>
    <bug_when>2022-03-02 17:50:15 -0800</bug_when>
    <thetext>Comment on attachment 453681
Patch

Some high-level feedback:

At first glance, it looks like you could do this with less code by adding Copy Files phases to the Xcode targets, which would copy their target&apos;s product to $(SECONDARY_STAGED_FRAMEWORK_DIRECTORY). These can be configured to be install-only and Mac-only. It might be worth trying this out before we commit to adding a new rsync script.

If you do stick with a script, please put it in WTF&apos;s Scripts/ directory. Those scripts get copied during WTF&apos;s installhdrs and are available for other projects to use, to save us from checking in duplicate copies :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847713</commentid>
    <comment_count>5</comment_count>
      <attachid>453681</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-03-02 18:41:24 -0800</bug_when>
    <thetext>Comment on attachment 453681
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=453681&amp;action=review

&gt; Source/WebGPU/Scripts/copy-frameworks-to-secondary-path.sh:1
&gt; +#!/bin/sh

Do we really need all the different versions of this script? There must be a better way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847722</commentid>
    <comment_count>6</comment_count>
      <attachid>453681</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2022-03-02 19:20:05 -0800</bug_when>
    <thetext>Comment on attachment 453681
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=453681&amp;action=review

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:11931
&gt; +			inputFileListPaths = (

I think that we are going to need inputs for script phases for the modern build system.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847731</commentid>
    <comment_count>7</comment_count>
    <who name="Richard Houle">rhoule</who>
    <bug_when>2022-03-02 20:30:07 -0800</bug_when>
    <thetext>As the original implementor of mach_o.py, this patch looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847738</commentid>
    <comment_count>8</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-02 21:11:11 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #5)
&gt; Comment on attachment 453681 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453681&amp;action=review
&gt; 
&gt; &gt; Source/WebGPU/Scripts/copy-frameworks-to-secondary-path.sh:1
&gt; &gt; +#!/bin/sh
&gt; 
&gt; Do we really need all the different versions of this script? There must be a
&gt; better way.

Our internal build system builds one project at a time.  Therefore only the files in that projects tree are available.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847739</commentid>
    <comment_count>9</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-02 21:30:19 -0800</bug_when>
    <thetext>(In reply to Elliott Williams from comment #4)
&gt; Comment on attachment 453681 [details]
&gt; Patch
&gt; 
&gt; Some high-level feedback:
&gt; 
&gt; At first glance, it looks like you could do this with less code by adding
&gt; Copy Files phases to the Xcode targets, which would copy their target&apos;s
&gt; product to $(SECONDARY_STAGED_FRAMEWORK_DIRECTORY). These can be configured
&gt; to be install-only and Mac-only. It might be worth trying this out before we
&gt; commit to adding a new rsync script.

This was patterned after similar scripts in the Safari source tree that do the same types of copying and modifying.

That may work for the copy-frameworks-to-secondary-path.sh script, but for copy-xpc-services-to-secondary-path.sh  we&apos;d still need a script to update DYLD_VERSIONED_FRAMEWORK_PATH for the XPC services.

Also, we read the symlink found at ${BUILT_PRODUCTS_DIR}/${PRODUCT_COMPONENT} to get the real file or directory to copy over.

&gt; If you do stick with a script, please put it in WTF&apos;s Scripts/ directory.
&gt; Those scripts get copied during WTF&apos;s installhdrs and are available for
&gt; other projects to use, to save us from checking in duplicate copies :)

We don&apos;t copy the WTF scripts to the public SDK.  This would probably break Xcode builds for open source contributors.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848099</commentid>
    <comment_count>10</comment_count>
    <who name="Elliott Williams">emw</who>
    <bug_when>2022-03-03 15:50:33 -0800</bug_when>
    <thetext>(In reply to Michael Saboff from comment #9)
&gt; (In reply to Elliott Williams from comment #4)
&gt; &gt; Comment on attachment 453681 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; Some high-level feedback:
&gt; &gt; 
&gt; &gt; At first glance, it looks like you could do this with less code by adding
&gt; &gt; Copy Files phases to the Xcode targets, which would copy their target&apos;s
&gt; &gt; product to $(SECONDARY_STAGED_FRAMEWORK_DIRECTORY). These can be configured
&gt; &gt; to be install-only and Mac-only. It might be worth trying this out before we
&gt; &gt; commit to adding a new rsync script.
&gt; 
&gt; This was patterned after similar scripts in the Safari source tree that do
&gt; the same types of copying and modifying.
&gt; 
&gt; That may work for the copy-frameworks-to-secondary-path.sh script, but for
&gt; copy-xpc-services-to-secondary-path.sh  we&apos;d still need a script to update
&gt; DYLD_VERSIONED_FRAMEWORK_PATH for the XPC services.
&gt;
&gt; Also, we read the symlink found at
&gt; ${BUILT_PRODUCTS_DIR}/${PRODUCT_COMPONENT} to get the real file or directory
&gt; to copy over.

Thanks for the explanation. I still think it would be worth trying at some point (in both trees), but not so high-value that we should block now. FWIW, I believe Xcode&apos;s copy phases resolve symlinks, so that particular need would be met.


&gt; &gt; If you do stick with a script, please put it in WTF&apos;s Scripts/ directory.
&gt; &gt; Those scripts get copied during WTF&apos;s installhdrs and are available for
&gt; &gt; other projects to use, to save us from checking in duplicate copies :)
&gt; 
&gt; We don&apos;t copy the WTF scripts to the public SDK.  This would probably break
&gt; Xcode builds for open source contributors.

WTF scripts don&apos;t make it to the public SDK, but they are always available in engineering builds at $(BUILT_PRODUCTS_DIR)/usr/local/include/wtf/Scripts. This is how, for instance, generate-unified-source-bundles.rb works. When WTF builds, Source/WTF/Scripts/generate-unified-source-bundles.rb is copied to /usr/local/include/wtf/Scripts. Build phases in WebCore and JSC execute it from that path to create their respective unified sources.

AFAICT, this script would be used in the same way, so it should be able to live in Source/WTF/Scripts/ too. Is there something I&apos;m missing here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848103</commentid>
    <comment_count>11</comment_count>
    <who name="Elliott Williams">emw</who>
    <bug_when>2022-03-03 15:55:00 -0800</bug_when>
    <thetext>(In reply to Alexey Proskuryakov from comment #6)
&gt; Comment on attachment 453681 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=453681&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:11931
&gt; &gt; +			inputFileListPaths = (
&gt; 
&gt; I think that we are going to need inputs for script phases for the modern
&gt; build system.

IMO it is fine to omit them for now. XCBuild will run the script unconditionally if it has no inputs, and since this script is only run for `install` actions, running it unconditionally does not affect typical incremental builds.

We would need to add them if and when we start sandboxing our scripts, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848128</commentid>
    <comment_count>12</comment_count>
      <attachid>453681</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-03-03 17:15:34 -0800</bug_when>
    <thetext>Comment on attachment 453681
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848130</commentid>
    <comment_count>13</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2022-03-03 17:16:13 -0800</bug_when>
    <thetext>(In reply to Elliott Williams from comment #10)
&gt; (In reply to Michael Saboff from comment #9)
&gt; &gt; (In reply to Elliott Williams from comment #4)
&gt; &gt; &gt; Comment on attachment 453681 [details]
&gt; &gt; &gt; Patch
&gt; &gt; &gt; 
&gt; &gt; &gt; Some high-level feedback:
&gt; &gt; &gt; 
&gt; &gt; &gt; At first glance, it looks like you could do this with less code by adding
&gt; &gt; &gt; Copy Files phases to the Xcode targets, which would copy their target&apos;s
&gt; &gt; &gt; product to $(SECONDARY_STAGED_FRAMEWORK_DIRECTORY). These can be configured
&gt; &gt; &gt; to be install-only and Mac-only. It might be worth trying this out before we
&gt; &gt; &gt; commit to adding a new rsync script.
&gt; &gt; 
&gt; &gt; This was patterned after similar scripts in the Safari source tree that do
&gt; &gt; the same types of copying and modifying.
&gt; &gt; 
&gt; &gt; That may work for the copy-frameworks-to-secondary-path.sh script, but for
&gt; &gt; copy-xpc-services-to-secondary-path.sh  we&apos;d still need a script to update
&gt; &gt; DYLD_VERSIONED_FRAMEWORK_PATH for the XPC services.
&gt; &gt;
&gt; &gt; Also, we read the symlink found at
&gt; &gt; ${BUILT_PRODUCTS_DIR}/${PRODUCT_COMPONENT} to get the real file or directory
&gt; &gt; to copy over.
&gt; 
&gt; Thanks for the explanation. I still think it would be worth trying at some
&gt; point (in both trees), but not so high-value that we should block now. FWIW,
&gt; I believe Xcode&apos;s copy phases resolve symlinks, so that particular need
&gt; would be met.
&gt; 
&gt; 
&gt; &gt; &gt; If you do stick with a script, please put it in WTF&apos;s Scripts/ directory.
&gt; &gt; &gt; Those scripts get copied during WTF&apos;s installhdrs and are available for
&gt; &gt; &gt; other projects to use, to save us from checking in duplicate copies :)
&gt; &gt; 
&gt; &gt; We don&apos;t copy the WTF scripts to the public SDK.  This would probably break
&gt; &gt; Xcode builds for open source contributors.
&gt; 
&gt; WTF scripts don&apos;t make it to the public SDK, but they are always available
&gt; in engineering builds at
&gt; $(BUILT_PRODUCTS_DIR)/usr/local/include/wtf/Scripts. This is how, for
&gt; instance, generate-unified-source-bundles.rb works. When WTF builds,
&gt; Source/WTF/Scripts/generate-unified-source-bundles.rb is copied to
&gt; /usr/local/include/wtf/Scripts. Build phases in WebCore and JSC execute it
&gt; from that path to create their respective unified sources.
&gt; 
&gt; AFAICT, this script would be used in the same way, so it should be able to
&gt; live in Source/WTF/Scripts/ too. Is there something I&apos;m missing here?

Michael, maybe you can file a FIXME for this, and we can improve it in the future? Would be nice to remove the duplication.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848134</commentid>
    <comment_count>14</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2022-03-03 17:27:03 -0800</bug_when>
    <thetext>Committed r290805 (248044@trunk): &lt;https://commits.webkit.org/248044@trunk&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453681</attachid>
            <date>2022-03-02 17:21:03 -0800</date>
            <delta_ts>2022-03-03 17:15:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>237394.patch</filename>
            <type>text/plain</type>
            <size>85577</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjkwNzYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBA
CisyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25kYXJ5
IFBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIz
NzM5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFk
ZGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFuZCBzY3JpcHRzIHRvIGNvcHkgdGhl
IGJ1aWx0IEZyYW1ld29yayB0byB0aGUgU1lTVEVNX1NFQ09OREFSWV9DT05URU5UX1BBVEgKKyAg
ICAgICAgd2hlbiBpdCBpcyBzZXQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGgu
c2g6IEFkZGVkLgorCiAyMDIyLTAzLTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNv
bT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBhZGQgYSBzd2l0Y2ggdG8gY29udHJvbCB3aGV0
aGVyIGJyZWFrcG9pbnQgZXZhbHVhdGlvbnMgKGNvbmRpdGlvbiwgaWdub3JlIGNvdW50LCBhY3Rp
b25zKSBhcmUgYWxzbyBhZmZlY3RlZCBieSBzY3JpcHQgYmxhY2tib3hpbmcKSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCShy
ZXZpc2lvbiAyOTA3NTcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ29uZmlndXJhdGlvbnMv
QmFzZS54Y2NvbmZpZwkod29ya2luZyBjb3B5KQpAQCAtMzMsNiArMzMsOSBAQCBVU0VfSU5URVJO
QUxfU0RLX1JlbGVhc2UgPSAkKEhBVkVfSU5URVJOQUxfU0RLKTsKIAogSU5TVEFMTF9QQVRIX1BS
RUZJWCA9ICQoSU5TVEFMTF9QQVRIX1BSRUZJWF8kKFVTRV9TWVNURU1fQ09OVEVOVF9QQVRIKSk7
CiBJTlNUQUxMX1BBVEhfUFJFRklYX1lFUyA9ICQoU1lTVEVNX0NPTlRFTlRfUEFUSCk7CitTRUNP
TkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUlkgPSAkKFNZU1RFTV9TRUNPTkRBUllfQ09O
VEVOVF9QQVRIKSQoU1lTVEVNX0xJQlJBUllfRElSKS9TdGFnZWRGcmFtZXdvcmtzL1NhZmFyaQor
Q09QWV9TVEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSCA9IE5PCitDT1BZX1NUQUdF
RF9GUkFNRVdPUktTX1RPX1NFQ09OREFSWV9QQVRIW3Nkaz1tYWNvcypdID0gJChVU0VfU1lTVEVN
X0NPTlRFTlRfUEFUSCkKIAogQUxXQVlTX1NFQVJDSF9VU0VSX1BBVEhTID0gTk87CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA3NTcpCisrKyBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMTE1NTYsNiArMTE1NTYsNyBAQAogCQkJCTFBMDJEOUE4MUIzNEE4
ODIwMDBEMTUyMiAvKiBBZGQgU3ltbGluayBpbiAvU3lzdGVtL0xpYnJhcnkvUHJpdmF0ZUZyYW1l
d29ya3MgKi8sCiAJCQkJNTM2MDlGOTAyMURGRkE5QzAwOEZBNjBBIC8qIENoZWNrIC54Y2ZpbGVs
aXN0cyAqLywKIAkJCQk2NTc3RkZDNjI3NkFDOEQyMDAxMUFFQzggLyogQ3JlYXRlIFN5bWxpbmsg
dG8gQWx0IFJvb3QgUGF0aCAqLywKKwkJCQk2NTE3NTcxNDI3Qzk4NjBDMDBEOUZFNDAgLyogQ29w
eSBGcmFtZXdvcmtzIHRvIFNlY29uZGFyeSBQYXRoICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkJNTM1RTA4QzIyMjU0NUFDODAwREYwMENBIC8qIFBCWEJ1aWxkUnVsZSAqLywKQEAg
LTExOTIxLDYgKzExOTIyLDI0IEBACiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJzZXQg
LWVcblxuIyBTa2lwIGZvciBQcm9kdWN0aW9uIGJ1aWxkcy5cbmlmIFtbICR7Q09ORklHVVJBVElP
Tjo9RGVidWd9ID09IFwiUHJvZHVjdGlvblwiIF1dOyB0aGVuXG4gICAgZXhpdFxuZmlcblxubWtk
aXIgLXAgXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtKQVZBU0NSSVBUQ09SRV9IRUxQRVJTX0RJ
Un1cIlxuZGl0dG8gXCIke0JVSUxUX1BST0RVQ1RTX0RJUn0vanNjXCIgXCIke0JVSUxUX1BST0RV
Q1RTX0RJUn0vJHtKQVZBU0NSSVBUQ09SRV9IRUxQRVJTX0RJUn0vanNjXCJcbiI7CisJCX07CisJ
CTY1MTc1NzE0MjdDOTg2MEMwMEQ5RkU0MCAvKiBDb3B5IEZyYW1ld29ya3MgdG8gU2Vjb25kYXJ5
IFBhdGggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWls
ZEFjdGlvbk1hc2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlzdFBh
dGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDb3B5
IEZyYW1ld29ya3MgdG8gU2Vjb25kYXJ5IFBhdGgiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9
ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVs
bFNjcmlwdCA9ICJleHBvcnQgRlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIPVwi
SmF2YVNjcmlwdENvcmVcIlxuXCIke1NSQ1JPT1R9L1NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRv
LXNlY29uZGFyeS1wYXRoLnNoXCJcbiI7CiAJCX07CiAJCTY1NzdGRkM2Mjc2QUM4RDIwMDExQUVD
OCAvKiBDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQYXRoICovID0gewogCQkJaXNhID0gUEJY
U2hlbGxTY3JpcHRCdWlsZFBoYXNlOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1Njcmlw
dHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9TY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnkt
cGF0aC5zaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9j
b3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2gJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw2MiBAQAorIyEvYmluL3NoCisKK3NldCAtZQorCitpZiBbWyAiJHtERVBMT1lNRU5UX0xP
Q0FUSU9OfSIgIT0gIllFUyIgXV07IHRoZW4KKyAgICBlY2hvICJlcnJvcjogJChiYXNlbmFtZSAk
MCkgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBkZXBsb3ltZW50LXN0eWxlIChcInByb2R1Y3Rpb25c
IiAvIFwibm9uLWVuZ2luZWVyaW5nXCIpIGJ1aWxkcy4iCisgICAgZXhpdCAxCitmaQorCitpZiBb
WyAiJHtVU0VfU1lTVEVNX0NPTlRFTlRfUEFUSH0iICE9ICJZRVMiIHx8ICIke0NPUFlfU1RBR0VE
X0ZSQU1FV09SS1NfVE9fU0VDT05EQVJZX1BBVEh9IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVj
aG8gIlNraXBwaW5nIGNvcHlpbmcgZnJhbWV3b3JrcyB0byBzZWNvbmRhcnkgY29udGVudCBwYXRo
LiIKKyAgICBleGl0IDAKK2ZpCisKK2lmIFtbICIke0FDVElPTn0iID09ICJpbnN0YWxsYXBpIiB8
fCAiJHtBQ1RJT059IiA9PSAiaW5zdGFsbGhkcnMiIF1dOyB0aGVuCisgICAgZWNobyAiU2tpcHBp
bmcgY29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29uZGFyeSBjb250ZW50IHBhdGggZm9yIGluc3Rh
bGxhcGkgb3IgaW5zdGFsbGhkcnMgYWN0aW9uLiIKKyAgICBleGl0IDAKK2ZpCisKK2lmIFtbIC16
ICIke0ZSQU1FV09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0iICYmIC16ICIke0RZTElC
U19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgXV07IHRoZW4KKyAgICBlY2hvICJ3YXJuaW5n
OiBOZWl0aGVyIEZSQU1FV09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSCBvciBEWUxJQlNf
VE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSCBhcmUgc2V0LiIKK2ZpCisKK2lmIFtbIC16ICIke1NF
Q09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWX0iIF1dOyB0aGVuCisgICAgZWNobyAi
ZXJyb3I6IFNFQ09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWSBpcyBub3Qgc2V0LiIK
KyAgICBleGl0IDEKK2ZpCisKK2Z1bmN0aW9uIGNvcHlfcHJvZHVjdF90b19kZXN0aW5hdGlvbl9m
cmFtZXdvcmtfZGlyZWN0b3J5Cit7CisgICAgUFJPRFVDVF9DT01QT05FTlQ9JDEKKworICAgICMg
SW4gZGVwbG95bWVudCBidWlsZHMsIEJVSUxUX1BST0RVQ1RTX0RJUiBkb2Vzbid0IHBvaW50IHRv
IHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgYW55IHByb2R1Y3RzLAorICAgICMgYnV0IHRvIGEgc2lu
Z2xlIGZvbGRlciBvZiBzeW1saW5rcyB0byBhbGwgYnVpbHQgcHJvZHVjdHMsIHJlZ2FyZGxlc3Mg
b2Ygd2hldGhlciB0aGV5IGFyZSBhY3R1YWxseQorICAgICMgYmVpbmcgaW5zdGFsbGVkLiBXZSBu
ZWVkIHRvIGNvcHkgdGhlIGFjdHVhbCBwcm9kdWN0cyB0byB0aGUgc2Vjb25kYXJ5IGNvbnRlbnQg
cGF0aCwgKm5vdCoganVzdCBhIHN5bWxpbmsuCisgICAgU09VUkNFX1BST0RVQ1RfUEFUSD0iJChy
ZWFkbGluayAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7UFJPRFVDVF9DT01QT05FTlR9IikiCisK
KyAgICBlY2hvICJDb3B5aW5nICR7U09VUkNFX1BST0RVQ1RfUEFUSH0gdG8gJHtERVNUSU5BVElP
Tl9GUkFNRVdPUktfRElSRUNUT1JZfSIKKyAgICByc3luYyAtYUUgIiR7U09VUkNFX1BST0RVQ1Rf
UEFUSH0iICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorfQorCitpZiBbWyAh
IC16ICIke1NFQ09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWX0iIF1dOyB0aGVuCisg
ICAgREVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWT0iJHtEU1RST09UfSR7U0VDT05EQVJZ
X1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIKKyAgICBta2RpciAtcCAiJHtERVNUSU5BVElP
Tl9GUkFNRVdPUktfRElSRUNUT1JZfSIKKworICAgIGZvciBGUkFNRVdPUktfTkFNRSBpbiAkKGVj
aG8gJHtGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IHwgdHIgJyAnICdcbicp
CisgICAgZG8KKyAgICAgICAgRlJBTUVXT1JLX0JVTkRMRV9OQU1FPSIke0ZSQU1FV09SS19OQU1F
fS5mcmFtZXdvcmsiCisKKyAgICAgICAgY29weV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2ZyYW1l
d29ya19kaXJlY3RvcnkgJHtGUkFNRVdPUktfQlVORExFX05BTUV9CisgICAgZG9uZQorZmkKKwor
aWYgW1sgISAteiAiJHtEWUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0iIF1dOyB0aGVu
CisgICAgREVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWT0iJHtEU1RST09UfSR7U0VDT05E
QVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSR7U1RBR0VEX0RZTElCX0ZSQU1FV09SS19Q
QVRIfSIKKyAgICBta2RpciAtcCAiJHtERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZfSIK
KworICAgIGZvciBEWUxJQiBpbiAkKGVjaG8gJHtEWUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllf
UEFUSH0gfCB0ciAnICcgJ1xuJykKKyAgICBkbworICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVz
dGluYXRpb25fZnJhbWV3b3JrX2RpcmVjdG9yeSAke0RZTElCfQorICAgIGRvbmUKK2ZpCgpQcm9w
ZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvU2NyaXB0cy9jb3B5LWZyYW1l
d29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKIyMgLTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1RoaXJkUGFydHkvQU5HTEUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA3NTcpCisrKyBTb3VyY2Uv
VGhpcmRQYXJ0eS9BTkdMRS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2VzIHRvIFNlY29uZGFy
eSBQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzczOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgc2NyaXB0cyB0byBjb3B5IHRo
ZSBidWlsdCBGcmFtZXdvcmsgdG8gdGhlIFNZU1RFTV9TRUNPTkRBUllfQ09OVEVOVF9QQVRICisg
ICAgICAgIHdoZW4gaXQgaXMgc2V0LgorCisgICAgICAgICogQU5HTEUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvajoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9BTkdMRS1keW5hbWljLnhjY29u
ZmlnOgorICAgICAgICAqIHNjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRo
LnNoOiBBZGRlZC4KKwogMjAyMi0wMi0yNCAgS3lsZSBQaWRkaW5ndG9uICA8a3BpZGRpbmd0b25A
YXBwbGUuY29tPgogICAgICAgICAKICAgICAgICAgUm9sbCBBTkdMRSB0byBGZWIgMTggMjAyMiAo
NzhjNjRkZDc0ZWU1KQpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQU5HTEUueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdM
RS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA3NTcpCisrKyBT
b3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9BTkdMRS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3
b3JraW5nIGNvcHkpCkBAIC0zNTA2LDYgKzM1MDYsNyBAQAogCQkJCTMxQ0QwMENFMjQ5MTk3NEMw
MDQ4NkYyNyAvKiBDb3B5RmlsZXMgKi8sCiAJCQkJMzFDRDAwQ0YyNDkxOTc2ODAwNDg2RjI3IC8q
IENvcHlGaWxlcyAqLywKIAkJCQkzMUNEMDBEMjI0OTE5N0ZEMDA0ODZGMjcgLyogQWRqdXN0IEFO
R0xFIFBhdGhzICovLAorCQkJCTY1MTc1NzIyMjdDRUVENzIwMEQ5RkU0MCAvKiBDb3B5IEZyYW1l
d29ya3MgdG8gU2Vjb25kYXJ5IFBhdGggKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJ
CQkzMUE5RTlBMDI0OUFBMDQyMDBDN0UyNDMgLyogUEJYQnVpbGRSdWxlICovLApAQCAtMzU5Myw2
ICszNTk0LDI0IEBACiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsK
IAkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtYQ09E
RV9WRVJTSU9OX0FDVFVBTH1cIiAtZ2UgXCIxMTQwXCIgLWEgXCIke1dLX1VTRV9ORVdfQlVJTERf
U1lTVEVNfVwiID0gXCJZRVNcIiBdOyB0aGVuXG4gICAgIyBJbiB0aGlzIGNvbmZpZ3VyYXRpb24s
IHBvc3QtcHJvY2Vzc2luZyBpcyBwZXJmb3JtZWQgYXQgdGhlIHNhbWUgdGltZSBhcyBjb3B5aW5n
IGluIHRoZSBwb3N0cHJvY2Vzcy1oZWFkZXItcnVsZSBzY3JpcHQsIHNvIHRoZXJlJ3Mgbm8gbmVl
ZCBmb3IgdGhpcyBzZXBhcmF0ZSBzdGVwLlxuICAgIGV4aXQgMFxuZmlcblxuZXhlYyBcIiRTUkNS
T09UL2FkanVzdC1hbmdsZS1pbmNsdWRlLXBhdGhzLnB5XCJcbiI7CisJCX07CisJCTY1MTc1NzIy
MjdDRUVENzIwMEQ5RkU0MCAvKiBDb3B5IEZyYW1ld29ya3MgdG8gU2Vjb25kYXJ5IFBhdGggKi8g
PSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1h
c2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAor
CQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IEZyYW1ld29y
a3MgdG8gU2Vjb25kYXJ5IFBhdGgiOworCQkJb3V0cHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7
CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9iaW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9
ICJleHBvcnQgRFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEg9XCJsaWJBTkdMRS1zaGFy
ZWQuZHlsaWJcIlxuXCIke1NSQ1JPT1R9L3NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29u
ZGFyeS1wYXRoLnNoXCJcbiI7CiAJCX07CiAJCUZGREE1MEQ1MjY5Rjg5NTQwMEFFMTFFMiAvKiBC
YWtlIE1ldGFsIExpYnJhcnkgdG8gTlNEYXRhICovID0gewogCQkJaXNhID0gUEJYU2hlbGxTY3Jp
cHRCdWlsZFBoYXNlOwpJbmRleDogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvQ29uZmlndXJhdGlv
bnMvQU5HTEUtZHluYW1pYy54Y2NvbmZpZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0
eS9BTkdMRS9Db25maWd1cmF0aW9ucy9BTkdMRS1keW5hbWljLnhjY29uZmlnCShyZXZpc2lvbiAy
OTA3NTcpCisrKyBTb3VyY2UvVGhpcmRQYXJ0eS9BTkdMRS9Db25maWd1cmF0aW9ucy9BTkdMRS1k
eW5hbWljLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC0xNiw2ICsxNiwxMCBAQCBBTkdMRV9P
VEhFUl9MREZMQUdTX21hY29zeCA9IC1mcmFtZXdvcmsgSU9LaXQgLWx6OwogCiBJTlNUQUxMX1BB
VEhfUFJFRklYID0gJChJTlNUQUxMX1BBVEhfUFJFRklYX1VTRV9TWVNURU1fQ09OVEVOVF9QQVRI
XyQoVVNFX1NZU1RFTV9DT05URU5UX1BBVEgpKTsKIElOU1RBTExfUEFUSF9QUkVGSVhfVVNFX1NZ
U1RFTV9DT05URU5UX1BBVEhfWUVTID0gJChTWVNURU1fQ09OVEVOVF9QQVRIKTsKK1NFQ09OREFS
WV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWSA9ICQoU1lTVEVNX1NFQ09OREFSWV9DT05URU5U
X1BBVEgpJChTWVNURU1fTElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJpCitTVEFH
RURfRFlMSUJfRlJBTUVXT1JLX1BBVEg9L1dlYkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJh
bWV3b3JrcworQ09QWV9TVEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSCA9IE5PCitD
T1BZX1NUQUdFRF9GUkFNRVdPUktTX1RPX1NFQ09OREFSWV9QQVRIW3Nkaz1tYWNvcypdID0gJChV
U0VfU1lTVEVNX0NPTlRFTlRfUEFUSCkKIAogSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhf
UFJFRklYKSQoTk9STUFMX1dFQkNPUkVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3Jr
L0ZyYW1ld29ya3M7CiBJTlNUQUxMX1BBVEhbc2RrPW1hY29zeCpdID0gJChJTlNUQUxMX1BBVEhf
VVNFX0FMVEVSTkFURV9GUkFNRVdPUktTX0RJUl8kKFdLX1VTRV9BTFRFUk5BVEVfRlJBTUVXT1JL
U19ESVIpKTsKSW5kZXg6IFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29weS1mcmFt
ZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBh
cnR5L0FOR0xFL3NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCShu
b25leGlzdGVudCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L0FOR0xFL3NjcmlwdHMvY29weS1mcmFt
ZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIg
QEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKKworaWYgW1sgIiR7REVQTE9ZTUVOVF9MT0NBVElPTn0i
ICE9ICJZRVMiIF1dOyB0aGVuCisgICAgZWNobyAiZXJyb3I6ICQoYmFzZW5hbWUgJDApIHNob3Vs
ZCBvbmx5IGJlIHJ1biBmb3IgZGVwbG95bWVudC1zdHlsZSAoXCJwcm9kdWN0aW9uXCIgLyBcIm5v
bi1lbmdpbmVlcmluZ1wiKSBidWlsZHMuIgorICAgIGV4aXQgMQorZmkKKworaWYgW1sgIiR7VVNF
X1NZU1RFTV9DT05URU5UX1BBVEh9IiAhPSAiWUVTIiB8fCAiJHtDT1BZX1NUQUdFRF9GUkFNRVdP
UktTX1RPX1NFQ09OREFSWV9QQVRIfSIgIT0gIllFUyIgXV07IHRoZW4KKyAgICBlY2hvICJTa2lw
cGluZyBjb3B5aW5nIGZyYW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aC4iCisgICAg
ZXhpdCAwCitmaQorCitpZiBbWyAiJHtBQ1RJT059IiA9PSAiaW5zdGFsbGFwaSIgfHwgIiR7QUNU
SU9OfSIgPT0gImluc3RhbGxoZHJzIiBdXTsgdGhlbgorICAgIGVjaG8gIlNraXBwaW5nIGNvcHlp
bmcgZnJhbWV3b3JrcyB0byBzZWNvbmRhcnkgY29udGVudCBwYXRoIGZvciBpbnN0YWxsYXBpIG9y
IGluc3RhbGxoZHJzIGFjdGlvbi4iCisgICAgZXhpdCAwCitmaQorCitpZiBbWyAteiAiJHtGUkFN
RVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IiAmJiAteiAiJHtEWUxJQlNfVE9fQ09Q
WV9UT19TRUNPTkRBUllfUEFUSH0iIF1dOyB0aGVuCisgICAgZWNobyAid2FybmluZzogTmVpdGhl
ciBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEggb3IgRFlMSUJTX1RPX0NPUFlf
VE9fU0VDT05EQVJZX1BBVEggYXJlIHNldC4iCitmaQorCitpZiBbWyAteiAiJHtTRUNPTkRBUllf
U1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IiBdXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiBT
RUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUlkgaXMgbm90IHNldC4iCisgICAgZXhp
dCAxCitmaQorCitmdW5jdGlvbiBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRpb25fZnJhbWV3b3Jr
X2RpcmVjdG9yeQoreworICAgIFBST0RVQ1RfQ09NUE9ORU5UPSQxCisKKyAgICAjIEluIGRlcGxv
eW1lbnQgYnVpbGRzLCBCVUlMVF9QUk9EVUNUU19ESVIgZG9lc24ndCBwb2ludCB0byB0aGUgYWN0
dWFsIGxvY2F0aW9uIG9mIGFueSBwcm9kdWN0cywKKyAgICAjIGJ1dCB0byBhIHNpbmdsZSBmb2xk
ZXIgb2Ygc3ltbGlua3MgdG8gYWxsIGJ1aWx0IHByb2R1Y3RzLCByZWdhcmRsZXNzIG9mIHdoZXRo
ZXIgdGhleSBhcmUgYWN0dWFsbHkKKyAgICAjIGJlaW5nIGluc3RhbGxlZC4gV2UgbmVlZCB0byBj
b3B5IHRoZSBhY3R1YWwgcHJvZHVjdHMgdG8gdGhlIHNlY29uZGFyeSBjb250ZW50IHBhdGgsICpu
b3QqIGp1c3QgYSBzeW1saW5rLgorICAgIFNPVVJDRV9QUk9EVUNUX1BBVEg9IiQocmVhZGxpbmsg
IiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke1BST0RVQ1RfQ09NUE9ORU5UfSIpIgorCisgICAgZWNo
byAiQ29weWluZyAke1NPVVJDRV9QUk9EVUNUX1BBVEh9IHRvICR7REVTVElOQVRJT05fRlJBTUVX
T1JLX0RJUkVDVE9SWX0iCisgICAgcnN5bmMgLWFFICIke1NPVVJDRV9QUk9EVUNUX1BBVEh9IiAi
JHtERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZfSIKK30KKworaWYgW1sgISAteiAiJHtT
RUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IiBdXTsgdGhlbgorICAgIERFU1RJ
TkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUlk9IiR7RFNUUk9PVH0ke1NFQ09OREFSWV9TVEFHRURf
RlJBTUVXT1JLX0RJUkVDVE9SWX0iCisgICAgbWtkaXIgLXAgIiR7REVTVElOQVRJT05fRlJBTUVX
T1JLX0RJUkVDVE9SWX0iCisKKyAgICBmb3IgRlJBTUVXT1JLX05BTUUgaW4gJChlY2hvICR7RlJB
TUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSB8IHRyICcgJyAnXG4nKQorICAgIGRv
CisgICAgICAgIEZSQU1FV09SS19CVU5ETEVfTkFNRT0iJHtGUkFNRVdPUktfTkFNRX0uZnJhbWV3
b3JrIgorCisgICAgICAgIGNvcHlfcHJvZHVjdF90b19kZXN0aW5hdGlvbl9mcmFtZXdvcmtfZGly
ZWN0b3J5ICR7RlJBTUVXT1JLX0JVTkRMRV9OQU1FfQorICAgIGRvbmUKK2ZpCisKK2lmIFtbICEg
LXogIiR7RFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IiBdXTsgdGhlbgorICAgIERF
U1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUlk9IiR7RFNUUk9PVH0ke1NFQ09OREFSWV9TVEFH
RURfRlJBTUVXT1JLX0RJUkVDVE9SWX0ke1NUQUdFRF9EWUxJQl9GUkFNRVdPUktfUEFUSH0iCisg
ICAgbWtkaXIgLXAgIiR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCisKKyAgICBm
b3IgRFlMSUIgaW4gJChlY2hvICR7RFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IHwg
dHIgJyAnICdcbicpCisgICAgZG8KKyAgICAgICAgY29weV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9u
X2ZyYW1ld29ya19kaXJlY3RvcnkgJHtEWUxJQn0KKyAgICBkb25lCitmaQoKUHJvcGVydHkgY2hh
bmdlcyBvbjogU291cmNlL1RoaXJkUGFydHkvQU5HTEUvc2NyaXB0cy9jb3B5LWZyYW1ld29ya3Mt
dG8tc2Vjb25kYXJ5LXBhdGguc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMg
LTAsMCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNyBAQAorMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4K
KworICAgICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2VzIHRvIFNl
Y29uZGFyeSBQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzczOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGRlZCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgc2NyaXB0cyB0byBj
b3B5IHRoZSBidWlsdCBGcmFtZXdvcmsgdG8gdGhlIFNZU1RFTV9TRUNPTkRBUllfQ09OVEVOVF9Q
QVRICisgICAgICAgIHdoZW4gaXQgaXMgc2V0LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMv
bGlid2VicnRjLnhjY29uZmlnOgorICAgICAgICAqIFNjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRv
LXNlY29uZGFyeS1wYXRoLnNoOiBBZGRlZC4KKyAgICAgICAgKiBsaWJ3ZWJydGMueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKwogMjAyMi0wMi0xOCAgUm9iZXJ0IEplbm5lciAgPEplbm5lckBh
cHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyOTAxNDkuCkluZGV4
OiBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ29uZmlndXJhdGlvbnMvbGlid2VicnRjLnhj
Y29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1
cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWcJKHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Db25maWd1cmF0aW9ucy9saWJ3ZWJydGMueGNjb25maWcJKHdv
cmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDEwIEBAIEVYUE9SVEVEX1NZTUJPTFNfRklMRVtzZGs9
aXBob25lc2ltdWxhdG9yKl0gPSBDb25maWd1cgogCiBJTlNUQUxMX1BBVEhfUFJFRklYID0gJChJ
TlNUQUxMX1BBVEhfUFJFRklYX1VTRV9TWVNURU1fQ09OVEVOVF9QQVRIXyQoVVNFX1NZU1RFTV9D
T05URU5UX1BBVEgpKTsKIElOU1RBTExfUEFUSF9QUkVGSVhfVVNFX1NZU1RFTV9DT05URU5UX1BB
VEhfWUVTID0gJChTWVNURU1fQ09OVEVOVF9QQVRIKTsKK1NFQ09OREFSWV9TVEFHRURfRlJBTUVX
T1JLX0RJUkVDVE9SWSA9ICQoU1lTVEVNX1NFQ09OREFSWV9DT05URU5UX1BBVEgpJChTWVNURU1f
TElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJpCitTVEFHRURfRFlMSUJfRlJBTUVX
T1JLX1BBVEg9L1dlYkNvcmUuZnJhbWV3b3JrL1ZlcnNpb25zL0EvRnJhbWV3b3JrcworQ09QWV9T
VEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSCA9IE5PCitDT1BZX1NUQUdFRF9GUkFN
RVdPUktTX1RPX1NFQ09OREFSWV9QQVRIW3Nkaz1tYWNvcypdID0gJChVU0VfU1lTVEVNX0NPTlRF
TlRfUEFUSCkKIAogSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhfUFJFRklYKSQoTk9STUFM
X1dFQkNPUkVfRlJBTUVXT1JLU19ESVIpL1dlYkNvcmUuZnJhbWV3b3JrL0ZyYW1ld29ya3M7CiBJ
TlNUQUxMX1BBVEhbc2RrPW1hY29zeCpdID0gJChJTlNUQUxMX1BBVEhfVVNFX09WRVJSSURFX0ZS
QU1FV09SS1NfRElSXyQoV0tfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSKSk7CkluZGV4OiBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vj
b25kYXJ5LXBhdGguc2gKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCShub25leGlzdGVu
dCkKKysrIFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9TY3JpcHRzL2NvcHktZnJhbWV3b3Jr
cy10by1zZWNvbmRhcnktcGF0aC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYyIEBACisj
IS9iaW4vc2gKKworc2V0IC1lCisKK2lmIFtbICIke0RFUExPWU1FTlRfTE9DQVRJT059IiAhPSAi
WUVTIiBdXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiAkKGJhc2VuYW1lICQwKSBzaG91bGQgb25s
eSBiZSBydW4gZm9yIGRlcGxveW1lbnQtc3R5bGUgKFwicHJvZHVjdGlvblwiIC8gXCJub24tZW5n
aW5lZXJpbmdcIikgYnVpbGRzLiIKKyAgICBleGl0IDEKK2ZpCisKK2lmIFtbICIke1VTRV9TWVNU
RU1fQ09OVEVOVF9QQVRIfSIgIT0gIllFUyIgfHwgIiR7Q09QWV9TVEFHRURfRlJBTUVXT1JLU19U
T19TRUNPTkRBUllfUEFUSH0iICE9ICJZRVMiIF1dOyB0aGVuCisgICAgZWNobyAiU2tpcHBpbmcg
Y29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29uZGFyeSBjb250ZW50IHBhdGguIgorICAgIGV4aXQg
MAorZmkKKworaWYgW1sgIiR7QUNUSU9OfSIgPT0gImluc3RhbGxhcGkiIHx8ICIke0FDVElPTn0i
ID09ICJpbnN0YWxsaGRycyIgXV07IHRoZW4KKyAgICBlY2hvICJTa2lwcGluZyBjb3B5aW5nIGZy
YW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCBmb3IgaW5zdGFsbGFwaSBvciBpbnN0
YWxsaGRycyBhY3Rpb24uIgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgLXogIiR7RlJBTUVXT1JL
U19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgJiYgLXogIiR7RFlMSUJTX1RPX0NPUFlfVE9f
U0VDT05EQVJZX1BBVEh9IiBdXTsgdGhlbgorICAgIGVjaG8gIndhcm5pbmc6IE5laXRoZXIgRlJB
TUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIG9yIERZTElCU19UT19DT1BZX1RPX1NF
Q09OREFSWV9QQVRIIGFyZSBzZXQuIgorZmkKKworaWYgW1sgLXogIiR7U0VDT05EQVJZX1NUQUdF
RF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAgICBlY2hvICJlcnJvcjogU0VDT05E
QVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZIGlzIG5vdCBzZXQuIgorICAgIGV4aXQgMQor
ZmkKKworZnVuY3Rpb24gY29weV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2ZyYW1ld29ya19kaXJl
Y3RvcnkKK3sKKyAgICBQUk9EVUNUX0NPTVBPTkVOVD0kMQorCisgICAgIyBJbiBkZXBsb3ltZW50
IGJ1aWxkcywgQlVJTFRfUFJPRFVDVFNfRElSIGRvZXNuJ3QgcG9pbnQgdG8gdGhlIGFjdHVhbCBs
b2NhdGlvbiBvZiBhbnkgcHJvZHVjdHMsCisgICAgIyBidXQgdG8gYSBzaW5nbGUgZm9sZGVyIG9m
IHN5bWxpbmtzIHRvIGFsbCBidWlsdCBwcm9kdWN0cywgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHRo
ZXkgYXJlIGFjdHVhbGx5CisgICAgIyBiZWluZyBpbnN0YWxsZWQuIFdlIG5lZWQgdG8gY29weSB0
aGUgYWN0dWFsIHByb2R1Y3RzIHRvIHRoZSBzZWNvbmRhcnkgY29udGVudCBwYXRoLCAqbm90KiBq
dXN0IGEgc3ltbGluay4KKyAgICBTT1VSQ0VfUFJPRFVDVF9QQVRIPSIkKHJlYWRsaW5rICIke0JV
SUxUX1BST0RVQ1RTX0RJUn0vJHtQUk9EVUNUX0NPTVBPTkVOVH0iKSIKKworICAgIGVjaG8gIkNv
cHlpbmcgJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSB0byAke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19E
SVJFQ1RPUll9IgorICAgIHJzeW5jIC1hRSAiJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSIgIiR7REVT
VElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCit9CisKK2lmIFtbICEgLXogIiR7U0VDT05E
QVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAgICBERVNUSU5BVElP
Tl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1F
V09SS19ESVJFQ1RPUll9IgorICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19E
SVJFQ1RPUll9IgorCisgICAgZm9yIEZSQU1FV09SS19OQU1FIGluICQoZWNobyAke0ZSQU1FV09S
S1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0gfCB0ciAnICcgJ1xuJykKKyAgICBkbworICAg
ICAgICBGUkFNRVdPUktfQlVORExFX05BTUU9IiR7RlJBTUVXT1JLX05BTUV9LmZyYW1ld29yayIK
KworICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRpb25fZnJhbWV3b3JrX2RpcmVjdG9y
eSAke0ZSQU1FV09SS19CVU5ETEVfTkFNRX0KKyAgICBkb25lCitmaQorCitpZiBbWyAhIC16ICIk
e0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgXV07IHRoZW4KKyAgICBERVNUSU5B
VElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRBUllfU1RBR0VEX0ZS
QU1FV09SS19ESVJFQ1RPUll9JHtTVEFHRURfRFlMSUJfRlJBTUVXT1JLX1BBVEh9IgorICAgIG1r
ZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorCisgICAgZm9yIERZ
TElCIGluICQoZWNobyAke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSB8IHRyICcg
JyAnXG4nKQorICAgIGRvCisgICAgICAgIGNvcHlfcHJvZHVjdF90b19kZXN0aW5hdGlvbl9mcmFt
ZXdvcmtfZGlyZWN0b3J5ICR7RFlMSUJ9CisgICAgZG9uZQorZmkKClByb3BlcnR5IGNoYW5nZXMg
b246IFNvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9TY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10
by1zZWNvbmRhcnktcGF0aC5zaApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAt
MCwwICsxICMjCisqClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvbGlid2VicnRjLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9saWJ3ZWJydGMueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29y
a2luZyBjb3B5KQpAQCAtMTczOTQsNiArMTczOTQsNyBAQAogCQkJCTMxMkJEQjBCMTVGRUNBQjAw
MDk3RUJDNyAvKiBDb3B5RmlsZXMgKi8sCiAJCQkJMzEyQkRCMEQxNUZFQ0FDRTAwOTdFQkM3IC8q
IENvcHlGaWxlcyAqLywKIAkJCQk2NTlBODZFQTI3OTc5NkY4MDBBQzM3QjYgLyogQ3JlYXRlIFN5
bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLywKKwkJCQk2NTE3NTcyMTI3Q0VFQ0IwMDBEOUZFNDAg
LyogQ29weSBGcmFtZXdvcmtzIHRvIFNlY29uZGFyeSBQYXRoICovLAogCQkJKTsKIAkJCWJ1aWxk
UnVsZXMgPSAoCiAJCQkpOwpAQCAtMTc1MTIsNiArMTc1MTMsMjQgQEAKIAkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJ
CXNoZWxsU2NyaXB0ID0gImlmIFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGhkcnNcIiBdIHx8
IFsgXCIke0FDVElPTn1cIiA9IFwiaW5zdGFsbGFwaVwiIF07IHRoZW5cbiAgICBleGl0IDA7XG5m
aVxuXG5pZiBbIC1mIC4uLy4uLy4uL1Rvb2xzL1NjcmlwdHMvY2hlY2stZm9yLXdlYWstdnRhYmxl
cy1hbmQtZXh0ZXJuYWxzIF07IHRoZW5cbiAgICAuLi8uLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNr
LWZvci13ZWFrLXZ0YWJsZXMtYW5kLWV4dGVybmFscyB8fCBleGl0ICQ/XG5maVxuIjsKKwkJfTsK
KwkJNjUxNzU3MjEyN0NFRUNCMDAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRh
cnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0
UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkNv
cHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhz
ID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gImV4cG9ydCBEWUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSD1cImxp
YndlYnJ0Yy5keWxpYlwiXG5cIiR7U1JDUk9PVH0vU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8t
c2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKIAkJfTsKIAkJNjU5QTg2RUEyNzk3OTZGODAwQUMzN0I2
IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8gPSB7CiAJCQlpc2EgPSBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA3NTcpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBA
QAorMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAg
ICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2VzIHRvIFNlY29uZGFy
eSBQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MzczOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgc2NyaXB0cyB0byBjb3B5IHRo
ZSBidWlsdCBGcmFtZXdvcmsgdG8gdGhlIFNZU1RFTV9TRUNPTkRBUllfQ09OVEVOVF9QQVRICisg
ICAgICAgIHdoZW4gaXQgaXMgc2V0LgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvV2ViQ29y
ZS54Y2NvbmZpZzoKKyAgICAgICAgKiBTY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRh
cnktcGF0aC5zaDogQWRkZWQuCisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qOgorCiAyMDIyLTAzLTAyICBPcmlvbCBCcnVmYXUgIDxvYnJ1ZmF1QGlnYWxpYS5jb20+
CiAKICAgICAgICAgW2Nzc10gSW1wbGVtZW50ICd0ZXh0LWRlY29yYXRpb24nIGFzIGEgc2hvcnRo
YW5kLgpJbmRleDogU291cmNlL1dlYkNvcmUvQ29uZmlndXJhdGlvbnMvV2ViQ29yZS54Y2NvbmZp
Zwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9ucy9XZWJDb3JlLnhj
Y29uZmlnCShyZXZpc2lvbiAyOTA3NTcpCisrKyBTb3VyY2UvV2ViQ29yZS9Db25maWd1cmF0aW9u
cy9XZWJDb3JlLnhjY29uZmlnCSh3b3JraW5nIGNvcHkpCkBAIC01OCw2ICs1OCw5IEBAIElORk9Q
TElTVF9GSUxFID0gSW5mby5wbGlzdDsKIAogSU5TVEFMTF9QQVRIX1BSRUZJWCA9ICQoSU5TVEFM
TF9QQVRIX1BSRUZJWF9VU0VfU1lTVEVNX0NPTlRFTlRfUEFUSF8kKFVTRV9TWVNURU1fQ09OVEVO
VF9QQVRIKSk7CiBJTlNUQUxMX1BBVEhfUFJFRklYX1VTRV9TWVNURU1fQ09OVEVOVF9QQVRIX1lF
UyA9ICQoU1lTVEVNX0NPTlRFTlRfUEFUSCk7CitTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19E
SVJFQ1RPUlkgPSAkKFNZU1RFTV9TRUNPTkRBUllfQ09OVEVOVF9QQVRIKSQoU1lTVEVNX0xJQlJB
UllfRElSKS9TdGFnZWRGcmFtZXdvcmtzL1NhZmFyaS8KK0NPUFlfU1RBR0VEX0ZSQU1FV09SS1Nf
VE9fU0VDT05EQVJZX1BBVEggPSBOTworQ09QWV9TVEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRB
UllfUEFUSFtzZGs9bWFjb3MqXSA9ICQoVVNFX1NZU1RFTV9DT05URU5UX1BBVEgpCiAKIElOU1RB
TExfUEFUSCA9ICQoSU5TVEFMTF9QQVRIX1BSRUZJWCkkKElOU1RBTExfUEFUSF8kKFdLX0NPQ09B
X1RPVUNIKSk7CiBJTlNUQUxMX1BBVEhfY29jb2F0b3VjaCA9ICQoV0tfQUxURVJOQVRFX1dFQktJ
VF9TREtfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnktcGF0
aC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9TY3JpcHRzL2NvcHktZnJhbWV3b3Jr
cy10by1zZWNvbmRhcnktcGF0aC5zaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvV2ViQ29yZS9T
Y3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnktcGF0aC5zaAkod29ya2luZyBjb3B5
KQpAQCAtMCwwICsxLDYyIEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2lmIFtbICIke0RFUExP
WU1FTlRfTE9DQVRJT059IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiAkKGJh
c2VuYW1lICQwKSBzaG91bGQgb25seSBiZSBydW4gZm9yIGRlcGxveW1lbnQtc3R5bGUgKFwicHJv
ZHVjdGlvblwiIC8gXCJub24tZW5naW5lZXJpbmdcIikgYnVpbGRzLiIKKyAgICBleGl0IDEKK2Zp
CisKK2lmIFtbICIke1VTRV9TWVNURU1fQ09OVEVOVF9QQVRIfSIgIT0gIllFUyIgfHwgIiR7Q09Q
WV9TVEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSH0iICE9ICJZRVMiIF1dOyB0aGVu
CisgICAgZWNobyAiU2tpcHBpbmcgY29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29uZGFyeSBjb250
ZW50IHBhdGguIgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgIiR7QUNUSU9OfSIgPT0gImluc3Rh
bGxhcGkiIHx8ICIke0FDVElPTn0iID09ICJpbnN0YWxsaGRycyIgXV07IHRoZW4KKyAgICBlY2hv
ICJTa2lwcGluZyBjb3B5aW5nIGZyYW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCBm
b3IgaW5zdGFsbGFwaSBvciBpbnN0YWxsaGRycyBhY3Rpb24uIgorICAgIGV4aXQgMAorZmkKKwor
aWYgW1sgLXogIiR7RlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgJiYgLXog
IiR7RFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IiBdXTsgdGhlbgorICAgIGVjaG8g
Indhcm5pbmc6IE5laXRoZXIgRlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIG9y
IERZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIGFyZSBzZXQuIgorZmkKKworaWYgW1sg
LXogIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAg
ICBlY2hvICJlcnJvcjogU0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZIGlzIG5v
dCBzZXQuIgorICAgIGV4aXQgMQorZmkKKworZnVuY3Rpb24gY29weV9wcm9kdWN0X3RvX2Rlc3Rp
bmF0aW9uX2ZyYW1ld29ya19kaXJlY3RvcnkKK3sKKyAgICBQUk9EVUNUX0NPTVBPTkVOVD0kMQor
CisgICAgIyBJbiBkZXBsb3ltZW50IGJ1aWxkcywgQlVJTFRfUFJPRFVDVFNfRElSIGRvZXNuJ3Qg
cG9pbnQgdG8gdGhlIGFjdHVhbCBsb2NhdGlvbiBvZiBhbnkgcHJvZHVjdHMsCisgICAgIyBidXQg
dG8gYSBzaW5nbGUgZm9sZGVyIG9mIHN5bWxpbmtzIHRvIGFsbCBidWlsdCBwcm9kdWN0cywgcmVn
YXJkbGVzcyBvZiB3aGV0aGVyIHRoZXkgYXJlIGFjdHVhbGx5CisgICAgIyBiZWluZyBpbnN0YWxs
ZWQuIFdlIG5lZWQgdG8gY29weSB0aGUgYWN0dWFsIHByb2R1Y3RzIHRvIHRoZSBzZWNvbmRhcnkg
Y29udGVudCBwYXRoLCAqbm90KiBqdXN0IGEgc3ltbGluay4KKyAgICBTT1VSQ0VfUFJPRFVDVF9Q
QVRIPSIkKHJlYWRsaW5rICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtQUk9EVUNUX0NPTVBPTkVO
VH0iKSIKKworICAgIGVjaG8gIkNvcHlpbmcgJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSB0byAke0RF
U1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorICAgIHJzeW5jIC1hRSAiJHtTT1VSQ0Vf
UFJPRFVDVF9QQVRIfSIgIiR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCit9CisK
K2lmIFtbICEgLXogIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07
IHRoZW4KKyAgICBERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtT
RUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorICAgIG1rZGlyIC1wICIke0RF
U1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorCisgICAgZm9yIEZSQU1FV09SS19OQU1F
IGluICQoZWNobyAke0ZSQU1FV09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0gfCB0ciAn
ICcgJ1xuJykKKyAgICBkbworICAgICAgICBGUkFNRVdPUktfQlVORExFX05BTUU9IiR7RlJBTUVX
T1JLX05BTUV9LmZyYW1ld29yayIKKworICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRp
b25fZnJhbWV3b3JrX2RpcmVjdG9yeSAke0ZSQU1FV09SS19CVU5ETEVfTkFNRX0KKyAgICBkb25l
CitmaQorCitpZiBbWyAhIC16ICIke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIg
XV07IHRoZW4KKyAgICBERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9
JHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9JHtTVEFHRURfRFlMSUJfRlJB
TUVXT1JLX1BBVEh9IgorICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJF
Q1RPUll9IgorCisgICAgZm9yIERZTElCIGluICQoZWNobyAke0RZTElCU19UT19DT1BZX1RPX1NF
Q09OREFSWV9QQVRIfSB8IHRyICcgJyAnXG4nKQorICAgIGRvCisgICAgICAgIGNvcHlfcHJvZHVj
dF90b19kZXN0aW5hdGlvbl9mcmFtZXdvcmtfZGlyZWN0b3J5ICR7RFlMSUJ9CisgICAgZG9uZQor
ZmkKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJDb3JlL1NjcmlwdHMvY29weS1mcmFt
ZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpleGVjdXRh
YmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBwcm9wZXJ0eQpJbmRl
eDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkocmV2aXNpb24gMjkwNzU3KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zODMzNSw2ICszODMzNSw3IEBACiAJ
CQkJNDlENkFFMUIyN0I2OTg0QjAwMDBFQjA2IC8qIENvcHkgUERGLmpzIEV4dHJhcyAqLywKIAkJ
CQk1Mzc5QzdBQTIxRTUyODcxMDBFNEE4RjYgLyogQ2hlY2sgLnhjZmlsZWxpc3RzICovLAogCQkJ
CTY1NzdGRkM3Mjc2QUM5QUQwMDExQUVDOCAvKiBDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQ
YXRoICovLAorCQkJCTY1MTc1NzFGMjdDRUU4NzYwMEQ5RkU0MCAvKiBDb3B5IEZyYW1ld29ya3Mg
dG8gU2Vjb25kYXJ5IFBhdGggKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBA
IC0zODYyMSw2ICszODYyMiwyNCBAQAogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDA7CiAJCQlzaGVsbFBhdGggPSAvYmluL3NoOwogCQkJc2hlbGxTY3JpcHQgPSAiaWYg
WyBcIiR7QUNUSU9OfVwiID0gXCJpbnN0YWxsaGRyc1wiIC1vIFwiJHtBQ1RJT059XCIgPSBcImlu
c3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhpdCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29s
cy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJvcHJpYXRlLWZpbGVzLWluLWZyYW1ld29yayBdOyB0
aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1maWxl
cy1pbi1mcmFtZXdvcmsgfHwgZXhpdCAkP1xuZmlcblxudG91Y2ggXCIke1RBUkdFVF9URU1QX0RJ
Un0vQ2hlY2tGb3JJbmFwcHJvcHJpYXRlRmlsZXNJbkZyYW1ld29yay50eHRcIlxuIjsKKwkJfTsK
KwkJNjUxNzU3MUYyN0NFRTg3NjAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRh
cnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJCWJ1
aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVMaXN0
UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0gIkNv
cHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhz
ID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNo
ZWxsU2NyaXB0ID0gImV4cG9ydCBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEg9
XCJXZWJDb3JlXCJcblwiJHtTUkNST09UfS9TY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNv
bmRhcnktcGF0aC5zaFwiXG4iOwogCQl9OwogCQk2NTc3RkZDNzI3NkFDOUFEMDAxMUFFQzggLyog
Q3JlYXRlIFN5bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxs
U2NyaXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJHUFUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyOTA3NTcpCisrKyBTb3Vy
Y2UvV2ViR1BVL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE3IEBACisyMDIy
LTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAgICAgIENv
cHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBwcm9jZXNzZXMgdG8gU2Vjb25kYXJ5IFBhdGgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzNzM5NAor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIGJ1
aWxkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFuZCBzY3JpcHRzIHRvIGNvcHkgdGhlIGJ1aWx0
IEZyYW1ld29yayB0byB0aGUgU1lTVEVNX1NFQ09OREFSWV9DT05URU5UX1BBVEgKKyAgICAgICAg
d2hlbiBpdCBpcyBzZXQuCisKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJHUFUueGNjb25m
aWc6CisgICAgICAgICogU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGgu
c2g6IEFkZGVkLgorICAgICAgICAqIFdlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
CiAyMDIyLTAyLTIyICBNeWxlcyBDLiBNYXhmaWVsZCAgPG1tYXhmaWVsZEBhcHBsZS5jb20+CiAK
ICAgICAgICAgW1dlYkdQVV0gRml4IHdhdGNoT1MgYnVpbGQKSW5kZXg6IFNvdXJjZS9XZWJHUFUv
Q29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJH
UFUvQ29uZmlndXJhdGlvbnMvV2ViR1BVLnhjY29uZmlnCShyZXZpc2lvbiAyOTA3NTcpCisrKyBT
b3VyY2UvV2ViR1BVL0NvbmZpZ3VyYXRpb25zL1dlYkdQVS54Y2NvbmZpZwkod29ya2luZyBjb3B5
KQpAQCAtMzEsNiArMzEsOSBAQCBJTlNUQUxMX1BBVEggPSAkKElOU1RBTExfUEFUSF9VU0VfU1lT
VEVNX0NPTlRFTlRfUEFUSF8KIElOU1RBTExfUEFUSF9VU0VfU1lTVEVNX0NPTlRFTlRfUEFUSF9Z
RVMgPSAkKFNZU1RFTV9DT05URU5UX1BBVEgpJChXRUJHUFVfRlJBTUVXT1JLU19ESVIpOwogSU5T
VEFMTF9QQVRIX1VTRV9TWVNURU1fQ09OVEVOVF9QQVRIXyA9ICQoSU5TVEFMTF9QQVRIX1VTRV9T
WVNURU1fQ09OVEVOVF9QQVRIX05PKTsKIElOU1RBTExfUEFUSF9VU0VfU1lTVEVNX0NPTlRFTlRf
UEFUSF9OTyA9ICQoV0VCR1BVX0ZSQU1FV09SS1NfRElSKTsKK1NFQ09OREFSWV9TVEFHRURfRlJB
TUVXT1JLX0RJUkVDVE9SWSA9ICQoU1lTVEVNX1NFQ09OREFSWV9DT05URU5UX1BBVEgpJChTWVNU
RU1fTElCUkFSWV9ESVIpL1N0YWdlZEZyYW1ld29ya3MvU2FmYXJpCitDT1BZX1NUQUdFRF9GUkFN
RVdPUktTX1RPX1NFQ09OREFSWV9QQVRIID0gTk8KK0NPUFlfU1RBR0VEX0ZSQU1FV09SS1NfVE9f
U0VDT05EQVJZX1BBVEhbc2RrPW1hY29zKl0gPSAkKFVTRV9TWVNURU1fQ09OVEVOVF9QQVRIKQog
CiBEWUxJQl9JTlNUQUxMX05BTUVfQkFTRSA9ICQoRFlMSUJfSU5TVEFMTF9OQU1FX0JBU0VfJChX
S19VU0VfQUxURVJOQVRFX0ZSQU1FV09SS1NfRElSKSk7CiBEWUxJQl9JTlNUQUxMX05BTUVfQkFT
RV9OTyA9ICQoTk9STUFMX1dFQkdQVV9GUkFNRVdPUktTX0RJUik7CkluZGV4OiBTb3VyY2UvV2Vi
R1BVL1NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJHUFUvU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5
LXBhdGguc2gJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkdQVS9TY3JpcHRzL2NvcHktZnJh
bWV3b3Jrcy10by1zZWNvbmRhcnktcGF0aC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDYy
IEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2lmIFtbICIke0RFUExPWU1FTlRfTE9DQVRJT059
IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiAkKGJhc2VuYW1lICQwKSBzaG91
bGQgb25seSBiZSBydW4gZm9yIGRlcGxveW1lbnQtc3R5bGUgKFwicHJvZHVjdGlvblwiIC8gXCJu
b24tZW5naW5lZXJpbmdcIikgYnVpbGRzLiIKKyAgICBleGl0IDEKK2ZpCisKK2lmIFtbICIke1VT
RV9TWVNURU1fQ09OVEVOVF9QQVRIfSIgIT0gIllFUyIgfHwgIiR7Q09QWV9TVEFHRURfRlJBTUVX
T1JLU19UT19TRUNPTkRBUllfUEFUSH0iICE9ICJZRVMiIF1dOyB0aGVuCisgICAgZWNobyAiU2tp
cHBpbmcgY29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29uZGFyeSBjb250ZW50IHBhdGguIgorICAg
IGV4aXQgMAorZmkKKworaWYgW1sgIiR7QUNUSU9OfSIgPT0gImluc3RhbGxhcGkiIHx8ICIke0FD
VElPTn0iID09ICJpbnN0YWxsaGRycyIgXV07IHRoZW4KKyAgICBlY2hvICJTa2lwcGluZyBjb3B5
aW5nIGZyYW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCBmb3IgaW5zdGFsbGFwaSBv
ciBpbnN0YWxsaGRycyBhY3Rpb24uIgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgLXogIiR7RlJB
TUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgJiYgLXogIiR7RFlMSUJTX1RPX0NP
UFlfVE9fU0VDT05EQVJZX1BBVEh9IiBdXTsgdGhlbgorICAgIGVjaG8gIndhcm5pbmc6IE5laXRo
ZXIgRlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIG9yIERZTElCU19UT19DT1BZ
X1RPX1NFQ09OREFSWV9QQVRIIGFyZSBzZXQuIgorZmkKKworaWYgW1sgLXogIiR7U0VDT05EQVJZ
X1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAgICBlY2hvICJlcnJvcjog
U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZIGlzIG5vdCBzZXQuIgorICAgIGV4
aXQgMQorZmkKKworZnVuY3Rpb24gY29weV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2ZyYW1ld29y
a19kaXJlY3RvcnkKK3sKKyAgICBQUk9EVUNUX0NPTVBPTkVOVD0kMQorCisgICAgIyBJbiBkZXBs
b3ltZW50IGJ1aWxkcywgQlVJTFRfUFJPRFVDVFNfRElSIGRvZXNuJ3QgcG9pbnQgdG8gdGhlIGFj
dHVhbCBsb2NhdGlvbiBvZiBhbnkgcHJvZHVjdHMsCisgICAgIyBidXQgdG8gYSBzaW5nbGUgZm9s
ZGVyIG9mIHN5bWxpbmtzIHRvIGFsbCBidWlsdCBwcm9kdWN0cywgcmVnYXJkbGVzcyBvZiB3aGV0
aGVyIHRoZXkgYXJlIGFjdHVhbGx5CisgICAgIyBiZWluZyBpbnN0YWxsZWQuIFdlIG5lZWQgdG8g
Y29weSB0aGUgYWN0dWFsIHByb2R1Y3RzIHRvIHRoZSBzZWNvbmRhcnkgY29udGVudCBwYXRoLCAq
bm90KiBqdXN0IGEgc3ltbGluay4KKyAgICBTT1VSQ0VfUFJPRFVDVF9QQVRIPSIkKHJlYWRsaW5r
ICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtQUk9EVUNUX0NPTVBPTkVOVH0iKSIKKworICAgIGVj
aG8gIkNvcHlpbmcgJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSB0byAke0RFU1RJTkFUSU9OX0ZSQU1F
V09SS19ESVJFQ1RPUll9IgorICAgIHJzeW5jIC1hRSAiJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSIg
IiR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCit9CisKK2lmIFtbICEgLXogIiR7
U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAgICBERVNU
SU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRBUllfU1RBR0VE
X0ZSQU1FV09SS19ESVJFQ1RPUll9IgorICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1F
V09SS19ESVJFQ1RPUll9IgorCisgICAgZm9yIEZSQU1FV09SS19OQU1FIGluICQoZWNobyAke0ZS
QU1FV09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0gfCB0ciAnICcgJ1xuJykKKyAgICBk
bworICAgICAgICBGUkFNRVdPUktfQlVORExFX05BTUU9IiR7RlJBTUVXT1JLX05BTUV9LmZyYW1l
d29yayIKKworICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRpb25fZnJhbWV3b3JrX2Rp
cmVjdG9yeSAke0ZSQU1FV09SS19CVU5ETEVfTkFNRX0KKyAgICBkb25lCitmaQorCitpZiBbWyAh
IC16ICIke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgXV07IHRoZW4KKyAgICBE
RVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRBUllfU1RB
R0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9JHtTVEFHRURfRFlMSUJfRlJBTUVXT1JLX1BBVEh9Igor
ICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorCisgICAg
Zm9yIERZTElCIGluICQoZWNobyAke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSB8
IHRyICcgJyAnXG4nKQorICAgIGRvCisgICAgICAgIGNvcHlfcHJvZHVjdF90b19kZXN0aW5hdGlv
bl9mcmFtZXdvcmtfZGlyZWN0b3J5ICR7RFlMSUJ9CisgICAgZG9uZQorZmkKClByb3BlcnR5IGNo
YW5nZXMgb246IFNvdXJjZS9XZWJHUFUvU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25k
YXJ5LXBhdGguc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAsMCArMSAj
IworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2UvV2ViR1BV
L1dlYkdQVS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5MDc1NykK
KysrIFNvdXJjZS9XZWJHUFUvV2ViR1BVLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtp
bmcgY29weSkKQEAgLTMsNyArMyw3IEBACiAJYXJjaGl2ZVZlcnNpb24gPSAxOwogCWNsYXNzZXMg
PSB7CiAJfTsKLQlvYmplY3RWZXJzaW9uID0gNTE7CisJb2JqZWN0VmVyc2lvbiA9IDU1OwogCW9i
amVjdHMgPSB7CiAKIC8qIEJlZ2luIFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC04NCw3ICs4
NCw3IEBACiAJCQlmaWxlcyA9ICgKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rw
cm9jZXNzaW5nID0gMTsKLSAgICB9OworCQl9OwogCQlERDA1QTM1QjI3QkYwOUI2MDA5NkVGQUIg
LyogUHJvZHVjdCBEZXBlbmRlbmNpZXMgKi8gPSB7CiAJCQlpc2EgPSBQQlhDb3B5RmlsZXNCdWls
ZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKQEAgLTQzNyw2ICs0Mzcs
NyBAQAogCQkJCTFDRUJEN0UwMjcxNkFGQkEwMEE1MjU0RCAvKiBGcmFtZXdvcmtzICovLAogCQkJ
CTFDRUJEN0UxMjcxNkFGQkEwMEE1MjU0RCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNjU3N0ZGQzgy
NzZBQ0EwNjAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8sCisJ
CQkJNjUxNzU3MTYyN0M5QUMzMDAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRh
cnkgUGF0aCAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKQEAgLTQ3Miw3ICs0
NzMsNiBAQAogCQkxQ0VCRDdEQTI3MTZBRkJBMDBBNTI1NEQgLyogUHJvamVjdCBvYmplY3QgKi8g
PSB7CiAJCQlpc2EgPSBQQlhQcm9qZWN0OwogCQkJYXR0cmlidXRlcyA9IHsKLQkJCQlCdWlsZElu
ZGVwZW5kZW50VGFyZ2V0c0luUGFyYWxsZWwgPSBOTzsKIAkJCQlEZWZhdWx0QnVpbGRTeXN0ZW1U
eXBlRm9yV29ya3NwYWNlID0gT3JpZ2luYWw7CiAJCQkJTGFzdFN3aWZ0VXBkYXRlQ2hlY2sgPSAx
NDAwOwogCQkJCUxhc3RVcGdyYWRlQ2hlY2sgPSAxMzMwOwpAQCAtNTMwLDYgKzUzMCwyNCBAQAog
LyogRW5kIFBCWFJlc291cmNlc0J1aWxkUGhhc2Ugc2VjdGlvbiAqLwogCiAvKiBCZWdpbiBQQlhT
aGVsbFNjcmlwdEJ1aWxkUGhhc2Ugc2VjdGlvbiAqLworCQk2NTE3NTcxNjI3QzlBQzMwMDBEOUZF
NDAgLyogQ29weSBGcmFtZXdvcmtzIHRvIFNlY29uZGFyeSBQYXRoICovID0geworCQkJaXNhID0g
UEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKKwkJCWZp
bGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlpbnB1
dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBGcmFtZXdvcmtzIHRvIFNlY29uZGFy
eSBQYXRoIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0
aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7
CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiZXhwb3J0IEZSQU1F
V09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSD1cIldlYkdQVVwiXG5cIiR7U1JDUk9PVH0v
U2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKKwkJfTsK
IAkJNjU3N0ZGQzgyNzZBQ0EwNjAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290
IFBhdGggKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CiAJCQlidWls
ZEFjdGlvbk1hc2sgPSA4OwpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
OTA3NTcpCisrKyBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTcgQEAKKzIwMjItMDMtMDIgIE1pY2hhZWwgU2Fib2ZmICA8bXNhYm9mZkBh
cHBsZS5jb20+CisKKyAgICAgICAgQ29weSBXZWJLaXQgZnJhbWV3b3JrcyBhbmQgWFBDIHByb2Nl
c3NlcyB0byBTZWNvbmRhcnkgUGF0aAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjM3Mzk0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgYnVpbGQgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgYW5kIHNj
cmlwdHMgdG8gY29weSB0aGUgYnVpbHQgRnJhbWV3b3JrIHRvIHRoZSBTWVNURU1fU0VDT05EQVJZ
X0NPTlRFTlRfUEFUSAorICAgICAgICB3aGVuIGl0IGlzIHNldC4KKworICAgICAgICAqIENvbmZp
Z3VyYXRpb25zL1dlYkluc3BlY3RvclVJRnJhbWV3b3JrLnhjY29uZmlnOgorICAgICAgICAqIFNj
cmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoOiBBZGRlZC4KKyAgICAg
ICAgKiBXZWJJbnNwZWN0b3JVSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorCiAyMDIyLTAz
LTAxICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBhZGQgYSBzd2l0Y2ggdG8gY29udHJvbCB3aGV0aGVyIGJyZWFrcG9pbnQgZXZhbHVh
dGlvbnMgKGNvbmRpdGlvbiwgaWdub3JlIGNvdW50LCBhY3Rpb25zKSBhcmUgYWxzbyBhZmZlY3Rl
ZCBieSBzY3JpcHQgYmxhY2tib3hpbmcKSW5kZXg6IFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9Db25m
aWd1cmF0aW9ucy9XZWJJbnNwZWN0b3JVSUZyYW1ld29yay54Y2NvbmZpZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ29uZmlndXJhdGlvbnMvV2ViSW5zcGVjdG9yVUlGcmFt
ZXdvcmsueGNjb25maWcJKHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Db25maWd1cmF0aW9ucy9XZWJJbnNwZWN0b3JVSUZyYW1ld29yay54Y2NvbmZpZwkod29ya2lu
ZyBjb3B5KQpAQCAtMTIsNiArMTIsMTAgQEAgSU5TVEFMTF9QQVRIX1VTRV9TWVNURU1fQ09OVEVO
VF9QQVRIX05PID0gJChJTlNUQUxMX1BBCiBJTlNUQUxMX1BBVEhfVVNFX1NZU1RFTV9DT05URU5U
X1BBVEhfWUVTID0gJChTWVNURU1fQ09OVEVOVF9QQVRIKSQoU1lTVEVNX0xJQlJBUllfRElSKS9Q
cml2YXRlRnJhbWV3b3JrczsKIElOU1RBTExfUEFUSF9VU0VfT1ZFUlJJREVfRlJBTUVXT1JLU19E
SVJfTk8gPSAkKFNZU1RFTV9MSUJSQVJZX0RJUikvUHJpdmF0ZUZyYW1ld29ya3M7CiBJTlNUQUxM
X1BBVEhfVVNFX09WRVJSSURFX0ZSQU1FV09SS1NfRElSX1lFUyA9ICQoV0tfT1ZFUlJJREVfRlJB
TUVXT1JLU19ESVIpOworU0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZID0gJChT
WVNURU1fU0VDT05EQVJZX0NPTlRFTlRfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2Vk
RnJhbWV3b3Jrcy9TYWZhcmkKK0NPUFlfU1RBR0VEX0ZSQU1FV09SS1NfVE9fU0VDT05EQVJZX1BB
VEggPSBOTworQ09QWV9TVEFHRURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSFtzZGs9bWFj
b3MqXSA9ICQoVVNFX1NZU1RFTV9DT05URU5UX1BBVEgpCisKIERZTElCX0lOU1RBTExfTkFNRV9C
QVNFID0gJChTWVNURU1fTElCUkFSWV9ESVIpL1ByaXZhdGVGcmFtZXdvcmtzOwogUFJPRFVDVF9O
QU1FID0gV2ViSW5zcGVjdG9yVUk7CiBQUk9EVUNUX0JVTkRMRV9JREVOVElGSUVSID0gY29tLmFw
cGxlLiQoUFJPRFVDVF9OQU1FOnJmYzEwMzRpZGVudGlmaWVyKTsKSW5kZXg6IFNvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9TY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnktcGF0aC5zaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViSW5zcGVjdG9yVUkvU2NyaXB0cy9jb3B5LWZyYW1ld29y
a3MtdG8tc2Vjb25kYXJ5LXBhdGguc2gJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYkluc3Bl
Y3RvclVJL1NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCSh3b3Jr
aW5nIGNvcHkpCkBAIC0wLDAgKzEsNjIgQEAKKyMhL2Jpbi9zaAorCitzZXQgLWUKKworaWYgW1sg
IiR7REVQTE9ZTUVOVF9MT0NBVElPTn0iICE9ICJZRVMiIF1dOyB0aGVuCisgICAgZWNobyAiZXJy
b3I6ICQoYmFzZW5hbWUgJDApIHNob3VsZCBvbmx5IGJlIHJ1biBmb3IgZGVwbG95bWVudC1zdHls
ZSAoXCJwcm9kdWN0aW9uXCIgLyBcIm5vbi1lbmdpbmVlcmluZ1wiKSBidWlsZHMuIgorICAgIGV4
aXQgMQorZmkKKworaWYgW1sgIiR7VVNFX1NZU1RFTV9DT05URU5UX1BBVEh9IiAhPSAiWUVTIiB8
fCAiJHtDT1BZX1NUQUdFRF9GUkFNRVdPUktTX1RPX1NFQ09OREFSWV9QQVRIfSIgIT0gIllFUyIg
XV07IHRoZW4KKyAgICBlY2hvICJTa2lwcGluZyBjb3B5aW5nIGZyYW1ld29ya3MgdG8gc2Vjb25k
YXJ5IGNvbnRlbnQgcGF0aC4iCisgICAgZXhpdCAwCitmaQorCitpZiBbWyAiJHtBQ1RJT059IiA9
PSAiaW5zdGFsbGFwaSIgfHwgIiR7QUNUSU9OfSIgPT0gImluc3RhbGxoZHJzIiBdXTsgdGhlbgor
ICAgIGVjaG8gIlNraXBwaW5nIGNvcHlpbmcgZnJhbWV3b3JrcyB0byBzZWNvbmRhcnkgY29udGVu
dCBwYXRoIGZvciBpbnN0YWxsYXBpIG9yIGluc3RhbGxoZHJzIGFjdGlvbi4iCisgICAgZXhpdCAw
CitmaQorCitpZiBbWyAteiAiJHtGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9
IiAmJiAteiAiJHtEWUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0iIF1dOyB0aGVuCisg
ICAgZWNobyAid2FybmluZzogTmVpdGhlciBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZ
X1BBVEggb3IgRFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEggYXJlIHNldC4iCitmaQor
CitpZiBbWyAteiAiJHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IiBdXTsg
dGhlbgorICAgIGVjaG8gImVycm9yOiBTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RP
UlkgaXMgbm90IHNldC4iCisgICAgZXhpdCAxCitmaQorCitmdW5jdGlvbiBjb3B5X3Byb2R1Y3Rf
dG9fZGVzdGluYXRpb25fZnJhbWV3b3JrX2RpcmVjdG9yeQoreworICAgIFBST0RVQ1RfQ09NUE9O
RU5UPSQxCisKKyAgICAjIEluIGRlcGxveW1lbnQgYnVpbGRzLCBCVUlMVF9QUk9EVUNUU19ESVIg
ZG9lc24ndCBwb2ludCB0byB0aGUgYWN0dWFsIGxvY2F0aW9uIG9mIGFueSBwcm9kdWN0cywKKyAg
ICAjIGJ1dCB0byBhIHNpbmdsZSBmb2xkZXIgb2Ygc3ltbGlua3MgdG8gYWxsIGJ1aWx0IHByb2R1
Y3RzLCByZWdhcmRsZXNzIG9mIHdoZXRoZXIgdGhleSBhcmUgYWN0dWFsbHkKKyAgICAjIGJlaW5n
IGluc3RhbGxlZC4gV2UgbmVlZCB0byBjb3B5IHRoZSBhY3R1YWwgcHJvZHVjdHMgdG8gdGhlIHNl
Y29uZGFyeSBjb250ZW50IHBhdGgsICpub3QqIGp1c3QgYSBzeW1saW5rLgorICAgIFNPVVJDRV9Q
Uk9EVUNUX1BBVEg9IiQocmVhZGxpbmsgIiR7QlVJTFRfUFJPRFVDVFNfRElSfS8ke1BST0RVQ1Rf
Q09NUE9ORU5UfSIpIgorCisgICAgZWNobyAiQ29weWluZyAke1NPVVJDRV9QUk9EVUNUX1BBVEh9
IHRvICR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCisgICAgcnN5bmMgLWFFICIk
e1NPVVJDRV9QUk9EVUNUX1BBVEh9IiAiJHtERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZ
fSIKK30KKworaWYgW1sgISAteiAiJHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RP
Ull9IiBdXTsgdGhlbgorICAgIERFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUlk9IiR7RFNU
Uk9PVH0ke1NFQ09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWX0iCisgICAgbWtkaXIg
LXAgIiR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCisKKyAgICBmb3IgRlJBTUVX
T1JLX05BTUUgaW4gJChlY2hvICR7RlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRI
fSB8IHRyICcgJyAnXG4nKQorICAgIGRvCisgICAgICAgIEZSQU1FV09SS19CVU5ETEVfTkFNRT0i
JHtGUkFNRVdPUktfTkFNRX0uZnJhbWV3b3JrIgorCisgICAgICAgIGNvcHlfcHJvZHVjdF90b19k
ZXN0aW5hdGlvbl9mcmFtZXdvcmtfZGlyZWN0b3J5ICR7RlJBTUVXT1JLX0JVTkRMRV9OQU1FfQor
ICAgIGRvbmUKK2ZpCisKK2lmIFtbICEgLXogIiR7RFlMSUJTX1RPX0NPUFlfVE9fU0VDT05EQVJZ
X1BBVEh9IiBdXTsgdGhlbgorICAgIERFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUlk9IiR7
RFNUUk9PVH0ke1NFQ09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWX0ke1NUQUdFRF9E
WUxJQl9GUkFNRVdPUktfUEFUSH0iCisgICAgbWtkaXIgLXAgIiR7REVTVElOQVRJT05fRlJBTUVX
T1JLX0RJUkVDVE9SWX0iCisKKyAgICBmb3IgRFlMSUIgaW4gJChlY2hvICR7RFlMSUJTX1RPX0NP
UFlfVE9fU0VDT05EQVJZX1BBVEh9IHwgdHIgJyAnICdcbicpCisgICAgZG8KKyAgICAgICAgY29w
eV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2ZyYW1ld29ya19kaXJlY3RvcnkgJHtEWUxJQn0KKyAg
ICBkb25lCitmaQoKUHJvcGVydHkgY2hhbmdlcyBvbjogU291cmNlL1dlYkluc3BlY3RvclVJL1Nj
cmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCl9fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRk
ZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBwcm9wZXJ0eQpJbmRleDogU291cmNlL1dlYkluc3BlY3RvclVJL1dlYkluc3BlY3RvclVJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkluc3BlY3Rv
clVJL1dlYkluc3BlY3RvclVJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDI5
MDc1NykKKysrIFNvdXJjZS9XZWJJbnNwZWN0b3JVSS9XZWJJbnNwZWN0b3JVSS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsNiArMTIwLDcgQEAKIAkJCQkx
QzYwRkYxMjE0RTZEOUFGMDA2Q0Q3N0QgLyogQ29weSBVc2VyIEludGVyZmFjZSBSZXNvdXJjZXMg
Ki8sCiAJCQkJMUM3OEVFMTQxNzYxMTMwMjAwMkY2QUE1IC8qIFNvdXJjZXMgKi8sCiAJCQkJNjU3
N0ZGQzkyNzZBQ0E2ODAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGgg
Ki8sCisJCQkJNjUxNzU3MTcyN0M5QUQ2QjAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBT
ZWNvbmRhcnkgUGF0aCAqLywKIAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJKTsKQEAgLTE3
OCw2ICsxNzksMjQgQEAKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAw
OwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIi91c3IvYmluL3Bl
cmwgXCIke1NSQ1JPT1R9L1NjcmlwdHMvY29weS11c2VyLWludGVyZmFjZS1yZXNvdXJjZXMucGxc
IlxuIjsKKwkJfTsKKwkJNjUxNzU3MTcyN0M5QUQ2QjAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3Jr
cyB0byBTZWNvbmRhcnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gIkNvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCI7CisJCQlvdXRwdXRG
aWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1
bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQkJc2hlbGxQYXRoID0gL2Jp
bi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImV4cG9ydCBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VD
T05EQVJZX1BBVEg9XCJXZWJJbnNwZWN0b3JVSVwiXG5cIiR7U1JDUk9PVH0vU2NyaXB0cy9jb3B5
LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKIAkJfTsKIAkJNjU3N0ZGQzky
NzZBQ0E2ODAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8gPSB7
CiAJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkocmV2aXNp
b24gMjkwNzU3KQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSw4MCBAQAorMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KKworICAgICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2Vz
IHRvIFNlY29uZGFyeSBQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgc2NyaXB0
cyB0byBjb3B5IHRoZSBidWlsdCBGcmFtZXdvcmsgYXMgd2VsbCBhcyB0aGUgWFBDIHNlcnZpY2Vz
IAorICAgICAgICB0byB0aGUgU1lTVEVNX1NFQ09OREFSWV9DT05URU5UX1BBVEggd2hlbiBpdCBp
cyBzZXQuICBXaGVuIGNvcHlpbmcgdGhlIFhQQyBzZXJ2aWNlcywgd2UgdXBkYXRlIHRoZSBYUEMK
KyAgICAgICAgYmluYXJpZXMgdG8gcmVmZXJlbmNlIHRoZSBmcmFtZXdvcmtzIGZyb20gdGhlIFNZ
U1RFTV9TRUNPTkRBUllfQ09OVEVOVF9QQVRIIGJ5IHVwZGF0aW5nCisgICAgICAgIERZTERfVkVS
U0lPTkVEX0ZSQU1FV09SS19QQVRILgorCisgICAgICAgICogQ29uZmlndXJhdGlvbnMvQmFzZS54
Y2NvbmZpZzoKKyAgICAgICAgKiBDb25maWd1cmF0aW9ucy9XZWJLaXRTd2lmdC54Y2NvbmZpZzoK
KyAgICAgICAgKiBTY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnktcGF0aC5zaDog
QWRkZWQuCisgICAgICAgICogU2NyaXB0cy9jb3B5LXhwYy1zZXJ2aWNlcy10by1zZWNvbmRhcnkt
cGF0aC5zaDogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy91cGRhdGUtZHlsZC1lbnZpcm9ubWVu
dC1sb2FkLWNvbW1hbmQ6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHk6IEFkZGVk
LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbWFjaF9vLnB5OiBBZGRlZC4KKyAgICAgICAg
KF91dGY4X2J5dGVzX3RvX3N0cik6CisgICAgICAgIChfbWFjaF9vX2ludF9maWVsZCk6CisgICAg
ICAgIChfbWFjaF9vX2ludF9maWVsZC5fZ2V0X21hY2hfb19pbnRfZmllbGQpOgorICAgICAgICAo
X21hY2hfb19pbnRfZmllbGQuX3NldF9tYWNoX29faW50X2ZpZWxkKToKKyAgICAgICAgKF9tYWNo
X29faW50X2ZpZWxkLl9zZXRfbWFjaF9vX2ludF9maWVsZC5mdW5jKToKKyAgICAgICAgKF9tYWNo
X29fY2hhcmFycmF5X2ZpZWxkKToKKyAgICAgICAgKF9tYWNoX29fY2hhcmFycmF5X2ZpZWxkLl9n
ZXRfbWFjaF9vX2NoYXJhcnJheV9maWVsZCk6CisgICAgICAgIChfbWFjaF9vX2NoYXJhcnJheV9m
aWVsZC5fc2V0X21hY2hfb19jaGFyYXJyYXlfZmllbGQpOgorICAgICAgICAoX21hY2hfb19jaGFy
YXJyYXlfZmllbGQuX3NldF9tYWNoX29fY2hhcmFycmF5X2ZpZWxkLmZ1bmMpOgorICAgICAgICAo
X21hY2hfb192YXJjaGFyX2ZpZWxkKToKKyAgICAgICAgKF9tYWNoX29fdmFyY2hhcl9maWVsZC5f
Z2V0X21hY2hfb192YXJjaGFyX2ZpZWxkKToKKyAgICAgICAgKF9tYWNoX29fdmFyY2hhcl9maWVs
ZC5fc2V0X21hY2hfb192YXJjaGFyX2ZpZWxkKToKKyAgICAgICAgKF9tYWNoX29fdmFyY2hhcl9m
aWVsZC5fc2V0X21hY2hfb192YXJjaGFyX2ZpZWxkLmZ1bmMpOgorICAgICAgICAoTWFjaE9Db21t
YW5kKToKKyAgICAgICAgKE1hY2hPQ29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChNYWNoT1Nv
dXJjZVZlcnNpb25Db21tYW5kKToKKyAgICAgICAgKE1hY2hPU291cmNlVmVyc2lvbkNvbW1hbmQu
dmVyc2lvbl9zdHIpOgorICAgICAgICAoTWFjaE9TZWN0aW9uKToKKyAgICAgICAgKE1hY2hPU2Vj
dGlvbi5fX2luaXRfXyk6CisgICAgICAgIChNYWNoT1NlZ21lbnRDb21tYW5kKToKKyAgICAgICAg
KE1hY2hPU2VjdGlvbjMyKToKKyAgICAgICAgKE1hY2hPU2VnbWVudDMyQ29tbWFuZCk6CisgICAg
ICAgIChNYWNoT1NlZ21lbnQzMkNvbW1hbmQuX19pbml0X18pOgorICAgICAgICAoTWFjaE9TZWN0
aW9uNjQpOgorICAgICAgICAoTWFjaE9TZWdtZW50NjRDb21tYW5kKToKKyAgICAgICAgKE1hY2hP
U2VnbWVudDY0Q29tbWFuZC5fX2luaXRfXyk6CisgICAgICAgIChNYWNoT0xvYWREeWxpYkNvbW1h
bmQpOgorICAgICAgICAoTWFjaE9Mb2FkRHlsaWJDb21tYW5kLl92ZXJzaW9uX3N0cik6CisgICAg
ICAgIChNYWNoT0xvYWREeWxpYkNvbW1hbmQuY29tcGF0aWJpbGl0eV92ZXJzaW9uX3N0cik6Cisg
ICAgICAgIChNYWNoT0xvYWREeWxpYkNvbW1hbmQuY3VycmVudF92ZXJzaW9uX3N0cik6CisgICAg
ICAgIChNYWNoT0R5bGRFbnZpcm9ubWVudENvbW1hbmQpOgorICAgICAgICAoTWFjaE9EeWxkRW52
aXJvbm1lbnRDb21tYW5kLnZhcmlhYmxlKToKKyAgICAgICAgKE1hY2hPRHlsZEVudmlyb25tZW50
Q29tbWFuZC52YWx1ZSk6CisgICAgICAgIChNYWNoT0R5bGRFbnZpcm9ubWVudENvbW1hbmQuYnVp
bGQpOgorICAgICAgICAoTWFjaE9JRER5bGliQ29tbWFuZCk6CisgICAgICAgIChNYWNoT0hlYWRl
cik6CisgICAgICAgIChNYWNoT0hlYWRlci5fX2luaXRfXyk6CisgICAgICAgIChNYWNoT0hlYWRl
ci51c2VkX2hlYWRlcl9zaXplKToKKyAgICAgICAgKE1hY2hPSGVhZGVyLnRvdGFsX2hlYWRlcl9z
aXplKToKKyAgICAgICAgKE1hY2hPSGVhZGVyLmF2YWlsYWJsZV9oZWFkZXJfc2l6ZSk6CisgICAg
ICAgIChNYWNoT0hlYWRlci5hcmNoaXRlY3R1cmVfbmFtZSk6CisgICAgICAgIChNYWNoT0hlYWRl
ci5pZF9jb21tYW5kKToKKyAgICAgICAgKE1hY2hPSGVhZGVyLmR5bGRfZW52X2NvbW1hbmRzKToK
KyAgICAgICAgKE1hY2hPSGVhZGVyLmR5bGRfdmVyc2lvbmVkX2ZyYW1ld29ya19wYXRocyk6Cisg
ICAgICAgIChNYWNoT0hlYWRlci5maWx0ZXJfY29tbWFuZHMpOgorICAgICAgICAoTWFjaE9IZWFk
ZXIudXBkYXRlX2ZpbGUpOgorICAgICAgICAoTWFjaE9IZWFkZXIucGFyc2VfY29tbWFuZCk6Cisg
ICAgICAgIChNYWNoT0hlYWRlcjMyTEUpOgorICAgICAgICAoTWFjaE9IZWFkZXIzMkxFLl9faW5p
dF9fKToKKyAgICAgICAgKE1hY2hPSGVhZGVyNjRMRSk6CisgICAgICAgIChNYWNoT0hlYWRlcjY0
TEUuX19pbml0X18pOgorICAgICAgICAoTWFjaE9GaWxlKToKKyAgICAgICAgKE1hY2hPRmlsZS5f
X2luaXRfXyk6CisgICAgICAgIChpc19tYWNob19ieXRlcyk6CisgICAgICAgIChpc19tYWNob19m
aWxlKToKKyAgICAgICAgKGVudW1lcmF0ZV9tYWNob19maWxlcyk6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKIDIwMjItMDMtMDIgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBDb21wbGV0aW9uIGhh
bmRsZXIgaXMgbm90IGNhbGxlZCB3aGVuIFdlYkF1dGhuIGludm9rZWQgd2l0aG91dCBwcm9wZXIg
ZW50aXRsZW1lbnRzCkluZGV4OiBTb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNj
b25maWcKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy9CYXNlLnhj
Y29uZmlnCShyZXZpc2lvbiAyOTA3NTcpCisrKyBTb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25z
L0Jhc2UueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMxLDYgKzMxLDkgQEAgVVNFX0lOVEVS
TkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CiAKIElOU1RBTExfUEFUSF9Q
UkVGSVggPSAkKElOU1RBTExfUEFUSF9QUkVGSVhfJChVU0VfU1lTVEVNX0NPTlRFTlRfUEFUSCkp
OwogSU5TVEFMTF9QQVRIX1BSRUZJWF9ZRVMgPSAkKFNZU1RFTV9DT05URU5UX1BBVEgpOworU0VD
T05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZID0gJChTWVNURU1fU0VDT05EQVJZX0NP
TlRFTlRfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZhcmkK
K0NPUFlfU1RBR0VEX0ZSQU1FV09SS1NfVE9fU0VDT05EQVJZX1BBVEggPSBOTworQ09QWV9TVEFH
RURfRlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSFtzZGs9bWFjb3MqXSA9ICQoVVNFX1NZU1RF
TV9DT05URU5UX1BBVEgpCiAKIEFMV0FZU19TRUFSQ0hfVVNFUl9QQVRIUyA9IE5POwogCkluZGV4
OiBTb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL1dlYktpdFN3aWZ0LnhjY29uZmlnCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2ViS2l0U3dpZnQueGNjb25m
aWcJKHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvV2Vi
S2l0U3dpZnQueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDcgQEAgUFJPRFVD
VF9OQU1FID0gbGliV2ViS2l0U3dpZnQ7CiBTV0lGVF9PQkpDX0lOVEVSRkFDRV9IRUFERVJfTkFN
RSA9IFdlYktpdFN3aWZ0LVN3aWZ0LmgKIAogSU5TVEFMTF9QQVRIID0gJChJTlNUQUxMX1BBVEhf
UFJFRklYKSQoV0VCS0lUX0ZSQU1FV09SS1NfRElSKS9XZWJLaXQuZnJhbWV3b3JrLyQoV0tfRlJB
TUVXT1JLX1ZFUlNJT05fUFJFRklYKUZyYW1ld29ya3M7CitTVEFHRURfRFlMSUJfRlJBTUVXT1JL
X1BBVEg9L1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9GcmFtZXdvcmtzCiAKIERZTElCX0lO
U1RBTExfTkFNRV9CQVNFID0gJChXRUJLSVRfRlJBTUVXT1JLU19ESVIpOwogCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vj
b25kYXJ5LXBhdGguc2gJKG5vbmV4aXN0ZW50KQorKysgU291cmNlL1dlYktpdC9TY3JpcHRzL2Nv
cHktZnJhbWV3b3Jrcy10by1zZWNvbmRhcnktcGF0aC5zaAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDYyIEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2lmIFtbICIke0RFUExPWU1FTlRfTE9D
QVRJT059IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVjaG8gImVycm9yOiAkKGJhc2VuYW1lICQw
KSBzaG91bGQgb25seSBiZSBydW4gZm9yIGRlcGxveW1lbnQtc3R5bGUgKFwicHJvZHVjdGlvblwi
IC8gXCJub24tZW5naW5lZXJpbmdcIikgYnVpbGRzLiIKKyAgICBleGl0IDEKK2ZpCisKK2lmIFtb
ICIke1VTRV9TWVNURU1fQ09OVEVOVF9QQVRIfSIgIT0gIllFUyIgfHwgIiR7Q09QWV9TVEFHRURf
RlJBTUVXT1JLU19UT19TRUNPTkRBUllfUEFUSH0iICE9ICJZRVMiIF1dOyB0aGVuCisgICAgZWNo
byAiU2tpcHBpbmcgY29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29uZGFyeSBjb250ZW50IHBhdGgu
IgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgIiR7QUNUSU9OfSIgPT0gImluc3RhbGxhcGkiIHx8
ICIke0FDVElPTn0iID09ICJpbnN0YWxsaGRycyIgXV07IHRoZW4KKyAgICBlY2hvICJTa2lwcGlu
ZyBjb3B5aW5nIGZyYW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCBmb3IgaW5zdGFs
bGFwaSBvciBpbnN0YWxsaGRycyBhY3Rpb24uIgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgLXog
IiR7RlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgJiYgLXogIiR7RFlMSUJT
X1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEh9IiBdXTsgdGhlbgorICAgIGVjaG8gIndhcm5pbmc6
IE5laXRoZXIgRlJBTUVXT1JLU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIG9yIERZTElCU19U
T19DT1BZX1RPX1NFQ09OREFSWV9QQVRIIGFyZSBzZXQuIgorZmkKKworaWYgW1sgLXogIiR7U0VD
T05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAgICBlY2hvICJl
cnJvcjogU0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZIGlzIG5vdCBzZXQuIgor
ICAgIGV4aXQgMQorZmkKKworZnVuY3Rpb24gY29weV9wcm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2Zy
YW1ld29ya19kaXJlY3RvcnkKK3sKKyAgICBQUk9EVUNUX0NPTVBPTkVOVD0kMQorCisgICAgIyBJ
biBkZXBsb3ltZW50IGJ1aWxkcywgQlVJTFRfUFJPRFVDVFNfRElSIGRvZXNuJ3QgcG9pbnQgdG8g
dGhlIGFjdHVhbCBsb2NhdGlvbiBvZiBhbnkgcHJvZHVjdHMsCisgICAgIyBidXQgdG8gYSBzaW5n
bGUgZm9sZGVyIG9mIHN5bWxpbmtzIHRvIGFsbCBidWlsdCBwcm9kdWN0cywgcmVnYXJkbGVzcyBv
ZiB3aGV0aGVyIHRoZXkgYXJlIGFjdHVhbGx5CisgICAgIyBiZWluZyBpbnN0YWxsZWQuIFdlIG5l
ZWQgdG8gY29weSB0aGUgYWN0dWFsIHByb2R1Y3RzIHRvIHRoZSBzZWNvbmRhcnkgY29udGVudCBw
YXRoLCAqbm90KiBqdXN0IGEgc3ltbGluay4KKyAgICBTT1VSQ0VfUFJPRFVDVF9QQVRIPSIkKHJl
YWRsaW5rICIke0JVSUxUX1BST0RVQ1RTX0RJUn0vJHtQUk9EVUNUX0NPTVBPTkVOVH0iKSIKKwor
ICAgIGVjaG8gIkNvcHlpbmcgJHtTT1VSQ0VfUFJPRFVDVF9QQVRIfSB0byAke0RFU1RJTkFUSU9O
X0ZSQU1FV09SS19ESVJFQ1RPUll9IgorICAgIHJzeW5jIC1hRSAiJHtTT1VSQ0VfUFJPRFVDVF9Q
QVRIfSIgIiR7REVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVDVE9SWX0iCit9CisKK2lmIFtbICEg
LXogIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIgXV07IHRoZW4KKyAg
ICBERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRBUllf
U1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IgorICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9O
X0ZSQU1FV09SS19ESVJFQ1RPUll9IgorCisgICAgZm9yIEZSQU1FV09SS19OQU1FIGluICQoZWNo
byAke0ZSQU1FV09SS1NfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0gfCB0ciAnICcgJ1xuJykK
KyAgICBkbworICAgICAgICBGUkFNRVdPUktfQlVORExFX05BTUU9IiR7RlJBTUVXT1JLX05BTUV9
LmZyYW1ld29yayIKKworICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRpb25fZnJhbWV3
b3JrX2RpcmVjdG9yeSAke0ZSQU1FV09SS19CVU5ETEVfTkFNRX0KKyAgICBkb25lCitmaQorCitp
ZiBbWyAhIC16ICIke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIgXV07IHRoZW4K
KyAgICBERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZPSIke0RTVFJPT1R9JHtTRUNPTkRB
UllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9JHtTVEFHRURfRFlMSUJfRlJBTUVXT1JLX1BB
VEh9IgorICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX0ZSQU1FV09SS19ESVJFQ1RPUll9Igor
CisgICAgZm9yIERZTElCIGluICQoZWNobyAke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9Q
QVRIfSB8IHRyICcgJyAnXG4nKQorICAgIGRvCisgICAgICAgIGNvcHlfcHJvZHVjdF90b19kZXN0
aW5hdGlvbl9mcmFtZXdvcmtfZGlyZWN0b3J5ICR7RFlMSUJ9CisgICAgZG9uZQorZmkKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8t
c2Vjb25kYXJ5LXBhdGguc2gKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAs
MCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvY29weS14cGMtc2VydmljZXMtdG8tc2Vjb25kYXJ5LXBhdGguc2gKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TY3JpcHRzL2NvcHkteHBjLXNlcnZpY2VzLXRvLXNl
Y29uZGFyeS1wYXRoLnNoCShub25leGlzdGVudCkKKysrIFNvdXJjZS9XZWJLaXQvU2NyaXB0cy9j
b3B5LXhwYy1zZXJ2aWNlcy10by1zZWNvbmRhcnktcGF0aC5zaAkod29ya2luZyBjb3B5KQpAQCAt
MCwwICsxLDYzIEBACisjIS9iaW4vc2gKKworc2V0IC1lCisKK2VjaG8gIiMjIyMgUnVubmluZyBj
b3B5LXhwYy1zZXJ2aWNlcy10by1zZWNvbmRhcnktcGF0aC5zaCBmb3IgJHtQUk9EVUNUX05BTUV9
IgorZWNobyAiIyMjIyBYUENfQlVORExFU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIID0gJHtY
UENfQlVORExFU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIKK2VjaG8gIiMjIyMgU0VDT05E
QVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZID0gJHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1F
V09SS19ESVJFQ1RPUll9IgorCitpZiBbWyAiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfSIgIT0gIllF
UyIgXV07IHRoZW4KKyAgICBlY2hvICJlcnJvcjogJChiYXNlbmFtZSAkMCkgc2hvdWxkIG9ubHkg
YmUgcnVuIGZvciBkZXBsb3ltZW50LXN0eWxlIChcInByb2R1Y3Rpb25cIiAvIFwibm9uLWVuZ2lu
ZWVyaW5nXCIpIGJ1aWxkcy4iCisgICAgZXhpdCAxCitmaQorCitpZiBbWyAiJHtVU0VfU1lTVEVN
X0NPTlRFTlRfUEFUSH0iICE9ICJZRVMiIHx8ICIke0NPUFlfU1RBR0VEX0ZSQU1FV09SS1NfVE9f
U0VDT05EQVJZX1BBVEh9IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVjaG8gIlNraXBwaW5nIGNv
cHlpbmcgWFBDIHNlcnZpY2VzIHRvIHNlY29uZGFyeSBjb250ZW50IHBhdGguIgorICAgIGV4aXQg
MAorZmkKKworaWYgW1sgIiR7QUNUSU9OfSIgPT0gImluc3RhbGxhcGkiIHx8ICIke0FDVElPTn0i
ID09ICJpbnN0YWxsaGRycyIgXV07IHRoZW4KKyAgICBlY2hvICJTa2lwcGluZyBjb3B5aW5nIGZy
YW1ld29ya3MgdG8gc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCBmb3IgaW5zdGFsbGFwaSBvciBpbnN0
YWxsaGRycyBhY3Rpb24uIgorICAgIGV4aXQgMAorZmkKKworaWYgW1sgLXogIiR7WFBDX0JVTkRM
RVNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0iIF1dOyB0aGVuCisgICAgZWNobyAid2Fybmlu
ZzogWFBDX0JVTkRMRVNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSCBpcyBub3Qgc2V0LiIKK2Zp
CisKK2lmIFtbIC16ICIke1hQQ19CVU5ETEVfSU5TVEFMTF9QQVRIX0lOX1NFQ09OREFSWV9QQVRI
fSIgXV07IHRoZW4KKyAgICBlY2hvICJlcnJvcjogWFBDX0JVTkRMRV9JTlNUQUxMX1BBVEhfSU5f
U0VDT05EQVJZX1BBVEggaXMgbm90IHNldC4iCisgICAgZXhpdCAxCitmaQorCitpZiBbWyAteiAi
JHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUll9IiBdXTsgdGhlbgorICAgIGVj
aG8gImVycm9yOiBTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19ESVJFQ1RPUlkgaXMgbm90IHNl
dC4iCisgICAgZXhpdCAxCitmaQorCitVUERBVEVfRFlMRF9MT0FEX0NPTU1BTkQ9IiQoZGlybmFt
ZSAkMCkvdXBkYXRlLWR5bGQtZW52aXJvbm1lbnQtbG9hZC1jb21tYW5kIgorCitmb3IgWFBDX0JV
TkRMRV9OQU1FIGluICQoZWNobyAke1hQQ19CVU5ETEVTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BB
VEh9IHwgdHIgJyAnICdcbicpCitkbworICAgICMgSW4gZGVwbG95bWVudCBidWlsZHMsIEJVSUxU
X1BST0RVQ1RTX0RJUiBkb2Vzbid0IHBvaW50IHRvIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgYW55
IHByb2R1Y3RzLAorICAgICMgYnV0IHRvIGEgc2luZ2xlIGZvbGRlciBvZiBzeW1saW5rcyB0byBh
bGwgYnVpbHQgcHJvZHVjdHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGFyZSBhY3R1YWxs
eQorICAgICMgYmVpbmcgaW5zdGFsbGVkLiBXZSBuZWVkIHRvIGNvcHkgdGhlIGFjdHVhbCBwcm9k
dWN0cyB0byB0aGUgc2Vjb25kYXJ5IHBhdGgsICpub3QqIGp1c3QgYSBzeW1saW5rLgorICAgIFNP
VVJDRV9CVU5ETEVfUEFUSD0iJChyZWFkbGluayAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9LyR7WFBD
X0JVTkRMRV9OQU1FfSIpIgorCisgICAgREVTVElOQVRJT05fWFBDX0JVTkRMRV9ESVJFQ1RPUlk9
IiR7RFNUUk9PVH0ke1hQQ19CVU5ETEVfSU5TVEFMTF9QQVRIX0lOX1NFQ09OREFSWV9QQVRIfSIK
KworICAgIG1rZGlyIC1wICIke0RFU1RJTkFUSU9OX1hQQ19CVU5ETEVfRElSRUNUT1JZfSIKKwor
ICAgIGVjaG8gIkNvcHlpbmcgJHtTT1VSQ0VfQlVORExFX1BBVEh9IHRvICR7REVTVElOQVRJT05f
WFBDX0JVTkRMRV9ESVJFQ1RPUll9IgorICAgIHJzeW5jIC1hRSAiJHtTT1VSQ0VfQlVORExFX1BB
VEh9IiAiJHtERVNUSU5BVElPTl9YUENfQlVORExFX0RJUkVDVE9SWX0iCisKKyAgICBERVNUSU5B
VElPTl9YUENfQlVORExFX1BBVEg9IiR7REVTVElOQVRJT05fWFBDX0JVTkRMRV9ESVJFQ1RPUll9
LyR7WFBDX0JVTkRMRV9OQU1FfSIKKyAgICBYUENfRVhFQ1VUQUJMRV9QQVRIPSIke0RFU1RJTkFU
SU9OX1hQQ19CVU5ETEVfUEFUSH0vQ29udGVudHMvTWFjT1MvJChiYXNlbmFtZSAiJHtERVNUSU5B
VElPTl9YUENfQlVORExFX1BBVEh9IiB8IHNlZCAtRSAicy9cXC5bXlwuXSskLy8iKSIKKworICAg
IGVjaG8gIlVwZGF0aW5nIERZTEQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluICR7WFBDX0VYRUNV
VEFCTEVfUEFUSH0iCisgICAgIiR7VVBEQVRFX0RZTERfTE9BRF9DT01NQU5EfSIgIiR7WFBDX0VY
RUNVVEFCTEVfUEFUSH0iICJEWUxEX1ZFUlNJT05FRF9GUkFNRVdPUktfUEFUSD0ke1NFQ09OREFS
WV9TVEFHRURfRlJBTUVXT1JLX0RJUkVDVE9SWX0iCisKKyAgICBlY2hvICJSZS1zaWduaW5nICR7
REVTVElOQVRJT05fWFBDX0JVTkRMRV9QQVRIfSIKKyAgICBjb2Rlc2lnbiAtLXNpZ24gIiR7Q09E
RV9TSUdOX0lERU5USVRZfSIgLS1mb3JjZSAtLXByZXNlcnZlLW1ldGFkYXRhPWVudGl0bGVtZW50
cyxmbGFncyxpZGVudGlmaWVyLHJlcXVpcmVtZW50cyxydW50aW1lICIke0RFU1RJTkFUSU9OX1hQ
Q19CVU5ETEVfUEFUSH0iCisKK2RvbmUKClByb3BlcnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJL
aXQvU2NyaXB0cy9jb3B5LXhwYy1zZXJ2aWNlcy10by1zZWNvbmRhcnktcGF0aC5zaApfX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQojIyAtMCwwICsxICMjCisqClwgTm8gbmV3bGluZSBh
dCBlbmQgb2YgcHJvcGVydHkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy91cGRhdGUtZHls
ZC1lbnZpcm9ubWVudC1sb2FkLWNvbW1hbmQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9T
Y3JpcHRzL3VwZGF0ZS1keWxkLWVudmlyb25tZW50LWxvYWQtY29tbWFuZAkobm9uZXhpc3RlbnQp
CisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvdXBkYXRlLWR5bGQtZW52aXJvbm1lbnQtbG9hZC1j
b21tYW5kCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjkgQEAKKyMhL3Vzci9iaW4vZW52IHB5
dGhvbjMKKyMgZW5jb2Rpbmc6IHV0Zi04CisKK2ltcG9ydCBhcmdwYXJzZQoraW1wb3J0IHN5cwor
ZnJvbSB0eXBpbmcgaW1wb3J0IEFueSwgRGljdCwgSXRlcmFibGUsIExpc3QsIFR1cGxlCitmcm9t
IHdlYmtpdHB5IGltcG9ydCBtYWNoX28KKworZGVmIG1haW4oYXJnczogTGlzdFtzdHJdKToKKyAg
ICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgiYmluYXJ5IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJ2YXJpYWJsZXMiLCBuYXJn
cz0iKyIpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3MpCisKKyAgICB3aXRo
IG9wZW4ob3B0aW9ucy5iaW5hcnksICJyK2IiKSBhcyBiaW5hcnlfZmlsZToKKyAgICAgICAgbWFj
aF9vX2ZpbGUgPSBtYWNoX28uTWFjaE9GaWxlKGJpbmFyeV9maWxlKQorCisgICAgICAgIGZvciBt
YWNoX29faGVhZGVyIGluIG1hY2hfb19maWxlLmhlYWRlcnM6CisgICAgICAgICAgICBtYWNoX29f
aGVhZGVyLmZpbHRlcl9jb21tYW5kcyhsYW1iZGEgY29tbWFuZDogbm90IGlzaW5zdGFuY2UoY29t
bWFuZCwgbWFjaF9vLk1hY2hPRHlsZEVudmlyb25tZW50Q29tbWFuZCkpCisKKyAgICAgICAgICAg
IGZvciB2YXJpYWJsZV9wYWlyIGluIG9wdGlvbnMudmFyaWFibGVzOgorICAgICAgICAgICAgICAg
IG1hY2hfb19oZWFkZXIuY29tbWFuZHMuYXBwZW5kKG1hY2hfby5NYWNoT0R5bGRFbnZpcm9ubWVu
dENvbW1hbmQuYnVpbGQodmFyaWFibGVfcGFpcikpCisKKyAgICAgICAgICAgIG1hY2hfb19oZWFk
ZXIudXBkYXRlX2ZpbGUoYmluYXJ5X2ZpbGUpCisKKyAgICByZXR1cm4gMAorCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHN5cy5leGl0KG1haW4oc3lzLmFyZ3ZbMTpdKSkKClByb3Bl
cnR5IGNoYW5nZXMgb246IFNvdXJjZS9XZWJLaXQvU2NyaXB0cy91cGRhdGUtZHlsZC1lbnZpcm9u
bWVudC1sb2FkLWNvbW1hbmQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKIyMgLTAs
MCArMSAjIworKgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIHByb3BlcnR5CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1NjcmlwdHMvd2Via2l0cHkvbWFjaF9vLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXRweS9tYWNoX28ucHkJKG5vbmV4aXN0ZW50KQorKysgU291cmNl
L1dlYktpdC9TY3JpcHRzL3dlYmtpdHB5L21hY2hfby5weQkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDU0NiBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIyBlbmNvZGluZzogdXRmLTgKKwor
aW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzdHJ1Y3QKKworZnJvbSB0eXBpbmcgaW1wb3J0
IEFueSwgRGljdCwgSXRlcmFibGUsIExpc3QsIFR1cGxlLCBDYWxsYWJsZQorZnJvbSBpbyBpbXBv
cnQgQnVmZmVyZWRSZWFkZXIsIEJ1ZmZlcmVkUmFuZG9tLCBCeXRlc0lPLCBTRUVLX0NVUgorCisK
K01IX09CSkVDVCA9IDEKK01IX0VYRUNVVEUgPSAyCitNSF9GVk1MSUIgPSAzCitNSF9DT1JFID0g
NAorTUhfUFJFTE9BRCA9IDUKK01IX0RZTElCID0gNgorTUhfRFlMSU5LRVIgPSA3CitNSF9CVU5E
TEUgPSA4CisKK01BQ0hPXzMyTEVfU0lHTkFUVVJFID0gYidceGNlXHhmYVx4ZWRceGZlJworTUFD
SE9fNjRMRV9TSUdOQVRVUkUgPSBiJ1x4Y2ZceGZhXHhlZFx4ZmUnCitNQUNIT19GQVRfU0lHTkFU
VVJFID0gYidceGNhXHhmZVx4YmFceGJlJworCitMQ19SRVFfRFlMRCA9IDB4ODAwMDAwMDAKKwor
TENfU0VHTUVOVCA9IDEKK0xDX0xPQURfRFlMSUIgPSAxMgorTENfSURfRFlMSUIgPSAxMworTENf
TE9BRF9XRUFLX0RZTElCID0gMjQgfCBMQ19SRVFfRFlMRAorTENfU0VHTUVOVF82NCA9IDI1CitM
Q19DT0RFX1NJR05BVFVSRSA9IDI5CitMQ19EWUxEX0VOVklST05NRU5UID0gMzkKK0xDX1NPVVJD
RV9WRVJTSU9OID0gNDIKKworU19aRVJPRklMTCA9IDEKK1NfR0JfWkVST0ZJTEwgPSAxMgorU19U
SFJFQURfTE9DQUxfWkVST0ZJTEwgPSAxOAorCitDUFVfQVJDSF9NQVNLID0gMHhmZjAwMDAwMAor
Q1BVX0FSQ0hfQUJJNjQgPSAweDAxMDAwMDAwCisKK0NQVV9UWVBFX1g4NiA9IDcKK0NQVV9UWVBF
X1g4Nl82NCA9IENQVV9UWVBFX1g4NiB8IENQVV9BUkNIX0FCSTY0CitDUFVfVFlQRV9BUk0gPSAx
MgorQ1BVX1RZUEVfQVJNNjQgPSBDUFVfVFlQRV9BUk0gfCBDUFVfQVJDSF9BQkk2NAorCitDUFVf
U1VCVFlQRV9BUk02NEUgPSAyCisKK0RZTERfU0VHTUVOVDMyX1NUUlVDVF9TSVpFID0gNTYKK0RZ
TERfU0VDVElPTjMyX1NUUlVDVF9TSVpFID0gNzYKKworRFlMRF9TRUdNRU5UNjRfU1RSVUNUX1NJ
WkUgPSA3MgorRFlMRF9TRUNUSU9ONjRfU1RSVUNUX1NJWkUgPSA4NgorCitfY3B1X25hbWVzOiBE
aWN0W2ludCwgc3RyXSA9IHsKKyAgICBDUFVfVFlQRV9BUk06ICJhcm0iLAorICAgIENQVV9UWVBF
X0FSTTY0OiAiYXJtNjQiLAorICAgIENQVV9UWVBFX1g4NjogImkzODYiLAorICAgIENQVV9UWVBF
X1g4Nl82NDogIng4Nl82NCIsCit9CisKK19hcmNoX3N1ZmZpeDogRGljdFtpbnQsIHN0cl0gPSB7
CisgICAgQ1BVX1NVQlRZUEVfQVJNNjRFOiAiZSIKK30KKworX2NvbW1hbmRfbWFwOiBEaWN0W2lu
dCwgQW55XSA9IE5vbmUKKworCitkZWYgX3V0ZjhfYnl0ZXNfdG9fc3RyKGRhdGE6IGJ5dGVzKToK
KyAgICByZXR1cm4gZGF0YS5kZWNvZGUoJ3V0Zi04Jykuc3BsaXQoIlx4MDAiKVswXQorCisKK2Rl
ZiBfbWFjaF9vX2ludF9maWVsZChvZmZzZXQ6IGludCwgbGVuZ3RoOiBpbnQgPSA0KToKKyAgICBk
ZWYgX2dldF9tYWNoX29faW50X2ZpZWxkKG9mZnNldDogaW50LCBsZW5ndGg6IGludCA9IDQpOgor
ICAgICAgICByZXR1cm4gbGFtYmRhIHNlbGY6IGludC5mcm9tX2J5dGVzKHNlbGYuZGF0YVtvZmZz
ZXQ6KG9mZnNldCArIGxlbmd0aCldLCBieXRlb3JkZXI9ImxpdHRsZSIsIHNpZ25lZD1GYWxzZSkK
KworICAgIGRlZiBfc2V0X21hY2hfb19pbnRfZmllbGQob2Zmc2V0OiBpbnQsIGxlbmd0aDogaW50
ID0gNCk6CisgICAgICAgIGRlZiBmdW5jKHNlbGYsIHZhbHVlOiBpbnQpOgorICAgICAgICAgICAg
c2VsZi5kYXRhW29mZnNldDoob2Zmc2V0ICsgbGVuZ3RoKV0gPSB2YWx1ZS50b19ieXRlcyhsZW5n
dGgsIGJ5dGVvcmRlcj0ibGl0dGxlIiwgc2lnbmVkPUZhbHNlKQorICAgICAgICByZXR1cm4gZnVu
YworCisgICAgcmV0dXJuIHByb3BlcnR5KF9nZXRfbWFjaF9vX2ludF9maWVsZChvZmZzZXQsIGxl
bmd0aCksIF9zZXRfbWFjaF9vX2ludF9maWVsZChvZmZzZXQsIGxlbmd0aCkpCisKKworZGVmIF9t
YWNoX29fY2hhcmFycmF5X2ZpZWxkKG9mZnNldDogaW50LCBsZW5ndGg6IGludCk6CisgICAgZGVm
IF9nZXRfbWFjaF9vX2NoYXJhcnJheV9maWVsZChvZmZzZXQ6IGludCwgbGVuZ3RoOiBpbnQpOgor
ICAgICAgICByZXR1cm4gbGFtYmRhIHNlbGY6IF91dGY4X2J5dGVzX3RvX3N0cihzZWxmLmRhdGFb
b2Zmc2V0OihvZmZzZXQgKyBsZW5ndGgpXSkKKworICAgIGRlZiBfc2V0X21hY2hfb19jaGFyYXJy
YXlfZmllbGQob2Zmc2V0OiBpbnQsIGxlbmd0aDogaW50KToKKyAgICAgICAgZGVmIGZ1bmMoc2Vs
ZiwgdmFsdWU6IHN0cik6CisgICAgICAgICAgICBlbmNvZGVkX3N0cmluZyA9IHZhbHVlLmVuY29k
ZSgidXRmLTgiKQorCisgICAgICAgICAgICBpZiBsZW4oZW5jb2RlZF9zdHJpbmcpID4gbGVuZ3Ro
OgorICAgICAgICAgICAgICAgIGVuY29kZWRfc3RyaW5nID0gZW5jb2RlZF9zdHJpbmdbOmxlbmd0
aF0KKyAgICAgICAgICAgIGVsaWYgbGVuKGVuY29kZWRfc3RyaW5nKSA8IGxlbmd0aDoKKyAgICAg
ICAgICAgICAgICBlbmNvZGVkX3N0cmluZyArPSBieXRlYXJyYXkobGVuZ3RoIC0gbGVuKGVuY29k
ZWRfc3RyaW5nKSkKKworICAgICAgICAgICAgc2VsZi5kYXRhW29mZnNldDoob2Zmc2V0ICsgbGVu
Z3RoKV0gPSBlbmNvZGVkX3N0cmluZworICAgICAgICByZXR1cm4gZnVuYworCisgICAgcmV0dXJu
IHByb3BlcnR5KF9nZXRfbWFjaF9vX2NoYXJhcnJheV9maWVsZChvZmZzZXQsIGxlbmd0aCksIF9z
ZXRfbWFjaF9vX2NoYXJhcnJheV9maWVsZChvZmZzZXQsIGxlbmd0aCkpCisKKworZGVmIF9tYWNo
X29fdmFyY2hhcl9maWVsZChvZmZzZXRfcHJvcGVydHlfbmFtZTogc3RyKToKKyAgICBkZWYgX2dl
dF9tYWNoX29fdmFyY2hhcl9maWVsZChvZmZzZXRfcHJvcGVydHlfbmFtZTogc3RyKToKKyAgICAg
ICAgcmV0dXJuIGxhbWJkYSBzZWxmOiBfdXRmOF9ieXRlc190b19zdHIoc2VsZi5kYXRhW2dldGF0
dHIoc2VsZiwgb2Zmc2V0X3Byb3BlcnR5X25hbWUpOl0pCisKKyAgICBkZWYgX3NldF9tYWNoX29f
dmFyY2hhcl9maWVsZChvZmZzZXRfcHJvcGVydHlfbmFtZTogc3RyKToKKyAgICAgICAgZGVmIGZ1
bmMoc2VsZiwgdmFsdWU6IHN0cik6CisgICAgICAgICAgICBlbmNvZGVkX3N0cmluZyA9IHZhbHVl
LmVuY29kZSgidXRmLTgiKQorICAgICAgICAgICAgc2VsZi5kYXRhW2dldGF0dHIoc2VsZiwgb2Zm
c2V0X3Byb3BlcnR5X25hbWUpOl0gPSBlbmNvZGVkX3N0cmluZworCisgICAgICAgICAgICAjIE1B
Q0gtTyBjb21tYW5kcyBuZWVkcyB0byBiZSBtZW1vcnktYWxpZ25lZC4KKyAgICAgICAgICAgIGlm
IChsZW4oc2VsZi5kYXRhKSAlIDgpICE9IDA6CisgICAgICAgICAgICAgICAgc2VsZi5kYXRhICs9
IGJ5dGVhcnJheSg4IC0gKGxlbihzZWxmLmRhdGEpICUgOCkpCisKKyAgICAgICAgICAgIHNlbGYu
Y29tbWFuZF9zaXplID0gbGVuKHNlbGYuZGF0YSkKKyAgICAgICAgcmV0dXJuIGZ1bmMKKworICAg
IHJldHVybiBwcm9wZXJ0eShfZ2V0X21hY2hfb192YXJjaGFyX2ZpZWxkKG9mZnNldF9wcm9wZXJ0
eV9uYW1lKSwgX3NldF9tYWNoX29fdmFyY2hhcl9maWVsZChvZmZzZXRfcHJvcGVydHlfbmFtZSkp
CisKKworY2xhc3MgTWFjaE9Db21tYW5kOgorICAgIGRhdGE6IGJ5dGVhcnJheQorICAgIGNvbW1h
bmQ6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDApCisgICAgY29tbWFuZF9zaXplOiBpbnQgPSBf
bWFjaF9vX2ludF9maWVsZCg0KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGE6IGJ5dGVz
KToKKyAgICAgICAgc2VsZi5kYXRhID0gYnl0ZWFycmF5KGRhdGEpCisKKworY2xhc3MgTWFjaE9T
b3VyY2VWZXJzaW9uQ29tbWFuZChNYWNoT0NvbW1hbmQpOgorICAgIHZlcnNpb246IGludCA9IF9t
YWNoX29faW50X2ZpZWxkKDgsIDgpCisKKyAgICBkZWYgdmVyc2lvbl9zdHIoc2VsZikgLT4gc3Ry
OgorICAgICAgICByZXR1cm4gZiJ7KHNlbGYudmVyc2lvbiA+PiA0MCkgJiAweEZGRkZGRn0ueyhz
ZWxmLnZlcnNpb24gPj4gMzApICYgMHgzRkZ9Lnsoc2VsZi52ZXJzaW9uID4+IDIwKSAmIDB4M0ZG
fS57KHNlbGYudmVyc2lvbiA+PiAxMCkgJiAweDNGRn0ue3NlbGYudmVyc2lvbiAmIDB4M0ZGfSIK
KworCitjbGFzcyBNYWNoT1NlY3Rpb246CisgICAgZGF0YTogYnl0ZWFycmF5CisgICAgc2VjdG5h
bWU6IHN0cgorICAgIHNlZ25hbWU6IHN0cgorICAgIGFkZHI6IGludAorICAgIHNpemU6IGludAor
ICAgIG9mZnNldDogaW50CisgICAgYWxpZ246IGludAorICAgIHJlbG9mZjogaW50CisgICAgbnJl
bG9jOiBpbnQKKyAgICBmbGFnczogaW50CisgICAgcmVzZXJ2ZWQxOiBpbnQKKyAgICByZXNlcnZl
ZDI6IGludAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGE6IGJ5dGVzKToKKyAgICAgICAg
c2VsZi5kYXRhID0gYnl0ZWFycmF5KGRhdGEpCisKKworY2xhc3MgTWFjaE9TZWdtZW50Q29tbWFu
ZChNYWNoT0NvbW1hbmQpOgorICAgIG5hbWU6IHN0cgorICAgIHZtYWRkcjogaW50CisgICAgdm1z
aXplOiBpbnQKKyAgICBmaWxlb2ZmOiBpbnQKKyAgICBmaWxlc2l6ZTogaW50CisgICAgbWF4cHJv
dDogaW50CisgICAgaW5pdHByb3Q6IGludAorICAgIG5zZWN0czogaW50CisgICAgZmxhZ3M6IGlu
dAorICAgIHNlY3Rpb25zOiBMaXN0W01hY2hPU2VjdGlvbl0KKworCitjbGFzcyBNYWNoT1NlY3Rp
b24zMihNYWNoT1NlY3Rpb24pOgorICAgIHNlY3RuYW1lOiBzdHIgPSBfbWFjaF9vX2NoYXJhcnJh
eV9maWVsZCg4LCAxNikKKyAgICBzZWduYW1lOiBzdHIgPSBfbWFjaF9vX2NoYXJhcnJheV9maWVs
ZCgyNCwgMTYpCisgICAgYWRkcjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNDApCisgICAgc2l6
ZTogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNDQpCisgICAgb2Zmc2V0OiBpbnQgPSBfbWFjaF9v
X2ludF9maWVsZCg0OCkKKyAgICBhbGlnbjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNTIpCisg
ICAgcmVsb2ZmOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCg1NikKKyAgICBucmVsb2M6IGludCA9
IF9tYWNoX29faW50X2ZpZWxkKDYwKQorICAgIGZsYWdzOiBpbnQgPSBfbWFjaF9vX2ludF9maWVs
ZCg2NCkKKyAgICByZXNlcnZlZDE6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDY4KQorICAgIHJl
c2VydmVkMjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNzIpCisKKworY2xhc3MgTWFjaE9TZWdt
ZW50MzJDb21tYW5kKE1hY2hPU2VnbWVudENvbW1hbmQpOgorICAgIG5hbWU6IHN0ciA9IF9tYWNo
X29fY2hhcmFycmF5X2ZpZWxkKDgsIDE2KQorICAgIHZtYWRkcjogaW50ID0gX21hY2hfb19pbnRf
ZmllbGQoMjQpCisgICAgdm1zaXplOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgyOCkKKyAgICBm
aWxlb2ZmOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgzMikKKyAgICBmaWxlc2l6ZTogaW50ID0g
X21hY2hfb19pbnRfZmllbGQoMzYpCisgICAgbWF4cHJvdDogaW50ID0gX21hY2hfb19pbnRfZmll
bGQoNDApCisgICAgaW5pdHByb3Q6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDQ0KQorICAgIG5z
ZWN0czogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNDgpCisgICAgZmxhZ3M6IGludCA9IF9tYWNo
X29faW50X2ZpZWxkKDUyKQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGE6IGJ5dGVzKToK
KyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhkYXRhKQorCisgICAgICAgIG9mZnNldCA9IERZTERf
U0VHTUVOVDMyX1NUUlVDVF9TSVpFCisgICAgICAgIHNlbGYuc2VjdGlvbnMgPSBbXQorICAgICAg
ICBmb3Igc2VjdGlvbiBpbiByYW5nZSgwLCBzZWxmLm5zZWN0cyk6CisgICAgICAgICAgICBzZWxm
LnNlY3Rpb25zLmFwcGVuZChNYWNoT1NlY3Rpb24zMihkYXRhW29mZnNldDoob2Zmc2V0ICsgRFlM
RF9TRUNUSU9OMzJfU1RSVUNUX1NJWkUpXSkpCisgICAgICAgICAgICBvZmZzZXQgKz0gRFlMRF9T
RUNUSU9OMzJfU1RSVUNUX1NJWkUKKworCitjbGFzcyBNYWNoT1NlY3Rpb242NChNYWNoT1NlY3Rp
b24pOgorICAgIHNlY3RuYW1lOiBzdHIgPSBfbWFjaF9vX2NoYXJhcnJheV9maWVsZCg4LCAxNikK
KyAgICBzZWduYW1lOiBzdHIgPSBfbWFjaF9vX2NoYXJhcnJheV9maWVsZCgyNCwgMTYpCisgICAg
YWRkcjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNDAsIDgpCisgICAgc2l6ZTogaW50ID0gX21h
Y2hfb19pbnRfZmllbGQoNDgsIDgpCisgICAgb2Zmc2V0OiBpbnQgPSBfbWFjaF9vX2ludF9maWVs
ZCg1NikKKyAgICBhbGlnbjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNjApCisgICAgcmVsb2Zm
OiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCg2NCkKKyAgICBucmVsb2M6IGludCA9IF9tYWNoX29f
aW50X2ZpZWxkKDY4KQorICAgIGZsYWdzOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCg3MikKKyAg
ICByZXNlcnZlZDE6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDc2KQorICAgIHJlc2VydmVkMjog
aW50ID0gX21hY2hfb19pbnRfZmllbGQoODApCisgICAgcmVzZXJ2ZWQzOiBpbnQgPSBfbWFjaF9v
X2ludF9maWVsZCg4NCkKKworCitjbGFzcyBNYWNoT1NlZ21lbnQ2NENvbW1hbmQoTWFjaE9TZWdt
ZW50Q29tbWFuZCk6CisgICAgbmFtZTogc3RyID0gX21hY2hfb19jaGFyYXJyYXlfZmllbGQoOCwg
MTYpCisgICAgdm1hZGRyOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgyNCwgOCkKKyAgICB2bXNp
emU6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDMyLCA4KQorICAgIGZpbGVvZmY6IGludCA9IF9t
YWNoX29faW50X2ZpZWxkKDQwLCA4KQorICAgIGZpbGVzaXplOiBpbnQgPSBfbWFjaF9vX2ludF9m
aWVsZCg0OCwgOCkKKyAgICBtYXhwcm90OiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCg1NikKKyAg
ICBpbml0cHJvdDogaW50ID0gX21hY2hfb19pbnRfZmllbGQoNjApCisgICAgbnNlY3RzOiBpbnQg
PSBfbWFjaF9vX2ludF9maWVsZCg2NCkKKyAgICBmbGFnczogaW50ID0gX21hY2hfb19pbnRfZmll
bGQoNjgpCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YTogYnl0ZXMpOgorICAgICAgICBz
dXBlcigpLl9faW5pdF9fKGRhdGEpCisKKyAgICAgICAgb2Zmc2V0ID0gRFlMRF9TRUdNRU5UNjRf
U1RSVUNUX1NJWkUKKyAgICAgICAgc2VsZi5zZWN0aW9ucyA9IFtdCisgICAgICAgIGZvciBzZWN0
aW9uIGluIHJhbmdlKDAsIHNlbGYubnNlY3RzKToKKyAgICAgICAgICAgIHNlbGYuc2VjdGlvbnMu
YXBwZW5kKE1hY2hPU2VjdGlvbjMyKGRhdGFbb2Zmc2V0OihvZmZzZXQgKyBEWUxEX1NFQ1RJT042
NF9TVFJVQ1RfU0laRSldKSkKKyAgICAgICAgICAgIG9mZnNldCArPSBEWUxEX1NFQ1RJT042NF9T
VFJVQ1RfU0laRQorCisKK2NsYXNzIE1hY2hPTG9hZER5bGliQ29tbWFuZChNYWNoT0NvbW1hbmQp
OgorICAgIGluc3RhbGxfbmFtZV9vZmZzZXQ6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDgpCisg
ICAgdGltZXN0YW1wOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgxMikKKyAgICBjdXJyZW50X3Zl
cnNpb246IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDE2KQorICAgIGNvbXBhdGliaWxpdHlfdmVy
c2lvbjogaW50ID0gX21hY2hfb19pbnRfZmllbGQoMjApCisgICAgaW5zdGFsbF9uYW1lOiBzdHIg
PSBfbWFjaF9vX3ZhcmNoYXJfZmllbGQoImluc3RhbGxfbmFtZV9vZmZzZXQiKQorCisgICAgZGVm
IF92ZXJzaW9uX3N0cihzZWxmLCB2ZXJzaW9uOiBpbnQpIC0+IHN0cjoKKyAgICAgICAgcmV0dXJu
IGYieyh2ZXJzaW9uID4+IDE2KSAmIDB4ZmZmZn0ueyh2ZXJzaW9uID4+IDgpICYgMHhmZn0ue3Zl
cnNpb24gJiAweGZmfSIKKworICAgIGRlZiBjb21wYXRpYmlsaXR5X3ZlcnNpb25fc3RyKHNlbGYp
IC0+IHN0cjoKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb25fc3RyKHNlbGYuY29tcGF0aWJp
bGl0eV92ZXJzaW9uKQorCisgICAgZGVmIGN1cnJlbnRfdmVyc2lvbl9zdHIoc2VsZikgLT4gc3Ry
OgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbl9zdHIoc2VsZi5jdXJyZW50X3ZlcnNpb24p
CisKKworY2xhc3MgTWFjaE9EeWxkRW52aXJvbm1lbnRDb21tYW5kKE1hY2hPQ29tbWFuZCk6Cisg
ICAgcGFpcl9vZmZzZXQ6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDgpCisgICAgcGFpcjogc3Ry
ID0gX21hY2hfb192YXJjaGFyX2ZpZWxkKCJwYWlyX29mZnNldCIpCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgdmFyaWFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnBhaXIuc3BsaXQo
Ij0iKVswXQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZhbHVlKHNlbGYpOgorICAgICAgICBy
ZXR1cm4gc2VsZi5wYWlyLnNwbGl0KCI9IilbMV0KKworICAgIEBjbGFzc21ldGhvZAorICAgIGRl
ZiBidWlsZChzZWxmLCBwYWlyOiBzdHIpIC0+ICJNYWNoT0R5bGRFbnZpcm9ubWVudENvbW1hbmQi
OgorICAgICAgICBjb21tYW5kID0gc2VsZihzdHJ1Y3QucGFjaygiPElJSUkiLCBMQ19EWUxEX0VO
VklST05NRU5ULCAxNiwgMTIsIDApKQorICAgICAgICBjb21tYW5kLnBhaXIgPSBwYWlyCisgICAg
ICAgIHJldHVybiBjb21tYW5kCisKKworY2xhc3MgTWFjaE9JRER5bGliQ29tbWFuZChNYWNoT0xv
YWREeWxpYkNvbW1hbmQpOgorICAgIHBhc3MKKworCitfY29tbWFuZF9tYXAgPSB7CisgICAgTENf
U0VHTUVOVDogTWFjaE9TZWdtZW50MzJDb21tYW5kLAorICAgIExDX1NFR01FTlRfNjQ6IE1hY2hP
U2VnbWVudDY0Q29tbWFuZCwKKyAgICBMQ19MT0FEX0RZTElCOiBNYWNoT0xvYWREeWxpYkNvbW1h
bmQsCisgICAgTENfTE9BRF9XRUFLX0RZTElCOiBNYWNoT0xvYWREeWxpYkNvbW1hbmQsCisgICAg
TENfU09VUkNFX1ZFUlNJT046IE1hY2hPU291cmNlVmVyc2lvbkNvbW1hbmQsCisgICAgTENfRFlM
RF9FTlZJUk9OTUVOVDogTWFjaE9EeWxkRW52aXJvbm1lbnRDb21tYW5kLAorICAgIExDX0lEX0RZ
TElCOiBNYWNoT0lERHlsaWJDb21tYW5kLAorfQorCisKK2NsYXNzIE1hY2hPSGVhZGVyOgorICAg
IGRhdGE6IGJ5dGVhcnJheQorICAgIHN0YXJ0X29mZnNldDogaW50CisgICAgZW5kX29mZnNldDog
aW50CisgICAgbWFnaWM6IGludAorICAgIGNwdXR5cGU6IGludAorICAgIGNwdXN1YnR5cGU6IGlu
dAorICAgIGZpbGV0eXBlOiBpbnQKKyAgICBjb21tYW5kX2NvdW50OiBpbnQKKyAgICBjb21tYW5k
X3NpemU6IGludAorICAgIGNvbW1hbmRzOiBMaXN0W01hY2hPQ29tbWFuZF0KKyAgICBmbGFnczog
aW50CisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuY29tbWFuZHMgPSBb
XQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHVzZWRfaGVhZGVyX3NpemUoc2VsZikgLT4gaW50
OgorICAgICAgICByZXR1cm4gc2VsZi5lbmRfb2Zmc2V0IC0gc2VsZi5zdGFydF9vZmZzZXQKKwor
ICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0b3RhbF9oZWFkZXJfc2l6ZShzZWxmKSAtPiBpbnQ6Cisg
ICAgICAgIGxvd2VzdF9vZmZzZXQgPSBOb25lCisKKyAgICAgICAgZm9yIGNvbW1hbmQgaW4gc2Vs
Zi5jb21tYW5kczoKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGNvbW1hbmQsIE1hY2hP
U2VnbWVudENvbW1hbmQpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAg
IGZvciBzZWN0aW9uIGluIGNvbW1hbmQuc2VjdGlvbnM6CisgICAgICAgICAgICAgICAgaWYgc2Vj
dGlvbi5vZmZzZXQgPD0gMCBvciBzZWN0aW9uLmZsYWdzICYgU19HQl9aRVJPRklMTCBvciBzZWN0
aW9uLmZsYWdzICYgU19USFJFQURfTE9DQUxfWkVST0ZJTEwgb3Igc2VjdGlvbi5mbGFncyAmIFNf
WkVST0ZJTEw6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAg
ICBpZiBsb3dlc3Rfb2Zmc2V0IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGxvd2VzdF9v
ZmZzZXQgPSBzZWN0aW9uLm9mZnNldAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgICAgIGxvd2VzdF9vZmZzZXQgPSBtaW4obG93ZXN0X29mZnNldCwgc2VjdGlvbi5vZmZz
ZXQpCisKKyAgICAgICAgcmV0dXJuIGxvd2VzdF9vZmZzZXQKKworICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBhdmFpbGFibGVfaGVhZGVyX3NpemUoc2VsZikgLT4gaW50OgorICAgICAgICByZXR1cm4g
c2VsZi50b3RhbF9oZWFkZXJfc2l6ZSAtIHNlbGYudXNlZF9oZWFkZXJfc2l6ZQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGFyY2hpdGVjdHVyZV9uYW1lKHNlbGYpIC0+IHN0cjoKKyAgICAgICAg
aWYgc2VsZi5jcHV0eXBlIGluIF9jcHVfbmFtZXM6CisgICAgICAgICAgICBpZiBzZWxmLmNwdXN1
YnR5cGUgaW4gX2FyY2hfc3VmZml4OgorICAgICAgICAgICAgICAgIHJldHVybiBfY3B1X25hbWVz
W3NlbGYuY3B1dHlwZV0gKyBfYXJjaF9zdWZmaXhbc2VsZi5jcHVzdWJ0eXBlXQorCisgICAgICAg
ICAgICByZXR1cm4gX2NwdV9uYW1lc1tzZWxmLmNwdXR5cGVdCisKKyAgICAgICAgcmV0dXJuICIl
aS4laSIgJSAoc2VsZi5jcHV0eXBlLCBzZWxmLnN1YmNwdXR5cGUpCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgaWRfY29tbWFuZChzZWxmKSAtPiBNYWNoT0lERHlsaWJDb21tYW5kOgorICAgICAg
ICBmb3IgY29tbWFuZCBpbiBzZWxmLmNvbW1hbmRzOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShjb21tYW5kLCBNYWNoT0lERHlsaWJDb21tYW5kKToKKyAgICAgICAgICAgICAgICByZXR1cm4g
Y29tbWFuZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGR5bGRfZW52X2NvbW1hbmRzKHNlbGYp
IC0+IEl0ZXJhYmxlW01hY2hPRHlsZEVudmlyb25tZW50Q29tbWFuZF06CisgICAgICAgIGZvciBj
b21tYW5kIGluIHNlbGYuY29tbWFuZHM6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNvbW1h
bmQsIE1hY2hPRHlsZEVudmlyb25tZW50Q29tbWFuZCk6CisgICAgICAgICAgICAgICAgeWllbGQg
Y29tbWFuZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGR5bGRfdmVyc2lvbmVkX2ZyYW1ld29y
a19wYXRocyhzZWxmKSAtPiBJdGVyYWJsZVtzdHJdOgorICAgICAgICBmb3IgY29tbWFuZCBpbiBz
ZWxmLmR5bGRfZW52X2NvbW1hbmRzOgorICAgICAgICAgICAgaWYgY29tbWFuZC52YXJpYWJsZSA9
PSAiRFlMRF9WRVJTSU9ORURfRlJBTUVXT1JLX1BBVEgiOgorICAgICAgICAgICAgICAgIGZvciBl
bnRyeSBpbiBjb21tYW5kLnZhbHVlLnNwbGl0KCI6Iik6CisgICAgICAgICAgICAgICAgICAgIHlp
ZWxkIGVudHJ5CisKKyAgICBkZWYgZmlsdGVyX2NvbW1hbmRzKHNlbGYsIGZ1bmM6IENhbGxhYmxl
W1tNYWNoT0NvbW1hbmRdLCBib29sXSkgLT4gTm9uZToKKyAgICAgICAgc2VsZi5jb21tYW5kcyA9
IGxpc3QoZmlsdGVyKGZ1bmMsIHNlbGYuY29tbWFuZHMpKQorCisgICAgZGVmIHVwZGF0ZV9maWxl
KHNlbGYsIGJpbmFyeV9maWxlOiBCdWZmZXJlZFJhbmRvbSkgLT4gTm9uZToKKyAgICAgICAgY29t
bWFuZF9zaXplID0gMAorCisgICAgICAgIGZvciBjb21tYW5kIGluIHNlbGYuY29tbWFuZHM6Cisg
ICAgICAgICAgICBjb21tYW5kX3NpemUgKz0gbGVuKGNvbW1hbmQuZGF0YSkKKworICAgICAgICB1
cGRhdGVkX2hlYWRlcl9zaXplID0gbGVuKHNlbGYuZGF0YSkgKyBjb21tYW5kX3NpemUKKyAgICAg
ICAgdG90YWxfaGVhZGVyX3NpemUgPSBzZWxmLnRvdGFsX2hlYWRlcl9zaXplCisKKyAgICAgICAg
aWYgdXBkYXRlZF9oZWFkZXJfc2l6ZSA+IHRvdGFsX2hlYWRlcl9zaXplOgorICAgICAgICAgICAg
cmFpc2UgUnVudGltZUVycm9yKGYiVXBkYXRlZCBoZWFkZXIgKHt1cGRhdGVkX2hlYWRlcl9zaXpl
fSBieXRlcykgZG9lc24ndCBmaXQgdGhlIGF2YWlsYWJsZSBzcGFjZSAoe3RvdGFsX2hlYWRlcl9z
aXplfSBieXRlcykiKQorCisgICAgICAgIHNlbGYuY29tbWFuZF9jb3VudCA9IGxlbihzZWxmLmNv
bW1hbmRzKQorICAgICAgICBzZWxmLmNvbW1hbmRfc2l6ZSA9IGNvbW1hbmRfc2l6ZQorCisgICAg
ICAgIGJpbmFyeV9maWxlLnNlZWsoc2VsZi5zdGFydF9vZmZzZXQpCisgICAgICAgIGJpbmFyeV9m
aWxlLndyaXRlKHNlbGYuZGF0YSkKKworICAgICAgICBmb3IgY29tbWFuZCBpbiBzZWxmLmNvbW1h
bmRzOgorICAgICAgICAgICAgYmluYXJ5X2ZpbGUud3JpdGUoY29tbWFuZC5kYXRhKQorCisgICAg
ICAgIGlmIHNlbGYuZW5kX29mZnNldCA+IGJpbmFyeV9maWxlLnRlbGwoKToKKyAgICAgICAgICAg
IGJpbmFyeV9maWxlLndyaXRlKGJ5dGVhcnJheShzZWxmLmVuZF9vZmZzZXQgLSBiaW5hcnlfZmls
ZS50ZWxsKCkpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5lbmRfb2Zmc2V0ID0g
YmluYXJ5X2ZpbGUudGVsbCgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgcGFyc2VfY29t
bWFuZChzZWxmLCBkYXRhOiBieXRlcykgLT4gTWFjaE9Db21tYW5kOgorICAgICAgICBjb21tYW5k
ID0gaW50LmZyb21fYnl0ZXMoZGF0YVswOjRdLCBieXRlb3JkZXI9ImxpdHRsZSIpCisgICAgICAg
IGlmIGNvbW1hbmQgaW4gX2NvbW1hbmRfbWFwOgorICAgICAgICAgICAgcmV0dXJuIF9jb21tYW5k
X21hcFtjb21tYW5kXShkYXRhKQorCisgICAgICAgIHJldHVybiBNYWNoT0NvbW1hbmQoZGF0YSkK
KworCitjbGFzcyBNYWNoT0hlYWRlcjMyTEUoTWFjaE9IZWFkZXIpOgorICAgIG1hZ2ljOiBpbnQg
PSBfbWFjaF9vX2ludF9maWVsZCgwKQorICAgIGNwdXR5cGU6IGludCA9IF9tYWNoX29faW50X2Zp
ZWxkKDQpCisgICAgY3B1c3VidHlwZTogaW50ID0gX21hY2hfb19pbnRfZmllbGQoOCkKKyAgICBm
aWxldHlwZTogaW50ID0gX21hY2hfb19pbnRfZmllbGQoMTIpCisgICAgY29tbWFuZF9jb3VudDog
aW50ID0gX21hY2hfb19pbnRfZmllbGQoMTYpCisgICAgY29tbWFuZF9zaXplOiBpbnQgPSBfbWFj
aF9vX2ludF9maWVsZCgyMCkKKyAgICBmbGFnczogaW50ID0gX21hY2hfb19pbnRfZmllbGQoMjQp
CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZTogQnVmZmVyZWRSZWFkZXIpOgorICAgICAg
ICBzdXBlcigpLl9faW5pdF9fKCkKKyAgICAgICAgc2VsZi5zdGFydF9vZmZzZXQgPSBmaWxlLnRl
bGwoKQorICAgICAgICBzZWxmLmRhdGEgPSBieXRlYXJyYXkoZmlsZS5yZWFkKDI4KSkKKworICAg
ICAgICBmb3IgXyBpbiByYW5nZSgwLCBzZWxmLmNvbW1hbmRfY291bnQpOgorICAgICAgICAgICAg
KF8sIGNvbW1hbmRfc2l6ZSkgPSBzdHJ1Y3QudW5wYWNrKCI8SUkiLCBmaWxlLnBlZWsoOClbOjhd
KQorICAgICAgICAgICAgc2VsZi5jb21tYW5kcy5hcHBlbmQoTWFjaE9IZWFkZXIucGFyc2VfY29t
bWFuZChmaWxlLnJlYWQoY29tbWFuZF9zaXplKSkpCisKKyAgICAgICAgc2VsZi5lbmRfb2Zmc2V0
ID0gZmlsZS50ZWxsKCkKKworCitjbGFzcyBNYWNoT0hlYWRlcjY0TEUoTWFjaE9IZWFkZXIpOgor
ICAgIG1hZ2ljOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgwKQorICAgIGNwdXR5cGU6IGludCA9
IF9tYWNoX29faW50X2ZpZWxkKDQpCisgICAgY3B1c3VidHlwZTogaW50ID0gX21hY2hfb19pbnRf
ZmllbGQoOCkKKyAgICBmaWxldHlwZTogaW50ID0gX21hY2hfb19pbnRfZmllbGQoMTIpCisgICAg
Y29tbWFuZF9jb3VudDogaW50ID0gX21hY2hfb19pbnRfZmllbGQoMTYpCisgICAgY29tbWFuZF9z
aXplOiBpbnQgPSBfbWFjaF9vX2ludF9maWVsZCgyMCkKKyAgICBmbGFnczogaW50ID0gX21hY2hf
b19pbnRfZmllbGQoMjQpCisgICAgcmVzZXJ2ZWQ6IGludCA9IF9tYWNoX29faW50X2ZpZWxkKDI4
KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGU6IEJ1ZmZlcmVkUmVhZGVyKToKKyAgICAg
ICAgc3VwZXIoKS5fX2luaXRfXygpCisgICAgICAgIHNlbGYuc3RhcnRfb2Zmc2V0ID0gZmlsZS50
ZWxsKCkKKyAgICAgICAgc2VsZi5kYXRhID0gYnl0ZWFycmF5KGZpbGUucmVhZCgzMikpCisKKyAg
ICAgICAgZm9yIF8gaW4gcmFuZ2UoMCwgc2VsZi5jb21tYW5kX2NvdW50KToKKyAgICAgICAgICAg
IChfLCBjb21tYW5kX3NpemUpID0gc3RydWN0LnVucGFjaygiPElJIiwgZmlsZS5wZWVrKDgpWzo4
XSkKKyAgICAgICAgICAgIHNlbGYuY29tbWFuZHMuYXBwZW5kKE1hY2hPSGVhZGVyLnBhcnNlX2Nv
bW1hbmQoZmlsZS5yZWFkKGNvbW1hbmRfc2l6ZSkpKQorCisgICAgICAgIHNlbGYuZW5kX29mZnNl
dCA9IGZpbGUudGVsbCgpCisKKworY2xhc3MgTWFjaE9GaWxlOgorICAgIGhlYWRlcnM6IExpc3Rb
TWFjaE9IZWFkZXJdCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZTogQnVmZmVyZWRSZWFk
ZXIpOgorICAgICAgICBzZWxmLmhlYWRlcnMgPSBbXQorICAgICAgICBtYWdpYyA9IGZpbGUucGVl
ayg0KVs6NF0KKworICAgICAgICBpZiBtYWdpYyA9PSBNQUNIT18zMkxFX1NJR05BVFVSRToKKyAg
ICAgICAgICAgICMgMzItYml0cyBNYWNoLU8KKyAgICAgICAgICAgIHNlbGYuaGVhZGVycy5hcHBl
bmQoTWFjaE9IZWFkZXIzMkxFKGZpbGUpKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAg
aWYgbWFnaWMgPT0gTUFDSE9fNjRMRV9TSUdOQVRVUkU6CisgICAgICAgICAgICAjIDY0LWJpdHMg
TWFjaC1PCisgICAgICAgICAgICBzZWxmLmhlYWRlcnMuYXBwZW5kKE1hY2hPSGVhZGVyNjRMRShm
aWxlKSkKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIG1hZ2ljID09IE1BQ0hPX0ZB
VF9TSUdOQVRVUkU6CisgICAgICAgICAgICAjIFVuaXZlcnNhbCBNYWNoLU8KKyAgICAgICAgICAg
IChtYWdpYywgYXJjaGl0ZWN0dXJlX2NvdW50KSA9IHN0cnVjdC51bnBhY2soJz5JSScsIGZpbGUu
cmVhZCg4KSkKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZXMgPSBbXQorCisgICAgICAgICAgICBm
b3IgXyBpbiByYW5nZSgwLCBhcmNoaXRlY3R1cmVfY291bnQpOgorICAgICAgICAgICAgICAgIGFy
Y2hpdGVjdHVyZXMuYXBwZW5kKGZpbGUucmVhZCgyMCkpCisKKyAgICAgICAgICAgIGZvciBhcmNo
aXRlY3R1cmUgaW4gYXJjaGl0ZWN0dXJlczoKKyAgICAgICAgICAgICAgICAoY3B1X3R5cGUsIGNw
dV9zdWJfdHlwZSwgZmlsZV9vZmZzZXQsIHNpemUsIGFsaWduKSA9IHN0cnVjdC51bnBhY2soJz5J
SUlJSScsIGFyY2hpdGVjdHVyZSkKKyAgICAgICAgICAgICAgICBmaWxlLnNlZWsoZmlsZV9vZmZz
ZXQpCisgICAgICAgICAgICAgICAgbWFnaWMgPSBmaWxlLnBlZWsoNClbOjRdCisKKyAgICAgICAg
ICAgICAgICBpZiBtYWdpYyA9PSBNQUNIT18zMkxFX1NJR05BVFVSRToKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5oZWFkZXJzLmFwcGVuZChNYWNoT0hlYWRlcjMyTEUoZmlsZSkpCisgICAgICAg
ICAgICAgICAgZWxpZiBtYWdpYyA9PSBNQUNIT182NExFX1NJR05BVFVSRToKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5oZWFkZXJzLmFwcGVuZChNYWNoT0hlYWRlcjY0TEUoZmlsZSkpCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9y
KCJJbnZhbGlkIE1hY2gtTyBoZWFkZXIgZm91bmQiKQorCisgICAgICAgICAgICByZXR1cm4KKwor
ICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIk5vdCBhIHN1cHBvcnRlZCBNYWNoLU8gZmlsZSIp
CisKKworZGVmIGlzX21hY2hvX2J5dGVzKGRhdGE6IGJ5dGVzKSAtPiBib29sOgorICAgIGlmIGxl
bihkYXRhKSA8IDQ6CisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgbWFnaWMgPSBkYXRhWzo0
XQorICAgIHJldHVybiBtYWdpYyBpbiBbTUFDSE9fNjRMRV9TSUdOQVRVUkUsIE1BQ0hPXzMyTEVf
U0lHTkFUVVJFLCBNQUNIT19GQVRfU0lHTkFUVVJFXQorCisKK2RlZiBpc19tYWNob19maWxlKGZp
bGVuYW1lOiBzdHIpIC0+IGJvb2w6CisgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAicmIiKSBhcyBm
aWxlOgorICAgICAgICBtYWdpYyA9IGZpbGUucGVlayg0KVs6NF0KKyAgICAgICAgcmV0dXJuIGlz
X21hY2hvX2J5dGVzKG1hZ2ljKQorCisKK2RlZiBlbnVtZXJhdGVfbWFjaG9fZmlsZXMoc3RhcnRf
cG9pbnQ6IHN0cikgLT4gSXRlcmFibGVbVHVwbGVbc3RyLCBNYWNoT0ZpbGVdXToKKyAgICBpbXBv
cnQgdGFyZmlsZQorCisgICAgaWYgb3MucGF0aC5pc2RpcihzdGFydF9wb2ludCk6CisgICAgICAg
IGZvciByb290LCBfLCBmaWxlcyBpbiBvcy53YWxrKHN0YXJ0X3BvaW50LCB0b3Bkb3duPUZhbHNl
LCBmb2xsb3dsaW5rcz1GYWxzZSk6CisgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKKyAg
ICAgICAgICAgICAgICBpZiBuYW1lLmVuZHN3aXRoKCIuYSIpOgorICAgICAgICAgICAgICAgICAg
ICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBu
YW1lKQorCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCk6CisgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCBpc19tYWNob19maWxlKHBhdGgpOgorICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKKworICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgInJi
IikgYXMgZmlsZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hvX2ZpbGUgPSBNYWNoT0Zp
bGUoZmlsZSkKKyAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlCisKKyAgICAgICAgICAgICAgICB5aWVsZCAob3MucGF0aC5yZWxwYXRoKHBhdGgsIHN0
YXJ0X3BvaW50KSwgbWFjaG9fZmlsZSkKKyAgICBlbGlmIHRhcmZpbGUuaXNfdGFyZmlsZShzdGFy
dF9wb2ludCk6CisgICAgICAgIGFyY2hpdmUgPSB0YXJmaWxlLm9wZW4oc3RhcnRfcG9pbnQpCisK
KyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIG1lbWJlciA9IGFyY2hpdmUubmV4dCgp
CisgICAgICAgICAgICBpZiBub3QgbWVtYmVyOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAg
ICAgICAgICAgIGlmIG5vdCBtZW1iZXIuaXNmaWxlKCk6CisgICAgICAgICAgICAgICAgY29udGlu
dWUKKworICAgICAgICAgICAgaWYgbWVtYmVyLm5hbWUuZW5kc3dpdGgoIi5hIik6CisgICAgICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgZGF0YSA9IGFyY2hpdmUuZXh0cmFjdGZp
bGUobWVtYmVyKS5yZWFkKCkKKworICAgICAgICAgICAgaWYgaXNfbWFjaG9fYnl0ZXMoZGF0YSk6
CisgICAgICAgICAgICAgICAgeWllbGQgKG9zLnBhdGgubm9ybXBhdGgobWVtYmVyLm5hbWUpLCBN
YWNoT0ZpbGUoQnVmZmVyZWRSZWFkZXIoQnl0ZXNJTyhkYXRhKSkpKQorICAgIGVsc2U6CisgICAg
ICAgIHdpdGggb3BlbihzdGFydF9wb2ludCwgInJiIikgYXMgZmlsZToKKyAgICAgICAgICAgIHlp
ZWxkIChzdGFydF9wb2ludCwgTWFjaE9GaWxlKGZpbGUpKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyOTA3NTcpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0xNDQyMiw2ICsxNDQyMiw3IEBACiAJCQkJMkQ5RkIyMjIyMzc1MjM4MzAwNDlG
OTM2IC8qIFVubG9jayBrZXljaGFpbiAqLywKIAkJCQkyRDlGQjIyMzIzNzUyMzgzMDA0OUY5MzYg
LyogUHJvY2VzcyBHUFUgZW50aXRsZW1lbnRzICovLAogCQkJCTY1NzdGRkJGMjc2OUM3NTUwMDEx
QUVDOCAvKiBDcmVhdGUgU3ltbGluayB0byBBbHQgUm9vdCBQYXRoICovLAorCQkJCTY1MTc1NzFF
MjdDRUU2QkQwMEQ5RkU0MCAvKiBDb3B5IFhQQyBTZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoICov
LAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwpAQCAtMTQ0NDUsNiArMTQ0NDYsNyBA
QAogCQkJCUExRUYzNkJGMjU4MUY3M0IwMDkwQjAyQSAvKiBDb3B5IFBsdWctaW5zICovLAogCQkJ
CTdBRkNCRDU1MjBCODkxN0QwMEY1NUM5QyAvKiBQcm9jZXNzIFdlYkNvbnRlbnQgZW50aXRsZW1l
bnRzICovLAogCQkJCTY1NzdGRkJEMjc2OUM3MEYwMDExQUVDOCAvKiBDcmVhdGUgU3ltbGluayB0
byBBbHQgUm9vdCBQYXRoICovLAorCQkJCTY1MTc1NzFDMjdDRUU2NEIwMEQ5RkU0MCAvKiBDb3B5
IFhQQyBTZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoICovLAogCQkJKTsKIAkJCWJ1aWxkUnVsZXMg
PSAoCiAJCQkpOwpAQCAtMTQ0ODUsNiArMTQ0ODcsNyBAQAogCQkJCTU3NDJBMkYwMjUzNTYxM0Yw
MEI3QkExNCAvKiBSZXNvdXJjZXMgKi8sCiAJCQkJNTc0MkEyRjEyNTM1NjEzRjAwQjdCQTE0IC8q
IFVubG9jayBrZXljaGFpbiAqLywKIAkJCQk1NzQyQTJGMjI1MzU2MTNGMDBCN0JBMTQgLyogUHJv
Y2VzcyBXZWJBdXRoZW50aWNhdGlvbiBlbnRpdGxlbWVudHMgKi8sCisJCQkJNjUxNzU3MjMyN0NG
QzI0QTAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGggKi8sCiAJ
CQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBAIC0xNDU0Nyw2ICsxNDU1MCw3IEBACiAJ
CQkJN0E3RThERjAyNzQ4MzkyNTAwRENDOTdBIC8qIENvcHkgUGx1Zy1pbnMgKi8sCiAJCQkJN0E3
RThERjIyNzQ4MzkyNTAwRENDOTdBIC8qIFByb2Nlc3MgV2ViQ29udGVudCBlbnRpdGxlbWVudHMg
Ki8sCiAJCQkJNjU3N0ZGQkMyNzY5QzZEOTAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFs
dCBSb290IFBhdGggKi8sCisJCQkJNjUxNzU3MUIyN0NFRTYxMjAwRDlGRTQwIC8qIENvcHkgWFBD
IFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGggKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgK
IAkJCSk7CkBAIC0xNDU5NCw2ICsxNDU5OCw3IEBACiAJCQkJMEZCOTQ4MzYyMzlGMzFCNzAwOTI2
QThGIC8qIENvcHkgVGVzdGluZyBIZWFkZXJzICovLAogCQkJCURGRDAzQTI5MjcwRDVGNTcwMDFB
OTk2RSAvKiBDb3B5IERhZW1vbiBQbGlzdHMgKi8sCiAJCQkJNjU3N0ZGQjkyNzY5QzE0NjAwMTFB
RUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8sCisJCQkJNjUxNzU3MTky
N0M5QjQzQTAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCAqLywK
IAkJCSk7CiAJCQlidWlsZFJ1bGVzID0gKAogCQkJCTUzNUUwOEM0MjI1NDVCNzIwMERGMDBDQSAv
KiBQQlhCdWlsZFJ1bGUgKi8sCkBAIC0xNDYzNyw2ICsxNDY0Miw3IEBACiAJCQkJN0FGQ0JENTQy
MEI4OTExRDAwRjU1QzlDIC8qIFByb2Nlc3MgV2ViQ29udGVudCBlbnRpdGxlbWVudHMgKi8sCiAJ
CQkJNDE1Nzg1MzcyMTI3OUNDNjAwREQzODAwIC8qIENvcHkgQ3VzdG9tIFdlYkNvbnRlbnQgUmVz
b3VyY2VzIHRvIEZyYW1ld29yayBQcml2YXRlIEhlYWRlcnMgKi8sCiAJCQkJNjU3N0ZGQkIyNzY5
QzZBQTAwMTFBRUM4IC8qIENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8sCisJCQkJ
NjUxNzU3MTgyN0M5QjM4QjAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5
IFBhdGggKi8sCiAJCQkpOwogCQkJYnVpbGRSdWxlcyA9ICgKIAkJCSk7CkBAIC0xNDY2MCw2ICsx
NDY2Niw3IEBACiAJCQkJNDFEMEZDODAyMEU0M0I0NTAwMDc2QUU4IC8qIFVubG9jayBrZXljaGFp
biAqLywKIAkJCQk0MUQwRkM4MTIwRTQzQjcwMDAwNzZBRTggLyogUHJvY2VzcyBOZXR3b3JrIGVu
dGl0bGVtZW50cyAqLywKIAkJCQk2NTc3RkZCRTI3NjlDNzM3MDAxMUFFQzggLyogQ3JlYXRlIFN5
bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLywKKwkJCQk2NTE3NTcxRDI3Q0VFNjZEMDBEOUZFNDAg
LyogQ29weSBYUEMgU2VydmljZSB0byBTZWNvbmRhcnkgUGF0aCAqLywKIAkJCSk7CiAJCQlidWls
ZFJ1bGVzID0gKAogCQkJKTsKQEAgLTE0NjgwLDYgKzE0Njg3LDcgQEAKIAkJCQlDRDk1NDkzMjI2
MTU5MDA0MDA4MzcyRDkgLyogU291cmNlcyAqLywKIAkJCQlDRDk1NDkzMzI2MTU5MDA0MDA4Mzcy
RDkgLyogRnJhbWV3b3JrcyAqLywKIAkJCQk2NTc3RkZCQTI3NjlDNjRBMDAxMUFFQzggLyogQ3Jl
YXRlIFN5bWxpbmsgdG8gQWx0IFJvb3QgUGF0aCAqLywKKwkJCQk2NTE3NTcxNTI3QzlBQjRDMDBE
OUZFNDAgLyogQ29weSBGcmFtZXdvcmtzIHRvIFNlY29uZGFyeSBQYXRoICovLAogCQkJKTsKIAkJ
CWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwpAQCAtMTUyNzEsNiArMTUyNzksMTUwIEBACiAJCQlydW5P
bmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJCXNoZWxsUGF0aCA9IC9iaW4v
c2g7CiAJCQlzaGVsbFNjcmlwdCA9ICJpZiBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxoZHJz
XCIgXSB8fCBbIFwiJHtBQ1RJT059XCIgPSBcImluc3RhbGxhcGlcIiBdOyB0aGVuXG4gICAgZXhp
dCAwO1xuZmlcblxuaWYgWyAtZiAuLi8uLi9Ub29scy9TY3JpcHRzL2NoZWNrLWZvci1pbmFwcHJv
cHJpYXRlLWZpbGVzLWluLWZyYW1ld29yayBdOyB0aGVuXG4gICAgLi4vLi4vVG9vbHMvU2NyaXB0
cy9jaGVjay1mb3ItaW5hcHByb3ByaWF0ZS1maWxlcy1pbi1mcmFtZXdvcmsgfHwgZXhpdCAkP1xu
ZmlcbiI7CisJCX07CisJCTY1MTc1NzE1MjdDOUFCNEMwMEQ5RkU0MCAvKiBDb3B5IEZyYW1ld29y
a3MgdG8gU2Vjb25kYXJ5IFBhdGggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxk
UGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJ
aW5wdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOwor
CQkJbmFtZSA9ICJDb3B5IEZyYW1ld29ya3MgdG8gU2Vjb25kYXJ5IFBhdGgiOworCQkJb3V0cHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJleHBvcnQgRFlMSUJTX1RPX0NPUFlfVE9fU0VDT05E
QVJZX1BBVEg9XCJsaWJXZWJLaXRTd2lmdC5keWxpYlwiXG5cIiR7U1JDUk9PVH0vU2NyaXB0cy9j
b3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKKwkJfTsKKwkJNjUxNzU3
MTgyN0M5QjM4QjAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGgg
Ki8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlv
bk1hc2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0g
KAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IFhQQyBT
ZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJ
CQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQ
b3N0cHJvY2Vzc2luZyA9IDE7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3Jp
cHQgPSAiZXhwb3J0IFhQQ19CVU5ETEVTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEg9XCJjb20u
YXBwbGUuV2ViS2l0LldlYkNvbnRlbnQueHBjXCJcbmV4cG9ydCBYUENfQlVORExFX0lOU1RBTExf
UEFUSF9JTl9TRUNPTkRBUllfUEFUSD1cIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElS
RUNUT1JZfS9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvWFBDU2VydmljZXNcIlxuXCIke1NS
Q1JPT1R9L1NjcmlwdHMvY29weS14cGMtc2VydmljZXMtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxu
IjsKKwkJfTsKKwkJNjUxNzU3MTkyN0M5QjQzQTAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0
byBTZWNvbmRhcnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFz
ZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1
dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQlu
YW1lID0gIkNvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCI7CisJCQlvdXRwdXRGaWxl
TGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9u
bHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQkJc2hlbGxQYXRoID0gL2Jpbi9z
aDsKKwkJCXNoZWxsU2NyaXB0ID0gImV4cG9ydCBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05E
QVJZX1BBVEg9XCJXZWJLaXRcIlxuXCIke1NSQ1JPT1R9L1NjcmlwdHMvY29weS1mcmFtZXdvcmtz
LXRvLXNlY29uZGFyeS1wYXRoLnNoXCJcbiI7CisJCX07CisJCTY1MTc1NzFCMjdDRUU2MTIwMEQ5
RkU0MCAvKiBDb3B5IFhQQyBTZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoICovID0geworCQkJaXNh
ID0gUEJYU2hlbGxTY3JpcHRCdWlsZFBoYXNlOworCQkJYnVpbGRBY3Rpb25NYXNrID0gODsKKwkJ
CWZpbGVzID0gKAorCQkJKTsKKwkJCWlucHV0RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlp
bnB1dFBhdGhzID0gKAorCQkJKTsKKwkJCW5hbWUgPSAiQ29weSBYUEMgU2VydmljZSB0byBTZWNv
bmRhcnkgUGF0aCI7CisJCQlvdXRwdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCW91dHB1
dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Npbmcg
PSAxOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJCXNoZWxsU2NyaXB0ID0gImV4cG9ydCBY
UENfQlVORExFU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIPVwiY29tLmFwcGxlLldlYktpdC5X
ZWJDb250ZW50LkNhcHRpdmVQb3J0YWwueHBjXCJcbmV4cG9ydCBYUENfQlVORExFX0lOU1RBTExf
UEFUSF9JTl9TRUNPTkRBUllfUEFUSD1cIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElS
RUNUT1JZfS9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvWFBDU2VydmljZXNcIlxuXCIke1NS
Q1JPT1R9L1NjcmlwdHMvY29weS14cGMtc2VydmljZXMtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxu
IjsKKwkJfTsKKwkJNjUxNzU3MUMyN0NFRTY0QjAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2Ug
dG8gU2Vjb25kYXJ5IFBhdGggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhh
c2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5w
dXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJ
bmFtZSA9ICJDb3B5IFhQQyBTZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoIjsKKwkJCW91dHB1dEZp
bGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCQlzaGVsbFBhdGggPSAvYmlu
L3NoOworCQkJc2hlbGxTY3JpcHQgPSAiZXhwb3J0IFhQQ19CVU5ETEVTX1RPX0NPUFlfVE9fU0VD
T05EQVJZX1BBVEg9XCJjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQuRGV2ZWxvcG1lbnQueHBj
XCJcbmV4cG9ydCBYUENfQlVORExFX0lOU1RBTExfUEFUSF9JTl9TRUNPTkRBUllfUEFUSD1cIiR7
U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfS9XZWJLaXQuZnJhbWV3b3JrL1Zl
cnNpb25zL0EvWFBDU2VydmljZXNcIlxuXCIke1NSQ1JPT1R9L1NjcmlwdHMvY29weS14cGMtc2Vy
dmljZXMtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKKwkJfTsKKwkJNjUxNzU3MUQyN0NFRTY2
RDAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGggKi8gPSB7CisJ
CQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQlidWlsZEFjdGlvbk1hc2sgPSA4
OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlzdFBhdGhzID0gKAorCQkJKTsK
KwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJDb3B5IFhQQyBTZXJ2aWNlIHRv
IFNlY29uZGFyeSBQYXRoIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJ
b3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vz
c2luZyA9IDE7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJc2hlbGxTY3JpcHQgPSAiZXhw
b3J0IFhQQ19CVU5ETEVTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BBVEg9XCJjb20uYXBwbGUuV2Vi
S2l0Lk5ldHdvcmtpbmcueHBjXCJcbmV4cG9ydCBYUENfQlVORExFX0lOU1RBTExfUEFUSF9JTl9T
RUNPTkRBUllfUEFUSD1cIiR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfS9X
ZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvWFBDU2VydmljZXNcIlxuXCIke1NSQ1JPT1R9L1Nj
cmlwdHMvY29weS14cGMtc2VydmljZXMtdG8tc2Vjb25kYXJ5LXBhdGguc2hcIlxuIjsKKwkJfTsK
KwkJNjUxNzU3MUUyN0NFRTZCRDAwRDlGRTQwIC8qIENvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25k
YXJ5IFBhdGggKi8gPSB7CisJCQlpc2EgPSBQQlhTaGVsbFNjcmlwdEJ1aWxkUGhhc2U7CisJCQli
dWlsZEFjdGlvbk1hc2sgPSA4OworCQkJZmlsZXMgPSAoCisJCQkpOworCQkJaW5wdXRGaWxlTGlz
dFBhdGhzID0gKAorCQkJKTsKKwkJCWlucHV0UGF0aHMgPSAoCisJCQkpOworCQkJbmFtZSA9ICJD
b3B5IFhQQyBTZXJ2aWNlIHRvIFNlY29uZGFyeSBQYXRoIjsKKwkJCW91dHB1dEZpbGVMaXN0UGF0
aHMgPSAoCisJCQkpOworCQkJb3V0cHV0UGF0aHMgPSAoCisJCQkpOworCQkJcnVuT25seUZvckRl
cGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDE7CisJCQlzaGVsbFBhdGggPSAvYmluL3NoOworCQkJ
c2hlbGxTY3JpcHQgPSAiZXhwb3J0IFhQQ19CVU5ETEVTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BB
VEg9XCJjb20uYXBwbGUuV2ViS2l0LkdQVS54cGNcIlxuZXhwb3J0IFhQQ19CVU5ETEVfSU5TVEFM
TF9QQVRIX0lOX1NFQ09OREFSWV9QQVRIPVwiJHtTRUNPTkRBUllfU1RBR0VEX0ZSQU1FV09SS19E
SVJFQ1RPUll9L1dlYktpdC5mcmFtZXdvcmsvVmVyc2lvbnMvQS9YUENTZXJ2aWNlc1wiXG5cIiR7
U1JDUk9PVH0vU2NyaXB0cy9jb3B5LXhwYy1zZXJ2aWNlcy10by1zZWNvbmRhcnktcGF0aC5zaFwi
XG4iOworCQl9OworCQk2NTE3NTcyMzI3Q0ZDMjRBMDBEOUZFNDAgLyogQ29weSBYUEMgU2Vydmlj
ZSB0byBTZWNvbmRhcnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQ
aGFzZTsKKwkJCWJ1aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlp
bnB1dEZpbGVMaXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJ
CQluYW1lID0gIkNvcHkgWFBDIFNlcnZpY2UgdG8gU2Vjb25kYXJ5IFBhdGgiOworCQkJb3V0cHV0
RmlsZUxpc3RQYXRocyA9ICgKKwkJCSk7CisJCQlvdXRwdXRQYXRocyA9ICgKKwkJCSk7CisJCQly
dW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMTsKKwkJCXNoZWxsUGF0aCA9IC9i
aW4vc2g7CisJCQlzaGVsbFNjcmlwdCA9ICJleHBvcnQgWFBDX0JVTkRMRVNfVE9fQ09QWV9UT19T
RUNPTkRBUllfUEFUSD1cImNvbS5hcHBsZS5XZWJLaXQuV2ViQXV0aG4ueHBjXCJcbmV4cG9ydCBY
UENfQlVORExFX0lOU1RBTExfUEFUSF9JTl9TRUNPTkRBUllfUEFUSD1cIiR7U0VDT05EQVJZX1NU
QUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfS9XZWJLaXQuZnJhbWV3b3JrL1ZlcnNpb25zL0EvWFBD
U2VydmljZXNcIlxuXCIke1NSQ1JPT1R9L1NjcmlwdHMvY29weS14cGMtc2VydmljZXMtdG8tc2Vj
b25kYXJ5LXBhdGguc2hcIlxuIjsKIAkJfTsKIAkJNjU3N0ZGQjkyNzY5QzE0NjAwMTFBRUM4IC8q
IENyZWF0ZSBTeW1saW5rIHRvIEFsdCBSb290IFBhdGggKi8gPSB7CiAJCQlpc2EgPSBQQlhTaGVs
bFNjcmlwdEJ1aWxkUGhhc2U7CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L0NoYW5nZUxvZwkocmV2aXNpb24gMjkw
NzU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNiBAQAorMjAyMi0wMy0wMiAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxl
LmNvbT4KKworICAgICAgICBDb3B5IFdlYktpdCBmcmFtZXdvcmtzIGFuZCBYUEMgcHJvY2Vzc2Vz
IHRvIFNlY29uZGFyeSBQYXRoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzczOTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBidWlsZCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBhbmQgc2NyaXB0
cyB0byBjb3B5IHRoZSBidWlsdCBGcmFtZXdvcmsgdG8gdGhlIFNZU1RFTV9TRUNPTkRBUllfQ09O
VEVOVF9QQVRICisgICAgICAgIHdoZW4gaXQgaXMgc2V0LgorCisgICAgICAgICogV2ViS2l0TGVn
YWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogc2NyaXB0cy9jb3B5LWZy
YW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBhdGguc2g6IEFkZGVkLgorCiAyMDIyLTAzLTAxICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW0FwcGxl
V2luXSBTdGFydCB1c2luZyBWaXN1YWwgU3R1ZGlvIDIwMjIKSW5kZXg6IFNvdXJjZS9XZWJLaXRM
ZWdhY3kvV2ViS2l0TGVnYWN5Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdhY3kueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagkocmV2aXNpb24gMjkwNzU3KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9XZWJLaXRMZWdh
Y3kueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzA4MSw2ICsz
MDgxLDcgQEAKIAkJCQkxQTMxOTNENTE5MTg1NkU1MDBFMUNGODkgLyogU3ltbGluayBXZWJLaXRQ
bHVnaW5Ib3N0ICovLAogCQkJCTUzN0NGODNBMjJFRkJGQjEwMEM2RUJCMyAvKiBDaGVjayAueGNm
aWxlbGlzdHMgKi8sCiAJCQkJNjUwNDczNDUyNzg5NDMxQzAwQUY3OEEyIC8qIENyZWF0ZSBTeW1s
aW5rIHRvIEFsdCBSb290IFBhdGggKi8sCisJCQkJNjUxNzU3MjAyN0NFRTkxNDAwRDlGRTQwIC8q
IENvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCAqLywKIAkJCSk7CiAJCQlidWlsZFJ1
bGVzID0gKAogCQkJCTUzNUUwOEMzMjI1NDVCNEMwMERGMDBDQSAvKiBQQlhCdWlsZFJ1bGUgKi8s
CkBAIC0zMzQ1LDYgKzMzNDYsMjQgQEAKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAxOwogCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKIAkJCXNoZWxsU2NyaXB0ID0gIlwi
JHtTUkNST09UfS9zY3JpcHRzL2NyZWF0ZS1zeW1saW5rLXRvLWFsdHJvb3Quc2hcIlxuIjsKKwkJ
fTsKKwkJNjUxNzU3MjAyN0NFRTkxNDAwRDlGRTQwIC8qIENvcHkgRnJhbWV3b3JrcyB0byBTZWNv
bmRhcnkgUGF0aCAqLyA9IHsKKwkJCWlzYSA9IFBCWFNoZWxsU2NyaXB0QnVpbGRQaGFzZTsKKwkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDg7CisJCQlmaWxlcyA9ICgKKwkJCSk7CisJCQlpbnB1dEZpbGVM
aXN0UGF0aHMgPSAoCisJCQkpOworCQkJaW5wdXRQYXRocyA9ICgKKwkJCSk7CisJCQluYW1lID0g
IkNvcHkgRnJhbWV3b3JrcyB0byBTZWNvbmRhcnkgUGF0aCI7CisJCQlvdXRwdXRGaWxlTGlzdFBh
dGhzID0gKAorCQkJKTsKKwkJCW91dHB1dFBhdGhzID0gKAorCQkJKTsKKwkJCXJ1bk9ubHlGb3JE
ZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAxOworCQkJc2hlbGxQYXRoID0gL2Jpbi9zaDsKKwkJ
CXNoZWxsU2NyaXB0ID0gImV4cG9ydCBGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VDT05EQVJZX1BB
VEg9XCJXZWJLaXRMZWdhY3lcIlxuXCIke1NSQ1JPT1R9L3NjcmlwdHMvY29weS1mcmFtZXdvcmtz
LXRvLXNlY29uZGFyeS1wYXRoLnNoXCJcbiI7CiAJCX07CiAJCTdDMDIzMjFCMjUxQjlBOEEwMEJB
N0JCNiAvKiBHZW5lcmF0ZSBQcmVmZXJlbmNlcyAqLyA9IHsKIAkJCWlzYSA9IFBCWFNoZWxsU2Ny
aXB0QnVpbGRQaGFzZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDI5MDc1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDIyLTAzLTAyICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJv
ZmZAYXBwbGUuY29tPgorCisgICAgICAgIENvcHkgV2ViS2l0IGZyYW1ld29ya3MgYW5kIFhQQyBw
cm9jZXNzZXMgdG8gU2Vjb25kYXJ5IFBhdGgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzNzM5NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIGJ1aWxkIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGFu
ZCBzY3JpcHRzIHRvIGNvcHkgdGhlIGJ1aWx0IEZyYW1ld29yayB0byB0aGUgU1lTVEVNX1NFQ09O
REFSWV9DT05URU5UX1BBVEgKKyAgICAgICAgd2hlbiBpdCBpcyBzZXQuCisKKyAgICAgICAgKiBD
b25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnOgorCiAyMDIyLTAzLTAxICBXZW5zb24gSHNpZWgg
IDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIGZvY3VzKHtwcmV2ZW50U2Nyb2xs
OiB0cnVlfSkgZG9lcyBub3QgcHJldmVudCBzY3JvbGxpbmcgb24gaU9TCkluZGV4OiBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9Db25maWd1cmF0aW9ucy9CYXNlLnhjY29uZmlnCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRpb25zL0Jhc2UueGNjb25maWcJ
KHJldmlzaW9uIDI5MDc1NykKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NvbmZpZ3VyYXRp
b25zL0Jhc2UueGNjb25maWcJKHdvcmtpbmcgY29weSkKQEAgLTMzLDYgKzMzLDkgQEAgVVNFX0lO
VEVSTkFMX1NES19SZWxlYXNlID0gJChIQVZFX0lOVEVSTkFMX1NESyk7CiAKIElOU1RBTExfUEFU
SF9QUkVGSVggPSAkKElOU1RBTExfUEFUSF9QUkVGSVhfJChVU0VfU1lTVEVNX0NPTlRFTlRfUEFU
SCkpOwogSU5TVEFMTF9QQVRIX1BSRUZJWF9ZRVMgPSAkKFNZU1RFTV9DT05URU5UX1BBVEgpOwor
U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZID0gJChTWVNURU1fU0VDT05EQVJZ
X0NPTlRFTlRfUEFUSCkkKFNZU1RFTV9MSUJSQVJZX0RJUikvU3RhZ2VkRnJhbWV3b3Jrcy9TYWZh
cmkvCitDT1BZX1NUQUdFRF9GUkFNRVdPUktTX1RPX1NFQ09OREFSWV9QQVRIID0gTk8KK0NPUFlf
U1RBR0VEX0ZSQU1FV09SS1NfVE9fU0VDT05EQVJZX1BBVEhbc2RrPW1hY29zKl0gPSAkKFVTRV9T
WVNURU1fQ09OVEVOVF9QQVRIKQogCiBBTFdBWVNfU0VBUkNIX1VTRVJfUEFUSFMgPSBOTzsKIApJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9zY3JpcHRzL2NvcHktZnJhbWV3b3Jrcy10by1zZWNv
bmRhcnktcGF0aC5zaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3NjcmlwdHMv
Y29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCShub25leGlzdGVudCkKKysrIFNv
dXJjZS9XZWJLaXRMZWdhY3kvc2NyaXB0cy9jb3B5LWZyYW1ld29ya3MtdG8tc2Vjb25kYXJ5LXBh
dGguc2gJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw2MiBAQAorIyEvYmluL3NoCisKK3NldCAt
ZQorCitpZiBbWyAiJHtERVBMT1lNRU5UX0xPQ0FUSU9OfSIgIT0gIllFUyIgXV07IHRoZW4KKyAg
ICBlY2hvICJlcnJvcjogJChiYXNlbmFtZSAkMCkgc2hvdWxkIG9ubHkgYmUgcnVuIGZvciBkZXBs
b3ltZW50LXN0eWxlIChcInByb2R1Y3Rpb25cIiAvIFwibm9uLWVuZ2luZWVyaW5nXCIpIGJ1aWxk
cy4iCisgICAgZXhpdCAxCitmaQorCitpZiBbWyAiJHtVU0VfU1lTVEVNX0NPTlRFTlRfUEFUSH0i
ICE9ICJZRVMiIHx8ICIke0NPUFlfU1RBR0VEX0ZSQU1FV09SS1NfVE9fU0VDT05EQVJZX1BBVEh9
IiAhPSAiWUVTIiBdXTsgdGhlbgorICAgIGVjaG8gIlNraXBwaW5nIGNvcHlpbmcgZnJhbWV3b3Jr
cyB0byBzZWNvbmRhcnkgY29udGVudCBwYXRoLiIKKyAgICBleGl0IDAKK2ZpCisKK2lmIFtbICIk
e0FDVElPTn0iID09ICJpbnN0YWxsYXBpIiB8fCAiJHtBQ1RJT059IiA9PSAiaW5zdGFsbGhkcnMi
IF1dOyB0aGVuCisgICAgZWNobyAiU2tpcHBpbmcgY29weWluZyBmcmFtZXdvcmtzIHRvIHNlY29u
ZGFyeSBjb250ZW50IHBhdGggZm9yIGluc3RhbGxhcGkgb3IgaW5zdGFsbGhkcnMgYWN0aW9uLiIK
KyAgICBleGl0IDAKK2ZpCisKK2lmIFtbIC16ICIke0ZSQU1FV09SS1NfVE9fQ09QWV9UT19TRUNP
TkRBUllfUEFUSH0iICYmIC16ICIke0RZTElCU19UT19DT1BZX1RPX1NFQ09OREFSWV9QQVRIfSIg
XV07IHRoZW4KKyAgICBlY2hvICJ3YXJuaW5nOiBOZWl0aGVyIEZSQU1FV09SS1NfVE9fQ09QWV9U
T19TRUNPTkRBUllfUEFUSCBvciBEWUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSCBhcmUg
c2V0LiIKK2ZpCisKK2lmIFtbIC16ICIke1NFQ09OREFSWV9TVEFHRURfRlJBTUVXT1JLX0RJUkVD
VE9SWX0iIF1dOyB0aGVuCisgICAgZWNobyAiZXJyb3I6IFNFQ09OREFSWV9TVEFHRURfRlJBTUVX
T1JLX0RJUkVDVE9SWSBpcyBub3Qgc2V0LiIKKyAgICBleGl0IDEKK2ZpCisKK2Z1bmN0aW9uIGNv
cHlfcHJvZHVjdF90b19kZXN0aW5hdGlvbl9mcmFtZXdvcmtfZGlyZWN0b3J5Cit7CisgICAgUFJP
RFVDVF9DT01QT05FTlQ9JDEKKworICAgICMgSW4gZGVwbG95bWVudCBidWlsZHMsIEJVSUxUX1BS
T0RVQ1RTX0RJUiBkb2Vzbid0IHBvaW50IHRvIHRoZSBhY3R1YWwgbG9jYXRpb24gb2YgYW55IHBy
b2R1Y3RzLAorICAgICMgYnV0IHRvIGEgc2luZ2xlIGZvbGRlciBvZiBzeW1saW5rcyB0byBhbGwg
YnVpbHQgcHJvZHVjdHMsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGV5IGFyZSBhY3R1YWxseQor
ICAgICMgYmVpbmcgaW5zdGFsbGVkLiBXZSBuZWVkIHRvIGNvcHkgdGhlIGFjdHVhbCBwcm9kdWN0
cyB0byB0aGUgc2Vjb25kYXJ5IGNvbnRlbnQgcGF0aCwgKm5vdCoganVzdCBhIHN5bWxpbmsuCisg
ICAgU09VUkNFX1BST0RVQ1RfUEFUSD0iJChyZWFkbGluayAiJHtCVUlMVF9QUk9EVUNUU19ESVJ9
LyR7UFJPRFVDVF9DT01QT05FTlR9IikiCisKKyAgICBlY2hvICJDb3B5aW5nICR7U09VUkNFX1BS
T0RVQ1RfUEFUSH0gdG8gJHtERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZfSIKKyAgICBy
c3luYyAtYUUgIiR7U09VUkNFX1BST0RVQ1RfUEFUSH0iICIke0RFU1RJTkFUSU9OX0ZSQU1FV09S
S19ESVJFQ1RPUll9IgorfQorCitpZiBbWyAhIC16ICIke1NFQ09OREFSWV9TVEFHRURfRlJBTUVX
T1JLX0RJUkVDVE9SWX0iIF1dOyB0aGVuCisgICAgREVTVElOQVRJT05fRlJBTUVXT1JLX0RJUkVD
VE9SWT0iJHtEU1RST09UfSR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZfSIK
KyAgICBta2RpciAtcCAiJHtERVNUSU5BVElPTl9GUkFNRVdPUktfRElSRUNUT1JZfSIKKworICAg
IGZvciBGUkFNRVdPUktfTkFNRSBpbiAkKGVjaG8gJHtGUkFNRVdPUktTX1RPX0NPUFlfVE9fU0VD
T05EQVJZX1BBVEh9IHwgdHIgJyAnICdcbicpCisgICAgZG8KKyAgICAgICAgRlJBTUVXT1JLX0JV
TkRMRV9OQU1FPSIke0ZSQU1FV09SS19OQU1FfS5mcmFtZXdvcmsiCisKKyAgICAgICAgY29weV9w
cm9kdWN0X3RvX2Rlc3RpbmF0aW9uX2ZyYW1ld29ya19kaXJlY3RvcnkgJHtGUkFNRVdPUktfQlVO
RExFX05BTUV9CisgICAgZG9uZQorZmkKKworaWYgW1sgISAteiAiJHtEWUxJQlNfVE9fQ09QWV9U
T19TRUNPTkRBUllfUEFUSH0iIF1dOyB0aGVuCisgICAgREVTVElOQVRJT05fRlJBTUVXT1JLX0RJ
UkVDVE9SWT0iJHtEU1RST09UfSR7U0VDT05EQVJZX1NUQUdFRF9GUkFNRVdPUktfRElSRUNUT1JZ
fSR7U1RBR0VEX0RZTElCX0ZSQU1FV09SS19QQVRIfSIKKyAgICBta2RpciAtcCAiJHtERVNUSU5B
VElPTl9GUkFNRVdPUktfRElSRUNUT1JZfSIKKworICAgIGZvciBEWUxJQiBpbiAkKGVjaG8gJHtE
WUxJQlNfVE9fQ09QWV9UT19TRUNPTkRBUllfUEFUSH0gfCB0ciAnICcgJ1xuJykKKyAgICBkbwor
ICAgICAgICBjb3B5X3Byb2R1Y3RfdG9fZGVzdGluYXRpb25fZnJhbWV3b3JrX2RpcmVjdG9yeSAk
e0RZTElCfQorICAgIGRvbmUKK2ZpCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBTb3VyY2UvV2ViS2l0
TGVnYWN5L3NjcmlwdHMvY29weS1mcmFtZXdvcmtzLXRvLXNlY29uZGFyeS1wYXRoLnNoCl9fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX18KQWRkZWQ6IHN2bjpleGVjdXRhYmxlCiMjIC0wLDAgKzEgIyMKKyoKXCBObyBuZXdsaW5l
IGF0IGVuZCBvZiBwcm9wZXJ0eQo=
</data>
<flag name="review"
          id="481117"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>