<?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>39624</bug_id>
          
          <creation_ts>2010-05-24 15:41:51 -0700</creation_ts>
          <short_desc>--squash should go away and become the default</short_desc>
          <delta_ts>2010-07-11 11:34:50 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>eric</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>229951</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 15:41:51 -0700</bug_when>
    <thetext>As per the conclusions of https://lists.webkit.org/pipermail/webkit-dev/2010-April/012651.html, --git-commit=* should replace --squash and --no-squash should go away entirely.

Leaving out --git-commit means that webkit-patch should operate only on working-copy changes and &quot;webkit-patch land&quot; should error out if there are any local commits rather than silently committing them.

I think having upload, check-style, etc., work even if there are local commits is fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229958</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-24 15:47:38 -0700</bug_when>
    <thetext>You shell will eat &quot;*&quot;, seems like a poor choice of argument.

I guess I should go back and read the thread as to why --git-commit=* is better than --squash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229963</commentid>
    <comment_count>2</comment_count>
      <attachid>56939</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 15:54:42 -0700</bug_when>
    <thetext>Created attachment 56939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229964</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 15:56:26 -0700</bug_when>
    <thetext>Attachment 56939 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
 &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style errors to report.  Specify a
                        filter using a comma-delimited list of boolean filter rules, for example &quot;--
                        filter -whitespace,+whitespace/braces&quot;.  To display all categories and which
                        are enabled by default, pass no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use &apos;commit_id..&apos; to check all changes
                        after commmit_id, or &apos;*&apos; to check all changes in the local branch including
                        local commits and staged/unstages working copy changes.
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.  Can be an integer 1-5,
                        with 1 displaying all errors.  Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot; (for Visual Studio).
                        Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>229969</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 16:04:15 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; You shell will eat &quot;*&quot;, seems like a poor choice of argument.

Hm. Yeah, this is kind of gross. &quot;--git-commit=*&quot; or &quot;-g*&quot; work, but &quot;--git-commit *&quot; and &quot;-g *&quot; don&apos;t. Any suggestions for alternatives? We want something simple that people can remember and that won&apos;t conflict with a commit/branch name.
 
&gt; I guess I should go back and read the thread as to why --git-commit=* is better than --squash.

It makes things simpler both in terms of using webkit-patch and in terms of the underlying code. Much of this change is deleting code! In terms of webkit-patch use, it turns three mutually exclusive command-line flags into one. I think that will be much easier for people to wrap their heads around.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230025</commentid>
    <comment_count>5</comment_count>
      <attachid>56939</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 18:26:40 -0700</bug_when>
    <thetext>Comment on attachment 56939
Patch

As per discussion on #webkit and webkit-dev, I&apos;m changing this patch to squash by default and prompt instead of erroring out in cases where squashing will actually squash multiple commits.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230026</commentid>
    <comment_count>6</comment_count>
      <attachid>56956</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 18:31:13 -0700</bug_when>
    <thetext>Created attachment 56956
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230027</commentid>
    <comment_count>7</comment_count>
      <attachid>56956</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-24 18:31:45 -0700</bug_when>
    <thetext>Comment on attachment 56956
Patch

This patch lacks the git config preference to avoid prompting, but I&apos;ll add that in a followup patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230028</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-24 18:32:30 -0700</bug_when>
    <thetext>Attachment 56956 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
 &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style errors to report.  Specify a
                        filter using a comma-delimited list of boolean filter rules, for example &quot;--
                        filter -whitespace,+whitespace/braces&quot;.  To display all categories and which
                        are enabled by default, pass no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use &apos;commit_id..&apos; to check all changes
                        after commmit_id, or &apos;*&apos; to check all changes in the local branch including
                        local commits and staged/unstages working copy changes.
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.  Can be an integer 1-5,
                        with 1 displaying all errors.  Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot; (for Visual Studio).
                        Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230030</commentid>
    <comment_count>9</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-24 18:36:27 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Attachment 56956 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
&gt; Last 3072 characters of output:
&gt;  &quot;whitespace/braces&quot;.
&gt; 
&gt;   Examples: --filter=-whitespace,+whitespace/braces
&gt;             --filter=-whitespace,-runtime/printf,+runtime/printf_format
&gt;             --filter=-,+build/include_what_you_use
&gt; 
&gt; Paths:
&gt;   Certain style-checking behavior depends on the paths relative to
&gt;   the WebKit source root of the files being checked.  For example,
&gt; &lt;snip&gt;
&gt; 
&gt; ERROR: no such option: --no-squash
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

We probably want to do something about this extended error message -- maybe send the help string to stdout instead of stderr if that will do it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230431</commentid>
    <comment_count>10</comment_count>
      <attachid>57042</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-25 13:53:14 -0700</bug_when>
    <thetext>Created attachment 57042
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230432</commentid>
    <comment_count>11</comment_count>
      <attachid>57042</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-25 13:53:58 -0700</bug_when>
    <thetext>Comment on attachment 57042
Patch

Went ahead and added support for webkit-patch.squash=true bypassing the prompt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230434</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-25 13:56:08 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; 
&gt; We probably want to do something about this extended error message -- maybe send the help string to stdout instead of stderr if that will do it.

Yeah, we should not post such long error messages to bugzilla. This specific error is a bit of a unique case. My patch removes --no-squash. So the style-queue, which does not have my patch, calls check-webkit-style, which does have my patch, with --no-squash and it errors out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>230468</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-25 14:42:45 -0700</bug_when>
    <thetext>Attachment 57042 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
 &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style errors to report.  Specify a
                        filter using a comma-delimited list of boolean filter rules, for example &quot;--
                        filter -whitespace,+whitespace/braces&quot;.  To display all categories and which
                        are enabled by default, pass no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use &apos;commit_id..&apos; to check all changes
                        after commmit_id, or &apos;*&apos; to check all changes in the local branch including
                        local commits and staged/unstages working copy changes.
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.  Can be an integer 1-5,
                        with 1 displaying all errors.  Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot; (for Visual Studio).
                        Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231352</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-27 10:28:59 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231679</commentid>
    <comment_count>15</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-28 06:52:31 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #9)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; If any of these errors are false positives, please file a bug against check-webkit-style.
&gt; &gt; 
&gt; &gt; We probably want to do something about this extended error message -- maybe send the help string to stdout instead of stderr if that will do it.
&gt; 
&gt; Yeah, we should not post such long error messages to bugzilla. This specific error is a bit of a unique case. My patch removes --no-squash. So the style-queue, which does not have my patch, calls check-webkit-style, which does have my patch, with --no-squash and it errors out.

I filed a bug for this behavior here:

https://bugs.webkit.org/show_bug.cgi?id=39875</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231685</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Jerdonek">cjerdonek</who>
    <bug_when>2010-05-28 06:58:54 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (From update of attachment 56939 [details])
&gt; As per discussion on #webkit and webkit-dev, I&apos;m changing this patch to squash by default and prompt instead of erroring out in cases where squashing will actually squash multiple commits.

Can you provide a direct link to the webkit-dev e-mail saying what the final decision was?  I thought the decision was not to use &quot;*&quot; anymore, but the latest patch (patch #3) still has some references to *.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231874</commentid>
    <comment_count>17</comment_count>
      <attachid>57363</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-28 12:34:34 -0700</bug_when>
    <thetext>Created attachment 57363
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231876</commentid>
    <comment_count>18</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-28 12:35:58 -0700</bug_when>
    <thetext>Attachment 57363 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style
                        errors to report.  Specify a filter using a comma-
                        delimited list of boolean filter rules, for example &quot;
                        --filter -whitespace,+whitespace/braces&quot;.  To display
                        all categories and which are enabled by default, pass
                        no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use
                        &apos;commit_id..&apos; to check all changes after commmit_id
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.
                        Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot;
                        (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>231877</commentid>
    <comment_count>19</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-05-28 12:36:26 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #5)
&gt; &gt; (From update of attachment 56939 [details] [details])
&gt; &gt; As per discussion on #webkit and webkit-dev, I&apos;m changing this patch to squash by default and prompt instead of erroring out in cases where squashing will actually squash multiple commits.
&gt; 
&gt; Can you provide a direct link to the webkit-dev e-mail saying what the final decision was?  I thought the decision was not to use &quot;*&quot; anymore, but the latest patch (patch #3) still has some references to *.

Ugh. I just missed a couple cases. Most of them were cases where we assertRaises and putting --git-commit=* or not both result in raising an error.

Sorry for the confusion. There are no more &quot;*&quot;s anywhere. :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233984</commentid>
    <comment_count>20</comment_count>
      <attachid>57833</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-03 16:37:11 -0700</bug_when>
    <thetext>Created attachment 57833
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233985</commentid>
    <comment_count>21</comment_count>
      <attachid>57833</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-03 16:37:49 -0700</bug_when>
    <thetext>Comment on attachment 57833
Patch

Just merging this patch to trunk.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>233987</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-03 16:39:13 -0700</bug_when>
    <thetext>Attachment 57833 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style
                        errors to report.  Specify a filter using a comma-
                        delimited list of boolean filter rules, for example &quot;
                        --filter -whitespace,+whitespace/braces&quot;.  To display
                        all categories and which are enabled by default, pass
                        no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use
                        &apos;commit_id..&apos; to check all changes after commmit_id
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.
                        Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot;
                        (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235305</commentid>
    <comment_count>23</comment_count>
      <attachid>57833</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 10:09:54 -0700</bug_when>
    <thetext>Comment on attachment 57833
Patch

Could not upload patch 57833 to rietveld. Rietveld is down or there&apos;s a bug in the upload bot.

Unexpected failure when landing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;/WebKit/WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;post-attachment-to-rietveld&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=rietveld-upload-queue&apos;, 57833]&quot; exit_code: 1
Last 500 characters of output:
d.py&quot;, line 143, in _process_patch
    self._main_sequence.run_and_handle_errors(tool, options, state)
  File &quot;/WebKit/WebKitTools/Scripts/webkitpy/tool/commands/stepsequence.py&quot;, line 86, in run_and_handle_errors
    command.handle_script_error(tool, state, e)
  File &quot;/WebKit/WebKitTools/Scripts/webkitpy/tool/commands/queues.py&quot;, line 340, in handle_script_error
    self._reject_patch(patch, cls._error_message_for_bug(tool, status_id, script_error))
NameError: global name &apos;self&apos; is not defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>235309</commentid>
    <comment_count>24</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-08 10:12:35 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; (From update of attachment 57833 [details])
&gt; Could not upload patch 57833 to rietveld. Rietveld is down or there&apos;s a bug in the upload bot.

This is a bug in the rietveld upload bot. Sorry for the noise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236032</commentid>
    <comment_count>25</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-09 15:04:24 -0700</bug_when>
    <thetext>ping</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237047</commentid>
    <comment_count>26</comment_count>
      <attachid>57833</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-06-11 14:54:28 -0700</bug_when>
    <thetext>Comment on attachment 57833
Patch

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:101
 +          self._user = User()
Um... Do we really want SCM to be able to interact with the user?  I&apos;m wondering if this is a layering violation.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:580
 +          return &quot;&quot;&quot;There are %s local commits%s. Everything will be committed as a single commit. To avoid this prompt, set &quot;git config webkit-patch.squash true&quot;. Continue?&quot;&quot;&quot; % (num_local_commits, working_directory_message)
This is hard to read as one line. 

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:583
 +          squash = Git.read_git_config(&apos;webkit-patch.squash&apos;)
Should this be webkit-patch.commit_should_always_squash instead?  Does .squash mean multiple things?  This commit behavior seems possibly destructive where as other meanings of .squash could be less so.

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:599
 +          if not self.commit_should_always_squash():
Seems this could be its own function. :)

WebKitTools/Scripts/webkitpy/common/checkout/scm.py:604
 +                  raise ScriptError(message=&quot;Did not commit&quot;)
Confused.

WebKitTools/Scripts/webkitpy/tool/steps/preparechangelog.py:57
 +          if self._tool.scm().support_local_commits():
Does this need to check _options.git_commit first?

Big change for my little brain... :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237986</commentid>
    <comment_count>27</comment_count>
      <attachid>58688</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-14 12:32:13 -0700</bug_when>
    <thetext>Created attachment 58688
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237987</commentid>
    <comment_count>28</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-14 12:32:52 -0700</bug_when>
    <thetext>Thanks for the feedback.

(In reply to comment #26)
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:101
&gt;  +          self._user = User()
&gt; Um... Do we really want SCM to be able to interact with the user?  I&apos;m wondering if this is a layering violation.

Not sure. SVN already uses User.

The only way I can think to address this is to raise a custom Exception, e.g. AmbiguousCommitError, or something. Then the calling code can catch that and prompt. Then, the calling code can call commit_with_message again with an extra bool (e.g. force_commit) that will skip the error.

I made that change here and for the SVN. It is definitely cleaner in terms of separation of layers. I&apos;m not a huge fan of using Exceptions for control flow though.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:580
&gt;  +          return &quot;&quot;&quot;There are %s local commits%s. Everything will be committed as a single commit. To avoid this prompt, set &quot;git config webkit-patch.squash true&quot;. Continue?&quot;&quot;&quot; % (num_local_commits, working_directory_message)
&gt; This is hard to read as one line. 

Fixed.
&gt; 
&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:583
&gt;  +          squash = Git.read_git_config(&apos;webkit-patch.squash&apos;)
&gt; Should this be webkit-patch.commit_should_always_squash instead?  Does .squash mean multiple things?  This commit behavior seems possibly destructive where as other meanings of .squash could be less so.

Changed it. squash just means one thing afaik.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:599
&gt;  +          if not self.commit_should_always_squash():
&gt; Seems this could be its own function. :)

Good point. Done.

&gt; WebKitTools/Scripts/webkitpy/common/checkout/scm.py:604
&gt;  +                  raise ScriptError(message=&quot;Did not commit&quot;)
&gt; Confused.

Added a comment explaining this.

&gt; WebKitTools/Scripts/webkitpy/tool/steps/preparechangelog.py:57
&gt;  +          if self._tool.scm().support_local_commits():
&gt; Does this need to check _options.git_commit first?

No. This returns the correct value for squashing if git_commit is None.

&gt; Big change for my little brain... :(

Sorry, couldn&apos;t think of how to make it smaller. I could make it less than half the size by leaving in the squash arguments but making them noops, then removing them in a followup patch, but that seems silly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>237989</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-14 12:35:39 -0700</bug_when>
    <thetext>Attachment 58688 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
For example, the
  rule &quot;+foo&quot; passes any category that starts with &quot;foo&quot;, and &quot;-foo&quot; fails
  any such category.  The filter input &quot;-whitespace,+whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style errors to report.  Specify a filter using a comma-delimited
                        list of boolean filter rules, for example &quot;--filter -whitespace,+whitespace/braces&quot;.  To display all
                        categories and which are enabled by default, pass no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use &apos;commit_id..&apos; to check all changes after commmit_id
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.  Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot; (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240185</commentid>
    <comment_count>30</comment_count>
      <attachid>58688</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-06-18 15:37:43 -0700</bug_when>
    <thetext>Comment on attachment 58688
Patch

I use --no-squash all the time.  I don&apos;t think we should remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240264</commentid>
    <comment_count>31</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-18 21:01:58 -0700</bug_when>
    <thetext>(In reply to comment #30)
&gt; I use --no-squash all the time.  I don&apos;t think we should remove it.

In what cases do you use --no-squash? Are you sure they&apos;re not met by this patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>244964</commentid>
    <comment_count>32</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-06-30 15:12:11 -0700</bug_when>
    <thetext>Adam and I talked this over in person. His use case is making a change in the working copy and uploading it when there are already local commits. He can&apos;t just commit locally and upload that due to bug 40552 (can&apos;t update the ChangeLog on a local commit).

I think the use-case is worth supporting. We should make --git-commit=head.. operate on the working copy.

I&apos;ll try and post a patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246110</commentid>
    <comment_count>33</comment_count>
      <attachid>60408</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-02 14:44:31 -0700</bug_when>
    <thetext>Created attachment 60408
Support --git-commit=HEAD..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246111</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-02 14:47:30 -0700</bug_when>
    <thetext>Attachment 60408 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style
                        errors to report.  Specify a filter using a comma-
                        delimited list of boolean filter rules, for example &quot;
                        --filter -whitespace,+whitespace/braces&quot;.  To display
                        all categories and which are enabled by default, pass
                        no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use
                        &apos;commit_id..&apos; to check all changes after commmit_id
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.
                        Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot;
                        (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249114</commentid>
    <comment_count>35</comment_count>
      <attachid>60408</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-09 11:00:57 -0700</bug_when>
    <thetext>Comment on attachment 60408
Support --git-commit=HEAD..

Can we be more user friendly during the transition?  Maybe we should understand --no-squash and print a message that explains the new way is --git-commit=HEAD.. ?  Another option is to automatically re-write --no-squash into --git-commit=HEAD..  Some minor comments below.

WebKitTools/Scripts/webkitpy/tool/steps/checkstyle_unittest.py:38
 +      pass
Should we delete this file if there aren&apos;t any tests in it?

WebKitTools/Scripts/webkitpy/tool/steps/commit.py:68
 +              username = User.prompt(&quot;%s login: &quot; % e.server_host, repeat=5)
You should use self._tool.user here.

WebKitTools/Scripts/webkitpy/tool/steps/commit.py:71
 +              self._commit(username=username)
What if this throws an AmbiguousCommitError?  I think you want to use some sort of loop with these things as state variables.  You can put a retry limit in the loop if you&apos;re worried about going infinite.

WebKitTools/ChangeLog:9
 +          need to be met by a wrapper script around webkit-patch.
This isn&apos;t really true anymore, right?  I can use --git-commit=HEAD..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249168</commentid>
    <comment_count>36</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-09 12:15:32 -0700</bug_when>
    <thetext>(In reply to comment #35)
&gt; (From update of attachment 60408 [details])
&gt; Can we be more user friendly during the transition?  Maybe we should understand --no-squash and print a message that explains the new way is --git-commit=HEAD.. ?  Another option is to automatically re-write --no-squash into --git-commit=HEAD..  Some minor comments below.

Good idea. I put in --squash and --no-squash. I made them error out with a descriptive message. I&apos;d like to remove these in a couple weeks once people have adjusted.

&gt; WebKitTools/Scripts/webkitpy/tool/steps/checkstyle_unittest.py:38
&gt;  +      pass
&gt; Should we delete this file if there aren&apos;t any tests in it?

Done.

&gt; WebKitTools/Scripts/webkitpy/tool/steps/commit.py:68
&gt;  +              username = User.prompt(&quot;%s login: &quot; % e.server_host, repeat=5)
&gt; You should use self._tool.user here.

Done.

&gt; WebKitTools/Scripts/webkitpy/tool/steps/commit.py:71
&gt;  +              self._commit(username=username)
&gt; What if this throws an AmbiguousCommitError?  I think you want to use some sort of loop with these things as state variables.  You can put a retry limit in the loop if you&apos;re worried about going infinite.

This isn&apos;t possible right now. Only the SVN impl of scm fires AuthenticationError and only the git impl fires AmbiguousCommitError. The former could definitely change though. Added a try/except.

&gt; WebKitTools/ChangeLog:9
&gt;  +          need to be met by a wrapper script around webkit-patch.
&gt; This isn&apos;t really true anymore, right?  I can use --git-commit=HEAD..

No, there are still people who want to do setup local commits and have the script act on all the commits at once (e.g. commit them all with a single command). Made the description a bit more accurate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249169</commentid>
    <comment_count>37</comment_count>
      <attachid>61074</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-09 12:17:03 -0700</bug_when>
    <thetext>Created attachment 61074
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249171</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 12:17:51 -0700</bug_when>
    <thetext>Attachment 61074 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 2
Last 3072 characters of output:
whitespace/braces&quot; fails
  the category &quot;whitespace/tab&quot; and passes &quot;whitespace/braces&quot;.

  Examples: --filter=-whitespace,+whitespace/braces
            --filter=-whitespace,-runtime/printf,+runtime/printf_format
            --filter=-,+build/include_what_you_use

Paths:
  Certain style-checking behavior depends on the paths relative to
  the WebKit source root of the files being checked.  For example,
  certain types of errors may be handled differently for files in
  WebKit/gtk/webkit/ (e.g. by suppressing &quot;readability/naming&quot; errors
  for files in this directory).

  Consequently, if the path relative to the source root cannot be
  determined for a file being checked, then style checking may not
  work correctly for that file.  This can occur, for example, if no
  WebKit checkout can be found, or if the source root can be detected,
  but one of the files being checked lies outside the source tree.

  If a WebKit checkout can be detected and all files being checked
  are in the source tree, then all paths will automatically be
  converted to paths relative to the source root prior to checking.
  This is also useful for display purposes.

  Currently, this command can detect the source root only if the
  command is run from within a WebKit checkout (i.e. if the current
  working directory is below the root of a checkout).  In particular,
  it is not recommended to run this script from a directory outside
  a checkout.

  Running this script from a top-level WebKit source directory and
  checking only files in the source tree will ensure that all style
  checking behaves correctly -- whether or not a checkout can be
  detected.  This is because all file paths will already be relative
  to the source root and so will not need to be converted.

Options:
  -h, --help            show this help message and exit
  -f RULES, --filter-rules=RULES
                        set a filter to control what categories of style
                        errors to report.  Specify a filter using a comma-
                        delimited list of boolean filter rules, for example &quot;
                        --filter -whitespace,+whitespace/braces&quot;.  To display
                        all categories and which are enabled by default, pass
                        no value (e.g. &apos;-f &quot;&quot;&apos; or &apos;--filter=&apos;).
  -g COMMIT, --git-diff=COMMIT, --git-commit=COMMIT
                        check all changes in the given commit. Use
                        &apos;commit_id..&apos; to check all changes after commmit_id
  -m INT, --min-confidence=INT
                        set the minimum confidence of style errors to report.
                        Can be an integer 1-5, with 1 displaying all errors.
                        Defaults to 1.
  -o FORMAT, --output-format=FORMAT
                        set the output format, which can be &quot;emacs&quot; or &quot;vs7&quot;
                        (for Visual Studio).  Defaults to &quot;emacs&quot;.
  -v, --verbose         enable verbose logging.

This script can miss errors and does not substitute for code review.

ERROR: no such option: --no-squash


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249314</commentid>
    <comment_count>39</comment_count>
      <attachid>61074</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-09 15:17:08 -0700</bug_when>
    <thetext>Comment on attachment 61074
Patch

I&apos;m glad we&apos;re getting this done.  Please fix the retry look and coordinate with me and eric when you land this change since we&apos;ll need to reboot all the bots at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249329</commentid>
    <comment_count>40</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-09 15:43:15 -0700</bug_when>
    <thetext>Committed r63004: &lt;http://trac.webkit.org/changeset/63004&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249440</commentid>
    <comment_count>41</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-07-09 19:04:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/63004 might have broken Leopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249639</commentid>
    <comment_count>42</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2010-07-11 10:30:13 -0700</bug_when>
    <thetext>My workflow is a bit different than others because I often have a very slow review cycle. I may upload patches that sit for days without being reviewed. In the meantime, I wish to continue working on further patches. In those cases I use them as local commits, but I never want to upload them.

Is there a way with this change to disable the squash behavior entirely? For me it is almost always the incorrect behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>249643</commentid>
    <comment_count>43</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-11 11:34:50 -0700</bug_when>
    <thetext>&gt; Is there a way with this change to disable the squash behavior entirely? For me it is almost always the incorrect behavior.

There&apos;s a git config setting to control the behavior.  If the setting you want doesn&apos;t exist, feel free to make a new one.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56939</attachid>
            <date>2010-05-24 15:54:42 -0700</date>
            <delta_ts>2010-05-24 18:26:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100524155441.patch</filename>
            <type>text/plain</type>
            <size>53800</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmM2YyMWIyYzNlOTU2ZjE0OTBlNDBkMTEzZWI4YTRmN2I3NWE1ZDg2Li42MzM5NzNi
ZTBkNzNiZWI0NWExYjI5ZTJhNTI3NmNkNzg1OTQxNjNmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDcgQEAK
IDIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLXNxdWFzaCBzaG91bGQgYmUg
cmVwbGFjZWQgd2l0aCAtLWdpdC1jb21taXQ9KgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzk2MjQKKworICAgICAgICBEZWxldGUgLS1uby1zcXVhc2gg
ZW50aXJlbHkuIFRoYXQgdXNlLWNhc2UgKGxvY2FsLWNvbW1pdC1wZXItYnVnKSB3aWxsCisgICAg
ICAgIG5lZWQgdG8gYmUgbWV0IGJ5IGEgd3JhcHBlciBzY3JpcHQgYXJvdW5kIHdlYmtpdC1wYXRj
aC4KKworICAgICAgICBCeSBkZWZhdWx0LCB3ZWJraXQtcGF0Y2ggb3BlcmF0ZXMgb24gdGhlIHdv
cmtpbmcgY29weSBjaGFuZ2VzIG9ubHkuCisgICAgICAgIElmIHRoZXJlIGFyZSBsb2NhbCBjb21t
aXRzLCB0aGV5IGFyZSBpZ25vcmVkIHVubGVzcyB0aGUgY29tbWFuZCBpcyAKKyAgICAgICAgd2Vi
a2l0LXBhdGNoIGxhbmQsIGluIHdoaWNoIGNhc2UgaXQncyBhbiBlcnJvci4KKworICAgICAgICAt
LWdpdC1jb21taXQ9KiBvciAtZyogY29tbWl0cyBhbGwgY2hhbmdlcyBpbiB0aGUgY3VycmVudCBi
cmFuY2guCisKKyAgICAgICAgLS1naXQtY29tbWl0PWNvbW1pdCByYW5nZSBjb21taXRzIGFsbCBs
b2NhbCBjb21taXRzIGluIHRoZSByYW5nZS4KKyAgICAgICAgVGhlIHN0YXJ0IG9mIHRoZSByYW5n
ZSBpcyBleGNsdXNpdmUsIHRoZSBlbmQgaXMgaW5jbHVzaXZlIHRvIGJlIGNvbnNpc3RlbnQKKyAg
ICAgICAgd2l0aCBvdGhlciBnaXQgY29tbWFuZHMuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNr
LXdlYmtpdC1zdHlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291
dC9hcGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBp
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0
L3NjbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21f
dW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2
ZWxkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5OgorCisyMDEwLTA1LTI0ICBPamFuIFZhZmFpICA8b2phbkBjaHJvbWl1bS5vcmc+CisK
ICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCiAKICAgICAgICAgYWRkIHRlc3RzIHRv
IGVuc3VyZSB0aGF0IC0tZ2l0LWNvbW1pdCByYW5nZXMgYXJlIGV4Y2x1c2l2ZSBvZiB0aGUgc3Rh
cnQgb2YgdGhlIHJhbmdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdl
YmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4
IDE5ZDM3NjI3NTU5MjdkYmU1MjkyYmY1OTE1OTcwOGQ5MjFhYjZkMjcuLjlhMWFlMWUzYmY0ZDAw
YjQ0ODYzZTVmM2RlNzk0ZGZjMTM4OGIyYWQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Vi
a2l0LXN0eWxlCkBAIC0xMTUsNyArMTE1LDcgQEAgZGVmIG1haW4oKToKICAgICBpZiBwYXRoczoK
ICAgICAgICAgZmlsZV9yZWFkZXIucHJvY2Vzc19wYXRocyhwYXRocykKICAgICBlbHNlOgotICAg
ICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9w
dGlvbnMuc3F1YXNoKQorICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaChvcHRp
b25zLmdpdF9jb21taXQpCiAgICAgICAgIHBhdGNoX2NoZWNrZXIgPSBQYXRjaFJlYWRlcihmaWxl
X3JlYWRlcikKICAgICAgICAgcGF0Y2hfY2hlY2tlci5jaGVjayhwYXRjaCkKIApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CmluZGV4
IGE1YWM5Mzk4ZTg4ZTc1MWZlODU0NDM2NGI2OWMzNjM1ZmUxMGE3ZjEuLmNhMjhlMzIzMzI1ODcy
ZGNlYzAxZDEzYWQxNjdmNTI1YmY3NzZkMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKQEAgLTgzLDE2ICs4MywxNiBAQCBj
bGFzcyBDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdfaWRfZm9yX3JldmlzaW9uKHNlbGYs
IHJldmlzaW9uKToKICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9u
KHJldmlzaW9uKS5idWdfaWQoKQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwg
Z2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBn
aXRfY29tbWl0KToKICAgICAgICAgIyBTQ00gcmV0dXJucyBwYXRocyByZWxhdGl2ZSB0byBzY20u
Y2hlY2tvdXRfcm9vdAogICAgICAgICAjIENhbGxlcnMgKGVzcGVjaWFsbHkgdGhvc2UgdXNpbmcg
dGhlIENoYW5nZUxvZyBjbGFzcykgbWF5CiAgICAgICAgICMgZXhwZWN0IGFic29sdXRlIHBhdGhz
LCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIGFic29sdXRlIHBhdGhzLgotICAgICAgICBjaGFuZ2Vk
X2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAg
ICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdCkK
ICAgICAgICAgYWJzb2x1dGVfcGF0aHMgPSBbb3MucGF0aC5qb2luKHNlbGYuX3NjbS5jaGVja291
dF9yb290LCBwYXRoKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2ZpbGVzXQogICAgICAgICByZXR1cm4g
W3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMgaWYgc2VsZi5faXNfcGF0aF90b19jaGFu
Z2Vsb2cocGF0aCldCiAKLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6Ci0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYu
bW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0LCBzcXVhc2gpCisgICAgZGVmIGNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQpCiAgICAgICAg
IGlmIG5vdCBsZW4oY2hhbmdlbG9nX3BhdGhzKToKICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVy
cm9yKG1lc3NhZ2U9IkZvdW5kIG5vIG1vZGlmaWVkIENoYW5nZUxvZ3MsIGNhbm5vdCBjcmVhdGUg
YSBjb21taXQgbWVzc2FnZS5cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGwg
Y2hhbmdlcyByZXF1aXJlIGEgQ2hhbmdlTG9nLiAgU2VlOlxuIgpAQCAtMTA5LDkgKzEwOSw5IEBA
IGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBzb3J0
IGFuZCBsYWJlbCB0aGUgQ2hhbmdlTG9nIG1lc3NhZ2VzIGxpa2UgY29tbWl0LWxvZy1lZGl0b3Ig
ZG9lcy4KICAgICAgICAgcmV0dXJuIENvbW1pdE1lc3NhZ2UoIiIuam9pbihjaGFuZ2Vsb2dfbWVz
c2FnZXMpLnNwbGl0bGluZXMoKSkKIAotICAgIGRlZiBidWdfaWRfZm9yX3RoaXNfY29tbWl0KHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQo
c2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBwYXJz
ZV9idWdfaWQoc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwg
c3F1YXNoKS5tZXNzYWdlKCkpCisgICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKHNlbGYu
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQpLm1lc3NhZ2UoKSkKICAg
ICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAgICAgICAgcGFzcyAjIFdlIG1pZ2h0
IG5vdCBoYXZlIENoYW5nZUxvZ3MuCiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFzcyBDaGVja291
dChvYmplY3QpOgogCiAgICAgICAgICMgV2UgcmV2ZXJ0IHRoZSBDaGFuZ2VMb2dzIGJlY2F1c2Ug
cmVtb3ZpbmcgbGluZXMgZnJvbSBhIENoYW5nZUxvZwogICAgICAgICAjIGRvZXNuJ3QgbWFrZSBz
ZW5zZS4gIENoYW5nZUxvZ3MgYXJlIGFwcGVuZCBvbmx5LgotICAgICAgICBjaGFuZ2Vsb2dfcGF0
aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFs
c2UpCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9ncyhn
aXRfY29tbWl0PU5vbmUpCiAgICAgICAgIGlmIGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgogICAgICAg
ICAgICAgc2VsZi5fc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCiAKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Fw
aV91bml0dGVzdC5weQppbmRleCAxNDM2Mzc5YThkNzNiNWQyODQ5Y2U4NzFkMjQ1MDMwODUwZjNh
MmY3Li5mZGZkODc5OGRkNWNiOTdlM2UxYzVhMjk2YTZjMDYwYmIzYzE2YzkzIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRl
c3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQv
YXBpX3VuaXR0ZXN0LnB5CkBAIC0xMTQsMTEgKzExNCwxMSBAQCBjbGFzcyBDb21taXRNZXNzYWdl
Rm9yVGhpc0NvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgQ2hhbmdlTG9nIGlz
IGRpZmZpY3VsdCB0byBtb2NrIGF0IGN1cnJlbnQuCiAgICAgZGVmIHRlc3RfY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KE5v
bmUpCi0gICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGEgZ2l0X2Nv
bW1pdCwgc3F1YXNoOiBbIkNoYW5nZUxvZzEiLCAiQ2hhbmdlTG9nMiJdCisgICAgICAgIGNoZWNr
b3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJDaGFuZ2VMb2cx
IiwgIkNoYW5nZUxvZzIiXQogICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAg
ICAgZXhwZWN0ZWRfc3RkZXJyID0gIlBhcnNpbmcgQ2hhbmdlTG9nOiBDaGFuZ2VMb2cxXG5QYXJz
aW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMlxuIgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IG91
dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQsCi0gICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZSwgInNxdWFz
aCI6IEZhbHNlfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgICAg
IGt3YXJncz17ImdpdF9jb21taXQiOiBOb25lfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0
ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCks
IHNlbGYuZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCiAKIApAQCAtMTYzLDEzICsxNjMsMTMgQEAg
Y2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWdf
aWRfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAgICAg
Y2hlY2tvdXQgPSBDaGVja291dChzY20pCi0gICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdl
X2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IENvbW1pdE1lc3Nh
Z2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRyeTEpLmNvbnRlbnRzKCkuc3BsaXRsaW5l
cygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19pZF9mb3JfdGhpc19j
b21taXQoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpLCAzNjYyOSkKKyAgICAgICAgY2hl
Y2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9jb21taXQ6
IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRyeTEpLmNvbnRlbnRz
KCkuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19p
ZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lKSwgMzY2MjkpCiAKICAgICBkZWYgdGVz
dF9tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAg
ICAgc2NtLmNoZWNrb3V0X3Jvb3QgPSAiL2Zvby9iYXIiCi0gICAgICAgIHNjbS5jaGFuZ2VkX2Zp
bGVzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAi
cmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQorICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxh
bWJkYSBnaXRfY29tbWl0OiBbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0No
YW5nZUxvZyJdCiAgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQogICAgICAgICBleHBl
Y3RlZF9jaGFuZ2xvZ3MgPSBbIi9mb28vYmFyL0NoYW5nZUxvZyIsICIvZm9vL2Jhci9yZWxhdGl2
ZS9wYXRoL0NoYW5nZUxvZyJdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQubW9k
aWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSksIGV4cGVjdGVk
X2NoYW5nbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5tb2RpZmllZF9j
aGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSksIGV4cGVjdGVkX2NoYW5nbG9ncykKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weSBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQppbmRl
eCBlNjhjY2ZhOWE1YmU3YmY2Yjc5N2M4OTFjZjMwZTAwMGExMDRhNWQwLi5iMjk3ZmE3ZjFkMDIy
M2JkZTI2ODQwMTBkYjYyZWFjNTYzZDdmZGQ2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CkBAIC0xODksNyArMTg5LDcgQEAg
Y2xhc3MgU0NNOgogICAgIGRlZiBhZGQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNo
YW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVm
IGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYg
Y2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZik6CkBAIC0yMDQsNyArMjA0LDcgQEAgY2xh
c3MgU0NNOgogICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNy
ZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdElt
cGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNv
bW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMjIyLDEwICsy
MjIsNyBAQCBjbGFzcyBTQ006CiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhz
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBp
bXBsZW1lbnQiCiAKLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgotICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIK
LQotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5v
bmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9t
ZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSk6CiAg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVt
ZW50IgogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CkBAIC0z
NDcsNyArMzQ0LDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVk
IHRvIGJlIGN3ZCByZWxhdGl2ZT8KICAgICAgICAgc2VsZi5ydW4oWyJzdm4iLCAiYWRkIiwgcGF0
aF0pCiAKLSAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFz
aD1Ob25lKToKKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgog
ICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3RhdHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1lcyhzZWxm
LnN0YXR1c19jb21tYW5kKCksIHNlbGYuX3N0YXR1c19yZWdleHAoIkFDRE1SIikpCiAKICAgICBk
ZWYgY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMzcwLDcg
KzM2Nyw3IEBAIGNsYXNzIFNWTihTQ00pOgogICAgICAgICByZXR1cm4gInN2biIKIAogICAgICMg
RklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvbiBDaGVja291dC4KLSAgICBkZWYgY3JlYXRl
X3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjcmVh
dGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJucyBhIGJ5
dGUgYXJyYXkgKHN0cigpKSByZXByZXNlbnRpbmcgdGhlIHBhdGNoIGZpbGUuCiAgICAgICAgIFBh
dGNoIGZpbGVzIGFyZSBlZmZlY3RpdmVseSBiaW5hcnkgc2luY2UgdGhleSBtYXkgY29udGFpbgog
ICAgICAgICBmaWxlcyBvZiBtdWx0aXBsZSBkaWZmZXJlbnQgZW5jb2RpbmdzLiIiIgpAQCAtNDA2
LDEyICs0MDMsOCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91
bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QuCiAgICAgICAgIHNlbGYucnVu
KFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBzaG91bGRfc3F1YXNo
KHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgICMgU1ZOIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29uY2Vw
dCBvZiBzcXVhc2hpbmcuCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNvbW1pdF93
aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25l
LCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0IGFyZSBub3Qg
dXNlZCBieSBTVk4uCisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwg
dXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKKyAgICAgICAgIyBnaXQtY29tbWl0IGlz
IG5vdCB1c2VkIGJ5IFNWTi4KICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAgICAgICAj
IFJldHVybiBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNvIHRoYXQgdGhpbmdz
IHdoaWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KICAgICAgICAgICAgIHJldHVy
biAiRHJ5IHJ1biwgbm8gY29tbWl0LlxuQ29tbWl0dGVkIHJldmlzaW9uIDAuIgpAQCAtNDk4LDI0
ICs0OTEsMjUgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1bWVkIHRv
IGJlIGN3ZCByZWxhdGl2ZT8KICAgICAgICAgc2VsZi5ydW4oWyJnaXQiLCAiYWRkIiwgcGF0aF0p
CiAKLSAgICBkZWYgX21lcmdlX2Jhc2Uoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBk
ZWYgX2Fzc2VydF9zeW5jZWQoc2VsZik6CisgICAgICAgIGlmIGxlbihydW5fY29tbWFuZChbJ2dp
dCcsICdyZXYtbGlzdCcsICctLW1heC1jb3VudD0xJywgc2VsZi5zdm5fYnJhbmNoX25hbWUoKSwg
J15oZWFkJ10pKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkNhbm5v
dCB1c2UgLS1naXQtY29tbWl0PSogd2hlbiBIRUFEIGlzIG5vdCBmdWxseSBtZXJnZWQvcmViYXNl
ZCB0byAlcy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBi
cmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxmLnN2bl9icmFuY2hfbmFtZSgp
KQorCisgICAgZGVmIF9tZXJnZV9iYXNlKHNlbGYsIGdpdF9jb21taXQpOgorICAgICAgICBpZiBn
aXRfY29tbWl0ID09ICcqJzoKKyAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9zeW5jZWQoKQorICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuc3ZuX21lcmdlX2Jhc2UoKQorCiAgICAgICAgIGlmIGdpdF9j
b21taXQ6Ci0gICAgICAgICAgICAjIEZJWE1FOiBDYWxsaW5nIGNvZGUgc2hvdWxkIHR1cm4gY29t
bWl0IHJhbmdlcyBpbnRvIGEgbGlzdCBvZiBjb21taXQgSURzCi0gICAgICAgICAgICAjIGFuZCB0
aGVuIHRyZWF0IGVhY2ggY29tbWl0IHNlcGFyYXRlbHkuCiAgICAgICAgICAgICBpZiAnLi4nIG5v
dCBpbiBnaXRfY29tbWl0OgogICAgICAgICAgICAgICAgIGdpdF9jb21taXQgPSBnaXRfY29tbWl0
ICsgIl4uLiIgKyBnaXRfY29tbWl0CiAgICAgICAgICAgICByZXR1cm4gZ2l0X2NvbW1pdAogCi0g
ICAgICAgIGlmIHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuc3ZuX21lcmdlX2Jhc2UoKQotCi0gICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2ggYmVo
YXZpb3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuIEl0IHJhaXNlcyBhbiBlcnJv
cgotICAgICAgICAjIGlmIHRoZXJlIGFyZSB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQgLS1zcXVh
c2ggb3IgLS1uby1zcXVhc2ggd2Fzbid0IHBhc3NlZCBpbi4KLSAgICAgICAgIyBJZiAtLW5vLXNx
dWFzaCwgdGhlbiBpdCBzaG91bGQgcHJvY2VlZCB3aXRoIGVhY2ggbG9jYWwgY29tbWl0IGFzIGEg
c2VwYXJhdGUgcGF0Y2guCiAgICAgICAgIHJldHVybiAnSEVBRCcKIAotICAgIGRlZiBjaGFuZ2Vk
X2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgotICAgICAgICBzdGF0
dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycs
ICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYuX21lcmdlX2Jhc2Uo
Z2l0X2NvbW1pdCwgc3F1YXNoKV0KKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29t
bWl0PU5vbmUpOgorICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXIn
LCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1p
bmRleCIsIHNlbGYuX21lcmdlX2Jhc2UoZ2l0X2NvbW1pdCldCiAgICAgICAgIHJldHVybiBzZWxm
LnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHN0YXR1c19jb21tYW5kLCBzZWxmLl9z
dGF0dXNfcmVnZXhwKCJBRE0iKSkKIAogICAgIGRlZiBfY2hhbmdlc19maWxlc19mb3JfY29tbWl0
KHNlbGYsIGdpdF9jb21taXQpOgpAQCAtNTQ0LDEyICs1MzgsMTIgQEAgY2xhc3MgR2l0KFNDTSk6
CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAgICAgcmV0dXJuICJnaXQiCiAKLSAg
ICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgor
ICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgIiIi
UmV0dXJucyBhIGJ5dGUgYXJyYXkgKHN0cigpKSByZXByZXNlbnRpbmcgdGhlIHBhdGNoIGZpbGUu
CiAgICAgICAgIFBhdGNoIGZpbGVzIGFyZSBlZmZlY3RpdmVseSBiaW5hcnkgc2luY2UgdGhleSBt
YXkgY29udGFpbgogICAgICAgICBmaWxlcyBvZiBtdWx0aXBsZSBkaWZmZXJlbnQgZW5jb2Rpbmdz
LiIiIgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSB1c2UgY3dkPXNlbGYu
Y2hlY2tvdXRfcm9vdAotICAgICAgICByZXR1cm4gc2VsZi5ydW4oWydnaXQnLCAnZGlmZicsICct
LWJpbmFyeScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsICItTSIsIHNlbGYuX21l
cmdlX2Jhc2UoZ2l0X2NvbW1pdCwgc3F1YXNoKV0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCisgICAg
ICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgIi0tbm8tZXh0
LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0
KV0sIGRlY29kZV9vdXRwdXQ9RmFsc2UpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2l0
X2NvbW1pdF9mcm9tX3N2bl9yZXZpc2lvbihjbHMsIHJldmlzaW9uKToKQEAgLTU4NCwzNSArNTc4
LDIxIEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9w
YXRocyk6CiAgICAgICAgIHNlbGYucnVuKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZp
bGVfcGF0aHMpCiAKLSAgICBkZWYgX2dldF9zcXVhc2hfZXJyb3JfbWVzc2FnZShzZWxmLCBudW1f
bG9jYWxfY29tbWl0cyk6Ci0gICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UgPSAiIiBp
ZiBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCkgZWxzZSAiIGFuZCB3b3JraW5nIGNv
cHkgY2hhbmdlcyIKLSAgICAgICAgcmV0dXJuICgiIiJUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0
cyVzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLSAgICAgICAgICAgIDEpIFVzZSAtLXNxdWFz
aCBvciAtLW5vLXNxdWFzaAotICAgICAgICAgICAgMikgZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2gu
c3F1YXNoIHRydWUvZmFsc2UKLSAgICAgICAgICAgICIiIiAlIChudW1fbG9jYWxfY29tbWl0cywg
d29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSkpCi0KLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxm
LCBzcXVhc2gpOgotICAgICAgICBpZiBzcXVhc2ggaXMgTm9uZToKLSAgICAgICAgICAgIGNvbmZp
Z19zcXVhc2ggPSBHaXQucmVhZF9naXRfY29uZmlnKCd3ZWJraXQtcGF0Y2guc3F1YXNoJykKLSAg
ICAgICAgICAgIGlmIChjb25maWdfc3F1YXNoIGFuZCBjb25maWdfc3F1YXNoIGlzIG5vdCAiIik6
Ci0gICAgICAgICAgICAgICAgc3F1YXNoID0gY29uZmlnX3NxdWFzaC5sb3dlcigpID09ICJ0cnVl
IgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIE9ubHkgcmFpc2UgYW4gZXJy
b3IgaWYgdGhlcmUgYXJlIGFjdHVhbGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgotICAg
ICAgICAgICAgICAgIG51bV9sb2NhbF9jb21taXRzID0gbGVuKHNlbGYubG9jYWxfY29tbWl0cygp
KQotICAgICAgICAgICAgICAgIGlmIG51bV9sb2NhbF9jb21taXRzID4gMSBvciAobnVtX2xvY2Fs
X2NvbW1pdHMgPiAwIGFuZCBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpKToK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT1zZWxmLl9nZXRf
c3F1YXNoX2Vycm9yX21lc3NhZ2UobnVtX2xvY2FsX2NvbW1pdHMpKQotCi0gICAgICAgIGlmIHNx
dWFzaCBhbmQgc2VsZi5fc3ZuX2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0cygpOgotICAgICAgICAg
ICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iQ2Fubm90IHVzZSAtLXNxdWFzaCB3aGVuIEhF
QUQgaXMgbm90IGZ1bGx5IG1lcmdlZC9yZWJhc2VkIHRvICVzLiAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGJyYW5jaCBuZWVkcyB0byBiZSBzeW5jZWQgZmly
c3QuIiAlIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCkpCisgICAgZGVmIF9hc3NlcnRfb25seV93b3Jr
aW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi53b3JraW5nX2RpcmVjdG9y
eV9pc19jbGVhbigpOgorICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iIiJO
byB3b3JraW5nIGNvcHkgY2hhbmdlcy4gVXNlIC0tZ2l0LWNvbW1pdCB0byBmb3IgbG9jYWwgY29t
bWl0cyBvciAtLWdpdC1jb21taXQ9KiB0byBmb3IgYWxsIGNoYW5nZXMgb24gdGhpcyBicmFuY2gu
IiIiKQogCi0gICAgICAgIHJldHVybiBzcXVhc2gKKyAgICAgICAgaWYgbGVuKHNlbGYubG9jYWxf
Y29tbWl0cygpKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IiIiTG9j
YWwgY29tbWl0cyBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMuIFVzZSAtLWdpdC1jb21taXQgdG8g
Zm9yIGxvY2FsIGNvbW1pdHMgb3IgLS1naXQtY29tbWl0PSogdG8gZm9yIGFsbCBjaGFuZ2VzIG9u
IHRoaXMgYnJhbmNoLiIiIikKIAotICAgIGRlZiBfc3ZuX2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0
cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihydW5fY29tbWFuZChbJ2dpdCcsICdyZXYtbGlz
dCcsICctLW1heC1jb3VudD0xJywgc2VsZi5zdm5fYnJhbmNoX25hbWUoKSwgJ15oZWFkJ10pKQot
Ci0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9u
ZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKICAg
ICAgICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmluZyBHaXQgY29tbWl0cy4KKyAgICAgICAg
aWYgZ2l0X2NvbW1pdCA9PSAnKic6CisgICAgICAgICAgICBzZWxmLl9hc3NlcnRfc3luY2VkKCkK
KyAgICAgICAgICAgIHNlbGYucnVuKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYuc3Zu
X2JyYW5jaF9uYW1lKCldKQorICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21l
c3NhZ2UobWVzc2FnZSkKKyAgICAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0
c190b19zZXJ2ZXIoKQorCiAgICAgICAgIGlmIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAjIE5l
ZWQgd29ya2luZyBkaXJlY3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQgc28gd2UgY2FuIGNo
ZWNrb3V0IHRoZSBtZXJnZSBicmFuY2guCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi53b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbigpOgpAQCAtNjIyLDI1ICs2MDIsOCBAQCBjbGFzcyBHaXQoU0NN
KToKICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJXb3JraW5nIGNv
cHkgaXMgbW9kaWZpZWQuIENhbm5vdCBjb21taXQgaW5kaXZpZHVhbCBnaXRfY29tbWl0cy4iKQog
ICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdF9vbl9icmFuY2gobWVzc2FnZSwgZ2l0X2Nv
bW1pdCkKIAotICAgICAgICBzcXVhc2ggPSBzZWxmLnNob3VsZF9zcXVhc2goc3F1YXNoKQotICAg
ICAgICBpZiBzcXVhc2g6Ci0gICAgICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdyZXNldCcsICct
LXNvZnQnLCBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkKLSAgICAgICAgICAgIHNlbGYuY29tbWl0
X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIGVsaWYgbm90IHNlbGYud29y
a2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKLSAgICAgICAgICAgIGlmIG5vdCBsZW4oc2VsZi5s
b2NhbF9jb21taXRzKCkpOgotICAgICAgICAgICAgICAgICMgVGhlcmUgYXJlIG9ubHkgd29ya2lu
ZyBjb3B5IGNoYW5nZXMuIEFzc3VtZSB0aGV5IHNob3VsZCBiZSBjb21taXR0ZWQuCi0gICAgICAg
ICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKLSAgICAg
ICAgICAgIGVsaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBUaGUgdXNlciBk
aWRuJ3QgZXhwbGljaXRseSBzYXkgdG8gc3F1YXNoIG9yIG5vdCBzcXVhc2guIFRoZXJlIGFyZSBs
b2NhbCBjb21taXRzCi0gICAgICAgICAgICAgICAgIyBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMu
IE5vdCBjbGVhciB3aGF0IHRoZSB1c2VyIHdhbnRzLgotICAgICAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKG1lc3NhZ2U9IiIiVGhlcmUgYXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcg
Y29weSBjaGFuZ2VzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLTEpIENvbW1pdC9yZXZlcnQg
d29ya2luZyBjb3B5IGNoYW5nZXMuCi0yKSBVc2UgLS1zcXVhc2ggb3IgLS1uby1zcXVhc2gKLTMp
IGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlL2ZhbHNlCi0iIiIpCi0KLSAgICAg
ICAgIyBGSVhNRTogVGhpcyB3aWxsIGNvbW1pdCBhbGwgbG9jYWwgY29tbWl0cywgZWFjaCB3aXRo
IGl0J3Mgb3duIG1lc3NhZ2UuIFdlIHNob3VsZCByZXN0cnVjdHVyZQotICAgICAgICAjIHNvIHRo
YXQgZWFjaCBsb2NhbCBjb21taXQgaGFzIHRoZSBhcHByb3ByaWF0ZSBjb21taXQgbWVzc2FnZSBi
YXNlZCBvZmYgaXQncyBDaGFuZ2VMb2dzLgorICAgICAgICBzZWxmLl9hc3NlcnRfb25seV93b3Jr
aW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNz
YWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19z
ZXJ2ZXIoKQogCiAgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1lc3NhZ2UsIGdpdF9j
b21taXQpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CmluZGV4IDhlZWE0ZDhhODUxNTVkNDIyN2U5
ZTcwYTdhYzUwNGU5OGJhNWQxY2IuLmQwZGVhNDc2NGY2NzY1ZDUxNGQ1YzIwZjgwZTNkMjhmMDlh
MzM4MTEgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKQEAgLTc2NiwyNCArNzY2LDE0IEBAIGNs
YXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5n
KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21v
cmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9t
ZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3RleHQgPSBzZWxm
LnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCiAgICAg
ICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0
IGNvbnRlbnQnKQotICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2Uo
InlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNj
bS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQo
Y29tbWl0X3RleHQpLCAnMCcpCiAKLSAgICBkZWYgX29uZV9sb2NhbF9jb21taXRfcGx1c193b3Jr
aW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
J3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgcnVuX2Nv
bW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCi0gICAgICAgIHNlbGYu
c2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCi0K
LSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0
aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRk
JywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCi0KICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNz
YWdlX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRf
cGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBy
dW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKQEAgLTc5NCwy
MSArNzg0LDE4IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHN2bl9sb2cgPSBy
dW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2Un
XSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQx
Jywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3NxdWFzaGVk
KHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5
X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0
KSwgJzYnKQotICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLQotICAg
IGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0
KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1p
dDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdh
ZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKICAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2Fs
bHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKIAorICAgIGRlZiBfb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICBzZWxm
Ll9vbmVfbG9jYWxfY29tbWl0KCkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgcnVu
X2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisKKyAgICBkZWYg
X3R3b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0
KCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywg
J3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAn
YWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCiAgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2Nh
bGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQpAQCAtODE5LDYgKzgw
NiwxNiBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLnNjbS5jb21taXRf
bG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxm
Ll90d29fbG9jYWxfY29tbWl0cygpCiAKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
X3NxdWFzaGVkKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29y
a2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9JyonKQorCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0
KGNvbW1pdF90ZXh0KSwgJzYnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5f
bG9nKSkKKwogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdChzZWxm
KToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogCkBAIC04NDIsOCArODM5LDEy
IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKIAotICAgIGRl
ZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToK
LSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0X2NvbW1pdF93
aXRoX21lc3NhZ2Vfbm9fY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCBbImFub3RoZXIgdGVzdCBjb21t
aXQiXSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfb25seV9sb2NhbF9jb21t
aXQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQogICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5v
dGhlciB0ZXN0IGNvbW1pdCJdKQogCkBAIC04NTksMjMgKzg2MCwxMCBAQCBjbGFzcyBHaXRUZXN0
KFNDTVRlc3QpOgogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCIsICdnaXRfY29tbWl0PSJI
RUFEXiInXSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9j
YWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6Ci0gICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21t
aXRzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRf
cGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0
IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9RmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYn
KQotCi0gICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywg
Jy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLQotICAgICAg
ICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTIn
LCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQotCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVz
c2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKICAgICAgICAgc2VsZi5f
dHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxm
LmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQorICAgICAg
ICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0
IGNvbW1pdCIsIGdpdF9jb21taXQ9IioiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5z
dm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAg
ICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEn
LCAnLS12ZXJib3NlJ10pCkBAIC04ODYsNyArODc0LDcgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0
KToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJh
bmNoJywgJ3RydW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UsICJhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNoPVRydWUpCisgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIg
dGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSIqIikKIAogICAgIGRlZiB0ZXN0X3JldmVyc2VfZGlm
ZihzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfcmV2ZXJzZV9kaWZmKCkKQEAgLTkw
MCwyNyArODg4LDE3IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgZGVmIHRlc3RfY3Jl
YXRlX3BhdGNoX2xvY2FsX3BsdXNfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxmLl9v
bmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQogICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKLQotICAgIGRlZiB0
ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICBz
ZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlw
dEVycm9yLCBzY20uY3JlYXRlX3BhdGNoKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0
Y2goKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDInLCBwYXRjaCkpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfc3F1YXNo
ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2Nv
cHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9VHJ1
ZSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQ9IioiKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRj
aCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3F1YXNoZWQoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hh
bmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBh
dGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29t
bWl0MScsIHBhdGNoKSkKLQogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0KHNl
bGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCkBAIC05MzYsMTggKzkxNCwx
MCBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKIAotICAgIGRlZiB0
ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToK
LSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5j
cmVhdGVfcGF0Y2goc3F1YXNoPUZhbHNlKQotICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRo
YXQgd2l0aCBzcXVhc2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMg
bG9jYWwgY29tbWl0cywKLSAgICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRz
IHRoZW0uCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRjaCA9PSAiIikKLQogICAgIGRlZiB0
ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVh
dGVfcGF0Y2goc3F1YXNoPVRydWUpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChn
aXRfY29tbWl0PSIqIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKQEAgLTk1NSw3ICs5MjUsNyBAQCBjbGFz
cyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291
dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20u
Y3JlYXRlX3BhdGNoLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gsIGdpdF9jb21taXQ9IioiKQogCiAgICAgZGVmIHRl
c3RfY3JlYXRlX2JpbmFyeV9wYXRjaChzZWxmKToKICAgICAgICAgIyBDcmVhdGUgYSBnaXQgYmlu
YXJ5IHBhdGNoIGFuZCBjaGVjayB0aGUgY29udGVudHMuCkBAIC05ODYsMjcgKzk1NiwxNyBAQCBj
bGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbG9jYWxf
cGx1c193b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRf
cGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcykKLQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmls
ZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNo
YW5nZWRfZmlsZXMpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQorICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogCiAgICAgZGVm
IHRlc3RfY2hhbmdlZF9maWxlc19zcXVhc2hlZChzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBz
Y20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdl
ZF9maWxlcyhnaXRfY29tbWl0PSIqIikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2Zp
bGVfY29tbWl0MicgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxl
X2NvbW1pdDEnIGluIGZpbGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3F1
YXNoZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5n
X2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNo
PUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBm
aWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZp
bGVzKQotCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0KHNlbGYpOgogICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCkBAIC0xMDIyLDE4ICs5ODIsMTAgQEAgY2xh
c3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVf
Y29tbWl0MScgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2Nv
bW1pdDInIGluIGZpbGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9s
b2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2Nv
bW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxzZSkK
LSAgICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBjcmVh
dGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCi0gICAgICAgICMg
YnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgotICAgICAgICBzZWxmLmFzc2Vy
dFRydWUobGVuKGZpbGVzKSA9PSAwKQotCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0
aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1UcnVl
KQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQ9IioiKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAKQEAgLTEw
NDEsNyArOTkzLDcgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMsIHNxdWFzaD1UcnVlKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMsIGdpdF9jb21t
aXQ9IioiKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlcyhzZWxmKToKICAgICAgICAgc2Vs
Zi5fc2hhcmVkX3Rlc3RfY2hhbmdlZF9maWxlcygpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkKaW5kZXggYzBkNjExOTU5YTE4NzVm
ODNlMmExMTYwZjhjYmRlMDFkOGM1ZjIwOS4uNWUzNDgxMzgwNmZkNTRiNDI4ZTdhNGI5MWE2MWYx
MjIwMDRhMWM1MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vbmV0L3JpZXR2ZWxkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9yaWV0dmVsZC5weQpAQCAtNzMsNyArNzMsNyBAQCBjbGFzcyBSaWV0dmVsZChvYmpl
Y3QpOgogCiAgICAgICAgICMgVXNlIFJlYWxNYWluIGluc3RlYWQgb2YgY2FsbGluZyB1cGxvYWQg
ZnJvbSB0aGUgY29tbWFuZGxpbmUgc28gdGhhdAogICAgICAgICAjIHdlIGNhbiBwYXNzIGluIHRo
ZSBkaWZmIG91cnNlbHZlcy4gT3RoZXJ3aXNlLCB1cGxvYWQgd2lsbCBqdXN0IHVzZQotICAgICAg
ICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vzbid0IHJlc3BlY3QgLS1z
cXVhc2ggYW5kIC0tZ2l0LWNvbW1pdC4KKyAgICAgICAgIyBnaXQgZGlmZiBmb3IgZ2l0IGNoZWNr
b3V0cywgd2hpY2ggZG9lc24ndCByZXNwZWN0IC0tZ2l0LWNvbW1pdC4KICAgICAgICAgaXNzdWUs
IHBhdGNoc2V0ID0gdXBsb2FkLlJlYWxNYWluKGFyZ3NbMTpdLCBkYXRhPWRpZmYpCiAKICAgICAg
ICAgIyBSZXNldCBsb2dnaW5nIGxldmVsIHRvIHRoZSBvcmlnaW5hbCB2YWx1ZS4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggYmI0Nzg4
YTU1ZGI2OGZiYzcxMDQ4NDk5NjNlODliMjZiYzQzZDU4NS4uMzdjOTI2NTJiMWViOTU5MmNkMDVh
ZjczMmVmZWE4NzE4MWZhZjhiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9vcHRwYXJzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9vcHRwYXJzZXIucHkKQEAgLTE0Nyw4ICsxNDcsNyBAQCBjbGFzcyBDb21tYW5kT3B0
aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9uZSwKICAg
ICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWluX2Nv
bmZpZGVuY2U9MSwKLSAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAotICAg
ICAgICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgorICAgICAgICAgICAgICAgICBvdXRwdXRfZm9y
bWF0PSJlbWFjcyIpOgogICAgICAgICBpZiBmaWx0ZXJfcnVsZXMgaXMgTm9uZToKICAgICAgICAg
ICAgIGZpbHRlcl9ydWxlcyA9IFtdCiAKQEAgLTE2Nyw3ICsxNjYsNiBAQCBjbGFzcyBDb21tYW5k
T3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaXNfdmVyYm9zZSA9IGlzX3ZlcmJv
c2UKICAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCiAgICAgICAg
IHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKLSAgICAgICAgc2VsZi5zcXVhc2gg
PSBzcXVhc2gKIAogICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFf
XyhzZWxmLCBvdGhlcik6CkBAIC0xODIsOCArMTgwLDYgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZh
bHVlcyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHNlbGYu
b3V0cHV0X2Zvcm1hdCAhPSBvdGhlci5vdXRwdXRfZm9ybWF0OgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCi0gICAgICAgIGlmIHNlbGYuc3F1YXNoICE9IG90aGVyLnNxdWFzaDoKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTIxOCw4ICsyMTQs
NiBAQCBjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzWydm
aWx0ZXInXSA9ICIsIi5qb2luKGZpbHRlcl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5naXRf
Y29tbWl0OgogICAgICAgICAgICAgZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0X2Nv
bW1pdAotICAgICAgICBpZiBvcHRpb25zLnNxdWFzaDoKLSAgICAgICAgICAgIGZsYWdzWydzcXVh
c2gnXSA9IG9wdGlvbnMuc3F1YXNoCiAKICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAgICAg
ICAjIEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0zMDks
OCArMzAzLDEwIEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCItZiIsICItLWZpbHRlci1ydWxlcyIsIG1ldGF2YXI9IlJVTEVTIiwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0iZmlsdGVyX3ZhbHVlIiwgaGVscD1maWx0ZXJf
aGVscCkKIAotICAgICAgICBnaXRfY29tbWl0X2hlbHAgPSAoImNoZWNrIGFsbCBjaGFuZ2VzIGlu
IHRoZSBnaXZlbiBnaXQgY29tbWl0LiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNl
ICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIgY29tbW1pdF9pZCIpCisg
ICAgICAgIGdpdF9jb21taXRfaGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhlIGdpdmVu
IGNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAnY29tbWl0X2lkLi4n
IHRvIGNoZWNrIGFsbCBjaGFuZ2VzIGFmdGVyIGNvbW1taXRfaWQsICIKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJvciAnKicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhlIGxvY2FsIGJy
YW5jaCBpbmNsdWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImxvY2FsIGNvbW1p
dHMgYW5kIHN0YWdlZC91bnN0YWdlcyB3b3JraW5nIGNvcHkgY2hhbmdlcy4iKQogICAgICAgICBw
YXJzZXIuYWRkX29wdGlvbigiLWciLCAiLS1naXQtZGlmZiIsICItLWdpdC1jb21taXQiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJDT01NSVQiLCBkZXN0PSJnaXRfY29tbWl0
IiwgaGVscD1naXRfY29tbWl0X2hlbHAsKQogCkBAIC0zMzAsMTQgKzMyNiw2IEBAIGNsYXNzIEFy
Z3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9Im91
dHB1dF9mb3JtYXQiLCBkZWZhdWx0PWRlZmF1bHRfb3V0cHV0X2Zvcm1hdCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD1vdXRwdXRfZm9ybWF0X2hlbHApCiAKLSAgICAgICAgc3F1YXNo
X2hlbHAgPSAoIkFsbCBkaWZmcyBmcm9tIHRoZSByZW1vdGUgYnJhbmNoIGFyZSBjaGVja2VkLiIK
LSAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVkLCBwcm9tcHRzIHdoZXRoZXIgdG8g
c3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMuIikKLSAgICAgICAgcGFyc2Vy
LmFkZF9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0i
c3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQotICAgICAgICBzcXVhc2hfaGVscCA9ICgiT25s
eSB3b3JraW5nIGNvcHkgZGlmZnMgYXJlIGNoZWNrZWQuIgotICAgICAgICAgICAgICAgICAgICAg
ICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2ggd2hlbiB0aGVyZSBhcmUg
bXVsdGlwbGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1uby1zcXVh
c2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD1zcXVhc2hfaGVs
cCkKLQogICAgICAgICB2ZXJib3NlX2hlbHAgPSAiZW5hYmxlIHZlcmJvc2UgbG9nZ2luZy4iCiAg
ICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdiIsICItLXZlcmJvc2UiLCBkZXN0PSJpc192ZXJi
b3NlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJz
dG9yZV90cnVlIiwgaGVscD12ZXJib3NlX2hlbHApCkBAIC00NTgsOCArNDQ2LDcgQEAgY2xhc3Mg
QXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZ2l0X2NvbW1pdD1naXRfY29tbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpc192ZXJib3NlPWlzX3ZlcmJvc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPW1pbl9jb25maWRlbmNlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PW91dHB1dF9mb3JtYXQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxdWFzaD1vcHRpb25zLnNx
dWFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1h
dD1vdXRwdXRfZm9ybWF0KQogCiAgICAgICAgIHJldHVybiAocGF0aHMsIG9wdGlvbnMpCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQppbmRl
eCBiYWIzMGNhZmM1NWJhZThjMGU3MDEyYzI5MzA2OTc3NDkyM2JhM2ZkLi5hNDJiNjlkZTU4ZDk5
NDMyMzYxMWIxOGI0YmQwZDUzOWIxNTJlYzkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBAIC02Nyw2ICs2Nyw2IEBAIGNsYXNzIFdl
YktpdENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY2hlY2tvdXQgcm9v
dCBhcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fc2NtLmNoZWNr
b3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNo
KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdCwgc3F1
YXNoKQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCk6CisgICAgICAgIHJl
dHVybiBzZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQpCiAKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQppbmRl
eCBhMjgzZGE5ZGMyZWQ4ZTEwZmMwZTBjMjhkNDI2ZWM2Nzg4ZThmODRlLi43MDcyNGE2OTQwMjkz
NzFkMjY4YmQ2ZGI4MTMwMjYyNGMxN2ZhNmU2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CkBAIC05NCw3ICs5NCw3
IEBAIElmIGEgYnVnIGlkIGlzIHByb3ZpZGVkLCBvciBvbmUgY2FuIGJlIGZvdW5kIGluIHRoZSBD
aGFuZ2VMb2cgbGFuZCB3aWxsIHVwZGF0ZSB0CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2Vs
Ziwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAi
YnVnX2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9y
X3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpLAorICAgICAg
ICAgICAgImJ1Z19pZCI6IChhcmdzIGFuZCBhcmdzWzBdKSBvciB0b29sLmNoZWNrb3V0KCkuYnVn
X2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpLAogICAgICAgICB9CiAKIApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3Vw
bG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxv
YWQucHkKaW5kZXggY2Y3MTViOThiMmVjYTNjYjc2ZWViYTQxZDM4OGUyY2ZhNzk4MzQxMy4uMTJk
OTljNmUzODZkNjJjOTA3M2ExYzIwM2QyNmQ3NWU3ODE5OWNhMCAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CkBAIC01Myw3
ICs1Myw2IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZihBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIG9wdGlv
bnMgPSBbCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNxdWFzaCwKICAgICAgICAgICAgIHN0
ZXBzLk9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgXQogICAgICAgICBBYnN0cmFjdERlY2xh
cmF0aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCkBAIC02MSw3ICs2
MCw3IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZihBYnN0cmFjdERlY2xhcmF0
aXZlQ29tbWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6
CiAgICAgICAgICMgVGhpcyBjb21tYW5kIGlzIGEgdXNlZnVsIHRlc3QgdG8gbWFrZSBzdXJlIGNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdAogICAgICAgICAjIGFsd2F5cyByZXR1cm5zIHRo
ZSByaWdodCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5
LgotICAgICAgICBwcmludCAiJXMiICUgdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zv
cl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKS5tZXNzYWdl
KCkKKyAgICAgICAgcHJpbnQgIiVzIiAlIHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KS5tZXNzYWdlKCkKIAogCiBjbGFzcyBD
bGVhblBlbmRpbmdDb21taXQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgpAQCAtMTUzLDcg
KzE1Miw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKEFic3RyYWN0U2Vx
dWVuY2VkQ29tbWFuZCk6CiAgICAgICAgICMgUGVyZmVyIGEgYnVnIGlkIHBhc3NlZCBhcyBhbiBh
cmd1bWVudCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlmZiAoaS5lLiBDaGFuZ2VMb2dzKS4KICAg
ICAgICAgYnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQogICAgICAgICBpZiBub3QgYnVnX2lkOgot
ICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21t
aXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgIGJ1Z19p
ZCA9IHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2Nv
bW1pdCkKICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNl
bGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtNDIwLDExICs0MTksMTEgQEAgY2xhc3MgQ3Jl
YXRlQnVnKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgaWYgb3B0aW9ucy5w
cm9tcHQ6CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBjb21tZW50X3RleHQpID0gc2VsZi5wcm9t
cHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBjb21taXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAg
IGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgICAgICBidWdfdGl0bGUgPSBjb21t
aXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwgc3RyaXBfdXJsPVRydWUpCiAgICAg
ICAgICAgICBjb21tZW50X3RleHQgPSBjb21taXRfbWVzc2FnZS5ib2R5KGxzdHJpcD1UcnVlKQog
Ci0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21t
aXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICBkaWZmID0gdG9vbC5zY20oKS5jcmVhdGVfcGF0
Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBidWdfaWQgPSB0b29sLmJ1Z3MuY3JlYXRl
X2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9ucy5jb21wb25lbnQsIGRpZmYsICJQ
YXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldywgbWFy
a19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9jb21taXQpCiAKICAgICBkZWYgcHJv
bXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggMmYxOTJkOTdmZmUxNjFjOWY1MmJh
YjczMzlmYTJjYmQ1MmY0NzI2Ny4uMmI2MzVhOTg2NmNkMWYxYjUwMzExZDNkYTFlOGM3NjFjM2Q3
ZTg0NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0
b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQpAQCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgICAgICMgd2ls
bCBhY3R1YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBn
bG9iYWxseSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0g
c2VsZi5mYWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0
X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQp
OgogICAgICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAgIGRlZiBjb21taXRfaWRzX2Zyb21fY29t
bWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAgLTQxOCwxMiArNDE4LDEyIEBAIGNsYXNz
IE1vY2tDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdfaWRfZm9yX3JldmlzaW9uKHNlbGYs
IHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAxMjM0NQogCi0gICAgZGVmIG1vZGlmaWVk
X2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgbW9kaWZpZWRf
Y2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0
dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBUaGUgcHJvYmxlbSBpcwogICAg
ICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2gg
ZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAotICAgIGRlZiBjb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY29tbWl0
X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICBjb21t
aXRfbWVzc2FnZSA9IE1vY2soKQogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlID0gbGFt
YmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNo
YXJhY3RlcnMuIgogICAgICAgICByZXR1cm4gY29tbWl0X21lc3NhZ2UKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5Cmlu
ZGV4IGFiYWZlNjM5OThmMjAxZjlkNjAxMjRkNmUyMDRjMjU5MTkzZDBlNTYuLmFkZjYyZDZkNDM2
MzA4NDljMzZmYjBlNTEzMDljYjkxOTQwZjBiMDMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpAQCAtNTMsOCAr
NTMsOCBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYu
X3BvcnQKIAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7Ci0gICAgICAgICJkaWZmIjogbGFtYmRh
IHNlbGY6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKHNlbGYuX29wdGlvbnMuZ2l0X2Nv
bW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAotICAgICAgICAiY2hhbmdlbG9ncyI6IGxhbWJk
YSBzZWxmOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9v
cHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKKyAgICAgICAgImRpZmYi
OiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9u
cy5naXRfY29tbWl0KSwKKyAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZjogc2VsZi5f
dG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0KSwKICAgICB9CiAKICAgICBkZWYgY2FjaGVkX2xvb2t1cChzZWxmLCBzdGF0ZSwga2V5LCBw
cm9taXNlPU5vbmUpOgpAQCAtNzAsOCArNzAsNiBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICMgV2UgbmVlZCB0aGVzZSBvcHRpb25z
IGhlcmUgYmVjYXVzZSBjYWNoZWRfbG9va3VwIHVzZXMgdGhlbS4gIDooCiAgICAgICAgICAgICBP
cHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAg
ICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKaW5kZXggZDZiMDI2
ZGUyNTgyMWUzNDk2YWI4ZThkMmJhNDYxMTg1MTE1Njc4OC4uM2RjZDhkOTMxYTFmMzY1YmIzM2Vm
YTZlM2U4ZThiZjViMGJkYzFhMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21t
aXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBwbHlQYXRjaFdpdGhMb2NhbENvbW1pdChB
cHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKICAgICAgICAgQXBwbHlQYXRj
aC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubG9jYWxfY29tbWl0
OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNl
KQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSkKICAgICAgICAgICAg
IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNz
YWdlLm1lc3NhZ2UoKSBvciBzdGF0ZVsicGF0Y2giXS5uYW1lKCkpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4IDkz
ZTYyMTUzMTQ0ZmY3YWQ1YTc3ZDM3MWJlYzcyMTIzNzY3MDViYmQuLmFmMzgyMTQ0MGE5NWVjOWM4
NTA4NjBmMTIyYjdmMzU1ODFmYmEyNzMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC00MCw4ICs0MCw2IEBAIGNs
YXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMubm9uX2lu
dGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5jaGVja19zdHlsZSwKICAgICAgICAgICAg
IE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAg
ICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwg
c3RhdGUpOgpAQCAtNTMsMTAgKzUxLDYgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0ZXAp
OgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBhcmdz
LmFwcGVuZCgiLS1naXQtY29tbWl0IikKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNlbGYuX29w
dGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRfc3F1
YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLXNx
dWFzaCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1zcXVh
c2giKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImNoZWNr
LXdlYmtpdC1zdHlsZSIsIGFyZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4IGEy
M2VhMWIzYzVkNDZmMmVhM2IzOGU0NjJmM2I5MWM5NjUyYjM4ZDEuLjk5ZjMwMGY3MjNkYzM4OWM3
N2NiYTY1N2I2YzgxOTA0OTJhZWM3YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5CkBA
IC0zNSwxMiArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2hlY2tzdHlsZSBpbXBv
cnQgQ2hlY2tTdHlsZQogCiAKIGNsYXNzIENoZWNrU3R5bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJz
aG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4gVGhhdCBlcnJvciBzaG91bGQgbm90IGJl
IGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAgIGRlZiBzaG91bGRfc3F1YXNoKHNxdWFz
aCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJEdW1teSBlcnJvciIp
Ci0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgdG9vbC5fc2NtLnNob3VsZF9z
cXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0ZXAgPSBDaGVja1N0eWxlKHRvb2wsIE1v
Y2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHN0ZXAucnVuLCBb
XSkKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NvbW1pdC5weQppbmRleCA3YmY4YjhhYTI3NjYxMDQ5MDZjMjZhMWQ5Mzc3Y2QzMTVmOGM1
YTc4Li4yMTZlOGMzYjdlZjExZTk1MTMwNDgwNjYyNGRjMGVlOTk1NDM5OGY5IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKQEAgLTM1
LDEzICszNSwxMCBAQCBjbGFzcyBDb21taXQoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgb3B0aW9u
cyhjbHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAg
ICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNo
LAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBydW4o
c2VsZiwgc3RhdGUpOgotICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tv
dXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCkKKyAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxm
Ll90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYuX29w
dGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgaWYgbGVuKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2Uo
KSkgPCA1MDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigiQXR0ZW1wdGVkIHRvIGNvbW1p
dCB3aXRoIGEgY29tbWl0IG1lc3NhZ2Ugc2hvcnRlciB0aGFuIDUwIGNoYXJhY3RlcnMuICBFaXRo
ZXIgeW91ciBwYXRjaCBpcyBtaXNzaW5nIGEgQ2hhbmdlTG9nIG9yIHdlYmtpdC1wYXRjaCBtYXkg
aGF2ZSBhIGJ1Zy4iKQotICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wu
c2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksCi0gICAg
ICAgICAgICBnaXRfY29tbWl0PXNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc3F1YXNoPXNlbGYu
X29wdGlvbnMuc3F1YXNoKQorICAgICAgICBzdGF0ZVsiY29tbWl0X3RleHQiXSA9IHNlbGYuX3Rv
b2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIGdp
dF9jb21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlvbnMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQppbmRleCAxODZkMjkyODliOTIw
NmI2YzkwNWZjMTA2ZWNlODk5NDdkMmIyZjBjLi5lM2QxMWI4MmU5ZWE5NzlhZTBjZDZiNjA3YTEw
MWZiMTA0ZTkzMjZkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDMsMTAgKzQzLDggQEAgY2xhc3MgT3B0aW9ucyhvYmpl
Y3QpOgogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0tZW1haWwiLCBhY3Rpb249InN0b3JlIiwg
dHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxwPSJFbWFpbCBhZGRyZXNzIHRvIHVzZSBp
biBDaGFuZ2VMb2dzLiIpCiAgICAgZmFuY3lfcmV2aWV3ID0gbWFrZV9vcHRpb24oIi0tZmFuY3kt
cmV2aWV3IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iZmFuY3lfcmV2aWV3IiwgZGVmYXVs
dD1GYWxzZSwgaGVscD0iKEV4cGVyaW1lbnRhbCkgVXBsb2FkIHRoZSBwYXRjaCB0byBSaWV0dmVs
ZCBjb2RlIHJldmlldyB0b29sLiIpCiAgICAgZm9yY2VfY2xlYW4gPSBtYWtlX29wdGlvbigiLS1m
b3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVm
YXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5n
IHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKQotIyBGSVhNRTog
TWFrZSBjb21taXQgcmFuZ2VzIHRyZWF0IGVhY2ggY29tbWl0IHNlcGFyYXRlbHkgaW5zdGVhZCBv
ZiBzcXVhc2hpbmcgdGhlbSBpbnRvIG9uZS4KLSAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24o
Ii0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD0i
TG9jYWwgZ2l0IGNvbW1pdCB0byB1cGxvYWQvbGFuZC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMg
YXJlIHNxdWFzaGVkIGludG8gb25lLiIpCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
ZyIsICItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhl
bHA9Ik9wZXJhdGUgb24gYSBsb2NhbCBjb21taXQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFy
ZSBzcXVhc2hlZCBpbnRvIG9uZS4gSWYgJyonLCBvcGVyYXRlIG9uIGFsbCBjaGFuZ2VzIGluIHRo
aXMgYnJhbmNoIGFzIGEgc2luZ2xlIGNvbW1pdCwgaW5jbHVkaW5nIGxvY2FsIGNvbW1pdHMgYW5k
IHN0YWdlZC91bnN0YWdlZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4iKQogICAgIGxvY2FsX2NvbW1p
dCA9IG1ha2Vfb3B0aW9uKCItLWxvY2FsLWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRl
c3Q9ImxvY2FsX2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21t
aXQgZm9yIGVhY2ggYXBwbGllZCBwYXRjaCIpCi0gICAgbm9fc3F1YXNoID0gbWFrZV9vcHRpb24o
Ii0tbm8tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9
IkRvbid0IHNxdWFzaCBsb2NhbCBjb21taXRzIGludG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQt
b25seSkuIikKICAgICBub25faW50ZXJhY3RpdmUgPSBtYWtlX29wdGlvbigiLS1ub24taW50ZXJh
Y3RpdmUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJub25faW50ZXJhY3RpdmUiLCBkZWZh
dWx0PUZhbHNlLCBoZWxwPSJOZXZlciBwcm9tcHQgdGhlIHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBw
b3NzaWJsZS4iKQogICAgIG9ic29sZXRlX3BhdGNoZXMgPSBtYWtlX29wdGlvbigiLS1uby1vYnNv
bGV0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJvYnNvbGV0ZV9wYXRjaGVzIiwgZGVm
YXVsdD1UcnVlLCBoZWxwPSJEbyBub3Qgb2Jzb2xldGUgb2xkIHBhdGNoZXMgYmVmb3JlIHBvc3Rp
bmcgdGhpcyBvbmUuIikKICAgICBvcGVuX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW9wZW4tYnVnIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ib3Blbl9idWciLCBkZWZhdWx0PUZhbHNlLCBoZWxw
PSJPcGVucyB0aGUgYXNzb2NpYXRlZCBidWcgaW4gYSBicm93c2VyLiIpCkBAIC01Niw2ICs1NCw1
IEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0KToKICAgICByZXF1ZXN0X2NvbW1pdCA9IG1ha2Vfb3B0
aW9uKCItLXJlcXVlc3QtY29tbWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0icmVxdWVz
dF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYXJrIHRoZSBwYXRjaCBhcyBuZWVkaW5n
IGF1dG8tY29tbWl0IGFmdGVyIHJldmlldy4iKQogICAgIHJldmlldyA9IG1ha2Vfb3B0aW9uKCIt
LW5vLXJldmlldyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJyZXZpZXciLCBkZWZhdWx0
PVRydWUsIGhlbHA9IkRvIG5vdCBtYXJrIHRoZSBwYXRjaCBmb3IgcmV2aWV3LiIpCiAgICAgcmV2
aWV3ZXIgPSBtYWtlX29wdGlvbigiLXIiLCAiLS1yZXZpZXdlciIsIGFjdGlvbj0ic3RvcmUiLCB0
eXBlPSJzdHJpbmciLCBkZXN0PSJyZXZpZXdlciIsIGhlbHA9IlVwZGF0ZSBDaGFuZ2VMb2dzIHRv
IHNheSBSZXZpZXdlZCBieSBSRVZJRVdFUi4iKQotICAgIHNxdWFzaCA9IG1ha2Vfb3B0aW9uKCIt
cyIsICItLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9
IlNxdWFzaCBhbGwgbG9jYWwgY29tbWl0cyBpbnRvIG9uZSBvbiB1cGxvYWQvbGFuZCAoZ2l0LW9u
bHkpLiIpCiAgICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCItLXRlc3QiLCBhY3Rpb249InN0b3JlX3Ry
dWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iUnVuIHJ1bi13ZWJraXQtdGVz
dHMgYmVmb3JlIGNvbW1pdHRpbmcuIikKICAgICB1cGRhdGUgPSBtYWtlX29wdGlvbigiLS1uby11
cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVsdD1UcnVl
LCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiIpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Zy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nLnB5CmluZGV4IDNhNWMwMTNhMDUzYjhjODRiOTcyMzJjNTAxMTc5ZmNkNTNjZWEyNTQu
LjU3MTk4YzQxODZlYTUzYmFmMjAyZWM1N2FjNzc0YzAyYTc0YjNmMjAgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nLnB5CkBAIC00Miw4ICs0Miw2IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJh
Y3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucXVpZXQsCiAgICAgICAgICAgICBPcHRpb25z
LmVtYWlsLAogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAgICAgICAgT3B0
aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAgXQog
CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBAIC01NSw5ICs1MywxMCBAQCBjbGFzcyBQcmVw
YXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1i
dWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmVtYWls
OgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZW1haWw9JXMiICUgc2VsZi5fb3B0aW9ucy5l
bWFpbCkKLSAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29w
dGlvbnMuc3F1YXNoKToKKworICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQgPT0g
IioiOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tbWVyZ2UtYmFzZT0lcyIgJSBzZWxmLl90
b29sLnNjbSgpLnN2bl9tZXJnZV9iYXNlKCkpCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0
X2NvbW1pdDoKKyAgICAgICAgZWxpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAg
ICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0X2Nv
bW1pdCkKIAogICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5CmluZGV4IDRkMjk5ZmEyMWFkM2FiYzQyOWUyODIzNTk0NGVmMTA2NTdjMjM3NjUuLjBlNzhi
YzIyOTVkMGQzZTZhMDMzZTYxNjMwMWYzYjBhZTc0ZjJmOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFByZXBhcmVDaGFu
Z2VMb2dGb3JSZXZlcnQoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToK
ICAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5n
IGEgLS1yZXZlcnQ9IG9wdGlvbi4KICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicHJlcGFyZS1D
aGFuZ2VMb2ciKQotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0
KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAg
ICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2No
YW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBidWdfdXJsID0gc2VsZi5fdG9vbC5i
dWdzLmJ1Z191cmxfZm9yX2J1Z19pZChzdGF0ZVsiYnVnX2lkIl0pIGlmIHN0YXRlWyJidWdfaWQi
XSBlbHNlIE5vbmUKICAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19wYXRo
czoKICAgICAgICAgICAgICMgRklYTUU6IFNlZW1zIHdlIHNob3VsZCBwcmVwYXJlIHRoZSBtZXNz
YWdlIG91dHNpZGUgb2YgY2hhbmdlbG9ncy5weSBhbmQgdGhlbiBqdXN0IHBhc3MgaW4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFu
Z2Vsb2dzd2l0aHJldmlld2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKaW5kZXggOTc0MDAxMzY4NjZh
NzUxYWNlYjYyMWE5ZjgzZDU1NjcyNTY3MmFhNy4uOWMxNzBiODc0NTY4OTM0ZTc3ZGEyZjJjMWZk
ZTgxNDczNzQ5ZjJmZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3
ZXIucHkKQEAgLTQwLDggKzQwLDYgQEAgY2xhc3MgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdl
cihBYnN0cmFjdFN0ZXApOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSAr
IFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMu
cmV2aWV3ZXIsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9w
dGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21f
YnVnKHNlbGYsIGJ1Z19pZCk6CkBAIC03MCw1ICs2OCw1IEBAIGNsYXNzIFVwZGF0ZUNoYW5nZUxv
Z3NXaXRoUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIHJldHVybgogCiAgICAg
ICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkKLSAgICAgICAgZm9y
IGNoYW5nZWxvZ19wYXRoIGluIHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vs
b2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpOgorICAg
ICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVk
X2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KToKICAgICAgICAgICAgIENoYW5n
ZUxvZyhjaGFuZ2Vsb2dfcGF0aCkuc2V0X3Jldmlld2VyKHJldmlld2VyKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZp
ZXdlci5weQppbmRleCA2NmVlNWI3ZmMxOTk5NDUzNzJkNDVkM2E4Mzg2OGQ0MTQ1ZDBiMzVmLi40
Njc2Y2VlNmExZGYxODUzMTJiM2FjNmFiM2YwNGNmYTc4NzE2MGQ5IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZp
ZXdlci5weQpAQCAtNDEsOCArNDEsNiBAQCBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0
U3RlcCk6CiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3Rl
cC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAg
ICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAg
ICAgICBdCiAKICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBtb3ZlIG9udG8gQ2hh
bmdlTG9nRW50cnkKQEAgLTYzLDcgKzYxLDcgQEAgY2xhc3MgVmFsaWRhdGVSZXZpZXdlcihBYnN0
cmFjdFN0ZXApOgogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgZmlndXJlIG91dCBob3cgdG8g
aGFuZGxlIHRoZSBjdXJyZW50IHdvcmtpbmcKICAgICAgICAgIyAgICAgICAgZGlyZWN0b3J5IGlz
c3VlIG1vcmUgZ2xvYmFsbHkuCiAgICAgICAgIG9zLmNoZGlyKHNlbGYuX3Rvb2wuc2NtKCkuY2hl
Y2tvdXRfcm9vdCkKLSAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIHNlbGYuX3Rvb2wuY2hl
Y2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2Vs
Zi5fb3B0aW9ucy5zcXVhc2gpOgorICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5f
dG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0KToKICAgICAgICAgICAgIGNoYW5nZWxvZ19lbnRyeSA9IENoYW5nZUxvZyhjaGFuZ2Vsb2df
cGF0aCkubGF0ZXN0X2VudHJ5KCkKICAgICAgICAgICAgIGlmIHNlbGYuX2hhc192YWxpZF9yZXZp
ZXdlcihjaGFuZ2Vsb2dfZW50cnkpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>56956</attachid>
            <date>2010-05-24 18:31:13 -0700</date>
            <delta_ts>2010-05-25 13:53:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100524183112.patch</filename>
            <type>text/plain</type>
            <size>57876</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBmM2YyMWIyYzNlOTU2ZjE0OTBlNDBkMTEzZWI4YTRmN2I3NWE1ZDg2Li40ZmEwMDQ2
NWFjYTQzNGQ3OGQ4NDVmMjgzYzg5Y2UxMzVjYjgwZGZlIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDAgQEAK
IDIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLgorCisgICAgICAgICogU2NyaXB0
cy9jaGVjay13ZWJraXQtc3R5bGU6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvYXBpLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2FwaV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvc2NtX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9yaWV0dmVsZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNl
ci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5OgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHk6CisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhy
ZXZpZXdlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRh
dGVyZXZpZXdlci5weToKKworMjAxMC0wNS0yNCAgT2phbiBWYWZhaSAgPG9qYW5AY2hyb21pdW0u
b3JnPgorCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgogCiAgICAgICAgIGFkZCB0
ZXN0cyB0byBlbnN1cmUgdGhhdCAtLWdpdC1jb21taXQgcmFuZ2VzIGFyZSBleGNsdXNpdmUgb2Yg
dGhlIHN0YXJ0IG9mIHRoZSByYW5nZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9j
aGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZQppbmRleCAxOWQzNzYyNzU1OTI3ZGJlNTI5MmJmNTkxNTk3MDhkOTIxYWI2ZDI3Li45YTFhZTFl
M2JmNGQwMGI0NDg2M2U1ZjNkZTc5NGRmYzEzODhiMmFkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2No
ZWNrLXdlYmtpdC1zdHlsZQpAQCAtMTE1LDcgKzExNSw3IEBAIGRlZiBtYWluKCk6CiAgICAgaWYg
cGF0aHM6CiAgICAgICAgIGZpbGVfcmVhZGVyLnByb2Nlc3NfcGF0aHMocGF0aHMpCiAgICAgZWxz
ZToKLSAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29t
bWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0
Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBwYXRjaF9jaGVja2VyID0gUGF0Y2hSZWFk
ZXIoZmlsZV9yZWFkZXIpCiAgICAgICAgIHBhdGNoX2NoZWNrZXIuY2hlY2socGF0Y2gpCiAKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Fw
aS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5w
eQppbmRleCBhNWFjOTM5OGU4OGU3NTFmZTg1NDQzNjRiNjljMzYzNWZlMTBhN2YxLi5jYTI4ZTMy
MzMyNTg3MmRjZWMwMWQxM2FkMTY3ZjUyNWJmNzc2ZDIzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CkBAIC04MywxNiArODMs
MTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lv
bihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9pbmZvX2Zvcl9y
ZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAotICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dz
KHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgICMgU0NNIHJldHVybnMgcGF0aHMgcmVsYXRpdmUg
dG8gc2NtLmNoZWNrb3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChlc3BlY2lhbGx5IHRob3Nl
IHVzaW5nIHRoZSBDaGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAjIGV4cGVjdCBhYnNvbHV0
ZSBwYXRocywgc28gdGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBwYXRocy4KLSAgICAgICAg
Y2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQsIHNxdWFz
aCkKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9j
b21taXQpCiAgICAgICAgIGFic29sdXRlX3BhdGhzID0gW29zLnBhdGguam9pbihzZWxmLl9zY20u
Y2hlY2tvdXRfcm9vdCwgcGF0aCkgZm9yIHBhdGggaW4gY2hhbmdlZF9maWxlc10KICAgICAgICAg
cmV0dXJuIFtwYXRoIGZvciBwYXRoIGluIGFic29sdXRlX3BhdGhzIGlmIHNlbGYuX2lzX3BhdGhf
dG9fY2hhbmdlbG9nKHBhdGgpXQogCi0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMg
PSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAgIGRlZiBj
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CisgICAgICAg
IGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0KQog
ICAgICAgICBpZiBub3QgbGVuKGNoYW5nZWxvZ19wYXRocyk6CiAgICAgICAgICAgICByYWlzZSBT
Y3JpcHRFcnJvcihtZXNzYWdlPSJGb3VuZCBubyBtb2RpZmllZCBDaGFuZ2VMb2dzLCBjYW5ub3Qg
Y3JlYXRlIGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiQWxsIGNoYW5nZXMgcmVxdWlyZSBhIENoYW5nZUxvZy4gIFNlZTpcbiIKQEAgLTEwOSw5ICsx
MDksOSBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICAjIEZJWE1FOiBXZSBzaG91
bGQgc29ydCBhbmQgbGFiZWwgdGhlIENoYW5nZUxvZyBtZXNzYWdlcyBsaWtlIGNvbW1pdC1sb2ct
ZWRpdG9yIGRvZXMuCiAgICAgICAgIHJldHVybiBDb21taXRNZXNzYWdlKCIiLmpvaW4oY2hhbmdl
bG9nX21lc3NhZ2VzKS5zcGxpdGxpbmVzKCkpCiAKLSAgICBkZWYgYnVnX2lkX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBidWdfaWRfZm9yX3RoaXNf
Y29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1
cm4gcGFyc2VfYnVnX2lkKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQsIHNxdWFzaCkubWVzc2FnZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19p
ZChzZWxmLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0KS5tZXNzYWdl
KCkpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIHBhc3MgIyBX
ZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMzEsNyArMTMxLDcgQEAgY2xhc3Mg
Q2hlY2tvdXQob2JqZWN0KToKIAogICAgICAgICAjIFdlIHJldmVydCB0aGUgQ2hhbmdlTG9ncyBi
ZWNhdXNlIHJlbW92aW5nIGxpbmVzIGZyb20gYSBDaGFuZ2VMb2cKICAgICAgICAgIyBkb2Vzbid0
IG1ha2Ugc2Vuc2UuICBDaGFuZ2VMb2dzIGFyZSBhcHBlbmQgb25seS4KLSAgICAgICAgY2hhbmdl
bG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSwgc3F1
YXNoPUZhbHNlKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5n
ZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBpZiBsZW4oY2hhbmdlbG9nX3BhdGhzKToK
ICAgICAgICAgICAgIHNlbGYuX3NjbS5yZXZlcnRfZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQogCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9h
cGlfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9hcGlfdW5pdHRlc3QucHkKaW5kZXggMTQzNjM3OWE4ZDczYjVkMjg0OWNlODcxZDI0NTAz
MDg1MGYzYTJmNy4uZmRmZDg3OThkZDVjYjk3ZTNlMWM1YTI5NmE2YzA2MGJiM2MxNmM5MyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBp
X3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2FwaV91bml0dGVzdC5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAgY2xhc3MgQ29tbWl0
TWVzc2FnZUZvclRoaXNDb21taXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIENoYW5n
ZUxvZyBpcyBkaWZmaWN1bHQgdG8gbW9jayBhdCBjdXJyZW50LgogICAgIGRlZiB0ZXN0X2NvbW1p
dF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAgY2hlY2tvdXQgPSBDaGVj
a291dChOb25lKQotICAgICAgICBjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRh
IGdpdF9jb21taXQsIHNxdWFzaDogWyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxvZzIiXQorICAgICAg
ICBjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRhIGdpdF9jb21taXQ6IFsiQ2hh
bmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgp
CiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJQYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9n
MVxuUGFyc2luZyBDaGFuZ2VMb2c6IENoYW5nZUxvZzJcbiIKICAgICAgICAgY29tbWl0X21lc3Nh
Z2UgPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2Vf
Zm9yX3RoaXNfY29tbWl0LAotICAgICAgICAgICAga3dhcmdzPXsiZ2l0X2NvbW1pdCI6IE5vbmUs
ICJzcXVhc2giOiBGYWxzZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisgICAg
ICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBl
Y3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X21lc3NhZ2UubWVz
c2FnZSgpLCBzZWxmLmV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQogCiAKQEAgLTE2MywxMyArMTYz
LDEzIEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRl
c3RfYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAgc2NtID0gTW9jaygpCiAg
ICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQotICAgICAgICBjaGVja291dC5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwgc3F1YXNoOiBDb21t
aXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5jb250ZW50cygpLnNw
bGl0bGluZXMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5idWdfaWRfZm9y
X3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKSwgMzY2MjkpCisgICAg
ICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRf
Y29tbWl0OiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5j
b250ZW50cygpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291
dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSksIDM2NjI5KQogCiAgICAg
ZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAgICAgICAgc2NtID0gTW9jaygp
CiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAgICAgICBzY20uY2hh
bmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsiZmlsZTEiLCAiQ2hhbmdl
TG9nIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KKyAgICAgICAgc2NtLmNoYW5nZWRfZmls
ZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUv
cGF0aC9DaGFuZ2VMb2ciXQogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKICAgICAg
ICAgZXhwZWN0ZWRfY2hhbmdsb2dzID0gWyIvZm9vL2Jhci9DaGFuZ2VMb2ciLCAiL2Zvby9iYXIv
cmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNr
b3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpLCBl
eHBlY3RlZF9jaGFuZ2xvZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQubW9k
aWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9z
Y20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20u
cHkKaW5kZXggZTY4Y2NmYTlhNWJlN2JmNmI3OTdjODkxY2YzMGUwMDBhMTA0YTVkMC4uMjMyNjcw
OWNiZTA0ZDc0MmJiNTYzZjcxMjMwYjZmMDYzM2U5YTM1MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQpAQCAtOTgsNiArOTgs
NyBAQCBjbGFzcyBTQ006CiAgICAgICAgIHNlbGYuY3dkID0gY3dkCiAgICAgICAgIHNlbGYuY2hl
Y2tvdXRfcm9vdCA9IHNlbGYuZmluZF9jaGVja291dF9yb290KHNlbGYuY3dkKQogICAgICAgICBz
ZWxmLmRyeXJ1biA9IEZhbHNlCisgICAgICAgIHNlbGYuX3VzZXIgPSBVc2VyKCkKIAogICAgICMg
QSB3cmFwcGVyIHVzZWQgYnkgc3ViY2xhc3NlcyB0byBjcmVhdGUgcHJvY2Vzc2VzLgogICAgIGRl
ZiBydW4oc2VsZiwgYXJncywgY3dkPU5vbmUsIGlucHV0PU5vbmUsIGVycm9yX2hhbmRsZXI9Tm9u
ZSwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVycj1UcnVlLCBkZWNvZGVfb3V0
cHV0PVRydWUpOgpAQCAtMTg5LDcgKzE5MCw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgYWRkKHNl
bGYsIHBhdGgpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9j
b21taXQ9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFz
c2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3JldmlzaW9u
KHNlbGYpOgpAQCAtMjA0LDcgKzIwNSw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgZGlzcGxheV9u
YW1lKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29t
bWl0PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3Nl
cyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRlZiBjb21taXR0ZXJfZW1haWxfZm9yX3JldmlzaW9u
KHNlbGYsIHJldmlzaW9uKToKQEAgLTIyMiwxMCArMjIzLDcgQEAgY2xhc3MgU0NNOgogICAgIGRl
ZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxl
bWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIHNob3Vs
ZF9zcXVhc2goc2VsZiwgc3F1YXNoKToKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
ciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAgICBkZWYgY29tbWl0X3dpdGhfbWVz
c2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFz
aD1Ob25lKToKKyAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2Vy
bmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRlZiBzdm5fY29tbWl0
X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgpAQCAtMzQ3LDcgKzM0NSw3IEBAIGNsYXNzIFNWTihT
Q00pOgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/CiAgICAg
ICAgIHNlbGYucnVuKFsic3ZuIiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVmIGNoYW5nZWRfZmls
ZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNoYW5nZWRf
ZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0
YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29tbWFuZCgpLCBzZWxmLl9z
dGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQogCiAgICAgZGVmIGNoYW5nZWRfZmlsZXNfZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM3MCw3ICszNjgsNyBAQCBjbGFzcyBTVk4oU0NNKToK
ICAgICAgICAgcmV0dXJuICJzdm4iCiAKICAgICAjIEZJWE1FOiBUaGlzIG1ldGhvZCBzaG91bGQg
YmUgb24gQ2hlY2tvdXQuCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5v
bmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9
Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBieXRlIGFycmF5IChzdHIoKSkgcmVwcmVzZW50
aW5nIHRoZSBwYXRjaCBmaWxlLgogICAgICAgICBQYXRjaCBmaWxlcyBhcmUgZWZmZWN0aXZlbHkg
YmluYXJ5IHNpbmNlIHRoZXkgbWF5IGNvbnRhaW4KICAgICAgICAgZmlsZXMgb2YgbXVsdGlwbGUg
ZGlmZmVyZW50IGVuY29kaW5ncy4iIiIKQEAgLTQwNiwxMiArNDA0LDggQEAgY2xhc3MgU1ZOKFND
TSk6CiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5j
aGVja291dF9yb290LgogICAgICAgICBzZWxmLnJ1bihbJ3N2bicsICdyZXZlcnQnXSArIGZpbGVf
cGF0aHMpCiAKLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgotICAgICAgICAj
IFNWTiBkb2Vzbid0IHN1cHBvcnQgdGhlIGNvbmNlcHQgb2Ygc3F1YXNoaW5nLgotICAgICAgICBy
ZXR1cm4gRmFsc2UKLQotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2Us
IHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgotICAgICAgICAj
IHNxdWFzaCBhbmQgZ2l0LWNvbW1pdCBhcmUgbm90IHVzZWQgYnkgU1ZOLgorICAgIGRlZiBjb21t
aXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9
Tm9uZSk6CisgICAgICAgICMgZ2l0LWNvbW1pdCBpcyBub3QgdXNlZCBieSBTVk4uCiAgICAgICAg
IGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9v
a3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3
aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5cbkNv
bW1pdHRlZCByZXZpc2lvbiAwLiIKQEAgLTQ5OCwyNCArNDkyLDIxIEBAIGNsYXNzIEdpdChTQ00p
OgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/CiAgICAgICAg
IHNlbGYucnVuKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVmIF9tZXJnZV9iYXNlKHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIF9hc3NlcnRfc3luY2VkKHNlbGYpOgor
ICAgICAgICBpZiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxpc3QnLCAnLS1tYXgtY291
bnQ9MScsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCksICdeaGVhZCddKSk6CisgICAgICAgICAgICBy
YWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJOb3QgZnVsbHkgbWVyZ2VkL3JlYmFzZWQgdG8gJXMu
IFRoaXMgYnJhbmNoIG5lZWRzIHRvIGJlIHN5bmNlZCBmaXJzdC4iICUgc2VsZi5zdm5fYnJhbmNo
X25hbWUoKSkKKworICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0KToKICAgICAg
ICAgaWYgZ2l0X2NvbW1pdDoKLSAgICAgICAgICAgICMgRklYTUU6IENhbGxpbmcgY29kZSBzaG91
bGQgdHVybiBjb21taXQgcmFuZ2VzIGludG8gYSBsaXN0IG9mIGNvbW1pdCBJRHMKLSAgICAgICAg
ICAgICMgYW5kIHRoZW4gdHJlYXQgZWFjaCBjb21taXQgc2VwYXJhdGVseS4KICAgICAgICAgICAg
IGlmICcuLicgbm90IGluIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdCA9
IGdpdF9jb21taXQgKyAiXi4uIiArIGdpdF9jb21taXQKICAgICAgICAgICAgIHJldHVybiBnaXRf
Y29tbWl0CiAKLSAgICAgICAgaWYgc2VsZi5zaG91bGRfc3F1YXNoKHNxdWFzaCk6Ci0gICAgICAg
ICAgICByZXR1cm4gc2VsZi5zdm5fbWVyZ2VfYmFzZSgpCi0KLSAgICAgICAgIyBGSVhNRTogTm9u
LXNxdWFzaCBiZWhhdmlvciBzaG91bGQgbWF0Y2ggY29tbWl0X3dpdGhfbWVzc2FnZS4gSXQgcmFp
c2VzIGFuIGVycm9yCi0gICAgICAgICMgaWYgdGhlcmUgYXJlIHdvcmtpbmcgY29weSBjaGFuZ2Vz
IGFuZCAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaCB3YXNuJ3QgcGFzc2VkIGluLgotICAgICAgICAj
IElmIC0tbm8tc3F1YXNoLCB0aGVuIGl0IHNob3VsZCBwcm9jZWVkIHdpdGggZWFjaCBsb2NhbCBj
b21taXQgYXMgYSBzZXBhcmF0ZSBwYXRjaC4KLSAgICAgICAgcmV0dXJuICdIRUFEJworICAgICAg
ICBzZWxmLl9hc3NlcnRfc3luY2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc3ZuX21lcmdlX2Jh
c2UoKQogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVh
c2g9Tm9uZSk6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcics
ICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWlu
ZGV4Iiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXQorICAgIGRlZiBjaGFu
Z2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CisgICAgICAgIHN0YXR1c19jb21tYW5k
ID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgIi0t
bm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4Iiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0
KV0KICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMo
c3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0YXR1c19yZWdleHAoIkFETSIpKQogCiAgICAgZGVmIF9j
aGFuZ2VzX2ZpbGVzX2Zvcl9jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CkBAIC01NDQsMTIgKzUz
NSwxMiBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAg
ICAgICByZXR1cm4gImdpdCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29t
bWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJl
c2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2
ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRp
cGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxk
IHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290Ci0gICAgICAgIHJldHVybiBzZWxm
LnJ1bihbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxs
LWluZGV4IiwgIi1NIiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSwgZGVj
b2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsnZ2l0JywgJ2RpZmYn
LCAnLS1iaW5hcnknLCAiLS1uby1leHQtZGlmZiIsICItLWZ1bGwtaW5kZXgiLCAiLU0iLCBzZWxm
Ll9tZXJnZV9iYXNlKGdpdF9jb21taXQpXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKIAogICAgIEBj
bGFzc21ldGhvZAogICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3JldmlzaW9uKGNscywgcmV2
aXNpb24pOgpAQCAtNTg0LDYzICs1NzUsMzMgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgZGVmIHJl
dmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2VsZi5ydW4oWydnaXQnLCAn
Y2hlY2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBfZ2V0X3NxdWFzaF9l
cnJvcl9tZXNzYWdlKHNlbGYsIG51bV9sb2NhbF9jb21taXRzKToKLSAgICAgICAgd29ya2luZ19k
aXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4o
KSBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzIgotICAgICAgICByZXR1cm4gKCIiIlRo
ZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotICAg
ICAgICAgICAgMSkgVXNlIC0tc3F1YXNoIG9yIC0tbm8tc3F1YXNoCi0gICAgICAgICAgICAyKSBn
aXQgY29uZmlnIHdlYmtpdC1wYXRjaC5zcXVhc2ggdHJ1ZS9mYWxzZQotICAgICAgICAgICAgIiIi
ICUgKG51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlKSkKLQotICAg
IGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgIGlmIHNxdWFzaCBpcyBO
b25lOgotICAgICAgICAgICAgY29uZmlnX3NxdWFzaCA9IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dl
YmtpdC1wYXRjaC5zcXVhc2gnKQotICAgICAgICAgICAgaWYgKGNvbmZpZ19zcXVhc2ggYW5kIGNv
bmZpZ19zcXVhc2ggaXMgbm90ICIiKToKLSAgICAgICAgICAgICAgICBzcXVhc2ggPSBjb25maWdf
c3F1YXNoLmxvd2VyKCkgPT0gInRydWUiCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICMgT25seSByYWlzZSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgbXVsdGlwbGUg
Y29tbWl0cyB0byBzcXVhc2guCi0gICAgICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBs
ZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAgICAgICAgICAgICAgaWYgbnVtX2xvY2FsX2Nv
bW1pdHMgPiAxIG9yIChudW1fbG9jYWxfY29tbWl0cyA+IDAgYW5kIG5vdCBzZWxmLndvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuKCkpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRF
cnJvcihtZXNzYWdlPXNlbGYuX2dldF9zcXVhc2hfZXJyb3JfbWVzc2FnZShudW1fbG9jYWxfY29t
bWl0cykpCi0KLSAgICAgICAgaWYgc3F1YXNoIGFuZCBzZWxmLl9zdm5fYnJhbmNoX2hhc19leHRy
YV9jb21taXRzKCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJDYW5u
b3QgdXNlIC0tc3F1YXNoIHdoZW4gSEVBRCBpcyBub3QgZnVsbHkgbWVyZ2VkL3JlYmFzZWQgdG8g
JXMuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgYnJhbmNo
IG5lZWRzIHRvIGJlIHN5bmNlZCBmaXJzdC4iICUgc2VsZi5zdm5fYnJhbmNoX25hbWUoKSkKKyAg
ICBkZWYgX2NvbW1pdF93YXJuaW5nKHNlbGYsIG51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbik6CisgICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UgPSAi
IiBpZiB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbiBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBj
aGFuZ2VzIgorICAgICAgICByZXR1cm4gIlRoZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIElm
IHlvdSBjb250aW51ZSBldmVyeXRoaW5nIHdpbGwgYmUgY29tbWl0dGVkIGFzIGEgc2luZ2xlIGNv
bW1pdC4gQ29udGludWU/IiAlIChudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3Rvcnlf
bWVzc2FnZSkKIAotICAgICAgICByZXR1cm4gc3F1YXNoCisgICAgZGVmIGNvbW1pdF93aXRoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKKyAg
ICAgICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmluZyBHaXQgY29tbWl0cy4KIAotICAgIGRl
ZiBfc3ZuX2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxl
bihydW5fY29tbWFuZChbJ2dpdCcsICdyZXYtbGlzdCcsICctLW1heC1jb3VudD0xJywgc2VsZi5z
dm5fYnJhbmNoX25hbWUoKSwgJ15oZWFkJ10pKQorICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9p
c19jbGVhbiA9IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKQogCi0gICAgZGVmIGNv
bW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgVXNlcm5hbWUgaXMgaWdub3JlZCBkdXJp
bmcgR2l0IGNvbW1pdHMuCiAgICAgICAgIGlmIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAjIE5l
ZWQgd29ya2luZyBkaXJlY3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQgc28gd2UgY2FuIGNo
ZWNrb3V0IHRoZSBtZXJnZSBicmFuY2guCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi53b3JraW5n
X2RpcmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgaWYgbm90IHdvcmtpbmdfZGlyZWN0
b3J5X2lzX2NsZWFuOgogICAgICAgICAgICAgICAgICMgRklYTUU6IHdlYmtpdC1wYXRjaCBsYW5k
IHdpbGwgbW9kaWZ5IHRoZSBDaGFuZ2VMb2dzIHRvIGNvcnJlY3QgdGhlIHJldmlld2VyLgogICAg
ICAgICAgICAgICAgICMgVGhhdCB3aWxsIG1vZGlmeSB0aGUgd29ya2luZy1jb3B5IGFuZCBjYXVz
ZSB1cyB0byBoaXQgdGhpcyBlcnJvci4KLSAgICAgICAgICAgICAgICAjIFRoZSBDaGFuZ2VMb2cg
bW9kaWZpY2F0aW9uIGNvdWxkIGJlIG1hZGUgdG8gbW9kaWZ5IHRoZSBleGlzdGluZyBsb2NhbCBj
b21taXQ/CisgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIG1vZGlmaWNhdGlvbiBjb3Vs
ZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwgY29tbWl0LgogICAgICAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgY29weSBpcyBtb2RpZmll
ZC4gQ2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCiAgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBnaXRfY29tbWl0KQogCi0gICAg
ICAgIHNxdWFzaCA9IHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpCi0gICAgICAgIGlmIHNxdWFz
aDoKLSAgICAgICAgICAgIHNlbGYucnVuKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYu
c3ZuX2JyYW5jaF9uYW1lKCldKQotICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRo
X21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgZWxpZiBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9y
eV9pc19jbGVhbigpOgotICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMo
KSk6Ci0gICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5nIGNvcHkgY2hhbmdl
cy4gQXNzdW1lIHRoZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSAgICAgICAgICAgICAgICBzZWxm
LmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZWxpZiBz
cXVhc2ggaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRpZG4ndCBleHBsaWNp
dGx5IHNheSB0byBzcXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxvY2FsIGNvbW1pdHMK
LSAgICAgICAgICAgICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4gTm90IGNsZWFyIHdo
YXQgdGhlIHVzZXIgd2FudHMuCi0gICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVz
c2FnZT0iIiJUaGVyZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMu
IERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotMSkgQ29tbWl0L3JldmVydCB3b3JraW5nIGNvcHkg
Y2hhbmdlcy4KLTIpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAotMykgZ2l0IGNvbmZpZyB3
ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKLSIiIikKLQotICAgICAgICAjIEZJWE1FOiBU
aGlzIHdpbGwgY29tbWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGggaXQncyBvd24gbWVz
c2FnZS4gV2Ugc2hvdWxkIHJlc3RydWN0dXJlCi0gICAgICAgICMgc28gdGhhdCBlYWNoIGxvY2Fs
IGNvbW1pdCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJhc2VkIG9mZiBpdCdz
IENoYW5nZUxvZ3MuCisgICAgICAgICMgT25seSB3YXJuIGlmIHRoZXJlIGFyZSBhY3R1YWxseSBt
dWx0aXBsZSBjb21taXRzIHRvIHNxdWFzaC4KKyAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBs
ZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCisgICAgICAgIGlmICgobnVtX2xvY2FsX2NvbW1pdHMg
PiAxIG9yIChudW1fbG9jYWxfY29tbWl0cyA+IDAgYW5kIG5vdCB3b3JraW5nX2RpcmVjdG9yeV9p
c19jbGVhbikpIGFuZAorICAgICAgICAgICAgbm90IHNlbGYuX3VzZXIuY29uZmlybShzZWxmLl9j
b21taXRfd2FybmluZyhudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xl
YW4pKSk6CisgICAgICAgICAgICByZXR1cm4gIkRpZCBub3QgY29tbWl0IgorCisgICAgICAgIHNl
bGYuX2Fzc2VydF9zeW5jZWQoKQorICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdyZXNldCcsICct
LXNvZnQnLCBzZWxmLnN2bl9icmFuY2hfbmFtZSgpXSkKKyAgICAgICAgc2VsZi5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKICAgICAgICAgcmV0dXJuIHNlbGYucHVzaF9sb2Nh
bF9jb21taXRzX3RvX3NlcnZlcigpCiAKICAgICBkZWYgX2NvbW1pdF9vbl9icmFuY2goc2VsZiwg
bWVzc2FnZSwgZ2l0X2NvbW1pdCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKaW5kZXggOGVlYTRk
OGE4NTE1NWQ0MjI3ZTllNzBhN2FjNTA0ZTk4YmE1ZDFjYi4uMmM2NWFjODlkOTY1YjAyZGIyNjll
MzE0NDdiNzIwMjBlNTJjMGJiYyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQpAQCAtNDcsNiAr
NDcsOCBAQCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IGRldGVjdF9z
Y21fc3lzdGVtLCBTQ00sIFNWTiwgQ2hlY2tvdXROZQogZnJvbSB3ZWJraXRweS5jb21tb24uY29u
ZmlnLmNvbW1pdHRlcnMgaW1wb3J0IENvbW1pdHRlciAgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90
IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0LmJ1Z3ppbGxhIGltcG9ydCBBdHRh
Y2htZW50ICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2NvbW1hbmQsIFNj
cmlwdEVycm9yCisjIEZJWE1FOiBNb2NrVXNlciBzaG91bGQgYmUgbW92ZWQgdG8gY29tbW9uIHNv
IHdlIGRvbid0IGhhdmUgdG8gaW1wb3J0IGZyb20gd2Via2l0cHkudG9vbCBoZXJlLgorZnJvbSB3
ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrVXNlcgogCiAjIEV2ZW50dWFsbHkgd2Ug
d2lsbCB3YW50IHRvIHdyaXRlIHRlc3RzIHdoaWNoIHdvcmsgZm9yIGJvdGggc2Ntcy4gKGxpa2Ug
dXBkYXRlX3dlYmtpdCwgY2hhbmdlZF9maWxlcywgZXRjLikKICMgUGVyaGFwcyB0aHJvdWdoIHNv
bWUgU0NNVGVzdCBiYXNlLWNsYXNzIHdoaWNoIGJvdGggU1ZOVGVzdCBhbmQgR2l0VGVzdCBpbmhl
cml0IGZyb20uCkBAIC04Niw2ICs4OCwxMiBAQCBkZWYgX2dpdF9kaWZmKCphcmdzKToKICAgICBy
ZXR1cm4gX21ha2VfZGlmZigiZ2l0IiwgKmFyZ3MpCiAKIAorY2xhc3MgTW9ja0ZhbHNlVXNlcihv
YmplY3QpOgorCisgICAgZGVmIGNvbmZpcm0oc2VsZiwgbWVzc2FnZT1Ob25lKToKKyAgICAgICAg
cmV0dXJuIEZhbHNlCisKKwogIyBFeGlzdHMgdG8gc2hhcmUgc3ZuIHJlcG9zaXRvcnkgY3JlYXRp
b24gY29kZSBiZXR3ZWVuIHRoZSBnaXQgYW5kIHN2biB0ZXN0cwogY2xhc3MgU1ZOVGVzdFJlcG9z
aXRvcnk6CiAgICAgQGNsYXNzbWV0aG9kCkBAIC03NjYsMjQgKzc3NCwxNCBAQCBjbGFzcyBHaXRU
ZXN0KFNDTVRlc3QpOgogCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRfcGFyc2luZyhzZWxmKToK
ICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdtb3JlIHRlc3Qg
Y29udGVudCcpCi0gICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgi
YW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3Rl
eHQpLCAnNicpCiAKICAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1ZQogICAgICAgICB3cml0
ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50
JykKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5v
dGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIGNvbW1pdF90ZXh0ID0gc2VsZi5zY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90
ZXh0KSwgJzAnKQogCi0gICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5
X2NoYW5nZXMoc2VsZik6Ci0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2Zp
bGVfY29tbWl0MScsICdtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIHJ1bl9jb21tYW5kKFsn
Z2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MSddKQotICAgICAgICBzZWxmLnNjbS5jb21t
aXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQotCi0gICAgICAg
IHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MicsICdzdGlsbCBtb3Jl
IHRlc3QgY29udGVudCcpCi0gICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0
X2ZpbGVfY29tbWl0MiddKQotCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV93b3Jr
aW5nX2NvcHlfb25seShzZWxmKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCkBAIC03OTQsMjEgKzc5Miwx
OCBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9s
b2cpKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9zcXVhc2hlZChzZWxmKToK
LSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2Vz
KCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFu
b3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykK
LSAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1s
aW1pdD0xJywgJy0tdmVyYm9zZSddKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCi0KLSAgICBkZWYgX3R3
b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdChzZWxmKToK
ICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21v
cmUgdGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rl
c3RfZmlsZV9jb21taXQxJ10pCiAgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAKKyAgICBkZWYgX29uZV9sb2NhbF9jb21t
aXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdCgpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVf
Y29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisgICAgICAgIHJ1bl9jb21tYW5k
KFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQorCisgICAgZGVmIF90d29fbG9j
YWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdCgpCiAgICAg
ICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MicsICdzdGlsbCBt
b3JlIHRlc3QgY29udGVudCcpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0
ZXN0X2ZpbGVfY29tbWl0MiddKQogICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRo
X21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKQEAgLTgxOSw2ICs4MTQsMjQgQEAg
Y2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQogCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmKToK
KyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2Vz
KCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja1VzZXIoKQorICAgICAgICBjb21taXRfdGV4dCA9
IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQo
Y29tbWl0X3RleHQpLCAnNicpCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcs
ICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9s
b2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9kZW55X2NvbmZpcm0oc2Vs
Zik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hh
bmdlcygpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCisgICAgICAgIHNjbS5fdXNlciA9IE1vY2tGYWxzZVVzZXIoKQorICAgICAgICBjb21t
aXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1p
dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X3RleHQsICJEaWQgbm90IGNvbW1p
dCIpCisKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX2dpdF9jb21taXQoc2VsZik6
CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKIApAQCAtODQyLDUxICs4NTUsNzMg
QEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQogCi0gICAgZGVm
IHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgot
ICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgZGVmIHRlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZV9vbmx5X2xvY2FsX2NvbW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdCgpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2No
ZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20u
Y29tbWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0Il0pCisgICAgICAgIGNv
bW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQi
KQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICct
LWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogCiAgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHkoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgd3JpdGVfaW50
b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2Un
KQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorICAgICAgICBzY20uX3VzZXIgPSBN
b2NrVXNlcigpCisKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2Fn
ZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20u
c3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAgICAg
IHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScs
ICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHlfZGVu
eV9jb25maXJtKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAg
ICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICd3b3JraW5n
IGNvcHkgY2hhbmdlJykKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRf
Y2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja0ZhbHNlVXNlcigpCisKKyAg
ICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0
IGNvbW1pdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X3RleHQsICdEaWQgbm90
IGNvbW1pdCcpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX2dpdF9jb21taXRf
YW5kX3dvcmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMo
KQogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAn
d29ya2luZyBjb3B5IGNoYW5nZScpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVy
cm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0IiwgJ2dp
dF9jb21taXQ9IkhFQUReIiddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJv
ciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IiwgZ2l0X2Nv
bW1pdD0iSEVBRF4iKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBs
ZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0
aF9tZXNzYWdlX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhf
bWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9RmFsc2UpCisgICAgICAg
IHNjbS5fdXNlciA9IE1vY2tVc2VyKCkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCi0KLSAg
ICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1p
dD0yJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
dGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2RlbnlfY29uZmly
bShzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21t
aXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1p
dCIsIHNxdWFzaD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNp
b25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKKyAgICAgICAgc2NtLl91c2Vy
ID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjb21taXRfdGV4dCwgJ0RpZCBub3QgY29tbWl0JykKIAotICAgICAgICBzdm5fbG9nID0g
cnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3Nl
J10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdl
X25vdF9zeW5jZWQoc2VsZik6CisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0
JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCisgICAgICAgIHNlbGYuX3R3b19sb2Nh
bF9jb21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja1VzZXIoKQorICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90
aGVyIHRlc3QgY29tbWl0IikKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90
X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9u
b3Rfc3luY2VkX2RlbnlfY29uZmlybShzZWxmKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQn
LCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkKICAgICAgICAgc2Vs
Zi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRF
cnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1
YXNoPVRydWUpCisgICAgICAgIHNjbS5fdXNlciA9IE1vY2tGYWxzZVVzZXIoKQorICAgICAgICBj
b21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNv
bW1pdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X3RleHQsICdEaWQgbm90IGNv
bW1pdCcpCiAKICAgICBkZWYgdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6CiAgICAgICAgIHNlbGYu
X3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigpCkBAIC05MDAsMjYgKzkzNSwxNiBAQCBjbGFzcyBH
aXRUZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2NhbF9wbHVzX3dv
cmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dv
cmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJy
b3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlw
bGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMo
KQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRj
aCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKLSAgICAgICAg
c2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAg
ICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAg
ICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAg
IHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogCi0gICAgZGVmIHRl
c3RfY3JlYXRlX3BhdGNoX25vdF9zcXVhc2hlZChzZWxmKToKKyAgICBkZWYgdGVzdF9jcmVhdGVf
cGF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5n
X2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9
RmFsc2UpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQx
JywgcGF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX2dpdF9jb21taXQoc2VsZik6
CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKQEAgLTkzNiwyNiArOTYxLDE4IEBA
IGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCi0gICAgZGVmIHRlc3Rf
Y3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfbm9fc3F1YXNoKHNlbGYpOgotICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0
ZV9wYXRjaChzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCB3
aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdub3JlcyBsb2Nh
bCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNvbW1pdHMgdGhl
bS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGNoID09ICIiKQotCi0gICAgZGVmIHRlc3Rf
Y3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfc3F1YXNoKHNlbGYpOgorICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAgICAg
ICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9w
YXRjaChzcXVhc2g9VHJ1ZSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0
Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDEnLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3N5bmNlZF9zcXVh
c2goc2VsZik6CisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zeW5jZWQoc2VsZik6CiAg
ICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcs
ICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gsIHNxdWFzaD1U
cnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9w
YXRjaCwgZ2l0X2NvbW1pdD0iKiIpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfYmluYXJ5X3BhdGNo
KHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGdpdCBiaW5hcnkgcGF0Y2ggYW5kIGNoZWNrIHRo
ZSBjb250ZW50cy4KQEAgLTk4NiwyNiArMTAwMyw5IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6
CiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19sb2NhbF9wbHVzX3dvcmtpbmdfY29weShzZWxm
KToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFu
Z2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRf
cGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2Vk
X2ZpbGVzKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21t
aXRzKHNlbGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcykKLQotICAgIGRl
ZiB0ZXN0X2NoYW5nZWRfZmlsZXNfc3F1YXNoZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuX29uZV9s
b2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZpbGVzID0g
c2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgn
dGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2Vk
X2ZpbGVzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4g
ZmlsZXMpCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zcXVhc2hlZChzZWxmKToK
LSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2Vz
KCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9RmFsc2UpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAKICAgICBk
ZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKQEAgLTEwMjIsMjYgKzEwMjIsMTggQEAgY2xhc3MgR2l0VGVzdChT
Q01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4g
ZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZp
bGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21taXRz
X25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAg
ICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxzZSkKLSAgICAgICAgIyBG
SVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBjcmVhdGVfcGF0Y2gvY2hh
bmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCi0gICAgICAgICMgYnV0IGNvbW1pdF93
aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGZp
bGVzKSA9PSAwKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9j
b21taXRzX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxl
X2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkK
ICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkK
LSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAg
ZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVz
dF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3Rf
ZmlsZV9jb21taXQxJyBpbiBmaWxlcykKIAotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90
X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3lu
Y2VkKHNlbGYpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYics
ICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0
cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3Bh
dGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9m
aWxlcywgc3F1YXNoPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9y
LCBzY20uY2hhbmdlZF9maWxlcywgZ2l0X2NvbW1pdD0iKiIpCiAKICAgICBkZWYgdGVzdF9jaGFu
Z2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jaGFuZ2VkX2ZpbGVz
KCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9y
aWV0dmVsZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0
dmVsZC5weQppbmRleCBjMGQ2MTE5NTlhMTg3NWY4M2UyYTExNjBmOGNiZGUwMWQ4YzVmMjA5Li41
ZTM0ODEzODA2ZmQ1NGI0MjhlN2E0YjkxYTYxZjEyMjAwNGExYzUzIDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5CkBAIC03Myw3
ICs3Myw3IEBAIGNsYXNzIFJpZXR2ZWxkKG9iamVjdCk6CiAKICAgICAgICAgIyBVc2UgUmVhbE1h
aW4gaW5zdGVhZCBvZiBjYWxsaW5nIHVwbG9hZCBmcm9tIHRoZSBjb21tYW5kbGluZSBzbyB0aGF0
CiAgICAgICAgICMgd2UgY2FuIHBhc3MgaW4gdGhlIGRpZmYgb3Vyc2VsdmVzLiBPdGhlcndpc2Us
IHVwbG9hZCB3aWxsIGp1c3QgdXNlCi0gICAgICAgICMgZ2l0IGRpZmYgZm9yIGdpdCBjaGVja291
dHMsIHdoaWNoIGRvZXNuJ3QgcmVzcGVjdCAtLXNxdWFzaCBhbmQgLS1naXQtY29tbWl0LgorICAg
ICAgICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vzbid0IHJlc3BlY3Qg
LS1naXQtY29tbWl0LgogICAgICAgICBpc3N1ZSwgcGF0Y2hzZXQgPSB1cGxvYWQuUmVhbE1haW4o
YXJnc1sxOl0sIGRhdGE9ZGlmZikKIAogICAgICAgICAjIFJlc2V0IGxvZ2dpbmcgbGV2ZWwgdG8g
dGhlIG9yaWdpbmFsIHZhbHVlLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9vcHRwYXJzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL29wdHBhcnNlci5weQppbmRleCBiYjQ3ODhhNTVkYjY4ZmJjNzEwNDg0OTk2M2U4OWIyNmJj
NDNkNTg1Li4zN2M5MjY1MmIxZWI5NTkyY2QwNWFmNzMyZWZlYTg3MTgxZmFmOGJjIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQpAQCAtMTQ3
LDggKzE0Nyw3IEBAIGNsYXNzIENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAg
ICAgICAgICAgZ2l0X2NvbW1pdD1Ob25lLAogICAgICAgICAgICAgICAgICBpc192ZXJib3NlPUZh
bHNlLAogICAgICAgICAgICAgICAgICBtaW5fY29uZmlkZW5jZT0xLAotICAgICAgICAgICAgICAg
ICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCi0gICAgICAgICAgICAgICAgIHNxdWFzaD1GYWxzZSk6
CisgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9ImVtYWNzIik6CiAgICAgICAgIGlmIGZp
bHRlcl9ydWxlcyBpcyBOb25lOgogICAgICAgICAgICAgZmlsdGVyX3J1bGVzID0gW10KIApAQCAt
MTY3LDcgKzE2Niw2IEBAIGNsYXNzIENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAg
ICAgc2VsZi5pc192ZXJib3NlID0gaXNfdmVyYm9zZQogICAgICAgICBzZWxmLm1pbl9jb25maWRl
bmNlID0gbWluX2NvbmZpZGVuY2UKICAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gb3V0cHV0
X2Zvcm1hdAotICAgICAgICBzZWxmLnNxdWFzaCA9IHNxdWFzaAogCiAgICAgIyBVc2VmdWwgZm9y
IHVuaXQgdGVzdGluZy4KICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKQEAgLTE4Miw4ICsx
ODAsNiBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5vdXRwdXRfZm9ybWF0ICE9IG90aGVyLm91dHB1
dF9mb3JtYXQ6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5zcXVh
c2ggIT0gb3RoZXIuc3F1YXNoOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAg
cmV0dXJuIFRydWUKIApAQCAtMjE4LDggKzIxNCw2IEBAIGNsYXNzIEFyZ3VtZW50UHJpbnRlcihv
YmplY3QpOgogICAgICAgICAgICAgZmxhZ3NbJ2ZpbHRlciddID0gIiwiLmpvaW4oZmlsdGVyX3J1
bGVzKQogICAgICAgICBpZiBvcHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBmbGFnc1sn
Z2l0LWNvbW1pdCddID0gb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIGlmIG9wdGlvbnMuc3F1
YXNoOgotICAgICAgICAgICAgZmxhZ3NbJ3NxdWFzaCddID0gb3B0aW9ucy5zcXVhc2gKIAogICAg
ICAgICBmbGFnX3N0cmluZyA9ICcnCiAgICAgICAgICMgQWxwaGFiZXRpemluZyBsZXRzIHVzIHVu
aXQgdGVzdCB0aGlzIG1ldGhvZC4KQEAgLTMwOSw4ICszMDMsMTAgQEAgY2xhc3MgQXJndW1lbnRQ
YXJzZXIob2JqZWN0KToKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZmlsdGVy
LXJ1bGVzIiwgbWV0YXZhcj0iUlVMRVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSJmaWx0ZXJfdmFsdWUiLCBoZWxwPWZpbHRlcl9oZWxwKQogCi0gICAgICAgIGdpdF9jb21taXRf
aGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhlIGdpdmVuIGdpdCBjb21taXQuICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJ2NvbW1pdF9pZC4uJyB0byBjaGVjayBhbGwg
Y2hhbmdlcyBhZnRlciBjb21tbWl0X2lkIikKKyAgICAgICAgZ2l0X2NvbW1pdF9oZWxwID0gKCJj
aGVjayBhbGwgY2hhbmdlcyBpbiB0aGUgZ2l2ZW4gY29tbWl0LiAiCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIg
Y29tbW1pdF9pZCwgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yICcqJyB0byBjaGVj
ayBhbGwgY2hhbmdlcyBpbiB0aGUgbG9jYWwgYnJhbmNoIGluY2x1ZGluZyAiCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAibG9jYWwgY29tbWl0cyBhbmQgc3RhZ2VkL3Vuc3RhZ2VzIHdvcmtp
bmcgY29weSBjaGFuZ2VzLiIpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZyIsICItLWdp
dC1kaWZmIiwgIi0tZ2l0LWNvbW1pdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2
YXI9IkNPTU1JVCIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPWdpdF9jb21taXRfaGVscCwpCiAK
QEAgLTMzMCwxNCArMzI2LDYgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVzdD0ib3V0cHV0X2Zvcm1hdCIsIGRlZmF1bHQ9ZGVmYXVs
dF9vdXRwdXRfZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPW91dHB1dF9m
b3JtYXRfaGVscCkKIAotICAgICAgICBzcXVhc2hfaGVscCA9ICgiQWxsIGRpZmZzIGZyb20gdGhl
IHJlbW90ZSBicmFuY2ggYXJlIGNoZWNrZWQuIgotICAgICAgICAgICAgICAgICAgICAgICAiSWYg
ZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlw
bGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLXMiLCAiLS1zcXVhc2gi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBoZWxwPXNxdWFzaF9oZWxwKQot
Ci0gICAgICAgIHNxdWFzaF9oZWxwID0gKCJPbmx5IHdvcmtpbmcgY29weSBkaWZmcyBhcmUgY2hl
Y2tlZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICJJZiBleGNsdWRlZCwgcHJvbXB0cyB3aGV0
aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBjb21taXRzLiIpCi0gICAgICAg
IHBhcnNlci5hZGRfb3B0aW9uKCItLW5vLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBk
ZXN0PSJzcXVhc2giLCBoZWxwPXNxdWFzaF9oZWxwKQotCiAgICAgICAgIHZlcmJvc2VfaGVscCA9
ICJlbmFibGUgdmVyYm9zZSBsb2dnaW5nLiIKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi12
IiwgIi0tdmVyYm9zZSIsIGRlc3Q9ImlzX3ZlcmJvc2UiLCBkZWZhdWx0PUZhbHNlLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPXZlcmJvc2VfaGVs
cCkKQEAgLTQ1OCw4ICs0NDYsNyBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmplY3QpOgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRfY29tbWl0PWdpdF9jb21taXQs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzX3ZlcmJvc2U9aXNfdmVy
Ym9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluX2NvbmZpZGVu
Y2U9bWluX2NvbmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG91dHB1dF9mb3JtYXQ9b3V0cHV0X2Zvcm1hdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3F1YXNoPW9wdGlvbnMuc3F1YXNoKQorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PW91dHB1dF9mb3JtYXQpCiAKICAgICAgICAg
cmV0dXJuIChwYXRocywgb3B0aW9ucykKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CmluZGV4IGJhYjMwY2FmYzU1YmFlOGMwZTcwMTJjMjkz
MDY5Nzc0OTIzYmEzZmQuLmE0MmI2OWRlNThkOTk0MzIzNjExYjE4YjRiZDBkNTM5YjE1MmVjOTMg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNl
cy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMu
cHkKQEAgLTY3LDYgKzY3LDYgQEAgY2xhc3MgV2ViS2l0Q2hlY2tvdXQob2JqZWN0KToKICAgICAg
ICAgIiIiUmV0dXJuIHRoZSBjaGVja291dCByb290IGFzIGFuIGFic29sdXRlIHBhdGguIiIiCiAg
ICAgICAgIHJldHVybiBzZWxmLl9zY20uY2hlY2tvdXRfcm9vdAogCi0gICAgZGVmIGNyZWF0ZV9w
YXRjaChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgotICAgICAgICByZXR1cm4gc2VsZi5fc2Nt
LmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBzcXVhc2gpCisgICAgZGVmIGNyZWF0ZV9wYXRjaChz
ZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVfcGF0Y2go
Z2l0X2NvbW1pdCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IGEyODNkYTlkYzJlZDhlMTBmYzBlMGMyOGQ0
MjZlYzY3ODhlOGY4NGUuLjcwNzI0YTY5NDAyOTM3MWQyNjhiZDZkYjgxMzAyNjI0YzE3ZmE2ZTYg
MTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9k
b3dubG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvZG93bmxvYWQucHkKQEAgLTk0LDcgKzk0LDcgQEAgSWYgYSBidWcgaWQgaXMgcHJvdmlkZWQs
IG9yIG9uZSBjYW4gYmUgZm91bmQgaW4gdGhlIENoYW5nZUxvZyBsYW5kIHdpbGwgdXBkYXRlIHQK
IAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAg
ICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJidWdfaWQiOiAoYXJncyBhbmQgYXJnc1swXSkg
b3IgdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29t
bWl0LCBvcHRpb25zLnNxdWFzaCksCisgICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5kIGFy
Z3NbMF0pIG9yIHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMu
Z2l0X2NvbW1pdCksCiAgICAgICAgIH0KIAogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRleCBjZjcxNWI5OGIyZWNhM2Ni
NzZlZWJhNDFkMzg4ZTJjZmE3OTgzNDEzLi4xMmQ5OWM2ZTM4NmQ2MmM5MDczYTFjMjAzZDI2ZDc1
ZTc4MTk5Y2EwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTUzLDcgKzUzLDYgQEAgY2xhc3MgQ29tbWl0TWVzc2Fn
ZUZvckN1cnJlbnREaWZmKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKIAogICAgIGRlZiBf
X2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKLSAgICAgICAgICAgIHN0ZXBzLk9w
dGlvbnMuc3F1YXNoLAogICAgICAgICAgICAgc3RlcHMuT3B0aW9ucy5naXRfY29tbWl0LAogICAg
ICAgICBdCiAgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kLl9faW5pdF9fKHNlbGYs
IG9wdGlvbnM9b3B0aW9ucykKQEAgLTYxLDcgKzYwLDcgQEAgY2xhc3MgQ29tbWl0TWVzc2FnZUZv
ckN1cnJlbnREaWZmKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICBkZWYgZXhlY3V0
ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAgIyBUaGlzIGNvbW1hbmQgaXMg
YSB1c2VmdWwgdGVzdCB0byBtYWtlIHN1cmUgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
CiAgICAgICAgICMgYWx3YXlzIHJldHVybnMgdGhlIHJpZ2h0IHZhbHVlIHJlZ2FyZGxlc3Mgb2Yg
dGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAgIHByaW50ICIlcyIgJSB0b29s
LmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2Nv
bW1pdCwgb3B0aW9ucy5zcXVhc2gpLm1lc3NhZ2UoKQorICAgICAgICBwcmludCAiJXMiICUgdG9v
bC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9j
b21taXQpLm1lc3NhZ2UoKQogCiAKIGNsYXNzIENsZWFuUGVuZGluZ0NvbW1pdChBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CkBAIC0xNTMsNyArMTUyLDcgQEAgY2xhc3MgQWJzdHJhY3RQYXRj
aFVwbG9hZGluZ0NvbW1hbmQoQWJzdHJhY3RTZXF1ZW5jZWRDb21tYW5kKToKICAgICAgICAgIyBQ
ZXJmZXIgYSBidWcgaWQgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IG92ZXIgYSBidWcgdXJsIGluIHRo
ZSBkaWZmIChpLmUuIENoYW5nZUxvZ3MpLgogICAgICAgICBidWdfaWQgPSBhcmdzIGFuZCBhcmdz
WzBdCiAgICAgICAgIGlmIG5vdCBidWdfaWQ6Ci0gICAgICAgICAgICBidWdfaWQgPSB0b29sLmNo
ZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlv
bnMuc3F1YXNoKQorICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1Z19pZF9m
b3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICByZXR1cm4gYnVnX2lk
CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CkBA
IC00MjAsMTEgKzQxOSwxMSBAQCBjbGFzcyBDcmVhdGVCdWcoQWJzdHJhY3REZWNsYXJhdGl2ZUNv
bW1hbmQpOgogICAgICAgICBpZiBvcHRpb25zLnByb21wdDoKICAgICAgICAgICAgIChidWdfdGl0
bGUsIGNvbW1lbnRfdGV4dCkgPSBzZWxmLnByb21wdF9mb3JfYnVnX3RpdGxlX2FuZF9jb21tZW50
KCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVj
a291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQs
IG9wdGlvbnMuc3F1YXNoKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSB0b29sLmNoZWNr
b3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCkK
ICAgICAgICAgICAgIGJ1Z190aXRsZSA9IGNvbW1pdF9tZXNzYWdlLmRlc2NyaXB0aW9uKGxzdHJp
cD1UcnVlLCBzdHJpcF91cmw9VHJ1ZSkKICAgICAgICAgICAgIGNvbW1lbnRfdGV4dCA9IGNvbW1p
dF9tZXNzYWdlLmJvZHkobHN0cmlwPVRydWUpCiAKLSAgICAgICAgZGlmZiA9IHRvb2wuc2NtKCku
Y3JlYXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpCisgICAgICAg
IGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQpCiAgICAg
ICAgIGJ1Z19pZCA9IHRvb2wuYnVncy5jcmVhdGVfYnVnKGJ1Z190aXRsZSwgY29tbWVudF90ZXh0
LCBvcHRpb25zLmNvbXBvbmVudCwgZGlmZiwgIlBhdGNoIiwgY2M9b3B0aW9ucy5jYywgbWFya19m
b3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3LCBtYXJrX2Zvcl9jb21taXRfcXVldWU9b3B0aW9ucy5y
ZXF1ZXN0X2NvbW1pdCkKIAogICAgIGRlZiBwcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVu
dChzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9t
b2NrdG9vbC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5w
eQppbmRleCAyZjE5MmQ5N2ZmZTE2MWM5ZjUyYmFiNzMzOWZhMmNiZDUyZjQ3MjY3Li4yYjYzNWE5
ODY2Y2QxZjFiNTAzMTFkM2RhMWU4Yzc2MWMzZDdlODQ1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CkBAIC0zNzgsNyArMzc4LDcgQEAgY2xhc3Mg
TW9ja1NDTShNb2NrKToKICAgICAgICAgIyB3aWxsIGFjdHVhbGx5IGJlIHRoZSByb290LiAgU2lu
Y2UgZ2V0Y3dkKCkgaXMgd3JvbmcsIHVzZSBhIGdsb2JhbGx5IGZha2Ugcm9vdCBmb3Igbm93Lgog
ICAgICAgICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSBzZWxmLmZha2VfY2hlY2tvdXRfcm9vdAogCi0g
ICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBj
cmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIHJldHVybiAiUGF0Y2gxIgog
CiAgICAgZGVmIGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJndW1lbnRzKHNlbGYsIGFyZ3Mp
OgpAQCAtNDE4LDEyICs0MTgsMTIgQEAgY2xhc3MgTW9ja0NoZWNrb3V0KG9iamVjdCk6CiAgICAg
ZGVmIGJ1Z19pZF9mb3JfcmV2aXNpb24oc2VsZiwgc3ZuX3JldmlzaW9uKToKICAgICAgICAgcmV0
dXJuIDEyMzQ1CiAKLSAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0
LCBzcXVhc2gpOgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQp
OgogICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRoaW5nIG1vcmUgaW50ZXJlc3Rp
bmcgaGVyZS4gIFRoZSBwcm9ibGVtIGlzCiAgICAgICAgICMgdGhhdCBMYW5kRGlmZiB3aWxsIHRy
eSB0byBhY3R1YWxseSByZWFkIHRoZSBwYXRjaCBmcm9tIGRpc2shCiAgICAgICAgIHJldHVybiBb
XQogCi0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29t
bWl0LCBzcXVhc2gpOgorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2Vs
ZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gTW9jaygpCiAgICAgICAg
IGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UgPSBsYW1iZGE6IlRoaXMgaXMgYSBmYWtlIGNvbW1pdCBt
ZXNzYWdlIHRoYXQgaXMgYXQgbGVhc3QgNTAgY2hhcmFjdGVycy4iCiAgICAgICAgIHJldHVybiBj
b21taXRfbWVzc2FnZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKaW5kZXggYWJhZmU2Mzk5OGYyMDFmOWQ2MDEyNGQ2
ZTIwNGMyNTkxOTNkMGU1Ni4uYWRmNjJkNmQ0MzYzMDg0OWMzNmZiMGU1MTMwOWNiOTE5NDBmMGIw
MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fi
c3RyYWN0c3RlcC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvYWJzdHJhY3RzdGVwLnB5CkBAIC01Myw4ICs1Myw4IEBAIGNsYXNzIEFic3RyYWN0U3RlcChv
YmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fcG9ydAogCiAgICAgX3dlbGxfa25vd25fa2V5
cyA9IHsKLSAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20oKS5jcmVh
dGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCks
Ci0gICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wuY2hlY2tvdXQo
KS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0
aW9ucy5zcXVhc2gpLAorICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLnNj
bSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLAorICAgICAgICAiY2hh
bmdlbG9ncyI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hh
bmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLAogICAgIH0KIAogICAgIGRlZiBjYWNo
ZWRfbG9va3VwKHNlbGYsIHN0YXRlLCBrZXksIHByb21pc2U9Tm9uZSk6CkBAIC03MCw4ICs3MCw2
IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgICAgICByZXR1cm4gWwogICAgICAg
ICAgICAgIyBXZSBuZWVkIHRoZXNlIG9wdGlvbnMgaGVyZSBiZWNhdXNlIGNhY2hlZF9sb29rdXAg
dXNlcyB0aGVtLiAgOigKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAg
ICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAg
ICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdp
dGhsb2NhbGNvbW1pdC5weQppbmRleCBkNmIwMjZkZTI1ODIxZTM0OTZhYjhlOGQyYmE0NjExODUx
MTU2Nzg4Li4zZGNkOGQ5MzFhMWYzNjViYjMzZWZhNmUzZThlOGJmNWIwYmRjMWEzIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdp
dGhsb2NhbGNvbW1pdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQpAQCAtMzksNSArMzksNSBAQCBjbGFz
cyBBcHBseVBhdGNoV2l0aExvY2FsQ29tbWl0KEFwcGx5UGF0Y2gpOgogICAgIGRlZiBydW4oc2Vs
Ziwgc3RhdGUpOgogICAgICAgICBBcHBseVBhdGNoLnJ1bihzZWxmLCBzdGF0ZSkKICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQ6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
Z2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCisgICAgICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
Z2l0X2NvbW1pdD1Ob25lKQogICAgICAgICAgICAgc2VsZi5fdG9vbC5zY20oKS5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpIG9yIHN0YXRlWyJwYXRj
aCJdLm5hbWUoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jaGVja3N0eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NoZWNrc3R5bGUucHkKaW5kZXggOTNlNjIxNTMxNDRmZjdhZDVhNzdkMzcxYmVjNzIx
MjM3NjcwNWJiZC4uYWYzODIxNDQwYTk1ZWM5Yzg1MDg2MGYxMjJiN2YzNTU4MWZiYTI3MyAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5
bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNr
c3R5bGUucHkKQEAgLTQwLDggKzQwLDYgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0ZXAp
OgogICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUsCiAgICAgICAgICAgICBPcHRp
b25zLmNoZWNrX3N0eWxlLAogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAg
ICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAg
ICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBAIC01MywxMCArNTEsNiBAQCBj
bGFzcyBDaGVja1N0eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
Z2l0X2NvbW1pdDoKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21taXQiKQogICAg
ICAgICAgICAgYXJncy5hcHBlbmQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQotICAgICAgICBp
ZiBzZWxmLl90b29sLnNjbSgpLnNob3VsZF9zcXVhc2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpOgot
ICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tc3F1YXNoIikKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLXNxdWFzaCIpCiAKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiY2hlY2std2Via2l0LXN0eWxlIiwgYXJncykKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxl
X3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2No
ZWNrc3R5bGVfdW5pdHRlc3QucHkKaW5kZXggYTIzZWExYjNjNWQ0NmYyZWEzYjM4ZTQ2MmYzYjkx
Yzk2NTJiMzhkMS4uOTlmMzAwZjcyM2RjMzg5Yzc3Y2JhNjU3YjZjODE5MDQ5MmFlYzdiZiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5
bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHkKQEAgLTM1LDEyICszNSw0IEBAIGZyb20gd2Via2l0
cHkudG9vbC5zdGVwcy5jaGVja3N0eWxlIGltcG9ydCBDaGVja1N0eWxlCiAKIAogY2xhc3MgQ2hl
Y2tTdHlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3Nob3VsZF9zcXVh
c2hfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiInNob3VsZF9zcXVhc2ggY2FuIHRocm93IGFuIGVy
cm9yLiBUaGF0IGVycm9yIHNob3VsZCBub3QgYmUgZWF0ZW4gYnkgQ2hlY2tTdHlsZS4iIiIKLSAg
ICAgICAgZGVmIHNob3VsZF9zcXVhc2goc3F1YXNoKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlw
dEVycm9yKG1lc3NhZ2U9IkR1bW15IGVycm9yIikKLQotICAgICAgICB0b29sID0gTW9ja1Rvb2wo
KQotICAgICAgICB0b29sLl9zY20uc2hvdWxkX3NxdWFzaCA9IHNob3VsZF9zcXVhc2gKLSAgICAg
ICAgc3RlcCA9IENoZWNrU3R5bGUodG9vbCwgTW9jaygpKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTY3JpcHRFcnJvciwgc3RlcC5ydW4sIFtdKQorICAgIHBhc3MKZGlmZiAtLWdpdCBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5CmluZGV4IDdiZjhiOGFh
Mjc2NjEwNDkwNmMyNmExZDkzNzdjZDMxNWY4YzVhNzguLjIxNmU4YzNiN2VmMTFlOTUxMzA0ODA2
NjI0ZGMwZWU5OTU0Mzk4ZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9jb21taXQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2NvbW1pdC5weQpAQCAtMzUsMTMgKzM1LDEwIEBAIGNsYXNzIENvbW1pdChB
YnN0cmFjdFN0ZXApOgogICAgIGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBBYnN0
cmFjdFN0ZXAub3B0aW9ucygpICsgWwogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAot
ICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFz
aCwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6Ci0gICAgICAgIGNvbW1p
dF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKQor
ICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVz
c2FnZV9mb3JfdGhpc19jb21taXQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBp
ZiBsZW4oY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKSA8IDUwOgogICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCJBdHRlbXB0ZWQgdG8gY29tbWl0IHdpdGggYSBjb21taXQgbWVzc2FnZSBzaG9y
dGVyIHRoYW4gNTAgY2hhcmFjdGVycy4gIEVpdGhlciB5b3VyIHBhdGNoIGlzIG1pc3NpbmcgYSBD
aGFuZ2VMb2cgb3Igd2Via2l0LXBhdGNoIG1heSBoYXZlIGEgYnVnLiIpCi0gICAgICAgIHN0YXRl
WyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNzYWdlKGNv
bW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwKLSAgICAgICAgICAgIGdpdF9jb21taXQ9c2VsZi5fb3B0
aW9ucy5naXRfY29tbWl0LCBzcXVhc2g9c2VsZi5fb3B0aW9ucy5zcXVhc2gpCisgICAgICAgIHN0
YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNzYWdl
KGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwgZ2l0X2NvbW1pdD1zZWxmLl9vcHRpb25zLmdpdF9j
b21taXQpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvb3B0aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9v
cHRpb25zLnB5CmluZGV4IDE4NmQyOTI4OWI5MjA2YjZjOTA1ZmMxMDZlY2U4OTk0N2QyYjJmMGMu
LmUzZDExYjgyZTllYTk3OWFlMGNkNmI2MDdhMTAxZmIxMDRlOTMyNmQgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CkBAIC00Mywx
MCArNDMsOCBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgZW1haWwgPSBtYWtlX29wdGlv
bigiLS1lbWFpbCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJlbWFpbCIs
IGhlbHA9IkVtYWlsIGFkZHJlc3MgdG8gdXNlIGluIENoYW5nZUxvZ3MuIikKICAgICBmYW5jeV9y
ZXZpZXcgPSBtYWtlX29wdGlvbigiLS1mYW5jeS1yZXZpZXciLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZXN0PSJmYW5jeV9yZXZpZXciLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSIoRXhwZXJpbWVudGFs
KSBVcGxvYWQgdGhlIHBhdGNoIHRvIFJpZXR2ZWxkIGNvZGUgcmV2aWV3IHRvb2wuIikKICAgICBm
b3JjZV9jbGVhbiA9IG1ha2Vfb3B0aW9uKCItLWZvcmNlLWNsZWFuIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVzdD0iZm9yY2VfY2xlYW4iLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJDbGVhbiB3b3Jr
aW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyAocmVtb3ZlcyBsb2NhbCBjaGFu
Z2VzIGFuZCBjb21taXRzKSIpCi0jIEZJWE1FOiBNYWtlIGNvbW1pdCByYW5nZXMgdHJlYXQgZWFj
aCBjb21taXQgc2VwYXJhdGVseSBpbnN0ZWFkIG9mIHNxdWFzaGluZyB0aGVtIGludG8gb25lLgot
ICAgIGdpdF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1naXQtY29tbWl0IiwgYWN0aW9uPSJzdG9y
ZSIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPSJMb2NhbCBnaXQgY29tbWl0IHRvIHVwbG9hZC9s
YW5kLiBJZiBhIHJhbmdlLCB0aGUgY29tbWl0cyBhcmUgc3F1YXNoZWQgaW50byBvbmUuIikKKyAg
ICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24oIi1nIiwgIi0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0i
c3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD0iT3BlcmF0ZSBvbiBhIGxvY2FsIGNvbW1p
dC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMgYXJlIHNxdWFzaGVkIGludG8gb25lLiBJZiAnKics
IG9wZXJhdGUgb24gYWxsIGNoYW5nZXMgaW4gdGhpcyBicmFuY2ggYXMgYSBzaW5nbGUgY29tbWl0
LCBpbmNsdWRpbmcgbG9jYWwgY29tbWl0cyBhbmQgc3RhZ2VkL3Vuc3RhZ2VkIHdvcmtpbmcgY29w
eSBjaGFuZ2VzLiIpCiAgICAgbG9jYWxfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tbG9jYWwtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1G
YWxzZSwgaGVscD0iTWFrZSBhIGxvY2FsIGNvbW1pdCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIikK
LSAgICBub19zcXVhc2ggPSBtYWtlX29wdGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0iRG9uJ3Qgc3F1YXNoIGxvY2FsIGNvbW1pdHMg
aW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5KS4iKQogICAgIG5vbl9pbnRlcmFjdGl2
ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21w
dCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0
Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29sZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNv
bGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZyB0aGlzIG9uZS4iKQogICAgIG9wZW5fYnVn
ID0gbWFrZV9vcHRpb24oIi0tb3Blbi1idWciLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJv
cGVuX2J1ZyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik9wZW5zIHRoZSBhc3NvY2lhdGVkIGJ1ZyBp
biBhIGJyb3dzZXIuIikKQEAgLTU2LDYgKzU0LDUgQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgog
ICAgIHJlcXVlc3RfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tcmVxdWVzdC1jb21taXQiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBkZXN0PSJyZXF1ZXN0X2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhl
bHA9Ik1hcmsgdGhlIHBhdGNoIGFzIG5lZWRpbmcgYXV0by1jb21taXQgYWZ0ZXIgcmV2aWV3LiIp
CiAgICAgcmV2aWV3ID0gbWFrZV9vcHRpb24oIi0tbm8tcmV2aWV3IiwgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsIGRlc3Q9InJldmlldyIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG8gbm90IG1hcmsgdGhl
IHBhdGNoIGZvciByZXZpZXcuIikKICAgICByZXZpZXdlciA9IG1ha2Vfb3B0aW9uKCItciIsICIt
LXJldmlld2VyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2Vy
IiwgaGVscD0iVXBkYXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIp
Ci0gICAgc3F1YXNoID0gbWFrZV9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0iU3F1YXNoIGFsbCBsb2NhbCBjb21taXRzIGlu
dG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICB0ZXN0ID0gbWFrZV9vcHRp
b24oIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InRlc3QiLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJSdW4gcnVuLXdlYmtpdC10ZXN0cyBiZWZvcmUgY29tbWl0dGluZy4iKQogICAg
IHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IHVwZGF0ZSB0aGUgd29y
a2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5kZXggM2E1YzAxM2EwNTNi
OGM4NGI5NzIzMmM1MDExNzlmY2Q1M2NlYTI1NC4uNTcxOThjNDE4NmVhNTNiYWYyMDJlYzU3YWM3
NzRjMDJhNzRiM2YyMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKQEAgLTQyLDggKzQyLDYgQEAg
Y2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgT3B0aW9u
cy5xdWlldCwKICAgICAgICAgICAgIE9wdGlvbnMuZW1haWwsCiAgICAgICAgICAgICBPcHRpb25z
LmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAg
IE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToK
QEAgLTU1LDkgKzUzLDEwIEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1lbWFpbD0lcyIgJSBzZWxmLl9vcHRpb25zLmVtYWlsKQotICAgICAgICBpZiBzZWxmLl90b29s
LnNjbSgpLnNob3VsZF9zcXVhc2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpOgorCisgICAgICAgIGlm
IHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCA9PSAiKiI6CiAgICAgICAgICAgICBhcmdzLmFwcGVu
ZCgiLS1tZXJnZS1iYXNlPSVzIiAlIHNlbGYuX3Rvb2wuc2NtKCkuc3ZuX21lcmdlX2Jhc2UoKSkK
LSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0OgorICAgICAgICBlbGlmIHNlbGYu
X29wdGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21t
aXQ9JXMiICUgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQogCiAgICAgICAgIHRyeToKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hh
bmdlbG9nZm9ycmV2ZXJ0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKaW5kZXggNGQyOTlmYTIxYWQzYWJjNDI5
ZTI4MjM1OTQ0ZWYxMDY1N2MyMzc2NS4uMGU3OGJjMjI5NWQwZDNlNmEwMzNlNjE2MzAxZjNiMGFl
NzRmMmY5NCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKQEAgLTM2
LDcgKzM2LDcgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZ0ZvclJldmVydChBYnN0cmFjdFN0ZXAp
OgogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAgICAgICAjIFRoaXMgY291bGQgbW92ZSB0
byBwcmVwYXJlLUNoYW5nZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgogICAgICAg
ICBzZWxmLl9ydW5fc2NyaXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCi0gICAgICAgIGNoYW5nZWxv
Z19wYXRocyA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9j
b21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxm
Ll90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpCiAg
ICAgICAgIGJ1Z191cmwgPSBzZWxmLl90b29sLmJ1Z3MuYnVnX3VybF9mb3JfYnVnX2lkKHN0YXRl
WyJidWdfaWQiXSkgaWYgc3RhdGVbImJ1Z19pZCJdIGVsc2UgTm9uZQogICAgICAgICBmb3IgY2hh
bmdlbG9nX3BhdGggaW4gY2hhbmdlbG9nX3BhdGhzOgogICAgICAgICAgICAgIyBGSVhNRTogU2Vl
bXMgd2Ugc2hvdWxkIHByZXBhcmUgdGhlIG1lc3NhZ2Ugb3V0c2lkZSBvZiBjaGFuZ2Vsb2dzLnB5
IGFuZCB0aGVuIGp1c3QgcGFzcyBpbgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhy
ZXZpZXdlci5weQppbmRleCA5NzQwMDEzNjg2NmE3NTFhY2ViNjIxYTlmODNkNTU2NzI1NjcyYWE3
Li45YzE3MGI4NzQ1Njg5MzRlNzdkYTJmMmMxZmRlODE0NzM3NDlmMmZmIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dp
dGhyZXZpZXdlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weQpAQCAtNDAsOCArNDAsNiBAQCBjbGFz
cyBVcGRhdGVDaGFuZ2VMb2dzV2l0aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIHJl
dHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWwogICAgICAgICAgICAgT3B0aW9ucy5naXRf
Y29tbWl0LAogICAgICAgICAgICAgT3B0aW9ucy5yZXZpZXdlciwKLSAgICAgICAgICAgIE9wdGlv
bnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAog
ICAgIGRlZiBfZ3Vlc3NfcmV2aWV3ZXJfZnJvbV9idWcoc2VsZiwgYnVnX2lkKToKQEAgLTcwLDUg
KzY4LDUgQEAgY2xhc3MgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcihBYnN0cmFjdFN0ZXAp
OgogICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgb3MuY2hkaXIoc2VsZi5fdG9vbC5zY20o
KS5jaGVja291dF9yb290KQotICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4gc2VsZi5fdG9v
bC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0
LCBzZWxmLl9vcHRpb25zLnNxdWFzaCk6CisgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBz
ZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdp
dF9jb21taXQpOgogICAgICAgICAgICAgQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5zZXRfcmV2
aWV3ZXIocmV2aWV3ZXIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CmluZGV4IDY2ZWU1YjdmYzE5OTk0
NTM3MmQ0NWQzYTgzODY4ZDQxNDVkMGIzNWYuLjQ2NzZjZWU2YTFkZjE4NTMxMmIzYWM2YWIzZjA0
Y2ZhNzg3MTYwZDkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CkBAIC00MSw4ICs0MSw2IEBAIGNs
YXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgb3B0aW9ucyhjbHMp
OgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAgICAg
IE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAg
ICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgICMgRklYTUU6IFRoaXMg
c2hvdWxkIHByb2JhYmx5IG1vdmUgb250byBDaGFuZ2VMb2dFbnRyeQpAQCAtNjMsNyArNjEsNyBA
QCBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICMgRklYTUU6
IFdlIHNob3VsZCBmaWd1cmUgb3V0IGhvdyB0byBoYW5kbGUgdGhlIGN1cnJlbnQgd29ya2luZwog
ICAgICAgICAjICAgICAgICBkaXJlY3RvcnkgaXNzdWUgbW9yZSBnbG9iYWxseS4KICAgICAgICAg
b3MuY2hkaXIoc2VsZi5fdG9vbC5zY20oKS5jaGVja291dF9yb290KQotICAgICAgICBmb3IgY2hh
bmdlbG9nX3BhdGggaW4gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCk6CisgICAgICAg
IGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hh
bmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpOgogICAgICAgICAgICAgY2hhbmdlbG9n
X2VudHJ5ID0gQ2hhbmdlTG9nKGNoYW5nZWxvZ19wYXRoKS5sYXRlc3RfZW50cnkoKQogICAgICAg
ICAgICAgaWYgc2VsZi5faGFzX3ZhbGlkX3Jldmlld2VyKGNoYW5nZWxvZ19lbnRyeSk6CiAgICAg
ICAgICAgICAgICAgY29udGludWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57042</attachid>
            <date>2010-05-25 13:53:14 -0700</date>
            <delta_ts>2010-05-28 12:34:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100525135313.patch</filename>
            <type>text/plain</type>
            <size>57296</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBhZDE1OTU1NjA1NmU4YjU5NWNjYWEwMzBkMjg3NzMxNDU5YTZmZDIzLi45M2M5ZGE0
NzkyMDM3Yzc0NmUzZTRjZGU0ZDk0ZWE4NDliODBmOGFiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLiBTZXR0aW5nIGdpdCBjb25maWcg
d2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlIGJ5cGFzc2VzIHRoZSBwcm9tcHQuCisKKyAgICAgICAg
KiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY21fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3JpZXR2ZWxkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
b3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNl
cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTA1LTI0ICBBbnRvbmlvIEdvbWVzICA8dG9u
aWtpdG9vQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwgYW5k
IEtlbnQgVGFtdXJhIChmb3IgdGhlIENocm9taXVtIHBhcnQpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2No
ZWNrLXdlYmtpdC1zdHlsZQppbmRleCAxOWQzNzYyNzU1OTI3ZGJlNTI5MmJmNTkxNTk3MDhkOTIx
YWI2ZDI3Li45YTFhZTFlM2JmNGQwMGI0NDg2M2U1ZjNkZTc5NGRmYzEzODhiMmFkIDEwMDc1NQot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtMTE1LDcgKzExNSw3IEBAIGRlZiBt
YWluKCk6CiAgICAgaWYgcGF0aHM6CiAgICAgICAgIGZpbGVfcmVhZGVyLnByb2Nlc3NfcGF0aHMo
cGF0aHMpCiAgICAgZWxzZToKLSAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0Y2go
b3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgcGF0Y2ggPSBjaGVj
a291dC5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBwYXRjaF9jaGVj
a2VyID0gUGF0Y2hSZWFkZXIoZmlsZV9yZWFkZXIpCiAgICAgICAgIHBhdGNoX2NoZWNrZXIuY2hl
Y2socGF0Y2gpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2FwaS5weQppbmRleCBhNWFjOTM5OGU4OGU3NTFmZTg1NDQzNjRiNjljMzYzNWZl
MTBhN2YxLi5jYTI4ZTMyMzMyNTg3MmRjZWMwMWQxM2FkMTY3ZjUyNWJmNzc2ZDIzIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5
CkBAIC04MywxNiArODMsMTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVn
X2lkX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiBzZWxmLmNv
bW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAotICAgIGRlZiBtb2Rp
ZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIG1vZGlm
aWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgICMgU0NNIHJldHVybnMg
cGF0aHMgcmVsYXRpdmUgdG8gc2NtLmNoZWNrb3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChl
c3BlY2lhbGx5IHRob3NlIHVzaW5nIHRoZSBDaGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAj
IGV4cGVjdCBhYnNvbHV0ZSBwYXRocywgc28gdGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBw
YXRocy4KLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdp
dF9jb21taXQsIHNxdWFzaCkKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFu
Z2VkX2ZpbGVzKGdpdF9jb21taXQpCiAgICAgICAgIGFic29sdXRlX3BhdGhzID0gW29zLnBhdGgu
am9pbihzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCwgcGF0aCkgZm9yIHBhdGggaW4gY2hhbmdlZF9m
aWxlc10KICAgICAgICAgcmV0dXJuIFtwYXRoIGZvciBwYXRoIGluIGFic29sdXRlX3BhdGhzIGlm
IHNlbGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQogCi0gICAgZGVmIGNvbW1pdF9tZXNz
YWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgotICAgICAgICBj
aGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCwgc3F1
YXNoKQorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2Nv
bW1pdCk6CisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9n
cyhnaXRfY29tbWl0KQogICAgICAgICBpZiBub3QgbGVuKGNoYW5nZWxvZ19wYXRocyk6CiAgICAg
ICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJGb3VuZCBubyBtb2RpZmllZCBDaGFu
Z2VMb2dzLCBjYW5ub3QgY3JlYXRlIGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiQWxsIGNoYW5nZXMgcmVxdWlyZSBhIENoYW5nZUxvZy4gIFNlZTpc
biIKQEAgLTEwOSw5ICsxMDksOSBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICAj
IEZJWE1FOiBXZSBzaG91bGQgc29ydCBhbmQgbGFiZWwgdGhlIENoYW5nZUxvZyBtZXNzYWdlcyBs
aWtlIGNvbW1pdC1sb2ctZWRpdG9yIGRvZXMuCiAgICAgICAgIHJldHVybiBDb21taXRNZXNzYWdl
KCIiLmpvaW4oY2hhbmdlbG9nX21lc3NhZ2VzKS5zcGxpdGxpbmVzKCkpCiAKLSAgICBkZWYgYnVn
X2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBi
dWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3Ro
aXNfY29tbWl0KGdpdF9jb21taXQsIHNxdWFzaCkubWVzc2FnZSgpKQorICAgICAgICAgICAgcmV0
dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRf
Y29tbWl0KS5tZXNzYWdlKCkpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAg
ICAgICAgIHBhc3MgIyBXZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMzEsNyAr
MTMxLDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAogICAgICAgICAjIFdlIHJldmVydCB0
aGUgQ2hhbmdlTG9ncyBiZWNhdXNlIHJlbW92aW5nIGxpbmVzIGZyb20gYSBDaGFuZ2VMb2cKICAg
ICAgICAgIyBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBDaGFuZ2VMb2dzIGFyZSBhcHBlbmQgb25seS4K
LSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9j
b21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxm
Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBpZiBsZW4oY2hh
bmdlbG9nX3BhdGhzKToKICAgICAgICAgICAgIHNlbGYuX3NjbS5yZXZlcnRfZmlsZXMoY2hhbmdl
bG9nX3BhdGhzKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKaW5kZXggMTQzNjM3OWE4ZDczYjVk
Mjg0OWNlODcxZDI0NTAzMDg1MGYzYTJmNy4uZmRmZDg3OThkZDVjYjk3ZTNlMWM1YTI5NmE2YzA2
MGJiM2MxNmM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQpAQCAtMTE0LDExICsxMTQsMTEg
QEAgY2xhc3MgQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICAjIENoYW5nZUxvZyBpcyBkaWZmaWN1bHQgdG8gbW9jayBhdCBjdXJyZW50LgogICAg
IGRlZiB0ZXN0X2NvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAg
Y2hlY2tvdXQgPSBDaGVja291dChOb25lKQotICAgICAgICBjaGVja291dC5tb2RpZmllZF9jaGFu
Z2Vsb2dzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJDaGFuZ2VMb2cxIiwgIkNoYW5n
ZUxvZzIiXQorICAgICAgICBjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRhIGdp
dF9jb21taXQ6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KICAgICAgICAgb3V0cHV0ID0g
T3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJQYXJzaW5nIENoYW5n
ZUxvZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFuZ2VMb2c6IENoYW5nZUxvZzJcbiIKICAgICAg
ICAgY29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY2hlY2tvdXQu
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0LAotICAgICAgICAgICAga3dhcmdzPXsiZ2l0
X2NvbW1pdCI6IE5vbmUsICJzcXVhc2giOiBGYWxzZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3Rl
ZF9zdGRlcnIpCisgICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZX0sIGV4cGVj
dGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bWl0X21lc3NhZ2UubWVzc2FnZSgpLCBzZWxmLmV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQogCiAK
QEAgLTE2MywxMyArMTYzLDEzIEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6CiAgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAg
c2NtID0gTW9jaygpCiAgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQotICAgICAgICBj
aGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1p
dCwgc3F1YXNoOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkx
KS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVj
a291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNl
KSwgMzY2MjkpCisgICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1p
dCA9IGxhbWJkYSBnaXRfY29tbWl0OiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFu
Z2Vsb2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSks
IDM2NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAgICAg
ICAgc2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgot
ICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsi
ZmlsZTEiLCAiQ2hhbmdlTG9nIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KKyAgICAgICAg
c2NtLmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxlMSIsICJDaGFuZ2VM
b2ciLCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQogICAgICAgICBjaGVja291dCA9IENoZWNr
b3V0KHNjbSkKICAgICAgICAgZXhwZWN0ZWRfY2hhbmdsb2dzID0gWyIvZm9vL2Jhci9DaGFuZ2VM
b2ciLCAiL2Zvby9iYXIvcmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBz
cXVhc2g9RmFsc2UpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpLCBleHBlY3Rl
ZF9jaGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20ucHkKaW5kZXggZWVhNzZiZTYxNWU2NmRhNWJiMWI2NWNiYmRkZDliYWU2
ZTJjNzU3Ni4uMDViNjFhOTY4NDlmZTQ3NDRiYWZkMmRhYjc1ODVjZGM0Zjk3MGVjYiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5w
eQpAQCAtOTgsNiArOTgsNyBAQCBjbGFzcyBTQ006CiAgICAgICAgIHNlbGYuY3dkID0gY3dkCiAg
ICAgICAgIHNlbGYuY2hlY2tvdXRfcm9vdCA9IHNlbGYuZmluZF9jaGVja291dF9yb290KHNlbGYu
Y3dkKQogICAgICAgICBzZWxmLmRyeXJ1biA9IEZhbHNlCisgICAgICAgIHNlbGYuX3VzZXIgPSBV
c2VyKCkKIAogICAgICMgQSB3cmFwcGVyIHVzZWQgYnkgc3ViY2xhc3NlcyB0byBjcmVhdGUgcHJv
Y2Vzc2VzLgogICAgIGRlZiBydW4oc2VsZiwgYXJncywgY3dkPU5vbmUsIGlucHV0PU5vbmUsIGVy
cm9yX2hhbmRsZXI9Tm9uZSwgcmV0dXJuX2V4aXRfY29kZT1GYWxzZSwgcmV0dXJuX3N0ZGVycj1U
cnVlLCBkZWNvZGVfb3V0cHV0PVRydWUpOgpAQCAtMTg5LDcgKzE5MCw3IEBAIGNsYXNzIFNDTToK
ICAgICBkZWYgYWRkKHNlbGYsIHBhdGgpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVz
KHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNoYW5nZWRfZmls
ZXNfZm9yX3JldmlzaW9uKHNlbGYpOgpAQCAtMjA0LDcgKzIwNSw3IEBAIGNsYXNzIFNDTToKICAg
ICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2go
c2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRj
aChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRlZiBjb21taXR0ZXJfZW1h
aWxfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTIyMiwxMCArMjIzLDcgQEAgY2xh
c3MgU0NNOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Igog
Ci0gICAgZGVmIHNob3VsZF9zcXVhc2goc2VsZiwgc3F1YXNoKToKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCi0KLSAgICBkZWYg
Y29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29t
bWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxm
LCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAg
IGRlZiBzdm5fY29tbWl0X2xvZyhzZWxmLCBzdm5fcmV2aXNpb24pOgpAQCAtMzQ3LDcgKzM0NSw3
IEBAIGNsYXNzIFNWTihTQ00pOgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2Qg
cmVsYXRpdmU/CiAgICAgICAgIHNlbGYucnVuKFsic3ZuIiwgImFkZCIsIHBhdGhdKQogCi0gICAg
ZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Cisg
ICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmV0
dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc2VsZi5zdGF0dXNfY29t
bWFuZCgpLCBzZWxmLl9zdGF0dXNfcmVnZXhwKCJBQ0RNUiIpKQogCiAgICAgZGVmIGNoYW5nZWRf
ZmlsZXNfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTM3MCw3ICszNjgsNyBAQCBj
bGFzcyBTVk4oU0NNKToKICAgICAgICAgcmV0dXJuICJzdm4iCiAKICAgICAjIEZJWE1FOiBUaGlz
IG1ldGhvZCBzaG91bGQgYmUgb24gQ2hlY2tvdXQuCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxm
LCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNl
bGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBieXRlIGFycmF5IChz
dHIoKSkgcmVwcmVzZW50aW5nIHRoZSBwYXRjaCBmaWxlLgogICAgICAgICBQYXRjaCBmaWxlcyBh
cmUgZWZmZWN0aXZlbHkgYmluYXJ5IHNpbmNlIHRoZXkgbWF5IGNvbnRhaW4KICAgICAgICAgZmls
ZXMgb2YgbXVsdGlwbGUgZGlmZmVyZW50IGVuY29kaW5ncy4iIiIKQEAgLTQwNiwxMiArNDA0LDgg
QEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5
IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290LgogICAgICAgICBzZWxmLnJ1bihbJ3N2bicsICdy
ZXZlcnQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVh
c2gpOgotICAgICAgICAjIFNWTiBkb2Vzbid0IHN1cHBvcnQgdGhlIGNvbmNlcHQgb2Ygc3F1YXNo
aW5nLgotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5v
bmUpOgotICAgICAgICAjIHNxdWFzaCBhbmQgZ2l0LWNvbW1pdCBhcmUgbm90IHVzZWQgYnkgU1ZO
LgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5v
bmUsIGdpdF9jb21taXQ9Tm9uZSk6CisgICAgICAgICMgZ2l0LWNvbW1pdCBpcyBub3QgdXNlZCBi
eSBTVk4uCiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBz
dHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJz
ZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4s
IG5vIGNvbW1pdC5cbkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKQEAgLTQ5OCwyNCArNDkyLDIxIEBA
IGNsYXNzIEdpdChTQ00pOgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVs
YXRpdmU/CiAgICAgICAgIHNlbGYucnVuKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVm
IF9tZXJnZV9iYXNlKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIF9hc3NlcnRf
c3luY2VkKHNlbGYpOgorICAgICAgICBpZiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxp
c3QnLCAnLS1tYXgtY291bnQ9MScsIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCksICdeSEVBRCddKSk6
CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJOb3QgZnVsbHkgbWVyZ2Vk
L3JlYmFzZWQgdG8gJXMuIFRoaXMgYnJhbmNoIG5lZWRzIHRvIGJlIHN5bmNlZCBmaXJzdC4iICUg
c2VsZi5zdm5fYnJhbmNoX25hbWUoKSkKKworICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxmLCBnaXRf
Y29tbWl0KToKICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKLSAgICAgICAgICAgICMgRklYTUU6IENh
bGxpbmcgY29kZSBzaG91bGQgdHVybiBjb21taXQgcmFuZ2VzIGludG8gYSBsaXN0IG9mIGNvbW1p
dCBJRHMKLSAgICAgICAgICAgICMgYW5kIHRoZW4gdHJlYXQgZWFjaCBjb21taXQgc2VwYXJhdGVs
eS4KICAgICAgICAgICAgIGlmICcuLicgbm90IGluIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAg
ICAgZ2l0X2NvbW1pdCA9IGdpdF9jb21taXQgKyAiXi4uIiArIGdpdF9jb21taXQKICAgICAgICAg
ICAgIHJldHVybiBnaXRfY29tbWl0CiAKLSAgICAgICAgaWYgc2VsZi5zaG91bGRfc3F1YXNoKHNx
dWFzaCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5zdm5fbWVyZ2VfYmFzZSgpCisgICAgICAg
IHNlbGYuX2Fzc2VydF9zeW5jZWQoKQorICAgICAgICByZXR1cm4gc2VsZi5zdm5fbWVyZ2VfYmFz
ZSgpCiAKLSAgICAgICAgIyBGSVhNRTogTm9uLXNxdWFzaCBiZWhhdmlvciBzaG91bGQgbWF0Y2gg
Y29tbWl0X3dpdGhfbWVzc2FnZS4gSXQgcmFpc2VzIGFuIGVycm9yCi0gICAgICAgICMgaWYgdGhl
cmUgYXJlIHdvcmtpbmcgY29weSBjaGFuZ2VzIGFuZCAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaCB3
YXNuJ3QgcGFzc2VkIGluLgotICAgICAgICAjIElmIC0tbm8tc3F1YXNoLCB0aGVuIGl0IHNob3Vs
ZCBwcm9jZWVkIHdpdGggZWFjaCBsb2NhbCBjb21taXQgYXMgYSBzZXBhcmF0ZSBwYXRjaC4KLSAg
ICAgICAgcmV0dXJuICdIRUFEJwotCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2Nv
bW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQn
LCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgIi0tbm8tZXh0LWRp
ZmYiLCAiLS1mdWxsLWluZGV4Iiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gp
XQorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CisgICAgICAg
IHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywg
Jy1DJywgJy1NJywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4Iiwgc2VsZi5fbWVyZ2Vf
YmFzZShnaXRfY29tbWl0KV0KICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0
cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0YXR1c19yZWdleHAoIkFETSIp
KQogCiAgICAgZGVmIF9jaGFuZ2VzX2ZpbGVzX2Zvcl9jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6
CkBAIC01NDQsMTIgKzUzNSwxMiBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgZGlzcGxheV9u
YW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gImdpdCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2go
c2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRj
aChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBhcnJh
eSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2ggZmls
ZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAgICAg
IGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCiAgICAgICAgICMgRklY
TUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290Ci0gICAg
ICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgIi0tbm8tZXh0
LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0
LCBzcXVhc2gpXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVu
KFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAiLS1uby1leHQtZGlmZiIsICItLWZ1bGwtaW5k
ZXgiLCAiLU0iLCBzZWxmLl9tZXJnZV9iYXNlKGdpdF9jb21taXQpXSwgZGVjb2RlX291dHB1dD1G
YWxzZSkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBnaXRfY29tbWl0X2Zyb21fc3ZuX3Jl
dmlzaW9uKGNscywgcmV2aXNpb24pOgpAQCAtNTg0LDYzICs1NzUsMzggQEAgY2xhc3MgR2l0KFND
TSk6CiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgc2Vs
Zi5ydW4oWydnaXQnLCAnY2hlY2tvdXQnLCAnSEVBRCddICsgZmlsZV9wYXRocykKIAotICAgIGRl
ZiBfZ2V0X3NxdWFzaF9lcnJvcl9tZXNzYWdlKHNlbGYsIG51bV9sb2NhbF9jb21taXRzKToKLSAg
ICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIHNlbGYud29ya2luZ19kaXJl
Y3RvcnlfaXNfY2xlYW4oKSBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzIgotICAgICAg
ICByZXR1cm4gKCIiIlRoZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIERvIG9uZSBvZiB0aGUg
Zm9sbG93aW5nOgotICAgICAgICAgICAgMSkgVXNlIC0tc3F1YXNoIG9yIC0tbm8tc3F1YXNoCi0g
ICAgICAgICAgICAyKSBnaXQgY29uZmlnIHdlYmtpdC1wYXRjaC5zcXVhc2ggdHJ1ZS9mYWxzZQot
ICAgICAgICAgICAgIiIiICUgKG51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9t
ZXNzYWdlKSkKLQotICAgIGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAg
IGlmIHNxdWFzaCBpcyBOb25lOgotICAgICAgICAgICAgY29uZmlnX3NxdWFzaCA9IEdpdC5yZWFk
X2dpdF9jb25maWcoJ3dlYmtpdC1wYXRjaC5zcXVhc2gnKQotICAgICAgICAgICAgaWYgKGNvbmZp
Z19zcXVhc2ggYW5kIGNvbmZpZ19zcXVhc2ggaXMgbm90ICIiKToKLSAgICAgICAgICAgICAgICBz
cXVhc2ggPSBjb25maWdfc3F1YXNoLmxvd2VyKCkgPT0gInRydWUiCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICMgT25seSByYWlzZSBhbiBlcnJvciBpZiB0aGVyZSBhcmUgYWN0
dWFsbHkgbXVsdGlwbGUgY29tbWl0cyB0byBzcXVhc2guCi0gICAgICAgICAgICAgICAgbnVtX2xv
Y2FsX2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCi0gICAgICAgICAgICAgICAg
aWYgbnVtX2xvY2FsX2NvbW1pdHMgPiAxIG9yIChudW1fbG9jYWxfY29tbWl0cyA+IDAgYW5kIG5v
dCBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCkpOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPXNlbGYuX2dldF9zcXVhc2hfZXJyb3JfbWVzc2Fn
ZShudW1fbG9jYWxfY29tbWl0cykpCisgICAgZGVmIF9jb21taXRfd2FybmluZyhzZWxmLCBudW1f
bG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pOgorICAgICAgICB3b3Jr
aW5nX2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4g
ZWxzZSAiIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcyIKKyAgICAgICAgcmV0dXJuICIiIlRoZXJl
IGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIEV2ZXJ5dGhpbmcgd2lsbCBiZSBjb21taXR0ZWQgYXMg
YSBzaW5nbGUgY29tbWl0LiBUbyBhdm9pZCB0aGlzIHByb21wdCwgc2V0ICJnaXQgY29uZmlnIHdl
YmtpdC1wYXRjaC5zcXVhc2ggdHJ1ZSIuIENvbnRpbnVlPyIiIiAlIChudW1fbG9jYWxfY29tbWl0
cywgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSkKIAotICAgICAgICBpZiBzcXVhc2ggYW5kIHNl
bGYuX3N2bl9icmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMoKToKLSAgICAgICAgICAgIHJhaXNlIFNj
cmlwdEVycm9yKG1lc3NhZ2U9IkNhbm5vdCB1c2UgLS1zcXVhc2ggd2hlbiBIRUFEIGlzIG5vdCBm
dWxseSBtZXJnZWQvcmViYXNlZCB0byAlcy4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxm
LnN2bl9icmFuY2hfbmFtZSgpKQorICAgIGRlZiBjb21taXRfc2hvdWxkX2Fsd2F5c19zcXVhc2go
c2VsZik6CisgICAgICAgIHNxdWFzaCA9IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dlYmtpdC1wYXRj
aC5zcXVhc2gnKQorICAgICAgICByZXR1cm4gc3F1YXNoIGFuZCBzcXVhc2gubG93ZXIoKSA9PSAi
dHJ1ZSIKIAotICAgICAgICByZXR1cm4gc3F1YXNoCisgICAgZGVmIGNvbW1pdF93aXRoX21lc3Nh
Z2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKKyAgICAg
ICAgIyBVc2VybmFtZSBpcyBpZ25vcmVkIGR1cmluZyBHaXQgY29tbWl0cy4KIAotICAgIGRlZiBf
c3ZuX2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihy
dW5fY29tbWFuZChbJ2dpdCcsICdyZXYtbGlzdCcsICctLW1heC1jb3VudD0xJywgc2VsZi5zdm5f
YnJhbmNoX25hbWUoKSwgJ15IRUFEJ10pKQorICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9pc19j
bGVhbiA9IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKQogCi0gICAgZGVmIGNvbW1p
dF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgVXNlcm5hbWUgaXMgaWdub3JlZCBkdXJpbmcg
R2l0IGNvbW1pdHMuCiAgICAgICAgIGlmIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAjIE5lZWQg
d29ya2luZyBkaXJlY3RvcnkgY2hhbmdlcyB0byBiZSBjb21taXR0ZWQgc28gd2UgY2FuIGNoZWNr
b3V0IHRoZSBtZXJnZSBicmFuY2guCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi53b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbigpOgorICAgICAgICAgICAgaWYgbm90IHdvcmtpbmdfZGlyZWN0b3J5
X2lzX2NsZWFuOgogICAgICAgICAgICAgICAgICMgRklYTUU6IHdlYmtpdC1wYXRjaCBsYW5kIHdp
bGwgbW9kaWZ5IHRoZSBDaGFuZ2VMb2dzIHRvIGNvcnJlY3QgdGhlIHJldmlld2VyLgogICAgICAg
ICAgICAgICAgICMgVGhhdCB3aWxsIG1vZGlmeSB0aGUgd29ya2luZy1jb3B5IGFuZCBjYXVzZSB1
cyB0byBoaXQgdGhpcyBlcnJvci4KLSAgICAgICAgICAgICAgICAjIFRoZSBDaGFuZ2VMb2cgbW9k
aWZpY2F0aW9uIGNvdWxkIGJlIG1hZGUgdG8gbW9kaWZ5IHRoZSBleGlzdGluZyBsb2NhbCBjb21t
aXQ/CisgICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIG1vZGlmaWNhdGlvbiBjb3VsZCBi
ZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwgY29tbWl0LgogICAgICAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IldvcmtpbmcgY29weSBpcyBtb2RpZmllZC4g
Q2Fubm90IGNvbW1pdCBpbmRpdmlkdWFsIGdpdF9jb21taXRzLiIpCiAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fY29tbWl0X29uX2JyYW5jaChtZXNzYWdlLCBnaXRfY29tbWl0KQogCi0gICAgICAg
IHNxdWFzaCA9IHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpCi0gICAgICAgIGlmIHNxdWFzaDoK
LSAgICAgICAgICAgIHNlbGYucnVuKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYuc3Zu
X2JyYW5jaF9uYW1lKCldKQotICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21l
c3NhZ2UobWVzc2FnZSkKLSAgICAgICAgZWxpZiBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9p
c19jbGVhbigpOgotICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSk6
Ci0gICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5nIGNvcHkgY2hhbmdlcy4g
QXNzdW1lIHRoZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSAgICAgICAgICAgICAgICBzZWxmLmNv
bW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZWxpZiBzcXVh
c2ggaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRpZG4ndCBleHBsaWNpdGx5
IHNheSB0byBzcXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxvY2FsIGNvbW1pdHMKLSAg
ICAgICAgICAgICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4gTm90IGNsZWFyIHdoYXQg
dGhlIHVzZXIgd2FudHMuCi0gICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2Fn
ZT0iIiJUaGVyZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMuIERv
IG9uZSBvZiB0aGUgZm9sbG93aW5nOgotMSkgQ29tbWl0L3JldmVydCB3b3JraW5nIGNvcHkgY2hh
bmdlcy4KLTIpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAotMykgZ2l0IGNvbmZpZyB3ZWJr
aXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKLSIiIikKLQotICAgICAgICAjIEZJWE1FOiBUaGlz
IHdpbGwgY29tbWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGggaXQncyBvd24gbWVzc2Fn
ZS4gV2Ugc2hvdWxkIHJlc3RydWN0dXJlCi0gICAgICAgICMgc28gdGhhdCBlYWNoIGxvY2FsIGNv
bW1pdCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJhc2VkIG9mZiBpdCdzIENo
YW5nZUxvZ3MuCisgICAgICAgIGlmIG5vdCBzZWxmLmNvbW1pdF9zaG91bGRfYWx3YXlzX3NxdWFz
aCgpOgorICAgICAgICAgICAgIyBPbmx5IHdhcm4gaWYgdGhlcmUgYXJlIGFjdHVhbGx5IG11bHRp
cGxlIGNvbW1pdHMgdG8gc3F1YXNoLgorICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBs
ZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCisgICAgICAgICAgICBpZiAoKG51bV9sb2NhbF9jb21t
aXRzID4gMSBvciAobnVtX2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgd29ya2luZ19kaXJlY3Rv
cnlfaXNfY2xlYW4pKSBhbmQKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi5fdXNlci5jb25maXJt
KHNlbGYuX2NvbW1pdF93YXJuaW5nKG51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9y
eV9pc19jbGVhbikpKToKKyAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdl
PSJEaWQgbm90IGNvbW1pdCIpCisKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N5bmNlZCgpCisgICAg
ICAgIHNlbGYucnVuKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYuc3ZuX2JyYW5jaF9u
YW1lKCldKQorICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdl
KQogICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkKIAog
ICAgIGRlZiBfY29tbWl0X29uX2JyYW5jaChzZWxmLCBtZXNzYWdlLCBnaXRfY29tbWl0KToKZGlm
ZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3Nj
bV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbV91bml0dGVzdC5weQppbmRleCA4ZWVhNGQ4YTg1MTU1ZDQyMjdlOWU3MGE3YWM1MDRl
OThiYTVkMWNiLi4xZTQ0YTJkYTQ3NzhhYzllODdiYmI1ZjIzYmM2YTU1NmE0NDU1NTA4IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21f
dW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hl
Y2tvdXQvc2NtX3VuaXR0ZXN0LnB5CkBAIC00Nyw2ICs0Nyw4IEBAIGZyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNDTSwgU1ZOLCBDaGVj
a291dE5lCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29t
bWl0dGVyICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQgIyBGSVhNRTogVGhpcyBzaG91
bGQgbm90IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBp
bXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKKyMgRklYTUU6IE1vY2tV
c2VyIHNob3VsZCBiZSBtb3ZlZCB0byBjb21tb24gc28gd2UgZG9uJ3QgaGF2ZSB0byBpbXBvcnQg
ZnJvbSB3ZWJraXRweS50b29sIGhlcmUuCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1w
b3J0IE1vY2tVc2VyCiAKICMgRXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdG8gd3JpdGUgdGVzdHMg
d2hpY2ggd29yayBmb3IgYm90aCBzY21zLiAobGlrZSB1cGRhdGVfd2Via2l0LCBjaGFuZ2VkX2Zp
bGVzLCBldGMuKQogIyBQZXJoYXBzIHRocm91Z2ggc29tZSBTQ01UZXN0IGJhc2UtY2xhc3Mgd2hp
Y2ggYm90aCBTVk5UZXN0IGFuZCBHaXRUZXN0IGluaGVyaXQgZnJvbS4KQEAgLTg2LDYgKzg4LDEy
IEBAIGRlZiBfZ2l0X2RpZmYoKmFyZ3MpOgogICAgIHJldHVybiBfbWFrZV9kaWZmKCJnaXQiLCAq
YXJncykKIAogCitjbGFzcyBNb2NrRmFsc2VVc2VyKG9iamVjdCk6CisKKyAgICBkZWYgY29uZmly
bShzZWxmLCBtZXNzYWdlPU5vbmUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworCiAjIEV4aXN0
cyB0byBzaGFyZSBzdm4gcmVwb3NpdG9yeSBjcmVhdGlvbiBjb2RlIGJldHdlZW4gdGhlIGdpdCBh
bmQgc3ZuIHRlc3RzCiBjbGFzcyBTVk5UZXN0UmVwb3NpdG9yeToKICAgICBAY2xhc3NtZXRob2QK
QEAgLTc2NiwyNCArNzc0LDE0IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYg
dGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVf
YXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgc2VsZi5z
Y20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAg
ICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVy
IHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2
aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzZWxm
LnNjbS5kcnlydW4gPSBUcnVlCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0
X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQotICAgICAgICBzZWxmLnNjbS5jb21t
aXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAg
ICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhl
ciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3Jl
dmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCiAKLSAgICBkZWYgX29u
ZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKLSAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBj
b250ZW50JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9j
b21taXQxJ10pCi0gICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgi
YW5vdGhlciB0ZXN0IGNvbW1pdCIpCi0KLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
J3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAg
cnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCi0KICAgICBk
ZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAg
ICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0
ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9m
aWxlX2NvbW1pdDEnXSkKQEAgLTc5NCwyMSArNzkyLDE4IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVz
dCk6CiAgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywg
Jy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21t
aXRfd2l0aF9tZXNzYWdlX3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9
IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFz
aD1UcnVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9t
X2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQotICAgICAgICBzdm5fbG9nID0gcnVuX2Nv
bW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2
bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDEnLCBzdm5fbG9nKSkKLQotICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6Cisg
ICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVf
YXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAg
ICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKICAgICAg
ICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29t
bWl0IikKIAorICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFu
Z2VzKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKKyAgICAgICAgd3Jp
dGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVz
dCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmls
ZV9jb21taXQyJ10pCisKKyAgICBkZWYgX3R3b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3Bh
dGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKICAgICAg
ICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCiAgICAg
ICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiKQpAQCAtODE5LDYgKzgxNCwyMyBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgog
ICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVz
dCBjb21taXQiKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKKyAgICBkZWYg
dGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzY20uX3VzZXIgPSBN
b2NrVXNlcigpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2Uo
InlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNj
bS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKKyAgICAg
ICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0x
JywgJy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisKKyAgICBkZWYgdGVzdF9jb21t
aXRfd2l0aF9tZXNzYWdlX2RlbnlfY29uZmlybShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2Vy
ID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9y
LCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorCiAgICAg
ZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgogICAgICAgICBz
ZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKQEAgLTg0Miw1MSArODU0LDgwIEBAIGNsYXNzIEdp
dFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1p
dF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2Vs
Zi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vf
b25seV9sb2NhbF9jb21taXQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQo
KQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorICAgICAgICBjb21taXRfdGV4dCA9
IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAg
c3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywg
Jy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19hbmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAg
ICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9w
YXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICd3b3JraW5nIGNvcHkgY2hhbmdlJykKICAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCBb
ImFub3RoZXIgdGVzdCBjb21taXQiXSkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja1VzZXIoKQor
CisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIg
dGVzdCBjb21taXQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lv
bl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQorICAgICAgICBzdm5fbG9nID0g
cnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3Nl
J10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19hbmRfd29ya2luZ19jb3B5X2RlbnlfY29uZmlybShz
ZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICB3cml0ZV9p
bnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnd29ya2luZyBjb3B5IGNoYW5n
ZScpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3Bh
dGgpCisgICAgICAgIHNjbS5fdXNlciA9IE1vY2tGYWxzZVVzZXIoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVy
IHRlc3QgY29tbWl0IikKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2Nv
bW1pdF9hbmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0
MScsICd3b3JraW5nIGNvcHkgY2hhbmdlJykKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCBbImFub3RoZXIgdGVzdCBjb21taXQi
LCAnZ2l0X2NvbW1pdD0iSEVBRF4iJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlw
dEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBn
aXRfY29tbWl0PSJIRUFEXiIpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211
bHRpcGxlX2xvY2FsX2NvbW1pdHNfbm9fc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbW1p
dF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19hbHdheXNfc3F1YXNoKHNlbGYp
OgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGNvbW1pdF90ZXh0
ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1
YXNoPUZhbHNlKQorICAgICAgICBzY20uY29tbWl0X3Nob3VsZF9hbHdheXNfc3F1YXNoID0gbGFt
YmRhOiBUcnVlCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2Uo
InlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20u
c3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAKICAgICAg
ICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0x
JywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQotCi0gICAgICAgIHN2bl9sb2cg
PSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MicsICctLXZlcmJv
c2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRp
cGxlX2xvY2FsX2NvbW1pdHNfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKICAgICAgICAgc2VsZi5fdHdv
X2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdp
dF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQorICAgICAgICBz
Y20uX3VzZXIgPSBNb2NrVXNlcigpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93
aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAn
NicpCiAKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cn
LCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKICAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKLSAgICBk
ZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX25vdF9zeW5jZWRfc3F1YXNoKHNlbGYpOgorICAg
IGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19kZW55
X2NvbmZpcm0oc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAg
ICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAg
ICAgc2NtLl91c2VyID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21t
aXQiKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9ub3Rfc3luY2VkKHNlbGYp
OgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFu
Y2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAg
ICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2Fn
ZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2NtLl91c2Vy
ID0gTW9ja1VzZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IikKKworICAgIGRlZiB0
ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5bmNlZF9kZW55X2NvbmZpcm0oc2VsZik6Cisg
ICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcs
ICd0cnVua34zJ10pCisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAg
c2NtLl91c2VyID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQi
KQogCiAgICAgZGVmIHRlc3RfcmV2ZXJzZV9kaWZmKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFy
ZWRfdGVzdF9yZXZlcnNlX2RpZmYoKQpAQCAtOTAwLDI2ICs5NDEsMTYgQEAgY2xhc3MgR2l0VGVz
dChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbG9jYWxfcGx1c193b3JraW5n
X2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5n
X2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBz
Y20uY3JlYXRlX3BhdGNoKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xv
Y2FsX2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAg
ICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0K
LSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfc3F1YXNoZWQoc2VsZik6Ci0gICAgICAgIHNlbGYu
X29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBh
dGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQorICAgICAgICBwYXRj
aCA9IHNjbS5jcmVhdGVfcGF0Y2goKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9ub3Rfc3F1YXNoZWQoc2VsZik6CisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNo
KHNlbGYpOgogICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5
X2NoYW5nZXMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goc3F1YXNoPUZhbHNl
KQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQogICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RmFsc2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBh
dGNoKSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9naXRfY29tbWl0KHNlbGYpOgogICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCkBAIC05MzYsMjYgKzk2NywxOCBAQCBjbGFz
cyBHaXRUZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
dGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2NyZWF0
ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAg
c2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0
Y2goc3F1YXNoPUZhbHNlKQotICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBz
cXVhc2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29t
bWl0cywKLSAgICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCi0g
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXRjaCA9PSAiIikKLQotICAgIGRlZiB0ZXN0X2NyZWF0
ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVz
dF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKICAgICAgICAgc2Vs
Zi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2go
c3F1YXNoPVRydWUpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywg
cGF0Y2gpKQogCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zeW5jZWRfc3F1YXNoKHNl
bGYpOgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3luY2VkKHNlbGYpOgogICAgICAg
ICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1
bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY3JlYXRlX3BhdGNoLCBzcXVhc2g9VHJ1ZSkK
KyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gs
IGdpdF9jb21taXQ9IioiKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2JpbmFyeV9wYXRjaChzZWxm
KToKICAgICAgICAgIyBDcmVhdGUgYSBnaXQgYmluYXJ5IHBhdGNoIGFuZCBjaGVjayB0aGUgY29u
dGVudHMuCkBAIC05ODYsMjYgKzEwMDksOSBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAg
IGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbG9jYWxfcGx1c193b3JraW5nX2NvcHkoc2VsZik6CiAg
ICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygp
CiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxl
cykKLQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhz
ZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMpCi0KLSAgICBkZWYgdGVz
dF9jaGFuZ2VkX2ZpbGVzX3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5j
aGFuZ2VkX2ZpbGVzKHNxdWFzaD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3Rf
ZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxl
cygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVz
KQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3F1YXNoZWQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0g
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPUZhbHNlKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQogCiAgICAgZGVmIHRl
c3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCkBAIC0xMDIyLDI2ICsxMDI4LDE4IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVz
dCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVz
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykK
IAotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19z
cXVhc2goc2VsZik6Ci0gICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAgICAgICAg
c2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAg
ZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6
IEl0J3Mgd2VpcmQgdGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRf
ZmlsZXMgaWdub3JlcyBsb2NhbCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9t
ZXNzYWdlIGNvbW1pdHMgdGhlbS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlcykg
PT0gMCkKLQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0
c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2Nh
bF9jb21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAg
ICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAg
ICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPVRydWUpCisgICAgICAgIGZpbGVz
ID0gc2NtLmNoYW5nZWRfZmlsZXMoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmls
ZV9jb21taXQyJyBpbiBmaWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVf
Y29tbWl0MScgaW4gZmlsZXMpCiAKLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zeW5j
ZWRfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3N5bmNlZChz
ZWxmKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXkt
YnJhbmNoJywgJ3RydW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQog
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMs
IHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2Nt
LmNoYW5nZWRfZmlsZXMsIGdpdF9jb21taXQ9IioiKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9m
aWxlcyhzZWxmKToKICAgICAgICAgc2VsZi5fc2hhcmVkX3Rlc3RfY2hhbmdlZF9maWxlcygpCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZl
bGQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQu
cHkKaW5kZXggYzBkNjExOTU5YTE4NzVmODNlMmExMTYwZjhjYmRlMDFkOGM1ZjIwOS4uNWUzNDgx
MzgwNmZkNTRiNDI4ZTdhNGI5MWE2MWYxMjIwMDRhMWM1MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5CisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weQpAQCAtNzMsNyArNzMs
NyBAQCBjbGFzcyBSaWV0dmVsZChvYmplY3QpOgogCiAgICAgICAgICMgVXNlIFJlYWxNYWluIGlu
c3RlYWQgb2YgY2FsbGluZyB1cGxvYWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgc28gdGhhdAogICAg
ICAgICAjIHdlIGNhbiBwYXNzIGluIHRoZSBkaWZmIG91cnNlbHZlcy4gT3RoZXJ3aXNlLCB1cGxv
YWQgd2lsbCBqdXN0IHVzZQotICAgICAgICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3
aGljaCBkb2Vzbid0IHJlc3BlY3QgLS1zcXVhc2ggYW5kIC0tZ2l0LWNvbW1pdC4KKyAgICAgICAg
IyBnaXQgZGlmZiBmb3IgZ2l0IGNoZWNrb3V0cywgd2hpY2ggZG9lc24ndCByZXNwZWN0IC0tZ2l0
LWNvbW1pdC4KICAgICAgICAgaXNzdWUsIHBhdGNoc2V0ID0gdXBsb2FkLlJlYWxNYWluKGFyZ3Nb
MTpdLCBkYXRhPWRpZmYpCiAKICAgICAgICAgIyBSZXNldCBsb2dnaW5nIGxldmVsIHRvIHRoZSBv
cmlnaW5hbCB2YWx1ZS4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9v
cHRwYXJzZXIucHkKaW5kZXggYmI0Nzg4YTU1ZGI2OGZiYzcxMDQ4NDk5NjNlODliMjZiYzQzZDU4
NS4uMzdjOTI2NTJiMWViOTU5MmNkMDVhZjczMmVmZWE4NzE4MWZhZjhiYyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKQEAgLTE0Nyw4ICsx
NDcsNyBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgIGdpdF9jb21taXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1GYWxzZSwK
ICAgICAgICAgICAgICAgICAgbWluX2NvbmZpZGVuY2U9MSwKLSAgICAgICAgICAgICAgICAgb3V0
cHV0X2Zvcm1hdD0iZW1hY3MiLAotICAgICAgICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgorICAg
ICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIpOgogICAgICAgICBpZiBmaWx0ZXJf
cnVsZXMgaXMgTm9uZToKICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IFtdCiAKQEAgLTE2Nyw3
ICsxNjYsNiBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgIHNl
bGYuaXNfdmVyYm9zZSA9IGlzX3ZlcmJvc2UKICAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9
IG1pbl9jb25maWRlbmNlCiAgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3Jt
YXQKLSAgICAgICAgc2VsZi5zcXVhc2ggPSBzcXVhc2gKIAogICAgICMgVXNlZnVsIGZvciB1bml0
IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CkBAIC0xODIsOCArMTgwLDYg
QEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCiAgICAgICAgIGlmIHNlbGYub3V0cHV0X2Zvcm1hdCAhPSBvdGhlci5vdXRwdXRfZm9y
bWF0OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuc3F1YXNoICE9
IG90aGVyLnNxdWFzaDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVy
biBUcnVlCiAKQEAgLTIxOCw4ICsyMTQsNiBAQCBjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0
KToKICAgICAgICAgICAgIGZsYWdzWydmaWx0ZXInXSA9ICIsIi5qb2luKGZpbHRlcl9ydWxlcykK
ICAgICAgICAgaWYgb3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAgICAgZmxhZ3NbJ2dpdC1j
b21taXQnXSA9IG9wdGlvbnMuZ2l0X2NvbW1pdAotICAgICAgICBpZiBvcHRpb25zLnNxdWFzaDoK
LSAgICAgICAgICAgIGZsYWdzWydzcXVhc2gnXSA9IG9wdGlvbnMuc3F1YXNoCiAKICAgICAgICAg
ZmxhZ19zdHJpbmcgPSAnJwogICAgICAgICAjIEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRl
c3QgdGhpcyBtZXRob2QuCkBAIC0zMDksOCArMzAzLDEwIEBAIGNsYXNzIEFyZ3VtZW50UGFyc2Vy
KG9iamVjdCk6CiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWZpbHRlci1ydWxl
cyIsIG1ldGF2YXI9IlJVTEVTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0iZmls
dGVyX3ZhbHVlIiwgaGVscD1maWx0ZXJfaGVscCkKIAotICAgICAgICBnaXRfY29tbWl0X2hlbHAg
PSAoImNoZWNrIGFsbCBjaGFuZ2VzIGluIHRoZSBnaXZlbiBnaXQgY29tbWl0LiAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5n
ZXMgYWZ0ZXIgY29tbW1pdF9pZCIpCisgICAgICAgIGdpdF9jb21taXRfaGVscCA9ICgiY2hlY2sg
YWxsIGNoYW5nZXMgaW4gdGhlIGdpdmVuIGNvbW1pdC4gIgorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIlVzZSAnY29tbWl0X2lkLi4nIHRvIGNoZWNrIGFsbCBjaGFuZ2VzIGFmdGVyIGNvbW1t
aXRfaWQsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJvciAnKicgdG8gY2hlY2sgYWxs
IGNoYW5nZXMgaW4gdGhlIGxvY2FsIGJyYW5jaCBpbmNsdWRpbmcgIgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImxvY2FsIGNvbW1pdHMgYW5kIHN0YWdlZC91bnN0YWdlcyB3b3JraW5nIGNv
cHkgY2hhbmdlcy4iKQogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWciLCAiLS1naXQtZGlm
ZiIsICItLWdpdC1jb21taXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhdmFyPSJD
T01NSVQiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD1naXRfY29tbWl0X2hlbHAsKQogCkBAIC0z
MzAsMTQgKzMyNiw2IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9Im91dHB1dF9mb3JtYXQiLCBkZWZhdWx0PWRlZmF1bHRfb3V0
cHV0X2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1vdXRwdXRfZm9ybWF0
X2hlbHApCiAKLSAgICAgICAgc3F1YXNoX2hlbHAgPSAoIkFsbCBkaWZmcyBmcm9tIHRoZSByZW1v
dGUgYnJhbmNoIGFyZSBjaGVja2VkLiIKLSAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1
ZGVkLCBwcm9tcHRzIHdoZXRoZXIgdG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNv
bW1pdHMuIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQotICAg
ICAgICBzcXVhc2hfaGVscCA9ICgiT25seSB3b3JraW5nIGNvcHkgZGlmZnMgYXJlIGNoZWNrZWQu
IgotICAgICAgICAgICAgICAgICAgICAgICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0
byBzcXVhc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWl0cy4iKQotICAgICAgICBwYXJz
ZXIuYWRkX29wdGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0i
c3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQogICAgICAgICB2ZXJib3NlX2hlbHAgPSAiZW5h
YmxlIHZlcmJvc2UgbG9nZ2luZy4iCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdiIsICIt
LXZlcmJvc2UiLCBkZXN0PSJpc192ZXJib3NlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD12ZXJib3NlX2hlbHApCkBA
IC00NTgsOCArNDQ2LDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1naXRfY29tbWl0LAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc192ZXJib3NlPWlzX3ZlcmJvc2Us
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPW1p
bl9jb25maWRlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRw
dXRfZm9ybWF0PW91dHB1dF9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNxdWFzaD1vcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0KQogCiAgICAgICAgIHJldHVy
biAocGF0aHMsIG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
c3R5bGVfcmVmZXJlbmNlcy5weQppbmRleCBiYWIzMGNhZmM1NWJhZThjMGU3MDEyYzI5MzA2OTc3
NDkyM2JhM2ZkLi5hNDJiNjlkZTU4ZDk5NDMyMzYxMWIxOGI0YmQwZDUzOWIxNTJlYzkzIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBA
IC02Nyw2ICs2Nyw2IEBAIGNsYXNzIFdlYktpdENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICIi
IlJldHVybiB0aGUgY2hlY2tvdXQgcm9vdCBhcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgogICAgICAg
ICByZXR1cm4gc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2go
c2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVh
dGVfcGF0Y2goZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwg
Z2l0X2NvbW1pdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9j
b21taXQpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9kb3dubG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9j
b21tYW5kcy9kb3dubG9hZC5weQppbmRleCBhMjgzZGE5ZGMyZWQ4ZTEwZmMwZTBjMjhkNDI2ZWM2
Nzg4ZThmODRlLi43MDcyNGE2OTQwMjkzNzFkMjY4YmQ2ZGI4MTMwMjYyNGMxN2ZhNmU2IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxv
YWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rv
d25sb2FkLnB5CkBAIC05NCw3ICs5NCw3IEBAIElmIGEgYnVnIGlkIGlzIHByb3ZpZGVkLCBvciBv
bmUgY2FuIGJlIGZvdW5kIGluIHRoZSBDaGFuZ2VMb2cgbGFuZCB3aWxsIHVwZGF0ZSB0CiAKICAg
ICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAg
IHJldHVybiB7Ci0gICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRv
b2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwg
b3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAgICAgImJ1Z19pZCI6IChhcmdzIGFuZCBhcmdzWzBd
KSBvciB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9j
b21taXQpLAogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggY2Y3MTViOThiMmVjYTNjYjc2ZWVi
YTQxZDM4OGUyY2ZhNzk4MzQxMy4uMTJkOTljNmUzODZkNjJjOTA3M2ExYzIwM2QyNmQ3NWU3ODE5
OWNhMCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL3VwbG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29t
bWFuZHMvdXBsb2FkLnB5CkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JD
dXJyZW50RGlmZihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0
X18oc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25z
LnNxdWFzaCwKICAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAg
XQogICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRp
b25zPW9wdGlvbnMpCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJy
ZW50RGlmZihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2Vs
Ziwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgICMgVGhpcyBjb21tYW5kIGlzIGEgdXNl
ZnVsIHRlc3QgdG8gbWFrZSBzdXJlIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdAogICAg
ICAgICAjIGFsd2F5cyByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBj
dXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICBwcmludCAiJXMiICUgdG9vbC5jaGVj
a291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQs
IG9wdGlvbnMuc3F1YXNoKS5tZXNzYWdlKCkKKyAgICAgICAgcHJpbnQgIiVzIiAlIHRvb2wuY2hl
Y2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0
KS5tZXNzYWdlKCkKIAogCiBjbGFzcyBDbGVhblBlbmRpbmdDb21taXQoQWJzdHJhY3REZWNsYXJh
dGl2ZUNvbW1hbmQpOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxv
YWRpbmdDb21tYW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgICAgICMgUGVyZmVy
IGEgYnVnIGlkIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlm
ZiAoaS5lLiBDaGFuZ2VMb2dzKS4KICAgICAgICAgYnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQog
ICAgICAgICBpZiBub3QgYnVnX2lkOgotICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291
dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNx
dWFzaCkKKyAgICAgICAgICAgIGJ1Z19pZCA9IHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3Ro
aXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAg
ICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtNDIw
LDExICs0MTksMTEgQEAgY2xhc3MgQ3JlYXRlQnVnKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBj
b21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQo
KS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRp
b25zLnNxdWFzaCkKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgp
LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAg
ICAgICAgICBidWdfdGl0bGUgPSBjb21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1
ZSwgc3RyaXBfdXJsPVRydWUpCiAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjb21taXRfbWVz
c2FnZS5ib2R5KGxzdHJpcD1UcnVlKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0
ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICBkaWZm
ID0gdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBi
dWdfaWQgPSB0b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0
aW9ucy5jb21wb25lbnQsIGRpZmYsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jl
dmlldz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVz
dF9jb21taXQpCiAKICAgICBkZWYgcHJvbXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2Vs
Zik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rv
b2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5k
ZXggMmYxOTJkOTdmZmUxNjFjOWY1MmJhYjczMzlmYTJjYmQ1MmY0NzI2Ny4uMmI2MzVhOTg2NmNk
MWYxYjUwMzExZDNkYTFlOGM3NjFjM2Q3ZTg0NSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAtMzc4LDcgKzM3OCw3IEBAIGNsYXNzIE1vY2tT
Q00oTW9jayk6CiAgICAgICAgICMgd2lsbCBhY3R1YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdl
dGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxseSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAg
ICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5mYWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRl
ZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY3JlYXRl
X3BhdGNoKHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAg
IGRlZiBjb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAg
LTQxOCwxMiArNDE4LDEyIEBAIGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogICAgIGRlZiBi
dWdfaWRfZm9yX3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAx
MjM0NQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1
YXNoKToKKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAg
ICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhl
cmUuICBUaGUgcHJvYmxlbSBpcwogICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8g
YWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2ggZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAot
ICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwg
c3F1YXNoKToKKyAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdp
dF9jb21taXQpOgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IE1vY2soKQogICAgICAgICBjb21t
aXRfbWVzc2FnZS5tZXNzYWdlID0gbGFtYmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2Fn
ZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJhY3RlcnMuIgogICAgICAgICByZXR1cm4gY29tbWl0
X21lc3NhZ2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IGFiYWZlNjM5OThmMjAxZjlkNjAxMjRkNmUyMDRj
MjU5MTkzZDBlNTYuLmFkZjYyZDZkNDM2MzA4NDljMzZmYjBlNTEzMDljYjkxOTQwZjBiMDMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFj
dHN0ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fi
c3RyYWN0c3RlcC5weQpAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKIAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7
Ci0gICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3Bh
dGNoKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAotICAg
ICAgICAiY2hhbmdlbG9ncyI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9k
aWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMu
c3F1YXNoKSwKKyAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20oKS5j
cmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKKyAgICAgICAgImNoYW5nZWxv
Z3MiOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxv
Z3Moc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKICAgICB9CiAKICAgICBkZWYgY2FjaGVkX2xv
b2t1cChzZWxmLCBzdGF0ZSwga2V5LCBwcm9taXNlPU5vbmUpOgpAQCAtNzAsOCArNzAsNiBAQCBj
bGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAg
ICMgV2UgbmVlZCB0aGVzZSBvcHRpb25zIGhlcmUgYmVjYXVzZSBjYWNoZWRfbG9va3VwIHVzZXMg
dGhlbS4gIDooCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBP
cHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBd
CiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9j
YWxjb21taXQucHkKaW5kZXggZDZiMDI2ZGUyNTgyMWUzNDk2YWI4ZThkMmJhNDYxMTg1MTE1Njc4
OC4uM2RjZDhkOTMxYTFmMzY1YmIzM2VmYTZlM2U4ZThiZjViMGJkYzFhMyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9j
YWxjb21taXQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBw
bHlQYXRjaFdpdGhMb2NhbENvbW1pdChBcHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKICAgICAgICAgQXBwbHlQYXRjaC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMubG9jYWxfY29tbWl0OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBz
ZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBz
ZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSBvciBzdGF0ZVsicGF0Y2giXS5u
YW1lKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jaGVja3N0eWxlLnB5CmluZGV4IDkzZTYyMTUzMTQ0ZmY3YWQ1YTc3ZDM3MWJlYzcyMTIzNzY3
MDViYmQuLmFmMzgyMTQ0MGE5NWVjOWM4NTA4NjBmMTIyYjdmMzU1ODFmYmEyNzMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxl
LnB5CkBAIC00MCw4ICs0MCw2IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAg
ICAgICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5j
aGVja19zdHlsZSwKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAg
IE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAg
IF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpAQCAtNTMsMTAgKzUxLDYgQEAgY2xhc3Mg
Q2hlY2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9j
b21taXQ6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0IikKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgaWYgc2Vs
Zi5fdG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLXNxdWFzaCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBhcmdzLmFwcGVuZCgiLS1uby1zcXVhc2giKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHNlbGYuX3J1bl9zY3JpcHQoImNoZWNrLXdlYmtpdC1zdHlsZSIsIGFyZ3MpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0
eWxlX3VuaXR0ZXN0LnB5CmluZGV4IGEyM2VhMWIzYzVkNDZmMmVhM2IzOGU0NjJmM2I5MWM5NjUy
YjM4ZDEuLjk5ZjMwMGY3MjNkYzM4OWM3N2NiYTY1N2I2YzgxOTA0OTJhZWM3YmYgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3Vu
aXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
aGVja3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC0zNSwxMiArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQogCiAKIGNsYXNzIENoZWNrU3R5
bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vy
cm9yKHNlbGYpOgotICAgICAgICAiIiJzaG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4g
VGhhdCBlcnJvciBzaG91bGQgbm90IGJlIGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAg
IGRlZiBzaG91bGRfc3F1YXNoKHNxdWFzaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJv
cihtZXNzYWdlPSJEdW1teSBlcnJvciIpCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAg
ICAgICAgdG9vbC5fc2NtLnNob3VsZF9zcXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0
ZXAgPSBDaGVja1N0eWxlKHRvb2wsIE1vY2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIHN0ZXAucnVuLCBbXSkKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCA3YmY4YjhhYTI3NjYx
MDQ5MDZjMjZhMWQ5Mzc3Y2QzMTVmOGM1YTc4Li4yMTZlOGMzYjdlZjExZTk1MTMwNDgwNjYyNGRj
MGVlOTk1NDM5OGY5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jb21taXQucHkKQEAgLTM1LDEzICszNSwxMCBAQCBjbGFzcyBDb21taXQoQWJzdHJh
Y3RTdGVwKToKICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RT
dGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAg
ICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAg
ICAgICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgotICAgICAgICBjb21taXRfbWVz
c2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21t
aXQoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCkKKyAgICAg
ICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2Vf
Zm9yX3RoaXNfY29tbWl0KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgaWYgbGVu
KGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkgPCA1MDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbigiQXR0ZW1wdGVkIHRvIGNvbW1pdCB3aXRoIGEgY29tbWl0IG1lc3NhZ2Ugc2hvcnRlciB0
aGFuIDUwIGNoYXJhY3RlcnMuICBFaXRoZXIgeW91ciBwYXRjaCBpcyBtaXNzaW5nIGEgQ2hhbmdl
TG9nIG9yIHdlYmtpdC1wYXRjaCBtYXkgaGF2ZSBhIGJ1Zy4iKQotICAgICAgICBzdGF0ZVsiY29t
bWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRf
bWVzc2FnZS5tZXNzYWdlKCksCi0gICAgICAgICAgICBnaXRfY29tbWl0PXNlbGYuX29wdGlvbnMu
Z2l0X2NvbW1pdCwgc3F1YXNoPXNlbGYuX29wdGlvbnMuc3F1YXNoKQorICAgICAgICBzdGF0ZVsi
Y29tbWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21t
aXRfbWVzc2FnZS5tZXNzYWdlKCksIGdpdF9jb21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29w
dGlvbnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9u
cy5weQppbmRleCAxODZkMjkyODliOTIwNmI2YzkwNWZjMTA2ZWNlODk5NDdkMmIyZjBjLi5lM2Qx
MWI4MmU5ZWE5NzlhZTBjZDZiNjA3YTEwMWZiMTA0ZTkzMjZkIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDMsMTAgKzQz
LDggQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0t
ZW1haWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxw
PSJFbWFpbCBhZGRyZXNzIHRvIHVzZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZmFuY3lfcmV2aWV3
ID0gbWFrZV9vcHRpb24oIi0tZmFuY3ktcmV2aWV3IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVz
dD0iZmFuY3lfcmV2aWV3IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iKEV4cGVyaW1lbnRhbCkgVXBs
b2FkIHRoZSBwYXRjaCB0byBSaWV0dmVsZCBjb2RlIHJldmlldyB0b29sLiIpCiAgICAgZm9yY2Vf
Y2xlYW4gPSBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBk
aXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBh
bmQgY29tbWl0cykiKQotIyBGSVhNRTogTWFrZSBjb21taXQgcmFuZ2VzIHRyZWF0IGVhY2ggY29t
bWl0IHNlcGFyYXRlbHkgaW5zdGVhZCBvZiBzcXVhc2hpbmcgdGhlbSBpbnRvIG9uZS4KLSAgICBn
aXRfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBk
ZXN0PSJnaXRfY29tbWl0IiwgaGVscD0iTG9jYWwgZ2l0IGNvbW1pdCB0byB1cGxvYWQvbGFuZC4g
SWYgYSByYW5nZSwgdGhlIGNvbW1pdHMgYXJlIHNxdWFzaGVkIGludG8gb25lLiIpCisgICAgZ2l0
X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItZyIsICItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3Jl
IiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9Ik9wZXJhdGUgb24gYSBsb2NhbCBjb21taXQuIElm
IGEgcmFuZ2UsIHRoZSBjb21taXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4gSWYgJyonLCBvcGVy
YXRlIG9uIGFsbCBjaGFuZ2VzIGluIHRoaXMgYnJhbmNoIGFzIGEgc2luZ2xlIGNvbW1pdCwgaW5j
bHVkaW5nIGxvY2FsIGNvbW1pdHMgYW5kIHN0YWdlZC91bnN0YWdlZCB3b3JraW5nIGNvcHkgY2hh
bmdlcy4iKQogICAgIGxvY2FsX2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWxvY2FsLWNvbW1pdCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2Us
IGhlbHA9Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGllZCBwYXRjaCIpCi0gICAg
bm9fc3F1YXNoID0gbWFrZV9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV9mYWxz
ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9IkRvbid0IHNxdWFzaCBsb2NhbCBjb21taXRzIGludG8g
b25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICBub25faW50ZXJhY3RpdmUgPSBt
YWtlX29wdGlvbigiLS1ub24taW50ZXJhY3RpdmUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0
PSJub25faW50ZXJhY3RpdmUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJOZXZlciBwcm9tcHQgdGhl
IHVzZXIsIGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJsZS4iKQogICAgIG9ic29sZXRlX3BhdGNoZXMg
PSBtYWtlX29wdGlvbigiLS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0
PSJvYnNvbGV0ZV9wYXRjaGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3Qgb2Jzb2xldGUg
b2xkIHBhdGNoZXMgYmVmb3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAgICBvcGVuX2J1ZyA9IG1h
a2Vfb3B0aW9uKCItLW9wZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ib3Blbl9i
dWciLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2NpYXRlZCBidWcgaW4gYSBi
cm93c2VyLiIpCkBAIC01Niw2ICs1NCw1IEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0KToKICAgICBy
ZXF1ZXN0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLXJlcXVlc3QtY29tbWl0IiwgYWN0aW9uPSJz
dG9yZV90cnVlIiwgZGVzdD0icmVxdWVzdF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJN
YXJrIHRoZSBwYXRjaCBhcyBuZWVkaW5nIGF1dG8tY29tbWl0IGFmdGVyIHJldmlldy4iKQogICAg
IHJldmlldyA9IG1ha2Vfb3B0aW9uKCItLW5vLXJldmlldyIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LCBkZXN0PSJyZXZpZXciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBtYXJrIHRoZSBwYXRj
aCBmb3IgcmV2aWV3LiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlvbigiLXIiLCAiLS1yZXZp
ZXdlciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJyZXZpZXdlciIsIGhl
bHA9IlVwZGF0ZSBDaGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBSRVZJRVdFUi4iKQotICAg
IHNxdWFzaCA9IG1ha2Vfb3B0aW9uKCItcyIsICItLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfdHJ1
ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9IlNxdWFzaCBhbGwgbG9jYWwgY29tbWl0cyBpbnRvIG9u
ZSBvbiB1cGxvYWQvbGFuZCAoZ2l0LW9ubHkpLiIpCiAgICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCIt
LXRlc3QiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwg
aGVscD0iUnVuIHJ1bi13ZWJraXQtdGVzdHMgYmVmb3JlIGNvbW1pdHRpbmcuIikKICAgICB1cGRh
dGUgPSBtYWtlX29wdGlvbigiLS1uby11cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVz
dD0idXBkYXRlIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcg
ZGlyZWN0b3J5LiIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CmluZGV4IDNhNWMwMTNhMDUzYjhjODRi
OTcyMzJjNTAxMTc5ZmNkNTNjZWEyNTQuLjU3MTk4YzQxODZlYTUzYmFmMjAyZWM1N2FjNzc0YzAy
YTc0YjNmMjAgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CkBAIC00Miw4ICs0Miw2IEBAIGNsYXNz
IFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucXVp
ZXQsCiAgICAgICAgICAgICBPcHRpb25zLmVtYWlsLAogICAgICAgICAgICAgT3B0aW9ucy5naXRf
Y29tbWl0LAotICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRp
b25zLnNxdWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBAIC01
NSw5ICs1MywxMCBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAg
ICAgICAgICBhcmdzLmFwcGVuZCgiLS1idWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQogICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLmVtYWlsOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZW1h
aWw9JXMiICUgc2VsZi5fb3B0aW9ucy5lbWFpbCkKLSAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20o
KS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKKworICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQgPT0gIioiOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0t
bWVyZ2UtYmFzZT0lcyIgJSBzZWxmLl90b29sLnNjbSgpLnN2bl9tZXJnZV9iYXNlKCkpCi0gICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKKyAgICAgICAgZWxpZiBzZWxmLl9vcHRp
b25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0PSVz
IiAlIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKIAogICAgICAgICB0cnk6CmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9w
cmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CmluZGV4IDRkMjk5ZmEyMWFkM2FiYzQyOWUyODIz
NTk0NGVmMTA2NTdjMjM3NjUuLjBlNzhiYzIyOTVkMGQzZTZhMDMzZTYxNjMwMWYzYjBhZTc0ZjJm
OTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9w
cmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CkBAIC0zNiw3ICsz
Niw3IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2dGb3JSZXZlcnQoQWJzdHJhY3RTdGVwKToKICAg
ICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKICAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJl
cGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4KICAgICAgICAgc2Vs
Zi5fcnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQotICAgICAgICBjaGFuZ2Vsb2dfcGF0
aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0
PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9v
bC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAg
ICBidWdfdXJsID0gc2VsZi5fdG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19pZChzdGF0ZVsiYnVn
X2lkIl0pIGlmIHN0YXRlWyJidWdfaWQiXSBlbHNlIE5vbmUKICAgICAgICAgZm9yIGNoYW5nZWxv
Z19wYXRoIGluIGNoYW5nZWxvZ19wYXRoczoKICAgICAgICAgICAgICMgRklYTUU6IFNlZW1zIHdl
IHNob3VsZCBwcmVwYXJlIHRoZSBtZXNzYWdlIG91dHNpZGUgb2YgY2hhbmdlbG9ncy5weSBhbmQg
dGhlbiBqdXN0IHBhc3MgaW4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3
ZXIucHkKaW5kZXggZWY0YmFhMjUxMjQxM2U1NmRkOWZiOWUxZmY5NzRiNmRiOGYyYmU3NC4uZTQ2
Yjc5MDBjZWQ5Mjg1ZTcxZDY3ODQ5ZjY1ZTJlZjg0NGU2Njg3YiAxMDA2NDQKLS0tIGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2
aWV3ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3Vw
ZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKQEAgLTQwLDggKzQwLDYgQEAgY2xhc3MgVXBk
YXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgogICAgICAgICByZXR1cm4g
QWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1p
dCwKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3ZXIsCi0gICAgICAgICAgICBPcHRpb25zLm5v
X3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBk
ZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnKHNlbGYsIGJ1Z19pZCk6CmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5CmluZGV4IDlmNGQ0NGUwYjZjNWIwOWE2YTRhMzhmNDVmZjBjYmNlZDUzZDViNWMuLmJk
ZjcyOWU0YmZlMmQwNDQzYjU3OTE4OGQ1OTY5MmNjMDY2NjQxZDcgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmll
d2VyLnB5CkBAIC00MSw4ICs0MSw2IEBAIGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RT
dGVwKToKICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVw
Lm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAg
ICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAg
ICAgIF0KIAogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IG1vdmUgb250byBDaGFu
Z2VMb2dFbnRyeQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57363</attachid>
            <date>2010-05-28 12:34:34 -0700</date>
            <delta_ts>2010-06-03 16:37:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100528123432.patch</filename>
            <type>text/plain</type>
            <size>56940</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCA2NjZkN2Y0NmRlOGIyZWZiYjdkNzRmMmZiNGM1ZWEwYzk3NTk5YTgwLi45ZDJjODY1
MzliNjkxMDA1ZWI3ZTlhYjdlZDM5NGJkM2MzYWFkYmU3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLiBTZXR0aW5nIGdpdCBjb25maWcg
d2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlIGJ5cGFzc2VzIHRoZSBwcm9tcHQuCisKKyAgICAgICAg
KiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY21fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3JpZXR2ZWxkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
b3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNl
cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTA1LTI4ICBDaHJpcyBGbGVpemFjaCAgPGNm
bGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCmluZGV4IDE5ZDM3NjI3NTU5MjdkYmU1
MjkyYmY1OTE1OTcwOGQ5MjFhYjZkMjcuLjlhMWFlMWUzYmY0ZDAwYjQ0ODYzZTVmM2RlNzk0ZGZj
MTM4OGIyYWQgMTAwNzU1Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0
eWxlCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCkBAIC0xMTUs
NyArMTE1LDcgQEAgZGVmIG1haW4oKToKICAgICBpZiBwYXRoczoKICAgICAgICAgZmlsZV9yZWFk
ZXIucHJvY2Vzc19wYXRocyhwYXRocykKICAgICBlbHNlOgotICAgICAgICBwYXRjaCA9IGNoZWNr
b3V0LmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAg
ICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQpCiAg
ICAgICAgIHBhdGNoX2NoZWNrZXIgPSBQYXRjaFJlYWRlcihmaWxlX3JlYWRlcikKICAgICAgICAg
cGF0Y2hfY2hlY2tlci5jaGVjayhwYXRjaCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CmluZGV4IGE1YWM5Mzk4ZTg4ZTc1MWZl
ODU0NDM2NGI2OWMzNjM1ZmUxMGE3ZjEuLmNhMjhlMzIzMzI1ODcyZGNlYzAxZDEzYWQxNjdmNTI1
YmY3NzZkMjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2FwaS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9hcGkucHkKQEAgLTgzLDE2ICs4MywxNiBAQCBjbGFzcyBDaGVja291dChvYmpl
Y3QpOgogICAgIGRlZiBidWdfaWRfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuY29tbWl0X2luZm9fZm9yX3JldmlzaW9uKHJldmlzaW9uKS5idWdfaWQo
KQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNo
KToKKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAg
ICAgIyBTQ00gcmV0dXJucyBwYXRocyByZWxhdGl2ZSB0byBzY20uY2hlY2tvdXRfcm9vdAogICAg
ICAgICAjIENhbGxlcnMgKGVzcGVjaWFsbHkgdGhvc2UgdXNpbmcgdGhlIENoYW5nZUxvZyBjbGFz
cykgbWF5CiAgICAgICAgICMgZXhwZWN0IGFic29sdXRlIHBhdGhzLCBzbyB0aGlzIG1ldGhvZCBy
ZXR1cm5zIGFic29sdXRlIHBhdGhzLgotICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2Nt
LmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAgICAgICBjaGFuZ2VkX2ZpbGVz
ID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXMoZ2l0X2NvbW1pdCkKICAgICAgICAgYWJzb2x1dGVf
cGF0aHMgPSBbb3MucGF0aC5qb2luKHNlbGYuX3NjbS5jaGVja291dF9yb290LCBwYXRoKSBmb3Ig
cGF0aCBpbiBjaGFuZ2VkX2ZpbGVzXQogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4g
YWJzb2x1dGVfcGF0aHMgaWYgc2VsZi5faXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCldCiAKLSAg
ICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIHNx
dWFzaCk6Ci0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9n
cyhnaXRfY29tbWl0LCBzcXVhc2gpCisgICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5t
b2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQpCiAgICAgICAgIGlmIG5vdCBsZW4oY2hhbmdl
bG9nX3BhdGhzKToKICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkZvdW5k
IG5vIG1vZGlmaWVkIENoYW5nZUxvZ3MsIGNhbm5vdCBjcmVhdGUgYSBjb21taXQgbWVzc2FnZS5c
biIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBbGwgY2hhbmdlcyByZXF1aXJlIGEg
Q2hhbmdlTG9nLiAgU2VlOlxuIgpAQCAtMTA5LDkgKzEwOSw5IEBAIGNsYXNzIENoZWNrb3V0KG9i
amVjdCk6CiAgICAgICAgICMgRklYTUU6IFdlIHNob3VsZCBzb3J0IGFuZCBsYWJlbCB0aGUgQ2hh
bmdlTG9nIG1lc3NhZ2VzIGxpa2UgY29tbWl0LWxvZy1lZGl0b3IgZG9lcy4KICAgICAgICAgcmV0
dXJuIENvbW1pdE1lc3NhZ2UoIiIuam9pbihjaGFuZ2Vsb2dfbWVzc2FnZXMpLnNwbGl0bGluZXMo
KSkKIAotICAgIGRlZiBidWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIHNx
dWFzaCk6CisgICAgZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6
CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5jb21t
aXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdCwgc3F1YXNoKS5tZXNzYWdlKCkp
CisgICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KGdpdF9jb21taXQpLm1lc3NhZ2UoKSkKICAgICAgICAgZXhjZXB0IFNjcmlw
dEVycm9yLCBlOgogICAgICAgICAgICAgcGFzcyAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxv
Z3MuCiAKQEAgLTEzMSw3ICsxMzEsNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogCiAgICAg
ICAgICMgV2UgcmV2ZXJ0IHRoZSBDaGFuZ2VMb2dzIGJlY2F1c2UgcmVtb3ZpbmcgbGluZXMgZnJv
bSBhIENoYW5nZUxvZwogICAgICAgICAjIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIENoYW5nZUxvZ3Mg
YXJlIGFwcGVuZCBvbmx5LgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVk
X2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIGNoYW5n
ZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpCiAg
ICAgICAgIGlmIGxlbihjaGFuZ2Vsb2dfcGF0aHMpOgogICAgICAgICAgICAgc2VsZi5fc2NtLnJl
dmVydF9maWxlcyhjaGFuZ2Vsb2dfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQppbmRl
eCAxNDM2Mzc5YThkNzNiNWQyODQ5Y2U4NzFkMjQ1MDMwODUwZjNhMmY3Li5mZGZkODc5OGRkNWNi
OTdlM2UxYzVhMjk2YTZjMDYwYmIzYzE2YzkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CkBA
IC0xMTQsMTEgKzExNCwxMSBAQCBjbGFzcyBDb21taXRNZXNzYWdlRm9yVGhpc0NvbW1pdFRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgQ2hhbmdlTG9nIGlzIGRpZmZpY3VsdCB0byBtb2Nr
IGF0IGN1cnJlbnQuCiAgICAgZGVmIHRlc3RfY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
KHNlbGYpOgogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KE5vbmUpCi0gICAgICAgIGNoZWNr
b3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGEgZ2l0X2NvbW1pdCwgc3F1YXNoOiBbIkNo
YW5nZUxvZzEiLCAiQ2hhbmdlTG9nMiJdCisgICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5n
ZWxvZ3MgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxvZzIiXQog
ICAgICAgICBvdXRwdXQgPSBPdXRwdXRDYXB0dXJlKCkKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJy
ID0gIlBhcnNpbmcgQ2hhbmdlTG9nOiBDaGFuZ2VMb2cxXG5QYXJzaW5nIENoYW5nZUxvZzogQ2hh
bmdlTG9nMlxuIgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IG91dHB1dC5hc3NlcnRfb3V0cHV0
cyhzZWxmLCBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQsCi0gICAgICAg
ICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZSwgInNxdWFzaCI6IEZhbHNlfSwgZXhwZWN0
ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKKyAgICAgICAgICAgIGt3YXJncz17ImdpdF9jb21t
aXQiOiBOb25lfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21taXRfbWVzc2FnZS5tZXNzYWdlKCksIHNlbGYuZXhwZWN0ZWRfY29t
bWl0X21lc3NhZ2UpCiAKIApAQCAtMTYzLDEzICsxNjMsMTMgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0
KHNlbGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAgICAgY2hlY2tvdXQgPSBDaGVja291
dChzY20pCi0gICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9
IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnko
X2NoYW5nZWxvZzFlbnRyeTEpLmNvbnRlbnRzKCkuc3BsaXRsaW5lcygpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19pZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9RmFsc2UpLCAzNjYyOSkKKyAgICAgICAgY2hlY2tvdXQuY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRhIGdpdF9jb21taXQ6IENvbW1pdE1lc3NhZ2UoQ2hh
bmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRyeTEpLmNvbnRlbnRzKCkuc3BsaXRsaW5lcygpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0LmJ1Z19pZF9mb3JfdGhpc19jb21taXQo
Z2l0X2NvbW1pdD1Ob25lKSwgMzY2MjkpCiAKICAgICBkZWYgdGVzdF9tb2RpZmllZF9jaGFuZ2Vs
b2dzKHNlbGYpOgogICAgICAgICBzY20gPSBNb2NrKCkKICAgICAgICAgc2NtLmNoZWNrb3V0X3Jv
b3QgPSAiL2Zvby9iYXIiCi0gICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9j
b21taXQsIHNxdWFzaDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUvcGF0aC9DaGFu
Z2VMb2ciXQorICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBb
ImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCiAgICAgICAg
IGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQogICAgICAgICBleHBlY3RlZF9jaGFuZ2xvZ3MgPSBb
Ii9mb28vYmFyL0NoYW5nZUxvZyIsICIvZm9vL2Jhci9yZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJd
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyhn
aXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSksIGV4cGVjdGVkX2NoYW5nbG9ncykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21t
aXQ9Tm9uZSksIGV4cGVjdGVkX2NoYW5nbG9ncykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weSBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQppbmRleCBlZWE3NmJlNjE1ZTY2ZGE1
YmIxYjY1Y2JiZGRkOWJhZTZlMmM3NTc2Li4yYThjMDFiMzllMzA0OTg4YmI2MTg3NDA3MzE4ZTUz
MzdmOTI0MGVmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20ucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtLnB5CkBAIC05OCw2ICs5OCw3IEBAIGNsYXNzIFNDTToKICAgICAgICAg
c2VsZi5jd2QgPSBjd2QKICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5maW5kX2No
ZWNrb3V0X3Jvb3Qoc2VsZi5jd2QpCiAgICAgICAgIHNlbGYuZHJ5cnVuID0gRmFsc2UKKyAgICAg
ICAgc2VsZi5fdXNlciA9IFVzZXIoKQogCiAgICAgIyBBIHdyYXBwZXIgdXNlZCBieSBzdWJjbGFz
c2VzIHRvIGNyZWF0ZSBwcm9jZXNzZXMuCiAgICAgZGVmIHJ1bihzZWxmLCBhcmdzLCBjd2Q9Tm9u
ZSwgaW5wdXQ9Tm9uZSwgZXJyb3JfaGFuZGxlcj1Ob25lLCByZXR1cm5fZXhpdF9jb2RlPUZhbHNl
LCByZXR1cm5fc3RkZXJyPVRydWUsIGRlY29kZV9vdXRwdXQ9VHJ1ZSk6CkBAIC0xODksNyArMTkw
LDcgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBhZGQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAg
ZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Cisg
ICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmFp
c2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAg
ICBkZWYgY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZik6CkBAIC0yMDQsNyArMjA1LDcg
QEAgY2xhc3MgU0NNOgogICAgIGRlZiBkaXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAg
ICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAg
ZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMjIy
LDEwICsyMjMsNyBAQCBjbGFzcyBTQ006CiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxl
X3BhdGhzKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMg
bXVzdCBpbXBsZW1lbnQiCiAKLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgot
ICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxl
bWVudCIKLQotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJu
YW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjb21taXRf
d2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9u
ZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3Qg
aW1wbGVtZW50IgogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6
CkBAIC0zNDcsNyArMzQ1LDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBh
c3N1bWVkIHRvIGJlIGN3ZCByZWxhdGl2ZT8KICAgICAgICAgc2VsZi5ydW4oWyJzdm4iLCAiYWRk
IiwgcGF0aF0pCiAKLSAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUs
IHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5v
bmUpOgogICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3RhdHVzX2FuZF9leHRyYWN0X2ZpbGVuYW1l
cyhzZWxmLnN0YXR1c19jb21tYW5kKCksIHNlbGYuX3N0YXR1c19yZWdleHAoIkFDRE1SIikpCiAK
ICAgICBkZWYgY2hhbmdlZF9maWxlc19mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAt
MzcwLDcgKzM2OCw3IEBAIGNsYXNzIFNWTihTQ00pOgogICAgICAgICByZXR1cm4gInN2biIKIAog
ICAgICMgRklYTUU6IFRoaXMgbWV0aG9kIHNob3VsZCBiZSBvbiBDaGVja291dC4KLSAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRl
ZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJu
cyBhIGJ5dGUgYXJyYXkgKHN0cigpKSByZXByZXNlbnRpbmcgdGhlIHBhdGNoIGZpbGUuCiAgICAg
ICAgIFBhdGNoIGZpbGVzIGFyZSBlZmZlY3RpdmVseSBiaW5hcnkgc2luY2UgdGhleSBtYXkgY29u
dGFpbgogICAgICAgICBmaWxlcyBvZiBtdWx0aXBsZSBkaWZmZXJlbnQgZW5jb2RpbmdzLiIiIgpA
QCAtNDA2LDEyICs0MDQsOCBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBGSVhNRTogVGhp
cyBzaG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QuCiAgICAgICAgIHNl
bGYucnVuKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBzaG91bGRf
c3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgICMgU1ZOIGRvZXNuJ3Qgc3VwcG9ydCB0aGUg
Y29uY2VwdCBvZiBzcXVhc2hpbmcuCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNv
bW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0IGFy
ZSBub3QgdXNlZCBieSBTVk4uCisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVz
c2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKKyAgICAgICAgIyBnaXQtY29t
bWl0IGlzIG5vdCB1c2VkIGJ5IFNWTi4KICAgICAgICAgaWYgc2VsZi5kcnlydW46CiAgICAgICAg
ICAgICAjIFJldHVybiBhIHN0cmluZyB3aGljaCBsb29rcyBsaWtlIGEgY29tbWl0IHNvIHRoYXQg
dGhpbmdzIHdoaWNoIHBhcnNlIHRoaXMgb3V0cHV0IHdpbGwgc3VjY2VlZC4KICAgICAgICAgICAg
IHJldHVybiAiRHJ5IHJ1biwgbm8gY29tbWl0LlxuQ29tbWl0dGVkIHJldmlzaW9uIDAuIgpAQCAt
NDk4LDI0ICs0OTIsMjEgQEAgY2xhc3MgR2l0KFNDTSk6CiAgICAgICAgICMgcGF0aCBpcyBhc3N1
bWVkIHRvIGJlIGN3ZCByZWxhdGl2ZT8KICAgICAgICAgc2VsZi5ydW4oWyJnaXQiLCAiYWRkIiwg
cGF0aF0pCiAKLSAgICBkZWYgX21lcmdlX2Jhc2Uoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToK
KyAgICBkZWYgX2Fzc2VydF9zeW5jZWQoc2VsZik6CisgICAgICAgIGlmIGxlbihydW5fY29tbWFu
ZChbJ2dpdCcsICdyZXYtbGlzdCcsICctLW1heC1jb3VudD0xJywgc2VsZi5zdm5fYnJhbmNoX25h
bWUoKSwgJ15IRUFEJ10pKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9
Ik5vdCBmdWxseSBtZXJnZWQvcmViYXNlZCB0byAlcy4gVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUg
c3luY2VkIGZpcnN0LiIgJSBzZWxmLnN2bl9icmFuY2hfbmFtZSgpKQorCisgICAgZGVmIG1lcmdl
X2Jhc2Uoc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIGlmIGdpdF9jb21taXQ6Ci0gICAgICAg
ICAgICAjIEZJWE1FOiBDYWxsaW5nIGNvZGUgc2hvdWxkIHR1cm4gY29tbWl0IHJhbmdlcyBpbnRv
IGEgbGlzdCBvZiBjb21taXQgSURzCi0gICAgICAgICAgICAjIGFuZCB0aGVuIHRyZWF0IGVhY2gg
Y29tbWl0IHNlcGFyYXRlbHkuCiAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBnaXRfY29tbWl0
OgogICAgICAgICAgICAgICAgIGdpdF9jb21taXQgPSBnaXRfY29tbWl0ICsgIl4uLiIgKyBnaXRf
Y29tbWl0CiAgICAgICAgICAgICByZXR1cm4gZ2l0X2NvbW1pdAogCi0gICAgICAgIGlmIHNlbGYu
c2hvdWxkX3NxdWFzaChzcXVhc2gpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuc3ZuX21lcmdl
X2Jhc2UoKQorICAgICAgICBzZWxmLl9hc3NlcnRfc3luY2VkKCkKKyAgICAgICAgcmV0dXJuIHNl
bGYuc3ZuX21lcmdlX2Jhc2UoKQogCi0gICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2ggYmVoYXZp
b3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuIEl0IHJhaXNlcyBhbiBlcnJvcgot
ICAgICAgICAjIGlmIHRoZXJlIGFyZSB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQgLS1zcXVhc2gg
b3IgLS1uby1zcXVhc2ggd2Fzbid0IHBhc3NlZCBpbi4KLSAgICAgICAgIyBJZiAtLW5vLXNxdWFz
aCwgdGhlbiBpdCBzaG91bGQgcHJvY2VlZCB3aXRoIGVhY2ggbG9jYWwgY29tbWl0IGFzIGEgc2Vw
YXJhdGUgcGF0Y2guCi0gICAgICAgIHJldHVybiAnSEVBRCcKLQotICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgotICAgICAgICBzdGF0dXNf
Y29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICct
TScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYuX21lcmdlX2Jhc2UoZ2l0
X2NvbW1pdCwgc3F1YXNoKV0KKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0
PU5vbmUpOgorICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAn
LS1uYW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRl
eCIsIHNlbGYubWVyZ2VfYmFzZShnaXRfY29tbWl0KV0KICAgICAgICAgcmV0dXJuIHNlbGYucnVu
X3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0YXR1
c19yZWdleHAoIkFETSIpKQogCiAgICAgZGVmIF9jaGFuZ2VzX2ZpbGVzX2Zvcl9jb21taXQoc2Vs
ZiwgZ2l0X2NvbW1pdCk6CkBAIC01NDQsMTIgKzUzNSwxMiBAQCBjbGFzcyBHaXQoU0NNKToKICAg
ICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gImdpdCIKIAotICAgIGRl
ZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1
cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAg
ICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBj
b250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIi
CiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5jaGVj
a291dF9yb290Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdkaWZmJywgJy0tYmlu
YXJ5JywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVyZ2Vf
YmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAg
cmV0dXJuIHNlbGYucnVuKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAiLS1uby1leHQtZGlm
ZiIsICItLWZ1bGwtaW5kZXgiLCAiLU0iLCBzZWxmLm1lcmdlX2Jhc2UoZ2l0X2NvbW1pdCldLCBk
ZWNvZGVfb3V0cHV0PUZhbHNlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdpdF9jb21t
aXRfZnJvbV9zdm5fcmV2aXNpb24oY2xzLCByZXZpc2lvbik6CkBAIC01ODQsNjMgKzU3NSwzOCBA
QCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMp
OgogICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdjaGVja291dCcsICdIRUFEJ10gKyBmaWxlX3Bh
dGhzKQogCi0gICAgZGVmIF9nZXRfc3F1YXNoX2Vycm9yX21lc3NhZ2Uoc2VsZiwgbnVtX2xvY2Fs
X2NvbW1pdHMpOgotICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYgc2Vs
Zi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNo
YW5nZXMiCi0gICAgICAgIHJldHVybiAoIiIiVGhlcmUgYXJlICVzIGxvY2FsIGNvbW1pdHMlcy4g
RG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAxKSBVc2UgLS1zcXVhc2ggb3Ig
LS1uby1zcXVhc2gKLSAgICAgICAgICAgIDIpIGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFz
aCB0cnVlL2ZhbHNlCi0gICAgICAgICAgICAiIiIgJSAobnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtp
bmdfZGlyZWN0b3J5X21lc3NhZ2UpKQotCi0gICAgZGVmIHNob3VsZF9zcXVhc2goc2VsZiwgc3F1
YXNoKToKLSAgICAgICAgaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBjb25maWdfc3F1
YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLnNxdWFzaCcpCi0gICAgICAg
ICAgICBpZiAoY29uZmlnX3NxdWFzaCBhbmQgY29uZmlnX3NxdWFzaCBpcyBub3QgIiIpOgotICAg
ICAgICAgICAgICAgIHNxdWFzaCA9IGNvbmZpZ19zcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBPbmx5IHJhaXNlIGFuIGVycm9yIGlm
IHRoZXJlIGFyZSBhY3R1YWxseSBtdWx0aXBsZSBjb21taXRzIHRvIHNxdWFzaC4KLSAgICAgICAg
ICAgICAgICBudW1fbG9jYWxfY29tbWl0cyA9IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSkKLSAg
ICAgICAgICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21t
aXRzID4gMCBhbmQgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSk6Ci0gICAg
ICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9c2VsZi5fZ2V0X3NxdWFz
aF9lcnJvcl9tZXNzYWdlKG51bV9sb2NhbF9jb21taXRzKSkKKyAgICBkZWYgX2NvbW1pdF93YXJu
aW5nKHNlbGYsIG51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbik6
CisgICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UgPSAiIiBpZiB3b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbiBlbHNlICIgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzIgorICAgICAgICBy
ZXR1cm4gIiIiVGhlcmUgYXJlICVzIGxvY2FsIGNvbW1pdHMlcy4gRXZlcnl0aGluZyB3aWxsIGJl
IGNvbW1pdHRlZCBhcyBhIHNpbmdsZSBjb21taXQuIFRvIGF2b2lkIHRoaXMgcHJvbXB0LCBzZXQg
ImdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlIi4gQ29udGludWU/IiIiICUgKG51
bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlKQogCi0gICAgICAgIGlm
IHNxdWFzaCBhbmQgc2VsZi5fc3ZuX2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0cygpOgotICAgICAg
ICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iQ2Fubm90IHVzZSAtLXNxdWFzaCB3aGVu
IEhFQUQgaXMgbm90IGZ1bGx5IG1lcmdlZC9yZWJhc2VkIHRvICVzLiAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGJyYW5jaCBuZWVkcyB0byBiZSBzeW5jZWQg
Zmlyc3QuIiAlIHNlbGYuc3ZuX2JyYW5jaF9uYW1lKCkpCisgICAgZGVmIGNvbW1pdF9zaG91bGRf
YWx3YXlzX3NxdWFzaChzZWxmKToKKyAgICAgICAgc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZp
Zygnd2Via2l0LXBhdGNoLnNxdWFzaCcpCisgICAgICAgIHJldHVybiBzcXVhc2ggYW5kIHNxdWFz
aC5sb3dlcigpID09ICJ0cnVlIgogCi0gICAgICAgIHJldHVybiBzcXVhc2gKKyAgICBkZWYgY29t
bWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0
PU5vbmUpOgorICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdpdCBjb21taXRz
LgogCi0gICAgZGVmIF9zdm5fYnJhbmNoX2hhc19leHRyYV9jb21taXRzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gbGVuKHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3Jldi1saXN0JywgJy0tbWF4LWNvdW50
PTEnLCBzZWxmLnN2bl9icmFuY2hfbmFtZSgpLCAnXkhFQUQnXSkpCisgICAgICAgIHdvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuID0gc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpCiAK
LSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25l
LCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKLSAgICAgICAgIyBVc2VybmFtZSBpcyBp
Z25vcmVkIGR1cmluZyBHaXQgY29tbWl0cy4KICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKICAgICAg
ICAgICAgICMgTmVlZCB3b3JraW5nIGRpcmVjdG9yeSBjaGFuZ2VzIHRvIGJlIGNvbW1pdHRlZCBz
byB3ZSBjYW4gY2hlY2tvdXQgdGhlIG1lcmdlIGJyYW5jaC4KLSAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6CisgICAgICAgICAgICBpZiBub3Qgd29y
a2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CiAgICAgICAgICAgICAgICAgIyBGSVhNRTogd2Via2l0
LXBhdGNoIGxhbmQgd2lsbCBtb2RpZnkgdGhlIENoYW5nZUxvZ3MgdG8gY29ycmVjdCB0aGUgcmV2
aWV3ZXIuCiAgICAgICAgICAgICAgICAgIyBUaGF0IHdpbGwgbW9kaWZ5IHRoZSB3b3JraW5nLWNv
cHkgYW5kIGNhdXNlIHVzIHRvIGhpdCB0aGlzIGVycm9yLgotICAgICAgICAgICAgICAgICMgVGhl
IENoYW5nZUxvZyBtb2RpZmljYXRpb24gY291bGQgYmUgbWFkZSB0byBtb2RpZnkgdGhlIGV4aXN0
aW5nIGxvY2FsIGNvbW1pdD8KKyAgICAgICAgICAgICAgICAjIFRoZSBDaGFuZ2VMb2cgbW9kaWZp
Y2F0aW9uIGNvdWxkIGJlIG1hZGUgdG8gbW9kaWZ5IHRoZSBleGlzdGluZyBsb2NhbCBjb21taXQu
CiAgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iV29ya2luZyBjb3B5
IGlzIG1vZGlmaWVkLiBDYW5ub3QgY29tbWl0IGluZGl2aWR1YWwgZ2l0X2NvbW1pdHMuIikKICAg
ICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25fYnJhbmNoKG1lc3NhZ2UsIGdpdF9jb21t
aXQpCiAKLSAgICAgICAgc3F1YXNoID0gc2VsZi5zaG91bGRfc3F1YXNoKHNxdWFzaCkKLSAgICAg
ICAgaWYgc3F1YXNoOgotICAgICAgICAgICAgc2VsZi5ydW4oWydnaXQnLCAncmVzZXQnLCAnLS1z
b2Z0Jywgc2VsZi5zdm5fYnJhbmNoX25hbWUoKV0pCi0gICAgICAgICAgICBzZWxmLmNvbW1pdF9s
b2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICBlbGlmIG5vdCBzZWxmLndvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6Ci0gICAgICAgICAgICBpZiBub3QgbGVuKHNlbGYubG9j
YWxfY29tbWl0cygpKToKLSAgICAgICAgICAgICAgICAjIFRoZXJlIGFyZSBvbmx5IHdvcmtpbmcg
Y29weSBjaGFuZ2VzLiBBc3N1bWUgdGhleSBzaG91bGQgYmUgY29tbWl0dGVkLgotICAgICAgICAg
ICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAg
ICAgICBlbGlmIHNxdWFzaCBpcyBOb25lOgotICAgICAgICAgICAgICAgICMgVGhlIHVzZXIgZGlk
bid0IGV4cGxpY2l0bHkgc2F5IHRvIHNxdWFzaCBvciBub3Qgc3F1YXNoLiBUaGVyZSBhcmUgbG9j
YWwgY29tbWl0cwotICAgICAgICAgICAgICAgICMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLiBO
b3QgY2xlYXIgd2hhdCB0aGUgdXNlciB3YW50cy4KLSAgICAgICAgICAgICAgICByYWlzZSBTY3Jp
cHRFcnJvcihtZXNzYWdlPSIiIlRoZXJlIGFyZSBsb2NhbCBjb21taXRzIGFuZCB3b3JraW5nIGNv
cHkgY2hhbmdlcy4gRG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0xKSBDb21taXQvcmV2ZXJ0IHdv
cmtpbmcgY29weSBjaGFuZ2VzLgotMikgVXNlIC0tc3F1YXNoIG9yIC0tbm8tc3F1YXNoCi0zKSBn
aXQgY29uZmlnIHdlYmtpdC1wYXRjaC5zcXVhc2ggdHJ1ZS9mYWxzZQotIiIiKQotCi0gICAgICAg
ICMgRklYTUU6IFRoaXMgd2lsbCBjb21taXQgYWxsIGxvY2FsIGNvbW1pdHMsIGVhY2ggd2l0aCBp
dCdzIG93biBtZXNzYWdlLiBXZSBzaG91bGQgcmVzdHJ1Y3R1cmUKLSAgICAgICAgIyBzbyB0aGF0
IGVhY2ggbG9jYWwgY29tbWl0IGhhcyB0aGUgYXBwcm9wcmlhdGUgY29tbWl0IG1lc3NhZ2UgYmFz
ZWQgb2ZmIGl0J3MgQ2hhbmdlTG9ncy4KKyAgICAgICAgaWYgbm90IHNlbGYuY29tbWl0X3Nob3Vs
ZF9hbHdheXNfc3F1YXNoKCk6CisgICAgICAgICAgICAjIE9ubHkgd2FybiBpZiB0aGVyZSBhcmUg
YWN0dWFsbHkgbXVsdGlwbGUgY29tbWl0cyB0byBzcXVhc2guCisgICAgICAgICAgICBudW1fbG9j
YWxfY29tbWl0cyA9IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSkKKyAgICAgICAgICAgIGlmICgo
bnVtX2xvY2FsX2NvbW1pdHMgPiAxIG9yIChudW1fbG9jYWxfY29tbWl0cyA+IDAgYW5kIG5vdCB3
b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbikpIGFuZAorICAgICAgICAgICAgICAgIG5vdCBzZWxm
Ll91c2VyLmNvbmZpcm0oc2VsZi5fY29tbWl0X3dhcm5pbmcobnVtX2xvY2FsX2NvbW1pdHMsIHdv
cmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlw
dEVycm9yKG1lc3NhZ2U9IkRpZCBub3QgY29tbWl0IikKKworICAgICAgICBzZWxmLl9hc3NlcnRf
c3luY2VkKCkKKyAgICAgICAgc2VsZi5ydW4oWydnaXQnLCAncmVzZXQnLCAnLS1zb2Z0Jywgc2Vs
Zi5zdm5fYnJhbmNoX25hbWUoKV0pCisgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9t
ZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190
b19zZXJ2ZXIoKQogCiAgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1lc3NhZ2UsIGdp
dF9jb21taXQpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CmluZGV4IDhlZWE0ZDhhODUxNTVkNDIy
N2U5ZTcwYTdhYzUwNGU5OGJhNWQxY2IuLjIwM2Q3ODFhZGY5OGU5ZWUwOTRlMWM5Nzc2ODkzODhl
ZDBlM2RhMGMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKQEAgLTQ3LDYgKzQ3LDggQEAgZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwg
U0NNLCBTVk4sIENoZWNrb3V0TmUKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0
ZXJzIGltcG9ydCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQK
IGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAjIEZJ
WE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJvcgor
IyBGSVhNRTogTW9ja1VzZXIgc2hvdWxkIGJlIG1vdmVkIHRvIGNvbW1vbiBzbyB3ZSBkb24ndCBo
YXZlIHRvIGltcG9ydCBmcm9tIHdlYmtpdHB5LnRvb2wgaGVyZS4KK2Zyb20gd2Via2l0cHkudG9v
bC5tb2NrdG9vbCBpbXBvcnQgTW9ja1VzZXIKIAogIyBFdmVudHVhbGx5IHdlIHdpbGwgd2FudCB0
byB3cml0ZSB0ZXN0cyB3aGljaCB3b3JrIGZvciBib3RoIHNjbXMuIChsaWtlIHVwZGF0ZV93ZWJr
aXQsIGNoYW5nZWRfZmlsZXMsIGV0Yy4pCiAjIFBlcmhhcHMgdGhyb3VnaCBzb21lIFNDTVRlc3Qg
YmFzZS1jbGFzcyB3aGljaCBib3RoIFNWTlRlc3QgYW5kIEdpdFRlc3QgaW5oZXJpdCBmcm9tLgpA
QCAtODYsNiArODgsMTIgQEAgZGVmIF9naXRfZGlmZigqYXJncyk6CiAgICAgcmV0dXJuIF9tYWtl
X2RpZmYoImdpdCIsICphcmdzKQogCiAKK2NsYXNzIE1vY2tGYWxzZVVzZXIob2JqZWN0KToKKwor
ICAgIGRlZiBjb25maXJtKHNlbGYsIG1lc3NhZ2U9Tm9uZSk6CisgICAgICAgIHJldHVybiBGYWxz
ZQorCisKICMgRXhpc3RzIHRvIHNoYXJlIHN2biByZXBvc2l0b3J5IGNyZWF0aW9uIGNvZGUgYmV0
d2VlbiB0aGUgZ2l0IGFuZCBzdm4gdGVzdHMKIGNsYXNzIFNWTlRlc3RSZXBvc2l0b3J5OgogICAg
IEBjbGFzc21ldGhvZApAQCAtNzY2LDI0ICs3NzQsMTQgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0
KToKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF90ZXh0X3BhcnNpbmcoc2VsZik6CiAgICAgICAgIHdy
aXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQot
ICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVz
dCBjb21taXQiKQogICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21l
c3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNl
bGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQog
CiAgICAgICAgIHNlbGYuc2NtLmRyeXJ1biA9IFRydWUKICAgICAgICAgd3JpdGVfaW50b19maWxl
X2F0X3BhdGgoJ3Rlc3RfZmlsZScsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAg
IHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBj
b21taXQiKQogICAgICAgICBjb21taXRfdGV4dCA9IHNlbGYuc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
ZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICcwJykK
IAotICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNl
bGYpOgotICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEn
LCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQotICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQn
LCAndGVzdF9maWxlX2NvbW1pdDEnXSkKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKLQotICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDInLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRl
bnQnKQotICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1p
dDInXSkKLQogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfd29ya2luZ19jb3B5X29u
bHkoc2VsZik6CiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29t
bWl0MScsICdtb3JlIHRlc3QgY29udGVudCcpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0Jywg
J2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MSddKQpAQCAtNzk0LDIxICs3OTIsMTggQEAgY2xhc3Mg
R2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0Jywg
J3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAotICAg
IGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfc3F1YXNoZWQoc2VsZik6Ci0gICAgICAgIHNl
bGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAg
IGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3Qg
Y29tbWl0Iiwgc3F1YXNoPVRydWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3Zu
X3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCi0gICAgICAgIHN2
bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICct
LXZlcmJvc2UnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQyJywgc3ZuX2xvZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQotCi0gICAgZGVmIF90d29fbG9jYWxfY29t
bWl0cyhzZWxmKToKKyAgICBkZWYgX29uZV9sb2NhbF9jb21taXQoc2VsZik6CiAgICAgICAgIHdy
aXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3JlIHRlc3QgY29u
dGVudCcpCiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29t
bWl0MSddKQogICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFu
b3RoZXIgdGVzdCBjb21taXQiKQogCisgICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29y
a2luZ19jb3B5X2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQo
KQorICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDInLCAn
c3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQorICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdh
ZGQnLCAndGVzdF9maWxlX2NvbW1pdDInXSkKKworICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMo
c2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQogICAgICAgICB3cml0ZV9p
bnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDInLCAnc3RpbGwgbW9yZSB0ZXN0IGNv
bnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2Nv
bW1pdDInXSkKICAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJ5
ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCkBAIC04MTksNiArODE0LDIzIEBAIGNsYXNzIEdpdFRl
c3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2Fn
ZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRz
KCkKIAorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZik6CisgICAgICAgIHNl
bGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCisgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAg
IHNjbS5fdXNlciA9IE1vY2tVc2VyKCkKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0
KSwgJzYnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKKworICAg
IGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZGVueV9jb25maXJtKHNlbGYpOgorICAgICAg
ICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQorICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAg
ICAgICBzY20uX3VzZXIgPSBNb2NrRmFsc2VVc2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNv
bW1pdCIpCisKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX2dpdF9jb21taXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKIApAQCAtODQyLDUxICs4NTQs
ODAgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJl
LnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQogCi0gICAg
ZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYp
OgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZV9vbmx5X2xvY2FsX2NvbW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5fb25l
X2xvY2FsX2NvbW1pdCgpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBz
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0Il0pCisgICAgICAg
IGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21t
aXQiKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycs
ICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogCiAgICAgZGVmIHRlc3RfY29t
bWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHko
c2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgd3JpdGVf
aW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFu
Z2UnKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93
aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorICAgICAgICBzY20uX3VzZXIg
PSBNb2NrVXNlcigpCisKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVz
c2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
Y20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAg
ICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9
MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rl
c3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3RfY29t
bWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHlf
ZGVueV9jb25maXJtKHNlbGYpOgorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisg
ICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICd3b3Jr
aW5nIGNvcHkgY2hhbmdlJykKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja0ZhbHNlVXNlcigpCisg
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVz
c2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhf
bWVzc2FnZV9naXRfY29tbWl0X2FuZF93b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYu
X3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rl
c3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQogICAgICAgICBzY20gPSBk
ZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhl
ciB0ZXN0IGNvbW1pdCIsICdnaXRfY29tbWl0PSJIRUFEXiInXSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0
ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9IkhFQUReIikKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93
aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6CisgICAg
ZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2Fsd2F5
c19zcXVhc2goc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAg
ICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAg
ICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIHNjbS5jb21taXRfc2hvdWxkX2Fsd2F5
c19zcXVhc2ggPSBsYW1iZGE6IFRydWUKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCks
ICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xv
ZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCi0KLSAg
ICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1p
dD0yJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
dGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNoPVRy
dWUpCisgICAgICAgIHNjbS5fdXNlciA9IE1vY2tVc2VyKCkKKyAgICAgICAgY29tbWl0X3RleHQg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQogICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5f
bG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5bmNlZF9zcXVh
c2goc2VsZik6CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2Nh
bF9jb21taXRzX2RlbnlfY29uZmlybShzZWxmKToKKyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2Nv
bW1pdHMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQorICAgICAgICBzY20uX3VzZXIgPSBNb2NrRmFsc2VVc2VyKCkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5v
dGhlciB0ZXN0IGNvbW1pdCIpCisKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX25v
dF9zeW5jZWQoc2VsZik6CisgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0Jywg
Jy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9j
b21taXRzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tv
dXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja1VzZXIoKQorICAgICAgICBzZWxmLmFz
c2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVy
IHRlc3QgY29tbWl0IikKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5
bmNlZF9kZW55X2NvbmZpcm0oc2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2No
ZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3Is
IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1U
cnVlKQorICAgICAgICBzY20uX3VzZXIgPSBNb2NrRmFsc2VVc2VyKCkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhl
ciB0ZXN0IGNvbW1pdCIpCiAKICAgICBkZWYgdGVzdF9yZXZlcnNlX2RpZmYoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3NoYXJlZF90ZXN0X3JldmVyc2VfZGlmZigpCkBAIC05MDAsMjYgKzk0MSwxNiBA
QCBjbGFzcyBHaXRUZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2Nh
bF9wbHVzX3dvcmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1p
dF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0
Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNy
ZWF0ZV9wYXRjaCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToK
LSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2Vz
KCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKLSAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkp
CisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogCi0g
ICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zcXVhc2hlZChzZWxmKToKKyAgICBkZWYgdGVz
dF9jcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1
c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVt
KHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRj
aChzcXVhc2g9RmFsc2UpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQxJywgcGF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX2dpdF9jb21t
aXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKQEAgLTkzNiwyNiAr
OTY3LDE4IEBAIGNsYXNzIEdpdFRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCi0gICAg
ZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfbm9fc3F1YXNoKHNl
bGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6IEl0J3Mgd2Vp
cmQgdGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdu
b3JlcyBsb2NhbCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNv
bW1pdHMgdGhlbS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGNoID09ICIiKQotCi0gICAg
ZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfc3F1YXNoKHNlbGYp
OgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYp
OgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2Nt
LmNyZWF0ZV9wYXRjaChzcXVhc2g9VHJ1ZSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3Bh
dGNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3N5
bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zeW5jZWQo
c2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215
LWJyYW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkK
ICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkK
LSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gs
IHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2Nt
LmNyZWF0ZV9wYXRjaCkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9iaW5hcnlfcGF0Y2goc2VsZik6
CiAgICAgICAgICMgQ3JlYXRlIGEgZ2l0IGJpbmFyeSBwYXRjaCBhbmQgY2hlY2sgdGhlIGNvbnRl
bnRzLgpAQCAtOTg2LDI2ICsxMDA5LDkgQEAgY2xhc3MgR2l0VGVzdChTQ01UZXN0KToKICAgICBk
ZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2xvY2FsX3BsdXNfd29ya2luZ19jb3B5KHNlbGYpOgogICAg
ICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQog
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMp
Ci0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2VkX2ZpbGVzKQotCi0gICAgZGVmIHRlc3Rf
Y2hhbmdlZF9maWxlc19zcXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2Nv
bW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3Nj
bV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hh
bmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2Zp
bGVfY29tbWl0MicgaW4gZmlsZXMpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMo
KQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykK
LQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3NxdWFzaGVkKHNlbGYpOgotICAgICAg
ICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAg
ICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxzZSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RmFsc2UoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKIAogICAgIGRlZiB0ZXN0
X2NoYW5nZWRfZmlsZXNfZ2l0X2NvbW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQpAQCAtMTAyMiwyNiArMTAyOCwxOCBAQCBjbGFzcyBHaXRUZXN0KFNDTVRlc3Qp
OgogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCiAK
LSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfbm9fc3F1
YXNoKHNlbGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZp
bGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPUZhbHNlKQotICAgICAgICAjIEZJWE1FOiBJ
dCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVhc2g9RmFsc2UsIGNyZWF0ZV9wYXRjaC9jaGFuZ2VkX2Zp
bGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0cywKLSAgICAgICAgIyBidXQgY29tbWl0X3dpdGhfbWVz
c2FnZSBjb21taXRzIHRoZW0uCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oZmlsZXMpID09
IDApCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHNf
c3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxf
Y29tbWl0cyhzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1UcnVlKQorICAgICAgICBmaWxlcyA9
IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVf
Y29tbWl0MicgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2Nv
bW1pdDEnIGluIGZpbGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3luY2Vk
X3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zeW5jZWQoc2Vs
Zik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJy
YW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAg
ICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2VkX2ZpbGVzLCBz
cXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5j
aGFuZ2VkX2ZpbGVzKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlcyhzZWxmKToKICAgICAg
ICAgc2VsZi5fc2hhcmVkX3Rlc3RfY2hhbmdlZF9maWxlcygpCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkKaW5kZXggNTcyZDFmZGM1
MjA0NmQwMGFlNmRiOThmMDMxMjEyM2JhOGNlMzE4Zi4uNTM2Y2RkZWE0NzY1NjQxMTUzNjljYWJh
MjFiMDljMmE0OGM3NWI2ZCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weQpAQCAtNjksNiArNjksNiBAQCBjbGFzcyBSaWV0dmVs
ZChvYmplY3QpOgogCiAgICAgICAgICMgVXNlIFJlYWxNYWluIGluc3RlYWQgb2YgY2FsbGluZyB1
cGxvYWQgZnJvbSB0aGUgY29tbWFuZGxpbmUgc28gdGhhdAogICAgICAgICAjIHdlIGNhbiBwYXNz
IGluIHRoZSBkaWZmIG91cnNlbHZlcy4gT3RoZXJ3aXNlLCB1cGxvYWQgd2lsbCBqdXN0IHVzZQot
ICAgICAgICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vzbid0IHJlc3Bl
Y3QgLS1zcXVhc2ggYW5kIC0tZ2l0LWNvbW1pdC4KKyAgICAgICAgIyBnaXQgZGlmZiBmb3IgZ2l0
IGNoZWNrb3V0cywgd2hpY2ggZG9lc24ndCByZXNwZWN0IC0tZ2l0LWNvbW1pdC4KICAgICAgICAg
aXNzdWUsIHBhdGNoc2V0ID0gdXBsb2FkLlJlYWxNYWluKGFyZ3NbMTpdLCBkYXRhPWRpZmYpCiAg
ICAgICAgIHJldHVybiBpc3N1ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9vcHRwYXJzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL29wdHBhcnNlci5weQppbmRleCBiYjQ3ODhhNTVkYjY4ZmJjNzEwNDg0OTk2M2U4OWIyNmJj
NDNkNTg1Li4zYmEwZmFlOWU4NWYwZjdlNTBhY2IyZTJkNjIzZWVkYTljYzI0ZmI2IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQorKysg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weQpAQCAtMTQ3
LDggKzE0Nyw3IEBAIGNsYXNzIENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAg
ICAgICAgICAgZ2l0X2NvbW1pdD1Ob25lLAogICAgICAgICAgICAgICAgICBpc192ZXJib3NlPUZh
bHNlLAogICAgICAgICAgICAgICAgICBtaW5fY29uZmlkZW5jZT0xLAotICAgICAgICAgICAgICAg
ICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIsCi0gICAgICAgICAgICAgICAgIHNxdWFzaD1GYWxzZSk6
CisgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9ImVtYWNzIik6CiAgICAgICAgIGlmIGZp
bHRlcl9ydWxlcyBpcyBOb25lOgogICAgICAgICAgICAgZmlsdGVyX3J1bGVzID0gW10KIApAQCAt
MTY3LDcgKzE2Niw2IEBAIGNsYXNzIENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAg
ICAgc2VsZi5pc192ZXJib3NlID0gaXNfdmVyYm9zZQogICAgICAgICBzZWxmLm1pbl9jb25maWRl
bmNlID0gbWluX2NvbmZpZGVuY2UKICAgICAgICAgc2VsZi5vdXRwdXRfZm9ybWF0ID0gb3V0cHV0
X2Zvcm1hdAotICAgICAgICBzZWxmLnNxdWFzaCA9IHNxdWFzaAogCiAgICAgIyBVc2VmdWwgZm9y
IHVuaXQgdGVzdGluZy4KICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKQEAgLTE4Miw4ICsx
ODAsNiBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICBy
ZXR1cm4gRmFsc2UKICAgICAgICAgaWYgc2VsZi5vdXRwdXRfZm9ybWF0ICE9IG90aGVyLm91dHB1
dF9mb3JtYXQ6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgc2VsZi5zcXVh
c2ggIT0gb3RoZXIuc3F1YXNoOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAg
cmV0dXJuIFRydWUKIApAQCAtMjE4LDggKzIxNCw2IEBAIGNsYXNzIEFyZ3VtZW50UHJpbnRlcihv
YmplY3QpOgogICAgICAgICAgICAgZmxhZ3NbJ2ZpbHRlciddID0gIiwiLmpvaW4oZmlsdGVyX3J1
bGVzKQogICAgICAgICBpZiBvcHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBmbGFnc1sn
Z2l0LWNvbW1pdCddID0gb3B0aW9ucy5naXRfY29tbWl0Ci0gICAgICAgIGlmIG9wdGlvbnMuc3F1
YXNoOgotICAgICAgICAgICAgZmxhZ3NbJ3NxdWFzaCddID0gb3B0aW9ucy5zcXVhc2gKIAogICAg
ICAgICBmbGFnX3N0cmluZyA9ICcnCiAgICAgICAgICMgQWxwaGFiZXRpemluZyBsZXRzIHVzIHVu
aXQgdGVzdCB0aGlzIG1ldGhvZC4KQEAgLTMwOSw3ICszMDMsNyBAQCBjbGFzcyBBcmd1bWVudFBh
cnNlcihvYmplY3QpOgogICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLWYiLCAiLS1maWx0ZXIt
cnVsZXMiLCBtZXRhdmFyPSJSVUxFUyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9
ImZpbHRlcl92YWx1ZSIsIGhlbHA9ZmlsdGVyX2hlbHApCiAKLSAgICAgICAgZ2l0X2NvbW1pdF9o
ZWxwID0gKCJjaGVjayBhbGwgY2hhbmdlcyBpbiB0aGUgZ2l2ZW4gZ2l0IGNvbW1pdC4gIgorICAg
ICAgICBnaXRfY29tbWl0X2hlbHAgPSAoImNoZWNrIGFsbCBjaGFuZ2VzIGluIHRoZSBnaXZlbiBj
b21taXQuICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJ2NvbW1pdF9pZC4uJyB0
byBjaGVjayBhbGwgY2hhbmdlcyBhZnRlciBjb21tbWl0X2lkIikKICAgICAgICAgcGFyc2VyLmFk
ZF9vcHRpb24oIi1nIiwgIi0tZ2l0LWRpZmYiLCAiLS1naXQtY29tbWl0IiwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWV0YXZhcj0iQ09NTUlUIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9
Z2l0X2NvbW1pdF9oZWxwLCkKQEAgLTMzMCwxNCArMzI0LDYgQEAgY2xhc3MgQXJndW1lbnRQYXJz
ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ib3V0cHV0X2Zvcm1h
dCIsIGRlZmF1bHQ9ZGVmYXVsdF9vdXRwdXRfZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPW91dHB1dF9mb3JtYXRfaGVscCkKIAotICAgICAgICBzcXVhc2hfaGVscCA9ICgi
QWxsIGRpZmZzIGZyb20gdGhlIHJlbW90ZSBicmFuY2ggYXJlIGNoZWNrZWQuIgotICAgICAgICAg
ICAgICAgICAgICAgICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2ggd2hl
biB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlv
bigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBo
ZWxwPXNxdWFzaF9oZWxwKQotCi0gICAgICAgIHNxdWFzaF9oZWxwID0gKCJPbmx5IHdvcmtpbmcg
Y29weSBkaWZmcyBhcmUgY2hlY2tlZC4iCi0gICAgICAgICAgICAgICAgICAgICAgICJJZiBleGNs
dWRlZCwgcHJvbXB0cyB3aGV0aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJlIGFyZSBtdWx0aXBsZSBj
b21taXRzLiIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItLW5vLXNxdWFzaCIsIGFjdGlv
bj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJzcXVhc2giLCBoZWxwPXNxdWFzaF9oZWxwKQotCiAgICAg
ICAgIHZlcmJvc2VfaGVscCA9ICJlbmFibGUgdmVyYm9zZSBsb2dnaW5nLiIKICAgICAgICAgcGFy
c2VyLmFkZF9vcHRpb24oIi12IiwgIi0tdmVyYm9zZSIsIGRlc3Q9ImlzX3ZlcmJvc2UiLCBkZWZh
dWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUi
LCBoZWxwPXZlcmJvc2VfaGVscCkKQEAgLTQ1OCw4ICs0NDQsNyBAQCBjbGFzcyBBcmd1bWVudFBh
cnNlcihvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXRf
Y29tbWl0PWdpdF9jb21taXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlzX3ZlcmJvc2U9aXNfdmVyYm9zZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbWluX2NvbmZpZGVuY2U9bWluX2NvbmZpZGVuY2UsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9b3V0cHV0X2Zvcm1hdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3F1YXNoPW9wdGlvbnMuc3F1YXNoKQorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PW91dHB1dF9m
b3JtYXQpCiAKICAgICAgICAgcmV0dXJuIChwYXRocywgb3B0aW9ucykKIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CmluZGV4IGJhYjMwY2Fm
YzU1YmFlOGMwZTcwMTJjMjkzMDY5Nzc0OTIzYmEzZmQuLmE0MmI2OWRlNThkOTk0MzIzNjExYjE4
YjRiZDBkNTM5YjE1MmVjOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGVfcmVmZXJlbmNlcy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3N0eWxlX3JlZmVyZW5jZXMucHkKQEAgLTY3LDYgKzY3LDYgQEAgY2xhc3MgV2ViS2l0Q2hlY2tv
dXQob2JqZWN0KToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjaGVja291dCByb290IGFzIGFuIGFi
c29sdXRlIHBhdGguIiIiCiAgICAgICAgIHJldHVybiBzZWxmLl9zY20uY2hlY2tvdXRfcm9vdAog
Ci0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgotICAgICAg
ICByZXR1cm4gc2VsZi5fc2NtLmNyZWF0ZV9wYXRjaChnaXRfY29tbWl0LCBzcXVhc2gpCisgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0KToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3NjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CmluZGV4IGEyODNkYTlk
YzJlZDhlMTBmYzBlMGMyOGQ0MjZlYzY3ODhlOGY4NGUuLjcwNzI0YTY5NDAyOTM3MWQyNjhiZDZk
YjgxMzAyNjI0YzE3ZmE2ZTYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKQEAgLTk0LDcgKzk0LDcgQEAgSWYgYSBi
dWcgaWQgaXMgcHJvdmlkZWQsIG9yIG9uZSBjYW4gYmUgZm91bmQgaW4gdGhlIENoYW5nZUxvZyBs
YW5kIHdpbGwgdXBkYXRlIHQKIAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25z
LCBhcmdzLCB0b29sKToKICAgICAgICAgcmV0dXJuIHsKLSAgICAgICAgICAgICJidWdfaWQiOiAo
YXJncyBhbmQgYXJnc1swXSkgb3IgdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21t
aXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCksCisgICAgICAgICAgICAiYnVn
X2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3Ro
aXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCksCiAgICAgICAgIH0KIAogCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQppbmRl
eCBjZjcxNWI5OGIyZWNhM2NiNzZlZWJhNDFkMzg4ZTJjZmE3OTgzNDEzLi4xMmQ5OWM2ZTM4NmQ2
MmM5MDczYTFjMjAzZDI2ZDc1ZTc4MTk5Y2EwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKQEAgLTUzLDcgKzUzLDYgQEAg
Y2xhc3MgQ29tbWl0TWVzc2FnZUZvckN1cnJlbnREaWZmKEFic3RyYWN0RGVjbGFyYXRpdmVDb21t
YW5kKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgb3B0aW9ucyA9IFsKLSAg
ICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuc3F1YXNoLAogICAgICAgICAgICAgc3RlcHMuT3B0aW9u
cy5naXRfY29tbWl0LAogICAgICAgICBdCiAgICAgICAgIEFic3RyYWN0RGVjbGFyYXRpdmVDb21t
YW5kLl9faW5pdF9fKHNlbGYsIG9wdGlvbnM9b3B0aW9ucykKQEAgLTYxLDcgKzYwLDcgQEAgY2xh
c3MgQ29tbWl0TWVzc2FnZUZvckN1cnJlbnREaWZmKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5k
KToKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBvcHRpb25zLCBhcmdzLCB0b29sKToKICAgICAgICAg
IyBUaGlzIGNvbW1hbmQgaXMgYSB1c2VmdWwgdGVzdCB0byBtYWtlIHN1cmUgY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0CiAgICAgICAgICMgYWx3YXlzIHJldHVybnMgdGhlIHJpZ2h0IHZh
bHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCi0gICAgICAg
IHByaW50ICIlcyIgJSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29t
bWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpLm1lc3NhZ2UoKQorICAgICAg
ICBwcmludCAiJXMiICUgdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChvcHRpb25zLmdpdF9jb21taXQpLm1lc3NhZ2UoKQogCiAKIGNsYXNzIENsZWFuUGVuZGlu
Z0NvbW1pdChBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CkBAIC0xNTMsNyArMTUyLDcgQEAg
Y2xhc3MgQWJzdHJhY3RQYXRjaFVwbG9hZGluZ0NvbW1hbmQoQWJzdHJhY3RTZXF1ZW5jZWRDb21t
YW5kKToKICAgICAgICAgIyBQZXJmZXIgYSBidWcgaWQgcGFzc2VkIGFzIGFuIGFyZ3VtZW50IG92
ZXIgYSBidWcgdXJsIGluIHRoZSBkaWZmIChpLmUuIENoYW5nZUxvZ3MpLgogICAgICAgICBidWdf
aWQgPSBhcmdzIGFuZCBhcmdzWzBdCiAgICAgICAgIGlmIG5vdCBidWdfaWQ6Ci0gICAgICAgICAg
ICBidWdfaWQgPSB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25z
LmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5j
aGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KQogICAg
ICAgICByZXR1cm4gYnVnX2lkCiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9u
cywgYXJncywgdG9vbCk6CkBAIC00MjAsMTEgKzQxOSwxMSBAQCBjbGFzcyBDcmVhdGVCdWcoQWJz
dHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAgICAgICBpZiBvcHRpb25zLnByb21wdDoKICAg
ICAgICAgICAgIChidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCkgPSBzZWxmLnByb21wdF9mb3JfYnVn
X3RpdGxlX2FuZF9jb21tZW50KCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNvbW1pdF9t
ZXNzYWdlID0gdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChv
cHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICAgICAgY29tbWl0X21l
c3NhZ2UgPSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9w
dGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgICAgIGJ1Z190aXRsZSA9IGNvbW1pdF9tZXNzYWdl
LmRlc2NyaXB0aW9uKGxzdHJpcD1UcnVlLCBzdHJpcF91cmw9VHJ1ZSkKICAgICAgICAgICAgIGNv
bW1lbnRfdGV4dCA9IGNvbW1pdF9tZXNzYWdlLmJvZHkobHN0cmlwPVRydWUpCiAKLSAgICAgICAg
ZGlmZiA9IHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9u
cy5zcXVhc2gpCisgICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChvcHRpb25z
LmdpdF9jb21taXQpCiAgICAgICAgIGJ1Z19pZCA9IHRvb2wuYnVncy5jcmVhdGVfYnVnKGJ1Z190
aXRsZSwgY29tbWVudF90ZXh0LCBvcHRpb25zLmNvbXBvbmVudCwgZGlmZiwgIlBhdGNoIiwgY2M9
b3B0aW9ucy5jYywgbWFya19mb3JfcmV2aWV3PW9wdGlvbnMucmV2aWV3LCBtYXJrX2Zvcl9jb21t
aXRfcXVldWU9b3B0aW9ucy5yZXF1ZXN0X2NvbW1pdCkKIAogICAgIGRlZiBwcm9tcHRfZm9yX2J1
Z190aXRsZV9hbmRfY29tbWVudChzZWxmKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9tb2NrdG9vbC5weQppbmRleCAyZjE5MmQ5N2ZmZTE2MWM5ZjUyYmFiNzMzOWZhMmNi
ZDUyZjQ3MjY3Li4yYjYzNWE5ODY2Y2QxZjFiNTAzMTFkM2RhMWU4Yzc2MWMzZDdlODQ1IDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CkBAIC0zNzgs
NyArMzc4LDcgQEAgY2xhc3MgTW9ja1NDTShNb2NrKToKICAgICAgICAgIyB3aWxsIGFjdHVhbGx5
IGJlIHRoZSByb290LiAgU2luY2UgZ2V0Y3dkKCkgaXMgd3JvbmcsIHVzZSBhIGdsb2JhbGx5IGZh
a2Ugcm9vdCBmb3Igbm93LgogICAgICAgICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSBzZWxmLmZha2Vf
Y2hlY2tvdXRfcm9vdAogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0LCBz
cXVhc2gpOgorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAg
IHJldHVybiAiUGF0Y2gxIgogCiAgICAgZGVmIGNvbW1pdF9pZHNfZnJvbV9jb21taXRpc2hfYXJn
dW1lbnRzKHNlbGYsIGFyZ3MpOgpAQCAtNDE4LDEyICs0MTgsMTIgQEAgY2xhc3MgTW9ja0NoZWNr
b3V0KG9iamVjdCk6CiAgICAgZGVmIGJ1Z19pZF9mb3JfcmV2aXNpb24oc2VsZiwgc3ZuX3Jldmlz
aW9uKToKICAgICAgICAgcmV0dXJuIDEyMzQ1CiAKLSAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9n
cyhzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dz
KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICAjIElkZWFsbHkgd2UnZCByZXR1cm4gc29tZXRo
aW5nIG1vcmUgaW50ZXJlc3RpbmcgaGVyZS4gIFRoZSBwcm9ibGVtIGlzCiAgICAgICAgICMgdGhh
dCBMYW5kRGlmZiB3aWxsIHRyeSB0byBhY3R1YWxseSByZWFkIHRoZSBwYXRjaCBmcm9tIGRpc2sh
CiAgICAgICAgIHJldHVybiBbXQogCi0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBjb21taXRfbWVzc2FnZV9m
b3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIGNvbW1pdF9tZXNzYWdl
ID0gTW9jaygpCiAgICAgICAgIGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UgPSBsYW1iZGE6IlRoaXMg
aXMgYSBmYWtlIGNvbW1pdCBtZXNzYWdlIHRoYXQgaXMgYXQgbGVhc3QgNTAgY2hhcmFjdGVycy4i
CiAgICAgICAgIHJldHVybiBjb21taXRfbWVzc2FnZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKaW5kZXggYWJhZmU2
Mzk5OGYyMDFmOWQ2MDEyNGQ2ZTIwNGMyNTkxOTNkMGU1Ni4uYWRmNjJkNmQ0MzYzMDg0OWMzNmZi
MGU1MTMwOWNiOTE5NDBmMGIwMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CkBAIC01Myw4ICs1Myw4IEBAIGNs
YXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgICAgICByZXR1cm4gc2VsZi5fcG9ydAogCiAg
ICAgX3dlbGxfa25vd25fa2V5cyA9IHsKLSAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZjogc2Vs
Zi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxm
Ll9vcHRpb25zLnNxdWFzaCksCi0gICAgICAgICJjaGFuZ2Vsb2dzIjogbGFtYmRhIHNlbGY6IHNl
bGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0
X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAiZGlmZiI6IGxhbWJkYSBz
ZWxmOiBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQpLAorICAgICAgICAiY2hhbmdlbG9ncyI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLmNoZWNr
b3V0KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLAogICAg
IH0KIAogICAgIGRlZiBjYWNoZWRfbG9va3VwKHNlbGYsIHN0YXRlLCBrZXksIHByb21pc2U9Tm9u
ZSk6CkBAIC03MCw4ICs3MCw2IEBAIGNsYXNzIEFic3RyYWN0U3RlcChvYmplY3QpOgogICAgICAg
ICByZXR1cm4gWwogICAgICAgICAgICAgIyBXZSBuZWVkIHRoZXNlIG9wdGlvbnMgaGVyZSBiZWNh
dXNlIGNhY2hlZF9sb29rdXAgdXNlcyB0aGVtLiAgOigKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0
X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0
aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0
Y2h3aXRobG9jYWxjb21taXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQppbmRleCBkNmIwMjZkZTI1ODIxZTM0
OTZhYjhlOGQyYmE0NjExODUxMTU2Nzg4Li4zZGNkOGQ5MzFhMWYzNjViYjMzZWZhNmUzZThlOGJm
NWIwYmRjMWEzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQorKysgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weQpAQCAt
MzksNSArMzksNSBAQCBjbGFzcyBBcHBseVBhdGNoV2l0aExvY2FsQ29tbWl0KEFwcGx5UGF0Y2gp
OgogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgogICAgICAgICBBcHBseVBhdGNoLnJ1bihzZWxm
LCBzdGF0ZSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5sb2NhbF9jb21taXQ6Ci0gICAgICAg
ICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2Fn
ZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCisgICAgICAg
ICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2Fn
ZV9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICAgICAgc2VsZi5fdG9v
bC5zY20oKS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2Fn
ZSgpIG9yIHN0YXRlWyJwYXRjaCJdLm5hbWUoKSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKaW5kZXggOTNlNjIxNTMxNDRm
ZjdhZDVhNzdkMzcxYmVjNzIxMjM3NjcwNWJiZC4uYWYzODIxNDQwYTk1ZWM5Yzg1MDg2MGYxMjJi
N2YzNTU4MWZiYTI3MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkKQEAgLTQwLDggKzQwLDYgQEAgY2xhc3MgQ2hlY2tT
dHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgT3B0aW9ucy5ub25faW50ZXJhY3RpdmUs
CiAgICAgICAgICAgICBPcHRpb25zLmNoZWNrX3N0eWxlLAogICAgICAgICAgICAgT3B0aW9ucy5n
aXRfY29tbWl0LAotICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBP
cHRpb25zLnNxdWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CkBA
IC01MywxMCArNTEsNiBAQCBjbGFzcyBDaGVja1N0eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LWdpdC1jb21taXQiKQogICAgICAgICAgICAgYXJncy5hcHBlbmQoc2VsZi5fb3B0aW9ucy5naXRf
Y29tbWl0KQotICAgICAgICBpZiBzZWxmLl90b29sLnNjbSgpLnNob3VsZF9zcXVhc2goc2VsZi5f
b3B0aW9ucy5zcXVhc2gpOgotICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tc3F1YXNoIikKLSAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLW5vLXNxdWFzaCIpCiAKICAg
ICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgiY2hlY2std2Via2l0LXN0
eWxlIiwgYXJncykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHkKaW5kZXggYTIzZWExYjNjNWQ0
NmYyZWEzYjM4ZTQ2MmYzYjkxYzk2NTJiMzhkMS4uOTlmMzAwZjcyM2RjMzg5Yzc3Y2JhNjU3YjZj
ODE5MDQ5MmFlYzdiZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHkKQEAgLTM1LDEyICsz
NSw0IEBAIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5jaGVja3N0eWxlIGltcG9ydCBDaGVja1N0
eWxlCiAKIAogY2xhc3MgQ2hlY2tTdHlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRl
ZiB0ZXN0X3Nob3VsZF9zcXVhc2hfZXJyb3Ioc2VsZik6Ci0gICAgICAgICIiInNob3VsZF9zcXVh
c2ggY2FuIHRocm93IGFuIGVycm9yLiBUaGF0IGVycm9yIHNob3VsZCBub3QgYmUgZWF0ZW4gYnkg
Q2hlY2tTdHlsZS4iIiIKLSAgICAgICAgZGVmIHNob3VsZF9zcXVhc2goc3F1YXNoKToKLSAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkR1bW15IGVycm9yIikKLQotICAgICAg
ICB0b29sID0gTW9ja1Rvb2woKQotICAgICAgICB0b29sLl9zY20uc2hvdWxkX3NxdWFzaCA9IHNo
b3VsZF9zcXVhc2gKLSAgICAgICAgc3RlcCA9IENoZWNrU3R5bGUodG9vbCwgTW9jaygpKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc3RlcC5ydW4sIFtdKQorICAgIHBh
c3MKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
b21taXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0
LnB5CmluZGV4IDdiZjhiOGFhMjc2NjEwNDkwNmMyNmExZDkzNzdjZDMxNWY4YzVhNzguLjIxNmU4
YzNiN2VmMTFlOTUxMzA0ODA2NjI0ZGMwZWU5OTU0Mzk4ZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQpAQCAtMzUsMTMgKzM1LDEw
IEBAIGNsYXNzIENvbW1pdChBYnN0cmFjdFN0ZXApOgogICAgIGRlZiBvcHRpb25zKGNscyk6CiAg
ICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygpICsgWwogICAgICAgICAgICAgT3B0
aW9ucy5naXRfY29tbWl0LAotICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAg
ICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0
ZSk6Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1p
dF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYu
X29wdGlvbnMuc3F1YXNoKQorICAgICAgICBjb21taXRfbWVzc2FnZSA9IHNlbGYuX3Rvb2wuY2hl
Y2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZi5fb3B0aW9ucy5naXRf
Y29tbWl0KQogICAgICAgICBpZiBsZW4oY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpKSA8IDUwOgog
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJBdHRlbXB0ZWQgdG8gY29tbWl0IHdpdGggYSBj
b21taXQgbWVzc2FnZSBzaG9ydGVyIHRoYW4gNTAgY2hhcmFjdGVycy4gIEVpdGhlciB5b3VyIHBh
dGNoIGlzIG1pc3NpbmcgYSBDaGFuZ2VMb2cgb3Igd2Via2l0LXBhdGNoIG1heSBoYXZlIGEgYnVn
LiIpCi0gICAgICAgIHN0YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5jb21t
aXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwKLSAgICAgICAgICAgIGdp
dF9jb21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzcXVhc2g9c2VsZi5fb3B0aW9ucy5z
cXVhc2gpCisgICAgICAgIHN0YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5j
b21taXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwgZ2l0X2NvbW1pdD1z
ZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CmluZGV4IDE4NmQyOTI4OWI5MjA2YjZjOTA1ZmMx
MDZlY2U4OTk0N2QyYjJmMGMuLjJkNmEzYTAwNzU0NjI5ZjYzYjMwODNiYjIxMmQ1MDA3N2JlMjg1
OWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9v
cHRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9v
cHRpb25zLnB5CkBAIC00MywxMCArNDMsOCBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAg
ZW1haWwgPSBtYWtlX29wdGlvbigiLS1lbWFpbCIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJp
bmciLCBkZXN0PSJlbWFpbCIsIGhlbHA9IkVtYWlsIGFkZHJlc3MgdG8gdXNlIGluIENoYW5nZUxv
Z3MuIikKICAgICBmYW5jeV9yZXZpZXcgPSBtYWtlX29wdGlvbigiLS1mYW5jeS1yZXZpZXciLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJmYW5jeV9yZXZpZXciLCBkZWZhdWx0PUZhbHNlLCBo
ZWxwPSIoRXhwZXJpbWVudGFsKSBVcGxvYWQgdGhlIHBhdGNoIHRvIFJpZXR2ZWxkIGNvZGUgcmV2
aWV3IHRvb2wuIikKICAgICBmb3JjZV9jbGVhbiA9IG1ha2Vfb3B0aW9uKCItLWZvcmNlLWNsZWFu
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0iZm9yY2VfY2xlYW4iLCBkZWZhdWx0PUZhbHNl
LCBoZWxwPSJDbGVhbiB3b3JraW5nIGRpcmVjdG9yeSBiZWZvcmUgYXBwbHlpbmcgcGF0Y2hlcyAo
cmVtb3ZlcyBsb2NhbCBjaGFuZ2VzIGFuZCBjb21taXRzKSIpCi0jIEZJWE1FOiBNYWtlIGNvbW1p
dCByYW5nZXMgdHJlYXQgZWFjaCBjb21taXQgc2VwYXJhdGVseSBpbnN0ZWFkIG9mIHNxdWFzaGlu
ZyB0aGVtIGludG8gb25lLgotICAgIGdpdF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1naXQtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPSJMb2NhbCBnaXQg
Y29tbWl0IHRvIHVwbG9hZC9sYW5kLiBJZiBhIHJhbmdlLCB0aGUgY29tbWl0cyBhcmUgc3F1YXNo
ZWQgaW50byBvbmUuIikKKyAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24oIi1nIiwgIi0tZ2l0
LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD0iT3BlcmF0
ZSBvbiBhIGxvY2FsIGNvbW1pdC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMgYXJlIHNxdWFzaGVk
IGludG8gb25lLiIpCiAgICAgbG9jYWxfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tbG9jYWwtY29t
bWl0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1G
YWxzZSwgaGVscD0iTWFrZSBhIGxvY2FsIGNvbW1pdCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIikK
LSAgICBub19zcXVhc2ggPSBtYWtlX29wdGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3Jl
X2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0iRG9uJ3Qgc3F1YXNoIGxvY2FsIGNvbW1pdHMg
aW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5KS4iKQogICAgIG5vbl9pbnRlcmFjdGl2
ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1pbnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21w
dCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0IGFzIHBvc3NpYmxlLiIpCiAgICAgb2Jzb2xldGVfcGF0
Y2hlcyA9IG1ha2Vfb3B0aW9uKCItLW5vLW9ic29sZXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9Im9ic29sZXRlX3BhdGNoZXMiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBvYnNv
bGV0ZSBvbGQgcGF0Y2hlcyBiZWZvcmUgcG9zdGluZyB0aGlzIG9uZS4iKQogICAgIG9wZW5fYnVn
ID0gbWFrZV9vcHRpb24oIi0tb3Blbi1idWciLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJv
cGVuX2J1ZyIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik9wZW5zIHRoZSBhc3NvY2lhdGVkIGJ1ZyBp
biBhIGJyb3dzZXIuIikKQEAgLTU2LDYgKzU0LDUgQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgog
ICAgIHJlcXVlc3RfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tcmVxdWVzdC1jb21taXQiLCBhY3Rp
b249InN0b3JlX3RydWUiLCBkZXN0PSJyZXF1ZXN0X2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhl
bHA9Ik1hcmsgdGhlIHBhdGNoIGFzIG5lZWRpbmcgYXV0by1jb21taXQgYWZ0ZXIgcmV2aWV3LiIp
CiAgICAgcmV2aWV3ID0gbWFrZV9vcHRpb24oIi0tbm8tcmV2aWV3IiwgYWN0aW9uPSJzdG9yZV9m
YWxzZSIsIGRlc3Q9InJldmlldyIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG8gbm90IG1hcmsgdGhl
IHBhdGNoIGZvciByZXZpZXcuIikKICAgICByZXZpZXdlciA9IG1ha2Vfb3B0aW9uKCItciIsICIt
LXJldmlld2VyIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9InJldmlld2Vy
IiwgaGVscD0iVXBkYXRlIENoYW5nZUxvZ3MgdG8gc2F5IFJldmlld2VkIGJ5IFJFVklFV0VSLiIp
Ci0gICAgc3F1YXNoID0gbWFrZV9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD0iU3F1YXNoIGFsbCBsb2NhbCBjb21taXRzIGlu
dG8gb25lIG9uIHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICB0ZXN0ID0gbWFrZV9vcHRp
b24oIi0tdGVzdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InRlc3QiLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJSdW4gcnVuLXdlYmtpdC10ZXN0cyBiZWZvcmUgY29tbWl0dGluZy4iKQogICAg
IHVwZGF0ZSA9IG1ha2Vfb3B0aW9uKCItLW5vLXVwZGF0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2Ui
LCBkZXN0PSJ1cGRhdGUiLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvbid0IHVwZGF0ZSB0aGUgd29y
a2luZyBkaXJlY3RvcnkuIikKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKaW5kZXggM2E1YzAxM2EwNTNi
OGM4NGI5NzIzMmM1MDExNzlmY2Q1M2NlYTI1NC4uMjI4YzBiMDQzY2FiZGZjYTJmYjM1YjUzYTVj
ZWMyNTk2OGMxZmUyNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkKQEAgLTQyLDggKzQyLDYgQEAg
Y2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgT3B0aW9u
cy5xdWlldCwKICAgICAgICAgICAgIE9wdGlvbnMuZW1haWwsCiAgICAgICAgICAgICBPcHRpb25z
LmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAg
IE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToK
QEAgLTU1LDEwICs1Myw5IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWJ1Zz0lcyIgJSBzdGF0ZVsiYnVnX2lkIl0pCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZW1haWw6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgi
LS1lbWFpbD0lcyIgJSBzZWxmLl9vcHRpb25zLmVtYWlsKQotICAgICAgICBpZiBzZWxmLl90b29s
LnNjbSgpLnNob3VsZF9zcXVhc2goc2VsZi5fb3B0aW9ucy5zcXVhc2gpOgotICAgICAgICAgICAg
YXJncy5hcHBlbmQoIi0tbWVyZ2UtYmFzZT0lcyIgJSBzZWxmLl90b29sLnNjbSgpLnN2bl9tZXJn
ZV9iYXNlKCkpCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdDoKLSAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLWdpdC1jb21taXQ9JXMiICUgc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0KQorCisgICAgICAgIGlmIHNlbGYuX3Rvb2wuc2NtKCkuc3VwcG9ydF9sb2NhbF9jb21taXRz
KCk6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1tZXJnZS1iYXNlPSVzIiAlIHNlbGYuX3Rv
b2wuc2NtKCkubWVyZ2VfYmFzZShzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpKQogCiAgICAgICAg
IHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1bl9hbmRfdGhyb3dfaWZf
ZmFpbChhcmdzLCBzZWxmLl9vcHRpb25zLnF1aWV0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkg
Yi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weQppbmRleCA0ZDI5OWZhMjFhZDNhYmM0MjllMjgyMzU5NDRlZjEwNjU3YzIz
NzY1Li4wZTc4YmMyMjk1ZDBkM2U2YTAzM2U2MTYzMDFmM2IwYWU3NGYyZjk0IDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxv
Z2ZvcnJldmVydC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQpAQCAtMzYsNyArMzYsNyBAQCBjbGFzcyBQ
cmVwYXJlQ2hhbmdlTG9nRm9yUmV2ZXJ0KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIHJ1bihzZWxm
LCBzdGF0ZSk6CiAgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHByZXBhcmUtQ2hhbmdlTG9n
IGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCiAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQo
InByZXBhcmUtQ2hhbmdlTG9nIikKLSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9v
bC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9
RmFsc2UpCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5t
b2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSkKICAgICAgICAgYnVnX3VybCA9IHNl
bGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoc3RhdGVbImJ1Z19pZCJdKSBpZiBzdGF0
ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAgICAgICAgIGZvciBjaGFuZ2Vsb2dfcGF0aCBpbiBjaGFu
Z2Vsb2dfcGF0aHM6CiAgICAgICAgICAgICAjIEZJWE1FOiBTZWVtcyB3ZSBzaG91bGQgcHJlcGFy
ZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9mIGNoYW5nZWxvZ3MucHkgYW5kIHRoZW4ganVzdCBwYXNz
IGluCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
dXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CmluZGV4IGVm
NGJhYTI1MTI0MTNlNTZkZDlmYjllMWZmOTc0YjZkYjhmMmJlNzQuLmU0NmI3OTAwY2VkOTI4NWU3
MWQ2Nzg0OWY2NWUyZWY4NDRlNjY4N2IgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CisrKyBi
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dz
d2l0aHJldmlld2VyLnB5CkBAIC00MCw4ICs0MCw2IEBAIGNsYXNzIFVwZGF0ZUNoYW5nZUxvZ3NX
aXRoUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5v
cHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCiAgICAgICAgICAg
ICBPcHRpb25zLnJldmlld2VyLAotICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAg
ICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIF9ndWVzc19yZXZp
ZXdlcl9mcm9tX2J1ZyhzZWxmLCBidWdfaWQpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQppbmRleCA5
ZjRkNDRlMGI2YzViMDlhNmE0YTM4ZjQ1ZmYwY2JjZWQ1M2Q1YjVjLi5iZGY3MjllNGJmZTJkMDQ0
M2I1NzkxODhkNTk2OTJjYzA2NjY0MWQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQpAQCAtNDEs
OCArNDEsNiBAQCBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgZGVm
IG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5vcHRpb25zKCkgKyBb
CiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5v
X3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICAj
IEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBtb3ZlIG9udG8gQ2hhbmdlTG9nRW50cnkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>57833</attachid>
            <date>2010-06-03 16:37:11 -0700</date>
            <delta_ts>2010-06-14 12:32:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100603163709.patch</filename>
            <type>text/plain</type>
            <size>56966</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBlYThlYTdmYTZmODkzOTVmZmZmY2Q4ZTMzYzY1N2U5NWZlZTk0NzQxLi5kMGRjZTAy
OWIwOWRkMjQ0NzJjYjA3NGQ4YjhmNGZjMzdkZjhjNGQ3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAK
KzIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLiBTZXR0aW5nIGdpdCBjb25maWcg
d2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlIGJ5cGFzc2VzIHRoZSBwcm9tcHQuCisKKyAgICAgICAg
KiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGkucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY21fdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9j
b21tb24vbmV0L3JpZXR2ZWxkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUv
b3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNl
cy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vs
b2dzd2l0aHJldmlld2VyLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy92YWxpZGF0ZXJldmlld2VyLnB5OgorCiAyMDEwLTA1LTE0ICBPamFuIFZhZmFpICA8b2phbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKaW5kZXggMTlkMzc2Mjc1NTkyN2RiZTUyOTJiZjU5
MTU5NzA4ZDkyMWFiNmQyNy4uOWExYWUxZTNiZjRkMDBiNDQ4NjNlNWYzZGU3OTRkZmMxMzg4YjJh
ZCAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUKQEAgLTExNSw3ICsxMTUs
NyBAQCBkZWYgbWFpbigpOgogICAgIGlmIHBhdGhzOgogICAgICAgICBmaWxlX3JlYWRlci5wcm9j
ZXNzX3BhdGhzKHBhdGhzKQogICAgIGVsc2U6Ci0gICAgICAgIHBhdGNoID0gY2hlY2tvdXQuY3Jl
YXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpCisgICAgICAgIHBh
dGNoID0gY2hlY2tvdXQuY3JlYXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAg
cGF0Y2hfY2hlY2tlciA9IFBhdGNoUmVhZGVyKGZpbGVfcmVhZGVyKQogICAgICAgICBwYXRjaF9j
aGVja2VyLmNoZWNrKHBhdGNoKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKaW5kZXggYTVhYzkzOThlODhlNzUxZmU4NTQ0MzY0
YjY5YzM2MzVmZTEwYTdmMS4uY2EyOGUzMjMzMjU4NzJkY2VjMDFkMTNhZDE2N2Y1MjViZjc3NmQy
MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvYXBpLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L2FwaS5weQpAQCAtODMsMTYgKzgzLDE2IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAg
ICAgZGVmIGJ1Z19pZF9mb3JfcmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgogICAgICAgICByZXR1
cm4gc2VsZi5jb21taXRfaW5mb19mb3JfcmV2aXNpb24ocmV2aXNpb24pLmJ1Z19pZCgpCiAKLSAg
ICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAg
IGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICAjIFND
TSByZXR1cm5zIHBhdGhzIHJlbGF0aXZlIHRvIHNjbS5jaGVja291dF9yb290CiAgICAgICAgICMg
Q2FsbGVycyAoZXNwZWNpYWxseSB0aG9zZSB1c2luZyB0aGUgQ2hhbmdlTG9nIGNsYXNzKSBtYXkK
ICAgICAgICAgIyBleHBlY3QgYWJzb2x1dGUgcGF0aHMsIHNvIHRoaXMgbWV0aG9kIHJldHVybnMg
YWJzb2x1dGUgcGF0aHMuCi0gICAgICAgIGNoYW5nZWRfZmlsZXMgPSBzZWxmLl9zY20uY2hhbmdl
ZF9maWxlcyhnaXRfY29tbWl0LCBzcXVhc2gpCisgICAgICAgIGNoYW5nZWRfZmlsZXMgPSBzZWxm
Ll9zY20uY2hhbmdlZF9maWxlcyhnaXRfY29tbWl0KQogICAgICAgICBhYnNvbHV0ZV9wYXRocyA9
IFtvcy5wYXRoLmpvaW4oc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QsIHBhdGgpIGZvciBwYXRoIGlu
IGNoYW5nZWRfZmlsZXNdCiAgICAgICAgIHJldHVybiBbcGF0aCBmb3IgcGF0aCBpbiBhYnNvbHV0
ZV9wYXRocyBpZiBzZWxmLl9pc19wYXRoX3RvX2NoYW5nZWxvZyhwYXRoKV0KIAotICAgIGRlZiBj
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToK
LSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9j
b21taXQsIHNxdWFzaCkKKyAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNl
bGYsIGdpdF9jb21taXQpOgorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVk
X2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCkKICAgICAgICAgaWYgbm90IGxlbihjaGFuZ2Vsb2dfcGF0
aHMpOgogICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRm91bmQgbm8gbW9k
aWZpZWQgQ2hhbmdlTG9ncywgY2Fubm90IGNyZWF0ZSBhIGNvbW1pdCBtZXNzYWdlLlxuIgogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIkFsbCBjaGFuZ2VzIHJlcXVpcmUgYSBDaGFuZ2VM
b2cuICBTZWU6XG4iCkBAIC0xMDksOSArMTA5LDkgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToK
ICAgICAgICAgIyBGSVhNRTogV2Ugc2hvdWxkIHNvcnQgYW5kIGxhYmVsIHRoZSBDaGFuZ2VMb2cg
bWVzc2FnZXMgbGlrZSBjb21taXQtbG9nLWVkaXRvciBkb2VzLgogICAgICAgICByZXR1cm4gQ29t
bWl0TWVzc2FnZSgiIi5qb2luKGNoYW5nZWxvZ19tZXNzYWdlcykuc3BsaXRsaW5lcygpKQogCi0g
ICAgZGVmIGJ1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToK
KyAgICBkZWYgYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNz
YWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0LCBzcXVhc2gpLm1lc3NhZ2UoKSkKKyAgICAg
ICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19j
b21taXQoZ2l0X2NvbW1pdCkubWVzc2FnZSgpKQogICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3Is
IGU6CiAgICAgICAgICAgICBwYXNzICMgV2UgbWlnaHQgbm90IGhhdmUgQ2hhbmdlTG9ncy4KIApA
QCAtMTMxLDcgKzEzMSw3IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAKICAgICAgICAgIyBX
ZSByZXZlcnQgdGhlIENoYW5nZUxvZ3MgYmVjYXVzZSByZW1vdmluZyBsaW5lcyBmcm9tIGEgQ2hh
bmdlTG9nCiAgICAgICAgICMgZG9lc24ndCBtYWtlIHNlbnNlLiAgQ2hhbmdlTG9ncyBhcmUgYXBw
ZW5kIG9ubHkuCi0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdl
bG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgY2hhbmdlbG9nX3Bh
dGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSkKICAgICAgICAg
aWYgbGVuKGNoYW5nZWxvZ19wYXRocyk6CiAgICAgICAgICAgICBzZWxmLl9zY20ucmV2ZXJ0X2Zp
bGVzKGNoYW5nZWxvZ19wYXRocykKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CmluZGV4IDE0MzYz
NzlhOGQ3M2I1ZDI4NDljZTg3MWQyNDUwMzA4NTBmM2EyZjcuLmZkZmQ4Nzk4ZGQ1Y2I5N2UzZTFj
NWEyOTZhNmMwNjBiYjNjMTZjOTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKQEAgLTExNCwx
MSArMTE0LDExIEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JUaGlzQ29tbWl0VGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgIyBDaGFuZ2VMb2cgaXMgZGlmZmljdWx0IHRvIG1vY2sgYXQgY3Vy
cmVudC4KICAgICBkZWYgdGVzdF9jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZik6
CiAgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoTm9uZSkKLSAgICAgICAgY2hlY2tvdXQubW9k
aWZpZWRfY2hhbmdlbG9ncyA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsiQ2hhbmdlTG9n
MSIsICJDaGFuZ2VMb2cyIl0KKyAgICAgICAgY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyA9
IGxhbWJkYSBnaXRfY29tbWl0OiBbIkNoYW5nZUxvZzEiLCAiQ2hhbmdlTG9nMiJdCiAgICAgICAg
IG91dHB1dCA9IE91dHB1dENhcHR1cmUoKQogICAgICAgICBleHBlY3RlZF9zdGRlcnIgPSAiUGFy
c2luZyBDaGFuZ2VMb2c6IENoYW5nZUxvZzFcblBhcnNpbmcgQ2hhbmdlTG9nOiBDaGFuZ2VMb2cy
XG4iCiAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gb3V0cHV0LmFzc2VydF9vdXRwdXRzKHNlbGYs
IGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCwKLSAgICAgICAgICAgIGt3
YXJncz17ImdpdF9jb21taXQiOiBOb25lLCAic3F1YXNoIjogRmFsc2V9LCBleHBlY3RlZF9zdGRl
cnI9ZXhwZWN0ZWRfc3RkZXJyKQorICAgICAgICAgICAga3dhcmdzPXsiZ2l0X2NvbW1pdCI6IE5v
bmV9LCBleHBlY3RlZF9zdGRlcnI9ZXhwZWN0ZWRfc3RkZXJyKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwgc2VsZi5leHBlY3RlZF9jb21taXRfbWVz
c2FnZSkKIAogCkBAIC0xNjMsMTMgKzE2MywxMyBAQCBjbGFzcyBDaGVja291dFRlc3QodW5pdHRl
c3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2J1Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZik6
CiAgICAgICAgIHNjbSA9IE1vY2soKQogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkK
LSAgICAgICAgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0ID0gbGFtYmRh
IGdpdF9jb21taXQsIHNxdWFzaDogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dFbnRyeShfY2hhbmdl
bG9nMWVudHJ5MSkuY29udGVudHMoKS5zcGxpdGxpbmVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHNx
dWFzaD1GYWxzZSksIDM2NjI5KQorICAgICAgICBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3Jf
dGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdDogQ29tbWl0TWVzc2FnZShDaGFuZ2VMb2dF
bnRyeShfY2hhbmdlbG9nMWVudHJ5MSkuY29udGVudHMoKS5zcGxpdGxpbmVzKCkpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChnaXRfY29t
bWl0PU5vbmUpLCAzNjYyOSkKIAogICAgIGRlZiB0ZXN0X21vZGlmaWVkX2NoYW5nZWxvZ3Moc2Vs
Zik6CiAgICAgICAgIHNjbSA9IE1vY2soKQogICAgICAgICBzY20uY2hlY2tvdXRfcm9vdCA9ICIv
Zm9vL2JhciIKLSAgICAgICAgc2NtLmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdCwg
c3F1YXNoOiBbImZpbGUxIiwgIkNoYW5nZUxvZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJd
CisgICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9jb21taXQ6IFsiZmlsZTEi
LCAiQ2hhbmdlTG9nIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KICAgICAgICAgY2hlY2tv
dXQgPSBDaGVja291dChzY20pCiAgICAgICAgIGV4cGVjdGVkX2NoYW5nbG9ncyA9IFsiL2Zvby9i
YXIvQ2hhbmdlTG9nIiwgIi9mb28vYmFyL3JlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKSwgZXhwZWN0ZWRfY2hhbmdsb2dzKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25l
KSwgZXhwZWN0ZWRfY2hhbmdsb2dzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5CmluZGV4IGZjNGM2ZmRjZTdlNWNkMjdlNTQ5ZDAx
YjY5MzBkODFjOGU2YjEzYzUuLjFjN2UwYjQwNjNhYzM1YjgyODljMjY1MTFhYjBjNTBkYmE4YWI3
ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNr
b3V0L3NjbS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY20ucHkKQEAgLTk4LDYgKzk4LDcgQEAgY2xhc3MgU0NNOgogICAgICAgICBzZWxmLmN3
ZCA9IGN3ZAogICAgICAgICBzZWxmLmNoZWNrb3V0X3Jvb3QgPSBzZWxmLmZpbmRfY2hlY2tvdXRf
cm9vdChzZWxmLmN3ZCkKICAgICAgICAgc2VsZi5kcnlydW4gPSBGYWxzZQorICAgICAgICBzZWxm
Ll91c2VyID0gVXNlcigpCiAKICAgICAjIEEgd3JhcHBlciB1c2VkIGJ5IHN1YmNsYXNzZXMgdG8g
Y3JlYXRlIHByb2Nlc3Nlcy4KICAgICBkZWYgcnVuKHNlbGYsIGFyZ3MsIGN3ZD1Ob25lLCBpbnB1
dD1Ob25lLCBlcnJvcl9oYW5kbGVyPU5vbmUsIHJldHVybl9leGl0X2NvZGU9RmFsc2UsIHJldHVy
bl9zdGRlcnI9VHJ1ZSwgZGVjb2RlX291dHB1dD1UcnVlKToKQEAgLTE4OSw3ICsxOTAsNyBAQCBj
bGFzcyBTQ006CiAgICAgZGVmIGFkZChzZWxmLCBwYXRoKToKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKLSAgICBkZWYgY2hh
bmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYg
Y2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJ
bXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKIAogICAgIGRlZiBj
aGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToKQEAgLTIwNCw3ICsyMDUsNyBAQCBjbGFz
cyBTQ006CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKLSAgICBkZWYgY3Jl
YXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBj
cmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1w
bGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYgY29t
bWl0dGVyX2VtYWlsX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CkBAIC0yMjIsMTAgKzIy
Myw3IEBAIGNsYXNzIFNDTToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMp
OgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGlt
cGxlbWVudCIKIAotICAgIGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJzdWJjbGFzc2VzIG11c3QgaW1wbGVtZW50Igot
Ci0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9u
ZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lKToKICAg
ICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1l
bnQiCiAKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKQEAgLTM0
Nyw3ICszNDUsNyBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBwYXRoIGlzIGFzc3VtZWQg
dG8gYmUgY3dkIHJlbGF0aXZlPwogICAgICAgICBzZWxmLnJ1bihbInN2biIsICJhZGQiLCBwYXRo
XSkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNo
PU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAg
ICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYu
c3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiQUNETVIiKSkKIAogICAgIGRl
ZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CkBAIC0zNzAsNyAr
MzY4LDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgIHJldHVybiAic3ZuIgogCiAgICAgIyBG
SVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG9uIENoZWNrb3V0LgotICAgIGRlZiBjcmVhdGVf
cGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0
ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0
ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0
Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAg
ICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCkBAIC00MDYs
MTIgKzQwNCw4IEBAIGNsYXNzIFNWTihTQ00pOgogICAgICAgICAjIEZJWE1FOiBUaGlzIHNob3Vs
ZCBwcm9iYWJseSB1c2UgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdC4KICAgICAgICAgc2VsZi5ydW4o
Wydzdm4nLCAncmV2ZXJ0J10gKyBmaWxlX3BhdGhzKQogCi0gICAgZGVmIHNob3VsZF9zcXVhc2go
c2VsZiwgc3F1YXNoKToKLSAgICAgICAgIyBTVk4gZG9lc24ndCBzdXBwb3J0IHRoZSBjb25jZXB0
IG9mIHNxdWFzaGluZy4KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBkZWYgY29tbWl0X3dp
dGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUs
IHNxdWFzaD1Ob25lKToKLSAgICAgICAgIyBzcXVhc2ggYW5kIGdpdC1jb21taXQgYXJlIG5vdCB1
c2VkIGJ5IFNWTi4KKyAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1
c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUpOgorICAgICAgICAjIGdpdC1jb21taXQgaXMg
bm90IHVzZWQgYnkgU1ZOLgogICAgICAgICBpZiBzZWxmLmRyeXJ1bjoKICAgICAgICAgICAgICMg
UmV0dXJuIGEgc3RyaW5nIHdoaWNoIGxvb2tzIGxpa2UgYSBjb21taXQgc28gdGhhdCB0aGluZ3Mg
d2hpY2ggcGFyc2UgdGhpcyBvdXRwdXQgd2lsbCBzdWNjZWVkLgogICAgICAgICAgICAgcmV0dXJu
ICJEcnkgcnVuLCBubyBjb21taXQuXG5Db21taXR0ZWQgcmV2aXNpb24gMC4iCkBAIC00OTgsMjQg
KzQ5MiwyMSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICAgICAgIyBwYXRoIGlzIGFzc3VtZWQgdG8g
YmUgY3dkIHJlbGF0aXZlPwogICAgICAgICBzZWxmLnJ1bihbImdpdCIsICJhZGQiLCBwYXRoXSkK
IAotICAgIGRlZiBfbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRl
ZiBfYXNzZXJ0X3N5bmNlZChzZWxmKToKKyAgICAgICAgaWYgbGVuKHJ1bl9jb21tYW5kKFsnZ2l0
JywgJ3Jldi1saXN0JywgJy0tbWF4LWNvdW50PTEnLCBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCks
ICdeSEVBRCddKSk6CisgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJOb3Qg
ZnVsbHkgbWVyZ2VkL3JlYmFzZWQgdG8gJXMuIFRoaXMgYnJhbmNoIG5lZWRzIHRvIGJlIHN5bmNl
ZCBmaXJzdC4iICUgc2VsZi5yZW1vdGVfYnJhbmNoX3JlZigpKQorCisgICAgZGVmIG1lcmdlX2Jh
c2Uoc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIGlmIGdpdF9jb21taXQ6Ci0gICAgICAgICAg
ICAjIEZJWE1FOiBDYWxsaW5nIGNvZGUgc2hvdWxkIHR1cm4gY29tbWl0IHJhbmdlcyBpbnRvIGEg
bGlzdCBvZiBjb21taXQgSURzCi0gICAgICAgICAgICAjIGFuZCB0aGVuIHRyZWF0IGVhY2ggY29t
bWl0IHNlcGFyYXRlbHkuCiAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBnaXRfY29tbWl0Ogog
ICAgICAgICAgICAgICAgIGdpdF9jb21taXQgPSBnaXRfY29tbWl0ICsgIl4uLiIgKyBnaXRfY29t
bWl0CiAgICAgICAgICAgICByZXR1cm4gZ2l0X2NvbW1pdAogCi0gICAgICAgIGlmIHNlbGYuc2hv
dWxkX3NxdWFzaChzcXVhc2gpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlX21lcmdl
X2Jhc2UoKQotCi0gICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2ggYmVoYXZpb3Igc2hvdWxkIG1h
dGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuIEl0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICAjIGlm
IHRoZXJlIGFyZSB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQgLS1zcXVhc2ggb3IgLS1uby1zcXVh
c2ggd2Fzbid0IHBhc3NlZCBpbi4KLSAgICAgICAgIyBJZiAtLW5vLXNxdWFzaCwgdGhlbiBpdCBz
aG91bGQgcHJvY2VlZCB3aXRoIGVhY2ggbG9jYWwgY29tbWl0IGFzIGEgc2VwYXJhdGUgcGF0Y2gu
Ci0gICAgICAgIHJldHVybiAnSEVBRCcKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N5bmNlZCgpCisg
ICAgICAgIHJldHVybiBzZWxmLnJlbW90ZV9tZXJnZV9iYXNlKCkKIAotICAgIGRlZiBjaGFuZ2Vk
X2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgotICAgICAgICBzdGF0
dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycs
ICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYuX21lcmdlX2Jhc2Uo
Z2l0X2NvbW1pdCwgc3F1YXNoKV0KKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29t
bWl0PU5vbmUpOgorICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXIn
LCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1p
bmRleCIsIHNlbGYubWVyZ2VfYmFzZShnaXRfY29tbWl0KV0KICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0
YXR1c19yZWdleHAoIkFETSIpKQogCiAgICAgZGVmIF9jaGFuZ2VzX2ZpbGVzX2Zvcl9jb21taXQo
c2VsZiwgZ2l0X2NvbW1pdCk6CkBAIC01NDQsMTIgKzUzNSwxMiBAQCBjbGFzcyBHaXQoU0NNKToK
ICAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gImdpdCIKIAotICAg
IGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Cisg
ICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJS
ZXR1cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4K
ICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1h
eSBjb250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3Mu
IiIiCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5j
aGVja291dF9yb290Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdkaWZmJywgJy0t
YmluYXJ5JywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVy
Z2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAg
ICAgcmV0dXJuIHNlbGYucnVuKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAiLS1uby1leHQt
ZGlmZiIsICItLWZ1bGwtaW5kZXgiLCAiLU0iLCBzZWxmLm1lcmdlX2Jhc2UoZ2l0X2NvbW1pdCld
LCBkZWNvZGVfb3V0cHV0PUZhbHNlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdpdF9j
b21taXRfZnJvbV9zdm5fcmV2aXNpb24oY2xzLCByZXZpc2lvbik6CkBAIC01ODQsNjMgKzU3NSwz
NyBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0
aHMpOgogICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdjaGVja291dCcsICdIRUFEJ10gKyBmaWxl
X3BhdGhzKQogCi0gICAgZGVmIF9nZXRfc3F1YXNoX2Vycm9yX21lc3NhZ2Uoc2VsZiwgbnVtX2xv
Y2FsX2NvbW1pdHMpOgotICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYg
c2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5
IGNoYW5nZXMiCi0gICAgICAgIHJldHVybiAoIiIiVGhlcmUgYXJlICVzIGxvY2FsIGNvbW1pdHMl
cy4gRG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAxKSBVc2UgLS1zcXVhc2gg
b3IgLS1uby1zcXVhc2gKLSAgICAgICAgICAgIDIpIGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNx
dWFzaCB0cnVlL2ZhbHNlCi0gICAgICAgICAgICAiIiIgJSAobnVtX2xvY2FsX2NvbW1pdHMsIHdv
cmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UpKQotCi0gICAgZGVmIHNob3VsZF9zcXVhc2goc2VsZiwg
c3F1YXNoKToKLSAgICAgICAgaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBjb25maWdf
c3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLnNxdWFzaCcpCi0gICAg
ICAgICAgICBpZiAoY29uZmlnX3NxdWFzaCBhbmQgY29uZmlnX3NxdWFzaCBpcyBub3QgIiIpOgot
ICAgICAgICAgICAgICAgIHNxdWFzaCA9IGNvbmZpZ19zcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBPbmx5IHJhaXNlIGFuIGVycm9y
IGlmIHRoZXJlIGFyZSBhY3R1YWxseSBtdWx0aXBsZSBjb21taXRzIHRvIHNxdWFzaC4KLSAgICAg
ICAgICAgICAgICBudW1fbG9jYWxfY29tbWl0cyA9IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSkK
LSAgICAgICAgICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9j
b21taXRzID4gMCBhbmQgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSk6Ci0g
ICAgICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9c2VsZi5fZ2V0X3Nx
dWFzaF9lcnJvcl9tZXNzYWdlKG51bV9sb2NhbF9jb21taXRzKSkKLQotICAgICAgICBpZiBzcXVh
c2ggYW5kIHNlbGYuX3JlbW90ZV9icmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMoKToKLSAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkNhbm5vdCB1c2UgLS1zcXVhc2ggd2hlbiBI
RUFEIGlzIG5vdCBmdWxseSBtZXJnZWQvcmViYXNlZCB0byAlcy4gIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZp
cnN0LiIgJSBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCkpCi0KLSAgICAgICAgcmV0dXJuIHNxdWFz
aAorICAgIGRlZiBfY29tbWl0X3dhcm5pbmcoc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtp
bmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2Fn
ZSA9ICIiIGlmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuIGVsc2UgIiBhbmQgd29ya2luZyBj
b3B5IGNoYW5nZXMiCisgICAgICAgIHJldHVybiAiIiJUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0
cyVzLiBFdmVyeXRoaW5nIHdpbGwgYmUgY29tbWl0dGVkIGFzIGEgc2luZ2xlIGNvbW1pdC4gVG8g
YXZvaWQgdGhpcyBwcm9tcHQsIHNldCAiZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRy
dWUiLiBDb250aW51ZT8iIiIgJSAobnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5
X21lc3NhZ2UpCiAKLSAgICBkZWYgX3JlbW90ZV9icmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxpc3QnLCAn
LS1tYXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ15IRUFEJ10pKQorICAg
IGRlZiBjb21taXRfc2hvdWxkX2Fsd2F5c19zcXVhc2goc2VsZik6CisgICAgICAgIHNxdWFzaCA9
IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dlYmtpdC1wYXRjaC5zcXVhc2gnKQorICAgICAgICByZXR1
cm4gc3F1YXNoIGFuZCBzcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKIAotICAgIGRlZiBjb21taXRf
d2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9u
ZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgICMgVXNlcm5hbWUg
aXMgaWdub3JlZCBkdXJpbmcgR2l0IGNvbW1pdHMuCisgICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5
X2lzX2NsZWFuID0gc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpCisKICAgICAgICAg
aWYgZ2l0X2NvbW1pdDoKICAgICAgICAgICAgICMgTmVlZCB3b3JraW5nIGRpcmVjdG9yeSBjaGFu
Z2VzIHRvIGJlIGNvbW1pdHRlZCBzbyB3ZSBjYW4gY2hlY2tvdXQgdGhlIG1lcmdlIGJyYW5jaC4K
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6Cisg
ICAgICAgICAgICBpZiBub3Qgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CiAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogd2Via2l0LXBhdGNoIGxhbmQgd2lsbCBtb2RpZnkgdGhlIENoYW5nZUxv
Z3MgdG8gY29ycmVjdCB0aGUgcmV2aWV3ZXIuCiAgICAgICAgICAgICAgICAgIyBUaGF0IHdpbGwg
bW9kaWZ5IHRoZSB3b3JraW5nLWNvcHkgYW5kIGNhdXNlIHVzIHRvIGhpdCB0aGlzIGVycm9yLgot
ICAgICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyBtb2RpZmljYXRpb24gY291bGQgYmUgbWFk
ZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1pdD8KKyAgICAgICAgICAgICAgICAj
IFRoZSBDaGFuZ2VMb2cgbW9kaWZpY2F0aW9uIGNvdWxkIGJlIG1hZGUgdG8gbW9kaWZ5IHRoZSBl
eGlzdGluZyBsb2NhbCBjb21taXQuCiAgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3Io
bWVzc2FnZT0iV29ya2luZyBjb3B5IGlzIG1vZGlmaWVkLiBDYW5ub3QgY29tbWl0IGluZGl2aWR1
YWwgZ2l0X2NvbW1pdHMuIikKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25fYnJh
bmNoKG1lc3NhZ2UsIGdpdF9jb21taXQpCiAKLSAgICAgICAgc3F1YXNoID0gc2VsZi5zaG91bGRf
c3F1YXNoKHNxdWFzaCkKLSAgICAgICAgaWYgc3F1YXNoOgotICAgICAgICAgICAgc2VsZi5ydW4o
WydnaXQnLCAncmVzZXQnLCAnLS1zb2Z0Jywgc2VsZi5yZW1vdGVfYnJhbmNoX3JlZigpXSkKLSAg
ICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAg
ICAgIGVsaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKLSAgICAgICAg
ICAgIGlmIG5vdCBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpOgotICAgICAgICAgICAgICAgICMg
VGhlcmUgYXJlIG9ubHkgd29ya2luZyBjb3B5IGNoYW5nZXMuIEFzc3VtZSB0aGV5IHNob3VsZCBi
ZSBjb21taXR0ZWQuCi0gICAgICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21l
c3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVsaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgIyBUaGUgdXNlciBkaWRuJ3QgZXhwbGljaXRseSBzYXkgdG8gc3F1YXNoIG9yIG5v
dCBzcXVhc2guIFRoZXJlIGFyZSBsb2NhbCBjb21taXRzCi0gICAgICAgICAgICAgICAgIyBhbmQg
d29ya2luZyBjb3B5IGNoYW5nZXMuIE5vdCBjbGVhciB3aGF0IHRoZSB1c2VyIHdhbnRzLgotICAg
ICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IiIiVGhlcmUgYXJlIGxvY2Fs
IGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2lu
ZzoKLTEpIENvbW1pdC9yZXZlcnQgd29ya2luZyBjb3B5IGNoYW5nZXMuCi0yKSBVc2UgLS1zcXVh
c2ggb3IgLS1uby1zcXVhc2gKLTMpIGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVl
L2ZhbHNlCi0iIiIpCi0KLSAgICAgICAgIyBGSVhNRTogVGhpcyB3aWxsIGNvbW1pdCBhbGwgbG9j
YWwgY29tbWl0cywgZWFjaCB3aXRoIGl0J3Mgb3duIG1lc3NhZ2UuIFdlIHNob3VsZCByZXN0cnVj
dHVyZQotICAgICAgICAjIHNvIHRoYXQgZWFjaCBsb2NhbCBjb21taXQgaGFzIHRoZSBhcHByb3By
aWF0ZSBjb21taXQgbWVzc2FnZSBiYXNlZCBvZmYgaXQncyBDaGFuZ2VMb2dzLgorICAgICAgICBp
ZiBub3Qgc2VsZi5jb21taXRfc2hvdWxkX2Fsd2F5c19zcXVhc2goKToKKyAgICAgICAgICAgICMg
T25seSB3YXJuIGlmIHRoZXJlIGFyZSBhY3R1YWxseSBtdWx0aXBsZSBjb21taXRzIHRvIHNxdWFz
aC4KKyAgICAgICAgICAgIG51bV9sb2NhbF9jb21taXRzID0gbGVuKHNlbGYubG9jYWxfY29tbWl0
cygpKQorICAgICAgICAgICAgaWYgKChudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2Nh
bF9jb21taXRzID4gMCBhbmQgbm90IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKSkgYW5kCisg
ICAgICAgICAgICAgICAgbm90IHNlbGYuX3VzZXIuY29uZmlybShzZWxmLl9jb21taXRfd2Fybmlu
ZyhudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pKSk6CisgICAg
ICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRGlkIG5vdCBjb21taXQiKQor
CisgICAgICAgIHNlbGYuX2Fzc2VydF9zeW5jZWQoKQorICAgICAgICBzZWxmLnJ1bihbJ2dpdCcs
ICdyZXNldCcsICctLXNvZnQnLCBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCldKQorICAgICAgICBz
ZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQogICAgICAgICByZXR1cm4g
c2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2VydmVyKCkKIAogICAgIGRlZiBfY29tbWl0X29u
X2JyYW5jaChzZWxmLCBtZXNzYWdlLCBnaXRfY29tbWl0KToKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5w
eQppbmRleCAzNmExZDFjZmRiOTQ0NGM3MTU0OTg2YzQ1MmNjM2Q5MTRmNGMxYTU2Li4yMzYxYjE4
YzY5OTI1NTBlMDM3MGE0NDdmNDc5YWU4ZGI1OTkyYjExIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0
LnB5CkBAIC00Nyw2ICs0Nyw4IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBp
bXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNDTSwgU1ZOLCBDaGVja291dE5lCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBvcnQgQ29tbWl0dGVyICAjIEZJWE1FOiBU
aGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5uZXQuYnVnemls
bGEgaW1wb3J0IEF0dGFjaG1lbnQgIyBGSVhNRTogVGhpcyBzaG91bGQgbm90IGJlIG5lZWRlZAog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBy
dW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKKyMgRklYTUU6IE1vY2tVc2VyIHNob3VsZCBiZSBtb3Zl
ZCB0byBjb21tb24gc28gd2UgZG9uJ3QgaGF2ZSB0byBpbXBvcnQgZnJvbSB3ZWJraXRweS50b29s
IGhlcmUuCitmcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tVc2VyCiAKICMg
RXZlbnR1YWxseSB3ZSB3aWxsIHdhbnQgdG8gd3JpdGUgdGVzdHMgd2hpY2ggd29yayBmb3IgYm90
aCBzY21zLiAobGlrZSB1cGRhdGVfd2Via2l0LCBjaGFuZ2VkX2ZpbGVzLCBldGMuKQogIyBQZXJo
YXBzIHRocm91Z2ggc29tZSBTQ01UZXN0IGJhc2UtY2xhc3Mgd2hpY2ggYm90aCBTVk5UZXN0IGFu
ZCBHaXRUZXN0IGluaGVyaXQgZnJvbS4KQEAgLTg2LDYgKzg4LDEyIEBAIGRlZiBfZ2l0X2RpZmYo
KmFyZ3MpOgogICAgIHJldHVybiBfbWFrZV9kaWZmKCJnaXQiLCAqYXJncykKIAogCitjbGFzcyBN
b2NrRmFsc2VVc2VyKG9iamVjdCk6CisKKyAgICBkZWYgY29uZmlybShzZWxmLCBtZXNzYWdlPU5v
bmUpOgorICAgICAgICByZXR1cm4gRmFsc2UKKworCiAjIEV4aXN0cyB0byBzaGFyZSBzdm4gcmVw
b3NpdG9yeSBjcmVhdGlvbiBjb2RlIGJldHdlZW4gdGhlIGdpdCBhbmQgc3ZuIHRlc3RzCiBjbGFz
cyBTVk5UZXN0UmVwb3NpdG9yeToKICAgICBAY2xhc3NtZXRob2QKQEAgLTgwMywyNCArODExLDE0
IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYgdGVzdF9jb21taXRfdGV4
dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9m
aWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2Fs
bHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3Rl
eHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21t
aXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBU
cnVlCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwg
bW9yZSB0ZXN0IGNvbnRlbnQnKQotICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRo
X21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3RleHQg
PSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIp
CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29t
bWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCiAKLSAgICBkZWYgX29uZV9sb2NhbF9jb21taXRf
cGx1c193b3JraW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKLSAgICAgICAgd3JpdGVfaW50b19maWxl
X2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAg
ICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCi0gICAg
ICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNv
bW1pdCIpCi0KLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21t
aXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydn
aXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCi0KICAgICBkZWYgdGVzdF9jb21taXRf
d2l0aF9tZXNzYWdlX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQog
ICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkK
QEAgLTgzMSwyMSArODI5LDE4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAg
IHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScs
ICctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNz
YWdlX3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNf
d29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShz
ZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRf
d2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0
KGNvbW1pdF90ZXh0KSwgJzYnKQotICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQn
LCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5f
bG9nKSkKLQotICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAgZGVmIF9vbmVf
bG9jYWxfY29tbWl0KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVz
dF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFu
ZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKICAgICAgICAgc2VsZi5zY20u
Y29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKIAorICAg
IGRlZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgor
ICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKKyAgICAgICAgd3JpdGVfaW50b19maWxl
X2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykK
KyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10p
CisKKyAgICBkZWYgX3R3b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVf
bG9jYWxfY29tbWl0KCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCiAgICAgICAgIHNlbGYuc2Nt
LmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQpA
QCAtODU2LDYgKzg1MSwyMyBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBz
ZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQi
KQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKKyAgICBkZWYgdGVzdF9jb21t
aXRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3Bs
dXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzY20uX3VzZXIgPSBNb2NrVXNlcigp
CisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90
aGVyIHRlc3QgY29tbWl0IikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2
aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKKyAgICAgICAgc3ZuX2xv
ZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVy
Ym9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDInLCBzdm5fbG9nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rl
c3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9t
ZXNzYWdlX2RlbnlfY29uZmlybShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1p
dF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja0Zh
bHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorCiAgICAgZGVmIHRlc3Rf
Y29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90d29f
bG9jYWxfY29tbWl0cygpCiAKQEAgLTg3OSw1MSArODkxLDgwIEBAIGNsYXNzIEdpdFNWTlRlc3Qo
U0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVf
Y29tbWl0MScsIHN2bl9sb2cpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIn
dGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdv
X2xvY2FsX2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfb25seV9s
b2NhbF9jb21taXQoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXQoKQogICAg
ICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3Nh
Z2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5j
b21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgc3ZuX2xv
ZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVy
Ym9zZSddKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDEnLCBzdm5fbG9nKSkKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVs
dGlwbGVfbG9jYWxfY29tbWl0c19hbmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxm
Ll90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0
ZXN0X2ZpbGVfY29tbWl0MScsICd3b3JraW5nIGNvcHkgY2hhbmdlJykKICAgICAgICAgc2NtID0g
ZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCBbImFub3Ro
ZXIgdGVzdCBjb21taXQiXSkKKyAgICAgICAgc2NtLl91c2VyID0gTW9ja1VzZXIoKQorCisgICAg
ICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBj
b21taXQiKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9t
X2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2Nv
bW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisg
ICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2
bl9sb2cpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDEnLCBzdm5fbG9nKSkKKworICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVs
dGlwbGVfbG9jYWxfY29tbWl0c19hbmRfd29ya2luZ19jb3B5X2RlbnlfY29uZmlybShzZWxmKToK
KyAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgICAgICB3cml0ZV9pbnRvX2Zp
bGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnd29ya2luZyBjb3B5IGNoYW5nZScpCisg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisg
ICAgICAgIHNjbS5fdXNlciA9IE1vY2tGYWxzZVVzZXIoKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3Qg
Y29tbWl0IikKIAogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdF9h
bmRfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygp
CiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICd3
b3JraW5nIGNvcHkgY2hhbmdlJykKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJy
b3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCBbImFub3RoZXIgdGVzdCBjb21taXQiLCAnZ2l0
X2NvbW1pdD0iSEVBRF4iJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9y
LCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29t
bWl0PSJIRUFEXiIpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxl
X2xvY2FsX2NvbW1pdHNfbm9fc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRo
X21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19hbHdheXNfc3F1YXNoKHNlbGYpOgogICAg
ICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNoPUZh
bHNlKQorICAgICAgICBzY20uY29tbWl0X3Nob3VsZF9hbHdheXNfc3F1YXNoID0gbGFtYmRhOiBU
cnVlCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBh
bm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3Jl
dmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAKICAgICAgICAgc3Zu
X2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0t
dmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxl
X2NvbW1pdDInLCBzdm5fbG9nKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQotCi0gICAgICAgIHN2bl9sb2cgPSBydW5f
Y29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MicsICctLXZlcmJvc2UnXSkK
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywg
c3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xv
Y2FsX2NvbW1pdHNfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQorICAgICAgICBzY20uX3Vz
ZXIgPSBNb2NrVXNlcigpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21l
c3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAK
ICAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1s
aW1pdD0xJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVz
dF9jb21taXRfd2l0aF9tZXNzYWdlX25vdF9zeW5jZWRfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0
ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19kZW55X2NvbmZp
cm0oc2VsZik6CisgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICAgICAgc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2Nt
Ll91c2VyID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlw
dEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQor
CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9ub3Rfc3luY2VkKHNlbGYpOgorICAg
ICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAn
dHJ1bmt+MyddKQorICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgICAgIHNj
bSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIHNj
bS5fdXNlciA9IE1vY2tVc2VyKCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJy
b3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisKKyAg
ICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX25vdF9zeW5jZWRfZGVueV9jb25maXJtKHNl
bGYpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1i
cmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVz
c2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2NtLl91
c2VyID0gTW9ja0ZhbHNlVXNlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVy
cm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQogCiAg
ICAgZGVmIHRlc3RfcmVtb3RlX2JyYW5jaF9yZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoc2VsZi5zY20ucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ3JlZnMvcmVtb3Rlcy90cnVuaycp
CkBAIC05NDAsMjYgKzk4MSwxNiBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRl
ZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2NhbF9wbHVzX3dvcmtpbmdfY29weShzZWxmKToKICAgICAg
ICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAg
ICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0K
LSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToK
LSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0
ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9w
bHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0
ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3Bh
dGNoKHNxdWFzaD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVz
dF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRj
aCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQyJywgcGF0Y2gpKQogCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zcXVh
c2hlZChzZWxmKToKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHNl
bGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAg
IHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCisgICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCiAgICAgZGVmIHRl
c3RfY3JlYXRlX3BhdGNoX2dpdF9jb21taXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2Nh
bF9jb21taXRzKCkKQEAgLTk3NiwyNiArMTAwNywxOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRl
c3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDInLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MScsIHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBs
ZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goc3F1YXNoPUZhbHNl
KQotICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVhc2g9RmFsc2UsIGNy
ZWF0ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0cywKLSAgICAgICAg
IyBidXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShwYXRjaCA9PSAiIikKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBs
ZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hf
bXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2Nv
bW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goc3F1YXNoPVRydWUpCisg
ICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCi0gICAg
ZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zeW5jZWRfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0
ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3luY2VkKHNlbGYpOgogICAgICAgICBydW5fY29tbWFuZChb
J2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAg
ICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yLCBzY20uY3JlYXRlX3BhdGNoLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCiAKICAgICBkZWYgdGVz
dF9jcmVhdGVfYmluYXJ5X3BhdGNoKHNlbGYpOgogICAgICAgICAjIENyZWF0ZSBhIGdpdCBiaW5h
cnkgcGF0Y2ggYW5kIGNoZWNrIHRoZSBjb250ZW50cy4KQEAgLTEwMjYsMjYgKzEwNDksOSBAQCBj
bGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbG9j
YWxfcGx1c193b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21t
aXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21f
c3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcykKLQotICAgIGRlZiB0ZXN0X2NoYW5nZWRf
ZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9j
aGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2Nt
LmNoYW5nZWRfZmlsZXMpCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX3NxdWFzaGVkKHNl
bGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2No
YW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291
dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1UcnVlKQot
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKKyAg
ICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9m
aWxlc19ub3Rfc3F1YXNoZWQoc2VsZik6Ci0gICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRf
cGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRf
ZmlsZXMoc3F1YXNoPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9j
b21taXQyJyBpbiBmaWxlcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxlX2Nv
bW1pdDEnIGluIGZpbGVzKQogCiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19naXRfY29tbWl0
KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCkBAIC0xMDYyLDI2ICsx
MDY4LDE4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDEnIGluIGZpbGVzKQogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKIAotICAgIGRlZiB0ZXN0X2NoYW5nZWRf
ZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6Ci0gICAgICAgIHNl
bGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxl
cyhzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCB3aXRoIHNx
dWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdub3JlcyBsb2NhbCBjb21t
aXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNvbW1pdHMgdGhlbS4KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlcykgPT0gMCkKLQotICAgIGRlZiB0ZXN0X2No
YW5nZWRfZmlsZXNfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVm
IHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAgICAg
ICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRf
ZmlsZXMoc3F1YXNoPVRydWUpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKICAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAKLSAg
ICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zeW5jZWRfc3F1YXNoKHNlbGYpOgorICAgIGRl
ZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3N5bmNlZChzZWxmKToKICAgICAgICAgcnVuX2NvbW1h
bmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMsIHNxdWFzaD1UcnVlKQorICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMpCiAKICAgICBk
ZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzKHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9j
aGFuZ2VkX2ZpbGVzKCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL25ldC9yaWV0dmVsZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL25ldC9yaWV0dmVsZC5weQppbmRleCBiMTA1ZjkxZTVkYzQ4MTI0ZTI3YmZjOGI1OTJiOTgy
ZDRmNDZiYjQ2Li44MWRjNTU0MDc1OGY2OWQwNDRmYmZmMzJjMDk3MmM0OWUzMmYxMzNhIDEwMDY0
NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxk
LnB5CkBAIC02OSw2ICs2OSw2IEBAIGNsYXNzIFJpZXR2ZWxkKG9iamVjdCk6CiAKICAgICAgICAg
IyBVc2UgUmVhbE1haW4gaW5zdGVhZCBvZiBjYWxsaW5nIHVwbG9hZCBmcm9tIHRoZSBjb21tYW5k
bGluZSBzbyB0aGF0CiAgICAgICAgICMgd2UgY2FuIHBhc3MgaW4gdGhlIGRpZmYgb3Vyc2VsdmVz
LiBPdGhlcndpc2UsIHVwbG9hZCB3aWxsIGp1c3QgdXNlCi0gICAgICAgICMgZ2l0IGRpZmYgZm9y
IGdpdCBjaGVja291dHMsIHdoaWNoIGRvZXNuJ3QgcmVzcGVjdCAtLXNxdWFzaCBhbmQgLS1naXQt
Y29tbWl0LgorICAgICAgICAjIGdpdCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vz
bid0IHJlc3BlY3QgLS1naXQtY29tbWl0LgogICAgICAgICBpc3N1ZSwgcGF0Y2hzZXQgPSB1cGxv
YWQuUmVhbE1haW4oYXJncywgZGF0YT1kaWZmKQogICAgICAgICByZXR1cm4gaXNzdWUKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggYmI0
Nzg4YTU1ZGI2OGZiYzcxMDQ4NDk5NjNlODliMjZiYzQzZDU4NS4uM2JhMGZhZTllODVmMGY3ZTUw
YWNiMmUyZDYyM2VlZGE5Y2MyNGZiNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9vcHRwYXJzZXIucHkKQEAgLTE0Nyw4ICsxNDcsNyBAQCBjbGFzcyBDb21tYW5k
T3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9uZSwK
ICAgICAgICAgICAgICAgICAgaXNfdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWlu
X2NvbmZpZGVuY2U9MSwKLSAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAot
ICAgICAgICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgorICAgICAgICAgICAgICAgICBvdXRwdXRf
Zm9ybWF0PSJlbWFjcyIpOgogICAgICAgICBpZiBmaWx0ZXJfcnVsZXMgaXMgTm9uZToKICAgICAg
ICAgICAgIGZpbHRlcl9ydWxlcyA9IFtdCiAKQEAgLTE2Nyw3ICsxNjYsNiBAQCBjbGFzcyBDb21t
YW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaXNfdmVyYm9zZSA9IGlzX3Zl
cmJvc2UKICAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCiAgICAg
ICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKLSAgICAgICAgc2VsZi5zcXVh
c2ggPSBzcXVhc2gKIAogICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9f
ZXFfXyhzZWxmLCBvdGhlcik6CkBAIC0xODIsOCArMTgwLDYgQEAgY2xhc3MgQ29tbWFuZE9wdGlv
blZhbHVlcyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHNl
bGYub3V0cHV0X2Zvcm1hdCAhPSBvdGhlci5vdXRwdXRfZm9ybWF0OgogICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYuc3F1YXNoICE9IG90aGVyLnNxdWFzaDoKLSAgICAg
ICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTIxOCw4ICsy
MTQsNiBAQCBjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdz
WydmaWx0ZXInXSA9ICIsIi5qb2luKGZpbHRlcl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5n
aXRfY29tbWl0OgogICAgICAgICAgICAgZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0
X2NvbW1pdAotICAgICAgICBpZiBvcHRpb25zLnNxdWFzaDoKLSAgICAgICAgICAgIGZsYWdzWydz
cXVhc2gnXSA9IG9wdGlvbnMuc3F1YXNoCiAKICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAg
ICAgICAjIEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0z
MDksNyArMzAzLDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgcGFy
c2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZmlsdGVyLXJ1bGVzIiwgbWV0YXZhcj0iUlVMRVMiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJmaWx0ZXJfdmFsdWUiLCBoZWxwPWZpbHRl
cl9oZWxwKQogCi0gICAgICAgIGdpdF9jb21taXRfaGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMg
aW4gdGhlIGdpdmVuIGdpdCBjb21taXQuICIKKyAgICAgICAgZ2l0X2NvbW1pdF9oZWxwID0gKCJj
aGVjayBhbGwgY2hhbmdlcyBpbiB0aGUgZ2l2ZW4gY29tbWl0LiAiCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIg
Y29tbW1pdF9pZCIpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZyIsICItLWdpdC1kaWZm
IiwgIi0tZ2l0LWNvbW1pdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNP
TU1JVCIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPWdpdF9jb21taXRfaGVscCwpCkBAIC0zMzAs
MTQgKzMyNCw2IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9Im91dHB1dF9mb3JtYXQiLCBkZWZhdWx0PWRlZmF1bHRfb3V0cHV0
X2Zvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1vdXRwdXRfZm9ybWF0X2hl
bHApCiAKLSAgICAgICAgc3F1YXNoX2hlbHAgPSAoIkFsbCBkaWZmcyBmcm9tIHRoZSByZW1vdGUg
YnJhbmNoIGFyZSBjaGVja2VkLiIKLSAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVk
LCBwcm9tcHRzIHdoZXRoZXIgdG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1p
dHMuIikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQotICAgICAg
ICBzcXVhc2hfaGVscCA9ICgiT25seSB3b3JraW5nIGNvcHkgZGlmZnMgYXJlIGNoZWNrZWQuIgot
ICAgICAgICAgICAgICAgICAgICAgICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBz
cXVhc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIu
YWRkX29wdGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1
YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQogICAgICAgICB2ZXJib3NlX2hlbHAgPSAiZW5hYmxl
IHZlcmJvc2UgbG9nZ2luZy4iCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdiIsICItLXZl
cmJvc2UiLCBkZXN0PSJpc192ZXJib3NlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD12ZXJib3NlX2hlbHApCkBAIC00
NTgsOCArNDQ0LDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1naXRfY29tbWl0LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc192ZXJib3NlPWlzX3ZlcmJvc2UsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPW1pbl9j
b25maWRlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRf
Zm9ybWF0PW91dHB1dF9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNxdWFzaD1vcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0KQogCiAgICAgICAgIHJldHVybiAo
cGF0aHMsIG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGVfcmVmZXJlbmNlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGVfcmVmZXJlbmNlcy5weQppbmRleCBiYWIzMGNhZmM1NWJhZThjMGU3MDEyYzI5MzA2OTc3NDky
M2JhM2ZkLi5hNDJiNjlkZTU4ZDk5NDMyMzYxMWIxOGI0YmQwZDUzOWIxNTJlYzkzIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBAIC02
Nyw2ICs2Nyw2IEBAIGNsYXNzIFdlYktpdENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICIiIlJl
dHVybiB0aGUgY2hlY2tvdXQgcm9vdCBhcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgogICAgICAgICBy
ZXR1cm4gc2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2Vs
ZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVf
cGF0Y2goZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0
X2NvbW1pdCk6CisgICAgICAgIHJldHVybiBzZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21t
aXQpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9kb3dubG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9kb3dubG9hZC5weQppbmRleCBhODViMDlhZDQ0ZTJhNTgxMGFiYmUyNzU5ZTY3ZmIwZjBj
YzNmYjlmLi5lODhmOGEyMzYxN2Y2MDczZDFkM2U4ODZlM2ZkYjM3ZmRhYzA4YTZiIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25s
b2FkLnB5CkBAIC05NCw3ICs5NCw3IEBAIElmIGEgYnVnIGlkIGlzIHByb3ZpZGVkLCBvciBvbmUg
Y2FuIGJlIGZvdW5kIGluIHRoZSBDaGFuZ2VMb2cgbGFuZCB3aWxsIHVwZGF0ZSB0CiAKICAgICBk
ZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHJl
dHVybiB7Ci0gICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wu
Y2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0
aW9ucy5zcXVhc2gpLAorICAgICAgICAgICAgImJ1Z19pZCI6IChhcmdzIGFuZCBhcmdzWzBdKSBv
ciB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21t
aXQpLAogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggZTY4MmNhNzY5MzRkMTI3MWJmYzJjMmUx
NmU0NjI3NjU5YjdmMGYwOC4uMDlkNDlkOTYyYmE4OWViNDFkZmMyN2UwNzEzNDJmMzVlZmRiYzhj
NiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L3VwbG9hZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFu
ZHMvdXBsb2FkLnB5CkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJy
ZW50RGlmZihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0X18o
c2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNx
dWFzaCwKICAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgXQog
ICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25z
PW9wdGlvbnMpCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50
RGlmZihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwg
b3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgICMgVGhpcyBjb21tYW5kIGlzIGEgdXNlZnVs
IHRlc3QgdG8gbWFrZSBzdXJlIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdAogICAgICAg
ICAjIGFsd2F5cyByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJy
ZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAgICAgICBwcmludCAiJXMiICUgdG9vbC5jaGVja291
dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9w
dGlvbnMuc3F1YXNoKS5tZXNzYWdlKCkKKyAgICAgICAgcHJpbnQgIiVzIiAlIHRvb2wuY2hlY2tv
dXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KS5t
ZXNzYWdlKCkKIAogCiBjbGFzcyBDbGVhblBlbmRpbmdDb21taXQoQWJzdHJhY3REZWNsYXJhdGl2
ZUNvbW1hbmQpOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRp
bmdDb21tYW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgICAgICMgUGVyZmVyIGEg
YnVnIGlkIHBhc3NlZCBhcyBhbiBhcmd1bWVudCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlmZiAo
aS5lLiBDaGFuZ2VMb2dzKS4KICAgICAgICAgYnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQogICAg
ICAgICBpZiBub3QgYnVnX2lkOgotICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgp
LmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFz
aCkKKyAgICAgICAgICAgIGJ1Z19pZCA9IHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNf
Y29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAgICAg
ZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtNDE4LDEx
ICs0MTcsMTEgQEAgY2xhc3MgQ3JlYXRlQnVnKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToK
ICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBjb21t
ZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25z
LnNxdWFzaCkKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgpLmNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAg
ICAgICBidWdfdGl0bGUgPSBjb21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwg
c3RyaXBfdXJsPVRydWUpCiAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjb21taXRfbWVzc2Fn
ZS5ib2R5KGxzdHJpcD1UcnVlKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9w
YXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICBkaWZmID0g
dG9vbC5zY20oKS5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBidWdf
aWQgPSB0b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9u
cy5jb21wb25lbnQsIGRpZmYsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmll
dz1vcHRpb25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9j
b21taXQpCiAKICAgICBkZWYgcHJvbXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXgg
OGVhNjc1NjVhMTRiYWI5ZmM4NmJiNWFkZGFjOTIzN2RhYTQ0ZTY3Zi4uMDM3OTZlOGJjMTgwMmY0
N2JhNmFlNmY3OTUxNTNmMGEyOThhNjNlYiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAtMzg0LDcgKzM4NCw3IEBAIGNsYXNzIE1vY2tTQ00o
TW9jayk6CiAgICAgICAgICMgd2lsbCBhY3R1YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3
ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxseSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAg
c2VsZi5jaGVja291dF9yb290ID0gc2VsZi5mYWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBj
cmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY3JlYXRlX3Bh
dGNoKHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAgIGRl
ZiBjb21taXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAgLTQy
NCwxMiArNDI0LDEyIEBAIGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdf
aWRfZm9yX3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAxMjM0
NQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNo
KToKKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAg
ICAgIyBJZGVhbGx5IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUu
ICBUaGUgcHJvYmxlbSBpcwogICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0
dWFsbHkgcmVhZCB0aGUgcGF0Y2ggZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAotICAg
IGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1
YXNoKToKKyAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9j
b21taXQpOgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IE1vY2soKQogICAgICAgICBjb21taXRf
bWVzc2FnZS5tZXNzYWdlID0gbGFtYmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0
aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJhY3RlcnMuIgogICAgICAgICByZXR1cm4gY29tbWl0X21l
c3NhZ2UKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IGFiYWZlNjM5OThmMjAxZjlkNjAxMjRkNmUyMDRjMjU5
MTkzZDBlNTYuLmFkZjYyZDZkNDM2MzA4NDljMzZmYjBlNTEzMDljYjkxOTQwZjBiMDMgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0
ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3Ry
YWN0c3RlcC5weQpAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKIAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7Ci0g
ICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGY6IHNlbGYuX3Rvb2wuc2NtKCkuY3JlYXRlX3BhdGNo
KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAotICAgICAg
ICAiY2hhbmdlbG9ncyI6IGxhbWJkYSBzZWxmOiBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZp
ZWRfY2hhbmdlbG9ncyhzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1
YXNoKSwKKyAgICAgICAgImRpZmYiOiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5zY20oKS5jcmVh
dGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKKyAgICAgICAgImNoYW5nZWxvZ3Mi
OiBsYW1iZGEgc2VsZjogc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3Mo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKICAgICB9CiAKICAgICBkZWYgY2FjaGVkX2xvb2t1
cChzZWxmLCBzdGF0ZSwga2V5LCBwcm9taXNlPU5vbmUpOgpAQCAtNzAsOCArNzAsNiBAQCBjbGFz
cyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICMg
V2UgbmVlZCB0aGVzZSBvcHRpb25zIGhlcmUgYmVjYXVzZSBjYWNoZWRfbG9va3VwIHVzZXMgdGhl
bS4gIDooCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRp
b25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAK
ICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxj
b21taXQucHkKaW5kZXggZDZiMDI2ZGUyNTgyMWUzNDk2YWI4ZThkMmJhNDYxMTg1MTE1Njc4OC4u
M2RjZDhkOTMxYTFmMzY1YmIzM2VmYTZlM2U4ZThiZjViMGJkYzFhMyAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxj
b21taXQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fw
cGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBwbHlQ
YXRjaFdpdGhMb2NhbENvbW1pdChBcHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRl
KToKICAgICAgICAgQXBwbHlQYXRjaC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMubG9jYWxfY29tbWl0OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxm
Ll90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxm
Ll90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21t
aXQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X2xvY2FsbHlfd2l0
aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSBvciBzdGF0ZVsicGF0Y2giXS5uYW1l
KCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
Y2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
aGVja3N0eWxlLnB5CmluZGV4IDkzZTYyMTUzMTQ0ZmY3YWQ1YTc3ZDM3MWJlYzcyMTIzNzY3MDVi
YmQuLmFmMzgyMTQ0MGE5NWVjOWM4NTA4NjBmMTIyYjdmMzU1ODFmYmEyNzMgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5
CkBAIC00MCw4ICs0MCw2IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAgICAg
ICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5jaGVj
a19zdHlsZSwKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9w
dGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0K
IAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpAQCAtNTMsMTAgKzUxLDYgQEAgY2xhc3MgQ2hl
Y2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQ6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0IikKICAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgaWYgc2VsZi5f
dG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKCItLXNxdWFzaCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBh
cmdzLmFwcGVuZCgiLS1uby1zcXVhc2giKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoImNoZWNrLXdlYmtpdC1zdHlsZSIsIGFyZ3MpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVz
dC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxl
X3VuaXR0ZXN0LnB5CmluZGV4IGEyM2VhMWIzYzVkNDZmMmVhM2IzOGU0NjJmM2I5MWM5NjUyYjM4
ZDEuLjk5ZjMwMGY3MjNkYzM4OWM3N2NiYTY1N2I2YzgxOTA0OTJhZWM3YmYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0
ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVj
a3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC0zNSwxMiArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wu
c3RlcHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQogCiAKIGNsYXNzIENoZWNrU3R5bGVU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vycm9y
KHNlbGYpOgotICAgICAgICAiIiJzaG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4gVGhh
dCBlcnJvciBzaG91bGQgbm90IGJlIGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAgIGRl
ZiBzaG91bGRfc3F1YXNoKHNxdWFzaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvciht
ZXNzYWdlPSJEdW1teSBlcnJvciIpCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAg
ICAgdG9vbC5fc2NtLnNob3VsZF9zcXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0ZXAg
PSBDaGVja1N0eWxlKHRvb2wsIE1vY2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2Ny
aXB0RXJyb3IsIHN0ZXAucnVuLCBbXSkKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCA3YmY4YjhhYTI3NjYxMDQ5
MDZjMjZhMWQ5Mzc3Y2QzMTVmOGM1YTc4Li4yMTZlOGMzYjdlZjExZTk1MTMwNDgwNjYyNGRjMGVl
OTk1NDM5OGY5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvY29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9jb21taXQucHkKQEAgLTM1LDEzICszNSwxMCBAQCBjbGFzcyBDb21taXQoQWJzdHJhY3RT
dGVwKToKICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVw
Lm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAg
ICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAg
ICAgIF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgotICAgICAgICBjb21taXRfbWVzc2Fn
ZSA9IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQo
c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzZWxmLl9vcHRpb25zLnNxdWFzaCkKKyAgICAgICAg
Y29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9y
X3RoaXNfY29tbWl0KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgaWYgbGVuKGNv
bW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSkgPCA1MDoKICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigiQXR0ZW1wdGVkIHRvIGNvbW1pdCB3aXRoIGEgY29tbWl0IG1lc3NhZ2Ugc2hvcnRlciB0aGFu
IDUwIGNoYXJhY3RlcnMuICBFaXRoZXIgeW91ciBwYXRjaCBpcyBtaXNzaW5nIGEgQ2hhbmdlTG9n
IG9yIHdlYmtpdC1wYXRjaCBtYXkgaGF2ZSBhIGJ1Zy4iKQotICAgICAgICBzdGF0ZVsiY29tbWl0
X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRfbWVz
c2FnZS5tZXNzYWdlKCksCi0gICAgICAgICAgICBnaXRfY29tbWl0PXNlbGYuX29wdGlvbnMuZ2l0
X2NvbW1pdCwgc3F1YXNoPXNlbGYuX29wdGlvbnMuc3F1YXNoKQorICAgICAgICBzdGF0ZVsiY29t
bWl0X3RleHQiXSA9IHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X3dpdGhfbWVzc2FnZShjb21taXRf
bWVzc2FnZS5tZXNzYWdlKCksIGdpdF9jb21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KQpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL29wdGlv
bnMucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5w
eQppbmRleCBmYTM2ZjczMDc4NjE0YTM3ODgwNjVlMDM3OGI5NmUxMzhhODczZjM4Li43YjUxZmNh
Mjk2MzdiMDFjMDUwMWYxNDMzYWU0MmExNDA1NzI1OTRkIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weQpAQCAtNDIsMTAgKzQyLDgg
QEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGRlc2NyaXB0aW9uID0gbWFrZV9vcHRpb24o
Ii1tIiwgIi0tZGVzY3JpcHRpb24iLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVz
dD0iZGVzY3JpcHRpb24iLCBoZWxwPSJEZXNjcmlwdGlvbiBzdHJpbmcgZm9yIHRoZSBhdHRhY2ht
ZW50IChkZWZhdWx0OiBcInBhdGNoXCIpIikKICAgICBlbWFpbCA9IG1ha2Vfb3B0aW9uKCItLWVt
YWlsIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRlc3Q9ImVtYWlsIiwgaGVscD0i
RW1haWwgYWRkcmVzcyB0byB1c2UgaW4gQ2hhbmdlTG9ncy4iKQogICAgIGZvcmNlX2NsZWFuID0g
bWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJm
b3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFuIHdvcmtpbmcgZGlyZWN0b3J5
IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2FsIGNoYW5nZXMgYW5kIGNvbW1p
dHMpIikKLSMgRklYTUU6IE1ha2UgY29tbWl0IHJhbmdlcyB0cmVhdCBlYWNoIGNvbW1pdCBzZXBh
cmF0ZWx5IGluc3RlYWQgb2Ygc3F1YXNoaW5nIHRoZW0gaW50byBvbmUuCi0gICAgZ2l0X2NvbW1p
dCA9IG1ha2Vfb3B0aW9uKCItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0
X2NvbW1pdCIsIGhlbHA9IkxvY2FsIGdpdCBjb21taXQgdG8gdXBsb2FkL2xhbmQuIElmIGEgcmFu
Z2UsIHRoZSBjb21taXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4iKQorICAgIGdpdF9jb21taXQg
PSBtYWtlX29wdGlvbigiLWciLCAiLS1naXQtY29tbWl0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9
ImdpdF9jb21taXQiLCBoZWxwPSJPcGVyYXRlIG9uIGEgbG9jYWwgY29tbWl0LiBJZiBhIHJhbmdl
LCB0aGUgY29tbWl0cyBhcmUgc3F1YXNoZWQgaW50byBvbmUuIikKICAgICBsb2NhbF9jb21taXQg
PSBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21taXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0
PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0
IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKQotICAgIG5vX3NxdWFzaCA9IG1ha2Vfb3B0aW9uKCIt
LW5vLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJE
b24ndCBzcXVhc2ggbG9jYWwgY29tbWl0cyBpbnRvIG9uZSBvbiB1cGxvYWQvbGFuZCAoZ2l0LW9u
bHkpLiIpCiAgICAgbm9uX2ludGVyYWN0aXZlID0gbWFrZV9vcHRpb24oIi0tbm9uLWludGVyYWN0
aXZlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ibm9uX2ludGVyYWN0aXZlIiwgZGVmYXVs
dD1GYWxzZSwgaGVscD0iTmV2ZXIgcHJvbXB0IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3QgYXMgcG9z
c2libGUuIikKICAgICBvYnNvbGV0ZV9wYXRjaGVzID0gbWFrZV9vcHRpb24oIi0tbm8tb2Jzb2xl
dGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ib2Jzb2xldGVfcGF0Y2hlcyIsIGRlZmF1
bHQ9VHJ1ZSwgaGVscD0iRG8gbm90IG9ic29sZXRlIG9sZCBwYXRjaGVzIGJlZm9yZSBwb3N0aW5n
IHRoaXMgb25lLiIpCiAgICAgb3Blbl9idWcgPSBtYWtlX29wdGlvbigiLS1vcGVuLWJ1ZyIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im9wZW5fYnVnIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0i
T3BlbnMgdGhlIGFzc29jaWF0ZWQgYnVnIGluIGEgYnJvd3Nlci4iKQpAQCAtNTUsNiArNTMsNSBA
QCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgcmVxdWVzdF9jb21taXQgPSBtYWtlX29wdGlv
bigiLS1yZXF1ZXN0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcXVlc3Rf
Y29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFyayB0aGUgcGF0Y2ggYXMgbmVlZGluZyBh
dXRvLWNvbW1pdCBhZnRlciByZXZpZXcuIikKICAgICByZXZpZXcgPSBtYWtlX29wdGlvbigiLS1u
by1yZXZpZXciLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0icmV2aWV3IiwgZGVmYXVsdD1U
cnVlLCBoZWxwPSJEbyBub3QgbWFyayB0aGUgcGF0Y2ggZm9yIHJldmlldy4iKQogICAgIHJldmll
d2VyID0gbWFrZV9vcHRpb24oIi1yIiwgIi0tcmV2aWV3ZXIiLCBhY3Rpb249InN0b3JlIiwgdHlw
ZT0ic3RyaW5nIiwgZGVzdD0icmV2aWV3ZXIiLCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9ncyB0byBz
YXkgUmV2aWV3ZWQgYnkgUkVWSUVXRVIuIikKLSAgICBzcXVhc2ggPSBtYWtlX29wdGlvbigiLXMi
LCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJT
cXVhc2ggYWxsIGxvY2FsIGNvbW1pdHMgaW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5
KS4iKQogICAgIHRlc3QgPSBtYWtlX29wdGlvbigiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IlJ1biBydW4td2Via2l0LXRlc3Rz
IGJlZm9yZSBjb21taXR0aW5nLiIpCiAgICAgdXBkYXRlID0gbWFrZV9vcHRpb24oIi0tbm8tdXBk
YXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwg
aGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3JraW5nIGRpcmVjdG9yeS4iKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5n
ZWxvZy5weQppbmRleCAzYTVjMDEzYTA1M2I4Yzg0Yjk3MjMyYzUwMTE3OWZjZDUzY2VhMjU0Li4y
MjhjMGIwNDNjYWJkZmNhMmZiMzViNTNhNWNlYzI1OTY4YzFmZTI3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5n
ZWxvZy5weQpAQCAtNDIsOCArNDIsNiBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0
U3RlcCk6CiAgICAgICAgICAgICBPcHRpb25zLnF1aWV0LAogICAgICAgICAgICAgT3B0aW9ucy5l
bWFpbCwKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlv
bnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAog
ICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpAQCAtNTUsMTAgKzUzLDkgQEAgY2xhc3MgUHJlcGFy
ZUNoYW5nZUxvZyhBYnN0cmFjdFN0ZXApOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tYnVn
PSVzIiAlIHN0YXRlWyJidWdfaWQiXSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5lbWFpbDoK
ICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWVtYWlsPSVzIiAlIHNlbGYuX29wdGlvbnMuZW1h
aWwpCi0gICAgICAgIGlmIHNlbGYuX3Rvb2wuc2NtKCkuc2hvdWxkX3NxdWFzaChzZWxmLl9vcHRp
b25zLnNxdWFzaCk6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1tZXJnZS1iYXNlPSVzIiAl
IHNlbGYuX3Rvb2wuc2NtKCkuc3ZuX21lcmdlX2Jhc2UoKSkKLSAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy5naXRfY29tbWl0OgotICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdD0l
cyIgJSBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpCisKKyAgICAgICAgaWYgc2VsZi5fdG9vbC5z
Y20oKS5zdXBwb3J0X2xvY2FsX2NvbW1pdHMoKToKKyAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5tZXJnZV9iYXNlKHNlbGYuX29wdGlv
bnMuZ2l0X2NvbW1pdCkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fdG9vbC5l
eGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3MsIHNlbGYuX29wdGlvbnMucXVpZXQp
CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJl
cGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CmluZGV4IDRkMjk5ZmEyMWFk
M2FiYzQyOWUyODIzNTk0NGVmMTA2NTdjMjM3NjUuLjBlNzhiYzIyOTVkMGQzZTZhMDMzZTYxNjMw
MWYzYjBhZTc0ZjJmOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5
CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2dGb3JSZXZlcnQoQWJzdHJh
Y3RTdGVwKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKICAgICAgICAgIyBUaGlzIGNvdWxk
IG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5nIGEgLS1yZXZlcnQ9IG9wdGlvbi4K
ICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicHJlcGFyZS1DaGFuZ2VMb2ciKQotICAgICAgICBj
aGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkubW9kaWZpZWRfY2hhbmdlbG9n
cyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhz
ID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1O
b25lKQogICAgICAgICBidWdfdXJsID0gc2VsZi5fdG9vbC5idWdzLmJ1Z191cmxfZm9yX2J1Z19p
ZChzdGF0ZVsiYnVnX2lkIl0pIGlmIHN0YXRlWyJidWdfaWQiXSBlbHNlIE5vbmUKICAgICAgICAg
Zm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19wYXRoczoKICAgICAgICAgICAgICMgRklY
TUU6IFNlZW1zIHdlIHNob3VsZCBwcmVwYXJlIHRoZSBtZXNzYWdlIG91dHNpZGUgb2YgY2hhbmdl
bG9ncy5weSBhbmQgdGhlbiBqdXN0IHBhc3MgaW4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxv
Z3N3aXRocmV2aWV3ZXIucHkKaW5kZXggZWY0YmFhMjUxMjQxM2U1NmRkOWZiOWUxZmY5NzRiNmRi
OGYyYmU3NC4uZTQ2Yjc5MDBjZWQ5Mjg1ZTcxZDY3ODQ5ZjY1ZTJlZjg0NGU2Njg3YiAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5n
ZWxvZ3N3aXRocmV2aWV3ZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKQEAgLTQwLDggKzQwLDYg
QEAgY2xhc3MgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgogICAg
ICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlv
bnMuZ2l0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMucmV2aWV3ZXIsCi0gICAgICAgICAg
ICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAg
ICBdCiAKICAgICBkZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21fYnVnKHNlbGYsIGJ1Z19pZCk6CmRp
ZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRh
dGVyZXZpZXdlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92
YWxpZGF0ZXJldmlld2VyLnB5CmluZGV4IDlmNGQ0NGUwYjZjNWIwOWE2YTRhMzhmNDVmZjBjYmNl
ZDUzZDViNWMuLmJkZjcyOWU0YmZlMmQwNDQzYjU3OTE4OGQ1OTY5MmNjMDY2NjQxZDcgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJl
dmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92
YWxpZGF0ZXJldmlld2VyLnB5CkBAIC00MSw4ICs0MSw2IEBAIGNsYXNzIFZhbGlkYXRlUmV2aWV3
ZXIoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4g
QWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1p
dCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5z
cXVhc2gsCiAgICAgICAgIF0KIAogICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IG1v
dmUgb250byBDaGFuZ2VMb2dFbnRyeQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>58688</attachid>
            <date>2010-06-14 12:32:13 -0700</date>
            <delta_ts>2010-07-02 14:44:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100614123212.patch</filename>
            <type>text/plain</type>
            <size>59623</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxM2Q5ZjIwMWUxM2Q0YjY2ZWY5NDZhYmQxM2U4YjdkMDJkYzMxOWRlLi5kMDQ0N2Q4
NDQ3YzhjYTZmMjc0OTQxYjRmOTBmYjIzMjZhNmViMmEyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLiBTZXR0aW5nIGdpdCBjb25maWcg
d2Via2l0LXBhdGNoLmNvbW1pdF9zaG91bGRfYWx3YXlzX3NxdWFzaAorICAgICAgICB0cnVlIGJ5
cGFzc2VzIHRoZSBwcm9tcHQuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
YXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5OgorCiAy
MDEwLTA2LTE0ICBNYWhlc2ggS3Vsa2FybmkgIDxtYWhlc2gua3Vsa2FybmlAbm9raWEuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IExhc3psbyBHb21ib3MuCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hl
Y2std2Via2l0LXN0eWxlCmluZGV4IDE5ZDM3NjI3NTU5MjdkYmU1MjkyYmY1OTE1OTcwOGQ5MjFh
YjZkMjcuLjlhMWFlMWUzYmY0ZDAwYjQ0ODYzZTVmM2RlNzk0ZGZjMTM4OGIyYWQgMTAwNzU1Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCisrKyBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvY2hlY2std2Via2l0LXN0eWxlCkBAIC0xMTUsNyArMTE1LDcgQEAgZGVmIG1h
aW4oKToKICAgICBpZiBwYXRoczoKICAgICAgICAgZmlsZV9yZWFkZXIucHJvY2Vzc19wYXRocyhw
YXRocykKICAgICBlbHNlOgotICAgICAgICBwYXRjaCA9IGNoZWNrb3V0LmNyZWF0ZV9wYXRjaChv
cHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICBwYXRjaCA9IGNoZWNr
b3V0LmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgIHBhdGNoX2NoZWNr
ZXIgPSBQYXRjaFJlYWRlcihmaWxlX3JlYWRlcikKICAgICAgICAgcGF0Y2hfY2hlY2tlci5jaGVj
ayhwYXRjaCkKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvYXBpLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvYXBpLnB5CmluZGV4IGE1YWM5Mzk4ZTg4ZTc1MWZlODU0NDM2NGI2OWMzNjM1ZmUx
MGE3ZjEuLmNhMjhlMzIzMzI1ODcyZGNlYzAxZDEzYWQxNjdmNTI1YmY3NzZkMjMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkK
QEAgLTgzLDE2ICs4MywxNiBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdf
aWRfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKICAgICAgICAgcmV0dXJuIHNlbGYuY29t
bWl0X2luZm9fZm9yX3JldmlzaW9uKHJldmlzaW9uKS5idWdfaWQoKQogCi0gICAgZGVmIG1vZGlm
aWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgbW9kaWZp
ZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgIyBTQ00gcmV0dXJucyBw
YXRocyByZWxhdGl2ZSB0byBzY20uY2hlY2tvdXRfcm9vdAogICAgICAgICAjIENhbGxlcnMgKGVz
cGVjaWFsbHkgdGhvc2UgdXNpbmcgdGhlIENoYW5nZUxvZyBjbGFzcykgbWF5CiAgICAgICAgICMg
ZXhwZWN0IGFic29sdXRlIHBhdGhzLCBzbyB0aGlzIG1ldGhvZCByZXR1cm5zIGFic29sdXRlIHBh
dGhzLgotICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5nZWRfZmlsZXMoZ2l0
X2NvbW1pdCwgc3F1YXNoKQorICAgICAgICBjaGFuZ2VkX2ZpbGVzID0gc2VsZi5fc2NtLmNoYW5n
ZWRfZmlsZXMoZ2l0X2NvbW1pdCkKICAgICAgICAgYWJzb2x1dGVfcGF0aHMgPSBbb3MucGF0aC5q
b2luKHNlbGYuX3NjbS5jaGVja291dF9yb290LCBwYXRoKSBmb3IgcGF0aCBpbiBjaGFuZ2VkX2Zp
bGVzXQogICAgICAgICByZXR1cm4gW3BhdGggZm9yIHBhdGggaW4gYWJzb2x1dGVfcGF0aHMgaWYg
c2VsZi5faXNfcGF0aF90b19jaGFuZ2Vsb2cocGF0aCldCiAKLSAgICBkZWYgY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6Ci0gICAgICAgIGNo
YW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0LCBzcXVh
c2gpCisgICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29t
bWl0KToKKyAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dz
KGdpdF9jb21taXQpCiAgICAgICAgIGlmIG5vdCBsZW4oY2hhbmdlbG9nX3BhdGhzKToKICAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkZvdW5kIG5vIG1vZGlmaWVkIENoYW5n
ZUxvZ3MsIGNhbm5vdCBjcmVhdGUgYSBjb21taXQgbWVzc2FnZS5cbiIKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJBbGwgY2hhbmdlcyByZXF1aXJlIGEgQ2hhbmdlTG9nLiAgU2VlOlxu
IgpAQCAtMTA5LDkgKzEwOSw5IEBAIGNsYXNzIENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICMg
RklYTUU6IFdlIHNob3VsZCBzb3J0IGFuZCBsYWJlbCB0aGUgQ2hhbmdlTG9nIG1lc3NhZ2VzIGxp
a2UgY29tbWl0LWxvZy1lZGl0b3IgZG9lcy4KICAgICAgICAgcmV0dXJuIENvbW1pdE1lc3NhZ2Uo
IiIuam9pbihjaGFuZ2Vsb2dfbWVzc2FnZXMpLnNwbGl0bGluZXMoKSkKIAotICAgIGRlZiBidWdf
aWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIGJ1
Z19pZF9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgIHJldHVybiBwYXJzZV9idWdfaWQoc2VsZi5jb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQoZ2l0X2NvbW1pdCwgc3F1YXNoKS5tZXNzYWdlKCkpCisgICAgICAgICAgICByZXR1
cm4gcGFyc2VfYnVnX2lkKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQpLm1lc3NhZ2UoKSkKICAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgogICAgICAg
ICAgICAgcGFzcyAjIFdlIG1pZ2h0IG5vdCBoYXZlIENoYW5nZUxvZ3MuCiAKQEAgLTEzMSw3ICsx
MzEsNyBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogCiAgICAgICAgICMgV2UgcmV2ZXJ0IHRo
ZSBDaGFuZ2VMb2dzIGJlY2F1c2UgcmVtb3ZpbmcgbGluZXMgZnJvbSBhIENoYW5nZUxvZwogICAg
ICAgICAjIGRvZXNuJ3QgbWFrZSBzZW5zZS4gIENoYW5nZUxvZ3MgYXJlIGFwcGVuZCBvbmx5Lgot
ICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2Nv
bW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYu
bW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpCiAgICAgICAgIGlmIGxlbihjaGFu
Z2Vsb2dfcGF0aHMpOgogICAgICAgICAgICAgc2VsZi5fc2NtLnJldmVydF9maWxlcyhjaGFuZ2Vs
b2dfcGF0aHMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQppbmRleCAxNDM2Mzc5YThkNzNiNWQy
ODQ5Y2U4NzFkMjQ1MDMwODUwZjNhMmY3Li5mZGZkODc5OGRkNWNiOTdlM2UxYzVhMjk2YTZjMDYw
YmIzYzE2YzkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CkBAIC0xMTQsMTEgKzExNCwxMSBA
QCBjbGFzcyBDb21taXRNZXNzYWdlRm9yVGhpc0NvbW1pdFRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgogICAgICMgQ2hhbmdlTG9nIGlzIGRpZmZpY3VsdCB0byBtb2NrIGF0IGN1cnJlbnQuCiAgICAg
ZGVmIHRlc3RfY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBj
aGVja291dCA9IENoZWNrb3V0KE5vbmUpCi0gICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5n
ZWxvZ3MgPSBsYW1iZGEgZ2l0X2NvbW1pdCwgc3F1YXNoOiBbIkNoYW5nZUxvZzEiLCAiQ2hhbmdl
TG9nMiJdCisgICAgICAgIGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MgPSBsYW1iZGEgZ2l0
X2NvbW1pdDogWyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxvZzIiXQogICAgICAgICBvdXRwdXQgPSBP
dXRwdXRDYXB0dXJlKCkKICAgICAgICAgZXhwZWN0ZWRfc3RkZXJyID0gIlBhcnNpbmcgQ2hhbmdl
TG9nOiBDaGFuZ2VMb2cxXG5QYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMlxuIgogICAgICAg
ICBjb21taXRfbWVzc2FnZSA9IG91dHB1dC5hc3NlcnRfb3V0cHV0cyhzZWxmLCBjaGVja291dC5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQsCi0gICAgICAgICAgICBrd2FyZ3M9eyJnaXRf
Y29tbWl0IjogTm9uZSwgInNxdWFzaCI6IEZhbHNlfSwgZXhwZWN0ZWRfc3RkZXJyPWV4cGVjdGVk
X3N0ZGVycikKKyAgICAgICAgICAgIGt3YXJncz17ImdpdF9jb21taXQiOiBOb25lfSwgZXhwZWN0
ZWRfc3RkZXJyPWV4cGVjdGVkX3N0ZGVycikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21t
aXRfbWVzc2FnZS5tZXNzYWdlKCksIHNlbGYuZXhwZWN0ZWRfY29tbWl0X21lc3NhZ2UpCiAKIApA
QCAtMTYzLDEzICsxNjMsMTMgQEAgY2xhc3MgQ2hlY2tvdXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKICAgICBkZWYgdGVzdF9idWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYpOgogICAgICAgICBz
Y20gPSBNb2NrKCkKICAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChzY20pCi0gICAgICAgIGNo
ZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRfY29tbWl0
LCBzcXVhc2g6IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5nZWxvZzFlbnRyeTEp
LmNvbnRlbnRzKCkuc3BsaXRsaW5lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNr
b3V0LmJ1Z19pZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2Up
LCAzNjYyOSkKKyAgICAgICAgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0
ID0gbGFtYmRhIGdpdF9jb21taXQ6IENvbW1pdE1lc3NhZ2UoQ2hhbmdlTG9nRW50cnkoX2NoYW5n
ZWxvZzFlbnRyeTEpLmNvbnRlbnRzKCkuc3BsaXRsaW5lcygpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNoZWNrb3V0LmJ1Z19pZF9mb3JfdGhpc19jb21taXQoZ2l0X2NvbW1pdD1Ob25lKSwg
MzY2MjkpCiAKICAgICBkZWYgdGVzdF9tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYpOgogICAgICAg
ICBzY20gPSBNb2NrKCkKICAgICAgICAgc2NtLmNoZWNrb3V0X3Jvb3QgPSAiL2Zvby9iYXIiCi0g
ICAgICAgIHNjbS5jaGFuZ2VkX2ZpbGVzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJm
aWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQorICAgICAgICBz
Y20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0OiBbImZpbGUxIiwgIkNoYW5nZUxv
ZyIsICJyZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCiAgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tv
dXQoc2NtKQogICAgICAgICBleHBlY3RlZF9jaGFuZ2xvZ3MgPSBbIi9mb28vYmFyL0NoYW5nZUxv
ZyIsICIvZm9vL2Jhci9yZWxhdGl2ZS9wYXRoL0NoYW5nZUxvZyJdCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNx
dWFzaD1GYWxzZSksIGV4cGVjdGVkX2NoYW5nbG9ncykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSksIGV4cGVjdGVk
X2NoYW5nbG9ncykKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L3NjbS5weQppbmRleCBmYzRjNmZkY2U3ZTVjZDI3ZTU0OWQwMWI2OTMwZDgxYzhl
NmIxM2M1Li4zZjE5YzdjYzM2YTUwYmNhZjY0ZDk3MDlmNTllOTk2NDQ5NTQ0MmY5IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5
CkBAIC0zMyw3ICszMyw2IEBAIGltcG9ydCBvcwogaW1wb3J0IHJlCiAKIGZyb20gd2Via2l0cHku
Y29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2NvbW1hbmQsIFNj
cmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgog
ZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJy
b3IsIGxvZwogCiAKQEAgLTkyLDYgKzkxLDE3IEBAIGRlZiBjb21taXRfZXJyb3JfaGFuZGxlcihl
cnJvcik6CiAgICAgRXhlY3V0aXZlLmRlZmF1bHRfZXJyb3JfaGFuZGxlcihlcnJvcikKIAogCitj
bGFzcyBBdXRoZW50aWNhdGlvbkVycm9yKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNl
bGYsIHNlcnZlcl9ob3N0KToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9IHNlcnZlcl9ob3N0
CisKKworY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFu
KToKKyAgICAgICAgc2VsZi5udW1fbG9jYWxfY29tbWl0cyA9IG51bV9sb2NhbF9jb21taXRzCisg
ICAgICAgIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4gPSB3b3JraW5nX2RpcmVjdG9y
eV9pc19jbGVhbgorCisKICMgU0NNIG1ldGhvZHMgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBwYXRo
cyByZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0X3Jvb3QuCiBjbGFzcyBTQ006CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGN3ZCk6CkBAIC0xODksNyArMTk5LDcgQEAgY2xhc3MgU0NNOgogICAgIGRl
ZiBhZGQoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwg
Z2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNoYW5nZWRfZmlsZXMoc2Vs
ZiwgZ2l0X2NvbW1pdD1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwg
InN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKICAgICBkZWYgY2hhbmdlZF9maWxlc19mb3Jf
cmV2aXNpb24oc2VsZik6CkBAIC0yMDQsNyArMjE0LDcgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBk
aXNwbGF5X25hbWUoc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBn
aXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYs
IGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IsICJz
dWJjbGFzc2VzIG11c3QgaW1wbGVtZW50IgogCiAgICAgZGVmIGNvbW1pdHRlcl9lbWFpbF9mb3Jf
cmV2aXNpb24oc2VsZiwgcmV2aXNpb24pOgpAQCAtMjIyLDEwICsyMzIsNyBAQCBjbGFzcyBTQ006
CiAgICAgZGVmIHJldmVydF9maWxlcyhzZWxmLCBmaWxlX3BhdGhzKToKICAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBsZW1lbnQiCiAKLSAgICBk
ZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1l
bnRlZEVycm9yLCAic3ViY2xhc3NlcyBtdXN0IGltcGxlbWVudCIKLQotICAgIGRlZiBjb21taXRf
d2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9u
ZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3Nh
Z2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlKToK
ICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvciwgInN1YmNsYXNzZXMgbXVzdCBpbXBs
ZW1lbnQiCiAKICAgICBkZWYgc3ZuX2NvbW1pdF9sb2coc2VsZiwgc3ZuX3JldmlzaW9uKToKQEAg
LTM0Nyw3ICszNTQsNyBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBwYXRoIGlzIGFzc3Vt
ZWQgdG8gYmUgY3dkIHJlbGF0aXZlPwogICAgICAgICBzZWxmLnJ1bihbInN2biIsICJhZGQiLCBw
YXRoXSkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1
YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6
CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNl
bGYuc3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiQUNETVIiKSkKIAogICAg
IGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CkBAIC0zNzAs
NyArMzc3LDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgIHJldHVybiAic3ZuIgogCiAgICAg
IyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG9uIENoZWNrb3V0LgotICAgIGRlZiBjcmVh
dGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNy
ZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEg
Ynl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAg
UGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWlu
CiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCkBAIC00
MDYsMjIgKzQxMywxOSBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBz
aG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QuCiAgICAgICAgIHNlbGYu
cnVuKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBzaG91bGRfc3F1
YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgICMgU1ZOIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29u
Y2VwdCBvZiBzcXVhc2hpbmcuCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNvbW1p
dF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0IGFyZSBu
b3QgdXNlZCBieSBTVk4uCisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2Fn
ZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBmb3JjZV9zcXVhc2g9RmFsc2UpOgor
ICAgICAgICAjIGdpdC1jb21taXQgYW5kIGZvcmNlIGFyZSBub3QgdXNlZCBieSBTVk4uCiAgICAg
ICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2gg
bG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1
dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5c
bkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKKwogICAgICAgICBzdm5fY29tbWl0X2FyZ3MgPSBbInN2
biIsICJjb21taXQiXQorCiAgICAgICAgIGlmIG5vdCB1c2VybmFtZSBhbmQgbm90IHNlbGYuaGFz
X2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKCk6Ci0gICAgICAgICAgICB1c2VybmFtZSA9IFVzZXIu
cHJvbXB0KCIlcyBsb2dpbjogIiAlIHNlbGYuc3ZuX3NlcnZlcl9ob3N0LCByZXBlYXQ9NSkKLSAg
ICAgICAgICAgIGlmIG5vdCB1c2VybmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIHVzZXJuYW1lIG9uICVzIHRvIHBlcmZvcm0gdGhl
IGNvbW1pdCBhcy4iICUgc2VsZi5zdm5fc2VydmVyX2hvc3QpCisgICAgICAgICAgICByYWlzZSBB
dXRoZW50aWNhdGlvbkVycm9yKHNlbGYuc3ZuX3NlcnZlcl9ob3N0KQogICAgICAgICBpZiB1c2Vy
bmFtZToKICAgICAgICAgICAgIHN2bl9jb21taXRfYXJncy5leHRlbmQoWyItLXVzZXJuYW1lIiwg
dXNlcm5hbWVdKQorCiAgICAgICAgIHN2bl9jb21taXRfYXJncy5leHRlbmQoWyItbSIsIG1lc3Nh
Z2VdKQogICAgICAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyB1c2UgY3dkPXNlbGYuY2hlY2tvdXRf
cm9vdD8KICAgICAgICAgcmV0dXJuIHNlbGYucnVuKHN2bl9jb21taXRfYXJncywgZXJyb3JfaGFu
ZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikKQEAgLTQ5OCwyNCArNTAyLDIxIEBAIGNsYXNzIEdp
dChTQ00pOgogICAgICAgICAjIHBhdGggaXMgYXNzdW1lZCB0byBiZSBjd2QgcmVsYXRpdmU/CiAg
ICAgICAgIHNlbGYucnVuKFsiZ2l0IiwgImFkZCIsIHBhdGhdKQogCi0gICAgZGVmIF9tZXJnZV9i
YXNlKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIF9hc3NlcnRfc3luY2VkKHNl
bGYpOgorICAgICAgICBpZiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxpc3QnLCAnLS1t
YXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ15IRUFEJ10pKToKKyAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9Ik5vdCBmdWxseSBtZXJnZWQvcmViYXNl
ZCB0byAlcy4gVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxmLnJl
bW90ZV9icmFuY2hfcmVmKCkpCisKKyAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0
KToKICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKLSAgICAgICAgICAgICMgRklYTUU6IENhbGxpbmcg
Y29kZSBzaG91bGQgdHVybiBjb21taXQgcmFuZ2VzIGludG8gYSBsaXN0IG9mIGNvbW1pdCBJRHMK
LSAgICAgICAgICAgICMgYW5kIHRoZW4gdHJlYXQgZWFjaCBjb21taXQgc2VwYXJhdGVseS4KICAg
ICAgICAgICAgIGlmICcuLicgbm90IGluIGdpdF9jb21taXQ6CiAgICAgICAgICAgICAgICAgZ2l0
X2NvbW1pdCA9IGdpdF9jb21taXQgKyAiXi4uIiArIGdpdF9jb21taXQKICAgICAgICAgICAgIHJl
dHVybiBnaXRfY29tbWl0CiAKLSAgICAgICAgaWYgc2VsZi5zaG91bGRfc3F1YXNoKHNxdWFzaCk6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5yZW1vdGVfbWVyZ2VfYmFzZSgpCi0KLSAgICAgICAg
IyBGSVhNRTogTm9uLXNxdWFzaCBiZWhhdmlvciBzaG91bGQgbWF0Y2ggY29tbWl0X3dpdGhfbWVz
c2FnZS4gSXQgcmFpc2VzIGFuIGVycm9yCi0gICAgICAgICMgaWYgdGhlcmUgYXJlIHdvcmtpbmcg
Y29weSBjaGFuZ2VzIGFuZCAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaCB3YXNuJ3QgcGFzc2VkIGlu
LgotICAgICAgICAjIElmIC0tbm8tc3F1YXNoLCB0aGVuIGl0IHNob3VsZCBwcm9jZWVkIHdpdGgg
ZWFjaCBsb2NhbCBjb21taXQgYXMgYSBzZXBhcmF0ZSBwYXRjaC4KLSAgICAgICAgcmV0dXJuICdI
RUFEJworICAgICAgICBzZWxmLl9hc3NlcnRfc3luY2VkKCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cmVtb3RlX21lcmdlX2Jhc2UoKQogCi0gICAgZGVmIGNoYW5nZWRfZmlsZXMoc2VsZiwgZ2l0X2Nv
bW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgIHN0YXR1c19jb21tYW5kID0gWydnaXQn
LCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywgJy1DJywgJy1NJywgIi0tbm8tZXh0LWRp
ZmYiLCAiLS1mdWxsLWluZGV4Iiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gp
XQorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CisgICAgICAg
IHN0YXR1c19jb21tYW5kID0gWydnaXQnLCAnZGlmZicsICctcicsICctLW5hbWUtc3RhdHVzJywg
Jy1DJywgJy1NJywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4Iiwgc2VsZi5tZXJnZV9i
YXNlKGdpdF9jb21taXQpXQogICAgICAgICByZXR1cm4gc2VsZi5ydW5fc3RhdHVzX2FuZF9leHRy
YWN0X2ZpbGVuYW1lcyhzdGF0dXNfY29tbWFuZCwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiQURNIikp
CiAKICAgICBkZWYgX2NoYW5nZXNfZmlsZXNfZm9yX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToK
QEAgLTU0NCwxMiArNTQ1LDEyIEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBkaXNwbGF5X25h
bWUoc2VsZik6CiAgICAgICAgIHJldHVybiAiZ2l0IgogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChz
ZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY3JlYXRlX3BhdGNo
KHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybnMgYSBieXRlIGFycmF5
IChzdHIoKSkgcmVwcmVzZW50aW5nIHRoZSBwYXRjaCBmaWxlLgogICAgICAgICBQYXRjaCBmaWxl
cyBhcmUgZWZmZWN0aXZlbHkgYmluYXJ5IHNpbmNlIHRoZXkgbWF5IGNvbnRhaW4KICAgICAgICAg
ZmlsZXMgb2YgbXVsdGlwbGUgZGlmZmVyZW50IGVuY29kaW5ncy4iIiIKICAgICAgICAgIyBGSVhN
RTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QKLSAgICAg
ICAgcmV0dXJuIHNlbGYucnVuKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAiLS1uby1leHQt
ZGlmZiIsICItLWZ1bGwtaW5kZXgiLCAiLU0iLCBzZWxmLl9tZXJnZV9iYXNlKGdpdF9jb21taXQs
IHNxdWFzaCldLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQorICAgICAgICByZXR1cm4gc2VsZi5ydW4o
WydnaXQnLCAnZGlmZicsICctLWJpbmFyeScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRl
eCIsICItTSIsIHNlbGYubWVyZ2VfYmFzZShnaXRfY29tbWl0KV0sIGRlY29kZV9vdXRwdXQ9RmFs
c2UpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZ2l0X2NvbW1pdF9mcm9tX3N2bl9yZXZp
c2lvbihjbHMsIHJldmlzaW9uKToKQEAgLTU4NCw2MyArNTg1LDM0IEBAIGNsYXNzIEdpdChTQ00p
OgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHNlbGYu
cnVuKFsnZ2l0JywgJ2NoZWNrb3V0JywgJ0hFQUQnXSArIGZpbGVfcGF0aHMpCiAKLSAgICBkZWYg
X2dldF9zcXVhc2hfZXJyb3JfbWVzc2FnZShzZWxmLCBudW1fbG9jYWxfY29tbWl0cyk6Ci0gICAg
ICAgIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UgPSAiIiBpZiBzZWxmLndvcmtpbmdfZGlyZWN0
b3J5X2lzX2NsZWFuKCkgZWxzZSAiIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcyIKLSAgICAgICAg
cmV0dXJuICgiIiJUaGVyZSBhcmUgJXMgbG9jYWwgY29tbWl0cyVzLiBEbyBvbmUgb2YgdGhlIGZv
bGxvd2luZzoKLSAgICAgICAgICAgIDEpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAotICAg
ICAgICAgICAgMikgZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKLSAg
ICAgICAgICAgICIiIiAlIChudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfbWVz
c2FnZSkpCi0KLSAgICBkZWYgc2hvdWxkX3NxdWFzaChzZWxmLCBzcXVhc2gpOgotICAgICAgICBp
ZiBzcXVhc2ggaXMgTm9uZToKLSAgICAgICAgICAgIGNvbmZpZ19zcXVhc2ggPSBHaXQucmVhZF9n
aXRfY29uZmlnKCd3ZWJraXQtcGF0Y2guc3F1YXNoJykKLSAgICAgICAgICAgIGlmIChjb25maWdf
c3F1YXNoIGFuZCBjb25maWdfc3F1YXNoIGlzIG5vdCAiIik6Ci0gICAgICAgICAgICAgICAgc3F1
YXNoID0gY29uZmlnX3NxdWFzaC5sb3dlcigpID09ICJ0cnVlIgotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAjIE9ubHkgcmFpc2UgYW4gZXJyb3IgaWYgdGhlcmUgYXJlIGFjdHVh
bGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgotICAgICAgICAgICAgICAgIG51bV9sb2Nh
bF9jb21taXRzID0gbGVuKHNlbGYubG9jYWxfY29tbWl0cygpKQotICAgICAgICAgICAgICAgIGlm
IG51bV9sb2NhbF9jb21taXRzID4gMSBvciAobnVtX2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qg
c2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpKToKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT1zZWxmLl9nZXRfc3F1YXNoX2Vycm9yX21lc3NhZ2Uo
bnVtX2xvY2FsX2NvbW1pdHMpKQotCi0gICAgICAgIGlmIHNxdWFzaCBhbmQgc2VsZi5fcmVtb3Rl
X2JyYW5jaF9oYXNfZXh0cmFfY29tbWl0cygpOgotICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJy
b3IobWVzc2FnZT0iQ2Fubm90IHVzZSAtLXNxdWFzaCB3aGVuIEhFQUQgaXMgbm90IGZ1bGx5IG1l
cmdlZC9yZWJhc2VkIHRvICVzLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJUaGlzIGJyYW5jaCBuZWVkcyB0byBiZSBzeW5jZWQgZmlyc3QuIiAlIHNlbGYucmVtb3Rl
X2JyYW5jaF9yZWYoKSkKKyAgICBkZWYgX2Fzc2VydF9jYW5fc3F1YXNoKHNlbGYsIHdvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICAgICAgc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZp
Zygnd2Via2l0LXBhdGNoLmNvbW1pdF9zaG91bGRfYWx3YXlzX3NxdWFzaCcpCisgICAgICAgIHNo
b3VsZF9zcXVhc2ggPSBzcXVhc2ggYW5kIHNxdWFzaC5sb3dlcigpID09ICJ0cnVlIgogCi0gICAg
ICAgIHJldHVybiBzcXVhc2gKKyAgICAgICAgaWYgbm90IHNob3VsZF9zcXVhc2g6CisgICAgICAg
ICAgICAjIE9ubHkgd2FybiBpZiB0aGVyZSBhcmUgYWN0dWFsbHkgbXVsdGlwbGUgY29tbWl0cyB0
byBzcXVhc2guCisgICAgICAgICAgICBudW1fbG9jYWxfY29tbWl0cyA9IGxlbihzZWxmLmxvY2Fs
X2NvbW1pdHMoKSkKKyAgICAgICAgICAgIGlmIG51bV9sb2NhbF9jb21taXRzID4gMSBvciAobnVt
X2xvY2FsX2NvbW1pdHMgPiAwIGFuZCBub3Qgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pOgor
ICAgICAgICAgICAgICAgIHJhaXNlIEFtYmlndW91c0NvbW1pdEVycm9yKG51bV9sb2NhbF9jb21t
aXRzLCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbikKIAotICAgIGRlZiBfcmVtb3RlX2JyYW5j
aF9oYXNfZXh0cmFfY29tbWl0cyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGxlbihydW5fY29tbWFu
ZChbJ2dpdCcsICdyZXYtbGlzdCcsICctLW1heC1jb3VudD0xJywgc2VsZi5yZW1vdGVfYnJhbmNo
X3JlZigpLCAnXkhFQUQnXSkpCi0KLSAgICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBt
ZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAg
ICBkZWYgY29tbWl0X3dpdGhfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCB1c2VybmFtZT1Ob25lLCBn
aXRfY29tbWl0PU5vbmUsIGZvcmNlX3NxdWFzaD1GYWxzZSk6CiAgICAgICAgICMgVXNlcm5hbWUg
aXMgaWdub3JlZCBkdXJpbmcgR2l0IGNvbW1pdHMuCisgICAgICAgIHdvcmtpbmdfZGlyZWN0b3J5
X2lzX2NsZWFuID0gc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpCisKICAgICAgICAg
aWYgZ2l0X2NvbW1pdDoKICAgICAgICAgICAgICMgTmVlZCB3b3JraW5nIGRpcmVjdG9yeSBjaGFu
Z2VzIHRvIGJlIGNvbW1pdHRlZCBzbyB3ZSBjYW4gY2hlY2tvdXQgdGhlIG1lcmdlIGJyYW5jaC4K
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKCk6Cisg
ICAgICAgICAgICBpZiBub3Qgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW46CiAgICAgICAgICAg
ICAgICAgIyBGSVhNRTogd2Via2l0LXBhdGNoIGxhbmQgd2lsbCBtb2RpZnkgdGhlIENoYW5nZUxv
Z3MgdG8gY29ycmVjdCB0aGUgcmV2aWV3ZXIuCiAgICAgICAgICAgICAgICAgIyBUaGF0IHdpbGwg
bW9kaWZ5IHRoZSB3b3JraW5nLWNvcHkgYW5kIGNhdXNlIHVzIHRvIGhpdCB0aGlzIGVycm9yLgot
ICAgICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyBtb2RpZmljYXRpb24gY291bGQgYmUgbWFk
ZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1pdD8KKyAgICAgICAgICAgICAgICAj
IFRoZSBDaGFuZ2VMb2cgbW9kaWZpY2F0aW9uIGNvdWxkIGJlIG1hZGUgdG8gbW9kaWZ5IHRoZSBl
eGlzdGluZyBsb2NhbCBjb21taXQuCiAgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3Io
bWVzc2FnZT0iV29ya2luZyBjb3B5IGlzIG1vZGlmaWVkLiBDYW5ub3QgY29tbWl0IGluZGl2aWR1
YWwgZ2l0X2NvbW1pdHMuIikKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25fYnJh
bmNoKG1lc3NhZ2UsIGdpdF9jb21taXQpCiAKLSAgICAgICAgc3F1YXNoID0gc2VsZi5zaG91bGRf
c3F1YXNoKHNxdWFzaCkKLSAgICAgICAgaWYgc3F1YXNoOgotICAgICAgICAgICAgc2VsZi5ydW4o
WydnaXQnLCAncmVzZXQnLCAnLS1zb2Z0Jywgc2VsZi5yZW1vdGVfYnJhbmNoX3JlZigpXSkKLSAg
ICAgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCi0gICAg
ICAgIGVsaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKLSAgICAgICAg
ICAgIGlmIG5vdCBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpOgotICAgICAgICAgICAgICAgICMg
VGhlcmUgYXJlIG9ubHkgd29ya2luZyBjb3B5IGNoYW5nZXMuIEFzc3VtZSB0aGV5IHNob3VsZCBi
ZSBjb21taXR0ZWQuCi0gICAgICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21l
c3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVsaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgIyBUaGUgdXNlciBkaWRuJ3QgZXhwbGljaXRseSBzYXkgdG8gc3F1YXNoIG9yIG5v
dCBzcXVhc2guIFRoZXJlIGFyZSBsb2NhbCBjb21taXRzCi0gICAgICAgICAgICAgICAgIyBhbmQg
d29ya2luZyBjb3B5IGNoYW5nZXMuIE5vdCBjbGVhciB3aGF0IHRoZSB1c2VyIHdhbnRzLgotICAg
ICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IiIiVGhlcmUgYXJlIGxvY2Fs
IGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLiBEbyBvbmUgb2YgdGhlIGZvbGxvd2lu
ZzoKLTEpIENvbW1pdC9yZXZlcnQgd29ya2luZyBjb3B5IGNoYW5nZXMuCi0yKSBVc2UgLS1zcXVh
c2ggb3IgLS1uby1zcXVhc2gKLTMpIGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVl
L2ZhbHNlCi0iIiIpCi0KLSAgICAgICAgIyBGSVhNRTogVGhpcyB3aWxsIGNvbW1pdCBhbGwgbG9j
YWwgY29tbWl0cywgZWFjaCB3aXRoIGl0J3Mgb3duIG1lc3NhZ2UuIFdlIHNob3VsZCByZXN0cnVj
dHVyZQotICAgICAgICAjIHNvIHRoYXQgZWFjaCBsb2NhbCBjb21taXQgaGFzIHRoZSBhcHByb3By
aWF0ZSBjb21taXQgbWVzc2FnZSBiYXNlZCBvZmYgaXQncyBDaGFuZ2VMb2dzLgorICAgICAgICBp
ZiBub3QgZm9yY2Vfc3F1YXNoOgorICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2Nhbl9zcXVhc2go
d29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pCisgICAgICAgIHNlbGYuX2Fzc2VydF9zeW5jZWQo
KQorICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdyZXNldCcsICctLXNvZnQnLCBzZWxmLnJlbW90
ZV9icmFuY2hfcmVmKCldKQorICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2Fn
ZShtZXNzYWdlKQogICAgICAgICByZXR1cm4gc2VsZi5wdXNoX2xvY2FsX2NvbW1pdHNfdG9fc2Vy
dmVyKCkKIAogICAgIGRlZiBfY29tbWl0X29uX2JyYW5jaChzZWxmLCBtZXNzYWdlLCBnaXRfY29t
bWl0KToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L3NjbV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29t
bW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQppbmRleCAzNmExZDFjZmRiOTQ0NGM3MTU0OTg2
YzQ1MmNjM2Q5MTRmNGMxYTU2Li4wMjNhODg3ZmU5NDRlMmZlOTUwNjVhMzgxZjhmMDdkOTc2NGI3
M2UyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVj
a291dC9zY21fdW5pdHRlc3QucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CkBAIC00Myw3ICs0Myw3IEBAIGltcG9ydCB1
cmxsaWIKIAogZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZQogZnJvbSB3ZWJraXRweS5jb21tb24u
Y2hlY2tvdXQuYXBpIGltcG9ydCBDaGVja291dAotZnJvbSB3ZWJraXRweS5jb21tb24uY2hlY2tv
dXQuc2NtIGltcG9ydCBkZXRlY3Rfc2NtX3N5c3RlbSwgU0NNLCBTVk4sIENoZWNrb3V0TmVlZHNV
cGRhdGUsIGNvbW1pdF9lcnJvcl9oYW5kbGVyCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291
dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNWTiwgQ2hlY2tvdXROZWVkc1Vw
ZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIsIEF1dGhlbnRpY2F0aW9uRXJyb3IsIEFtYmlndW91
c0NvbW1pdEVycm9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jb25maWcuY29tbWl0dGVycyBpbXBv
cnQgQ29tbWl0dGVyICAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBmcm9tIHdl
YmtpdHB5LmNvbW1vbi5uZXQuYnVnemlsbGEgaW1wb3J0IEF0dGFjaG1lbnQgIyBGSVhNRTogVGhp
cyBzaG91bGQgbm90IGJlIG5lZWRlZAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgRXhlY3V0aXZlLCBydW5fY29tbWFuZCwgU2NyaXB0RXJyb3IKQEAgLTU4Nyw2
ICs1ODcsMTAgQEAgUTFkVEJ4MEFBQUI0Mml0ZzRHbGdZSmpHd01ERHlPRE14TUR3MzRHQmdRRUFK
UFFESkE9PQogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX3VzZXJuYW1lKHNlbGYpOgogICAgICAg
ICBzZWxmLl9zaGFyZWRfdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKCJkYmF0ZXNAd2Via2l0Lm9y
ZyIpCiAKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aG91dF9hdXRob3JpemF0aW9uKHNlbGYpOgor
ICAgICAgICBzZWxmLnNjbS5oYXNfYXV0aG9yaXphdGlvbl9mb3JfcmVhbG0gPSBsYW1iZGE6IEZh
bHNlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF1dGhlbnRpY2F0aW9uRXJyb3IsIHNlbGYu
X3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UpCisKICAgICBkZWYgdGVzdF9oYXNfYXV0
aG9yaXphdGlvbl9mb3JfcmVhbG0oc2VsZik6CiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lz
dGVtKHNlbGYuc3ZuX2NoZWNrb3V0X3BhdGgpCiAgICAgICAgIGZha2VfaG9tZV9kaXIgPSB0ZW1w
ZmlsZS5ta2R0ZW1wKHN1ZmZpeD0iZmFrZV9ob21lX2RpciIpCkBAIC04MDMsMjQgKzgwNywxNCBA
QCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogCiAgICAgZGVmIHRlc3RfY29tbWl0X3RleHRf
cGFyc2luZyhzZWxmKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZScsICdtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5
X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIGNvbW1pdF90ZXh0
ID0gc2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0
X3RleHQoY29tbWl0X3RleHQpLCAnNicpCiAKICAgICAgICAgc2VsZi5zY20uZHJ5cnVuID0gVHJ1
ZQogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ3N0aWxsIG1v
cmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9t
ZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIGNvbW1pdF90ZXh0ID0g
c2VsZi5zY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1p
dF90ZXh0KGNvbW1pdF90ZXh0KSwgJzAnKQogCi0gICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0X3Bs
dXNfd29ya2luZ19jb3B5X2NoYW5nZXMoc2VsZik6Ci0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9h
dF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MScsICdtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAg
IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MSddKQotICAgICAg
ICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21t
aXQiKQotCi0gICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0
MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCi0gICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0
JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQotCiAgICAgZGVmIHRlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZV93b3JraW5nX2NvcHlfb25seShzZWxmKToKICAgICAgICAgd3JpdGVfaW50b19m
aWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKICAg
ICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCkBA
IC04MzEsMjEgKzgyNSwxOCBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBz
dm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAn
LS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MScsIHN2bl9sb2cpKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2Fn
ZV9zcXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dv
cmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dp
dGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc2JykKLSAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0Jywg
J3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQotICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xv
ZykpCi0KLSAgICBkZWYgX3R3b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgIGRlZiBfb25lX2xv
Y2FsX2NvbW1pdChzZWxmKToKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3Rf
ZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1hbmQo
WydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCiAgICAgICAgIHNlbGYuc2NtLmNv
bW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAKKyAgICBk
ZWYgX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKKyAg
ICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdCgpCisgICAgICAgIHdyaXRlX2ludG9fZmlsZV9h
dF9wYXRoKCd0ZXN0X2ZpbGVfY29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCisg
ICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQor
CisgICAgZGVmIF90d29fbG9jYWxfY29tbWl0cyhzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdCgpCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGVf
Y29tbWl0MicsICdzdGlsbCBtb3JlIHRlc3QgY29udGVudCcpCiAgICAgICAgIHJ1bl9jb21tYW5k
KFsnZ2l0JywgJ2FkZCcsICd0ZXN0X2ZpbGVfY29tbWl0MiddKQogICAgICAgICBzZWxmLnNjbS5j
b21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKQEAg
LTg1Niw2ICs4NDcsMTcgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2Vs
Zi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikK
ICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogCisgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVz
X3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKKyAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQW1iaWd1
b3VzQ29tbWl0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdl
KCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFzaD1UcnVlKQorCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1p
dF90ZXh0KSwgJzYnKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3Zu
JywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkK
KwogICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfZ2l0X2NvbW1pdChzZWxmKToKICAg
ICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogCkBAIC04NzksNTEgKzg4MSw2MSBAQCBj
bGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCiAKLSAgICBkZWYg
dGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0
aF9tZXNzYWdlX29ubHlfbG9jYWxfY29tbWl0KHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9j
YWxfY29tbWl0KCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5j
b21taXRfd2l0aF9tZXNzYWdlLCBbImFub3RoZXIgdGVzdCBjb21taXQiXSkKKyAgICAgICAgY29t
bWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIp
CisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0t
bGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKICAgICBkZWYgdGVzdF9jb21taXRf
d2l0aF9tZXNzYWdlX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfYW5kX3dvcmtpbmdfY29weShzZWxm
KToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICB3cml0ZV9pbnRv
X2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnd29ya2luZyBjb3B5IGNoYW5nZScp
CiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhf
bWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0Il0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoQW1iaWd1b3VzQ29tbWl0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5v
dGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKKworICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChj
b21taXRfdGV4dCksICc2JykKKyAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0Jywg
J3N2bicsICdsb2cnLCAnLS1saW1pdD0xJywgJy0tdmVyYm9zZSddKQorICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xv
ZykpCiAKICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX2dpdF9jb21taXRfYW5kX3dv
cmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAg
ICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnd29ya2lu
ZyBjb3B5IGNoYW5nZScpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0
X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBz
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0IiwgJ2dpdF9jb21t
aXQ9IkhFQUReIiddKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2Nt
LmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IiwgZ2l0X2NvbW1pdD0i
SEVBRF4iKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2Nh
bF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNz
YWdlX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfYWx3YXlzX3NxdWFzaChzZWxmKToKICAgICAgICAg
c2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21t
aXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1GYWxzZSkK
KyAgICAgICAgc2NtLl9hc3NlcnRfY2FuX3NxdWFzaCA9IGxhbWJkYSB3b3JraW5nX2RpcmVjdG9y
eV9pc19jbGVhbjogVHJ1ZQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQog
CiAgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0t
bGltaXQ9MScsICctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLQotICAgICAgICBz
dm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTInLCAn
LS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2Zp
bGVfY29tbWl0MScsIHN2bl9sb2cpKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2Fn
ZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jb21t
aXRfd2l0aF9tZXNzYWdlX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHNl
bGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0
X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQW1iaWd1b3VzQ29tbWl0RXJyb3IsIHNjbS5jb21taXRf
d2l0aF9tZXNzYWdlLCAieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21taXRf
dGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIs
IGZvcmNlX3NxdWFzaD1UcnVlKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9y
ZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQogCiAgICAgICAgIHN2
bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICct
LXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQyJywgc3ZuX2xvZykpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogCi0gICAgZGVmIHRlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZV9ub3Rfc3luY2VkX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jb21taXRf
d2l0aF9tZXNzYWdlX25vdF9zeW5jZWQoc2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0
JywgJ2NoZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNl
bGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0
RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNx
dWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJv
ciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdl
LCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGZvcmNlX3NxdWFzaD1UcnVlKQogCiAgICAgZGVmIHRl
c3RfcmVtb3RlX2JyYW5jaF9yZWYoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vs
Zi5zY20ucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ3JlZnMvcmVtb3Rlcy90cnVuaycpCkBAIC05NDAs
MjYgKzk1MiwxNiBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2Ny
ZWF0ZV9wYXRjaF9sb2NhbF9wbHVzX3dvcmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5f
b25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2Nt
ID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0KLSAgICBkZWYg
dGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAg
c2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3Jp
cHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9z
cXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtp
bmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFz
aD1UcnVlKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDInLCBwYXRjaCkpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQy
JywgcGF0Y2gpKQogCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zcXVhc2hlZChzZWxm
KToKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9s
b2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRl
dGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0g
c2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0
ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVf
Y29tbWl0MicsIHBhdGNoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNl
YXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY3JlYXRl
X3BhdGNoX2dpdF9jb21taXQoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRz
KCkKQEAgLTk3NiwyNiArOTc4LDE4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQx
JywgcGF0Y2gpKQogCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2Nv
bW1pdHNfbm9fc3F1YXNoKHNlbGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygp
Ci0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgp
Ci0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCi0gICAgICAg
ICMgRklYTUU6IEl0J3Mgd2VpcmQgdGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNo
L2NoYW5nZWRfZmlsZXMgaWdub3JlcyBsb2NhbCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21t
aXRfd2l0aF9tZXNzYWdlIGNvbW1pdHMgdGhlbS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBh
dGNoID09ICIiKQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2Nv
bW1pdHNfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9s
b2NhbF9jb21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9VHJ1ZSkKKyAgICAgICAgcGF0
Y2ggPSBzY20uY3JlYXRlX3BhdGNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9j
cmVhdGVfcGF0Y2hfbm90X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY3JlYXRl
X3BhdGNoX25vdF9zeW5jZWQoc2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2No
ZWNrb3V0JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3Is
IHNjbS5jcmVhdGVfcGF0Y2gsIHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9i
aW5hcnlfcGF0Y2goc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIGEgZ2l0IGJpbmFyeSBwYXRjaCBh
bmQgY2hlY2sgdGhlIGNvbnRlbnRzLgpAQCAtMTAyNiwyNiArMTAyMCw5IEBAIGNsYXNzIEdpdFNW
TlRlc3QoU0NNVGVzdCk6CiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19sb2NhbF9wbHVzX3dv
cmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dv
cmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2Vs
Zi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJy
b3IsIHNjbS5jaGFuZ2VkX2ZpbGVzKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0
aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0
cygpCi0gICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3Bh
dGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9m
aWxlcykKLQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfc3F1YXNoZWQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0g
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPVRydWUpCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAgICBmaWxl
cyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2Zp
bGVfY29tbWl0MScgaW4gZmlsZXMpCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9z
cXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtp
bmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVh
c2g9RmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGlu
IGZpbGVzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4g
ZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXQoc2VsZik6CiAg
ICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKQEAgLTEwNjIsMjYgKzEwMzksMTggQEAg
Y2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0
X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9m
aWxlX2NvbW1pdDInIGluIGZpbGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0
aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9j
aGVja291dF9wYXRoKQotICAgICAgICBmaWxlcyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1G
YWxzZSkKLSAgICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNl
LCBjcmVhdGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCi0gICAg
ICAgICMgYnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgotICAgICAgICBzZWxm
LmFzc2VydFRydWUobGVuKGZpbGVzKSA9PSAwKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxl
c19tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxmKToKKyAgICBkZWYgdGVzdF9jaGFu
Z2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3
b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5n
aXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVh
c2g9VHJ1ZSkKKyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcygpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogICAgICAgICBzZWxm
LmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKIAotICAgIGRlZiB0ZXN0
X2NoYW5nZWRfZmlsZXNfbm90X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY2hh
bmdlZF9maWxlc19ub3Rfc3luY2VkKHNlbGYpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcs
ICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxm
Ll90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVy
cm9yLCBzY20uY2hhbmdlZF9maWxlcywgc3F1YXNoPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcykKIAogICAgIGRlZiB0ZXN0X2No
YW5nZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NoYW5nZWRfZmls
ZXMoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0
L3JpZXR2ZWxkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3Jp
ZXR2ZWxkLnB5CmluZGV4IGVjY2RhM2E4YjJlMmI5NTIyNzkzMTdmZmFhMjg0ZTBkM2E1NmNhMzQu
LjBjNmEzMTM0Nzg5MmI2NDUxNjlmYjJjZDFhODI2Y2Q2NTk1ZmY1NjMgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weQorKysgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkKQEAgLTcz
LDYgKzczLDYgQEAgY2xhc3MgUmlldHZlbGQob2JqZWN0KToKIAogICAgICAgICAjIFVzZSBSZWFs
TWFpbiBpbnN0ZWFkIG9mIGNhbGxpbmcgdXBsb2FkIGZyb20gdGhlIGNvbW1hbmRsaW5lIHNvIHRo
YXQKICAgICAgICAgIyB3ZSBjYW4gcGFzcyBpbiB0aGUgZGlmZiBvdXJzZWx2ZXMuIE90aGVyd2lz
ZSwgdXBsb2FkIHdpbGwganVzdCB1c2UKLSAgICAgICAgIyBnaXQgZGlmZiBmb3IgZ2l0IGNoZWNr
b3V0cywgd2hpY2ggZG9lc24ndCByZXNwZWN0IC0tc3F1YXNoIGFuZCAtLWdpdC1jb21taXQuCisg
ICAgICAgICMgZ2l0IGRpZmYgZm9yIGdpdCBjaGVja291dHMsIHdoaWNoIGRvZXNuJ3QgcmVzcGVj
dCAtLWdpdC1jb21taXQuCiAgICAgICAgIGlzc3VlLCBwYXRjaHNldCA9IHVwbG9hZC5SZWFsTWFp
bihhcmdzLCBkYXRhPWRpZmYpCiAgICAgICAgIHJldHVybiBpc3N1ZQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQppbmRleCBiNGRmM2Ni
NDcwOTAyNjMxY2RkYjhhZTYwYzRjZTg3ZWEzNzQ4Yzk3Li45NDQ0YzAwYzU4ZjUzZDNjMjYyYjFl
YWU1ZTBjNDQzYjk3OGIzZjE3IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQpAQCAtNTEsNyArNTEsNyBAQCBleGNlcHQgSW1wb3J0
RXJyb3I6CiAKIAogY2xhc3MgVXNlcihvYmplY3QpOgotICAgICMgRklYTUU6IFRoZXNlIGFyZSBA
Y2xhc3NtZXRob2RzIGJlY2F1c2Ugc2NtLnB5IGFuZCBidWd6aWxsYS5weSBkb24ndCBoYXZlIGEg
VG9vbCBvYmplY3QgKHRodXMgbm8gVXNlciBpbnN0YW5jZSkuCisgICAgIyBGSVhNRTogVGhlc2Ug
YXJlIEBjbGFzc21ldGhvZHMgYmVjYXVzZSBidWd6aWxsYS5weSBkb2Vzbid0IGhhdmUgYSBUb29s
IG9iamVjdCAodGh1cyBubyBVc2VyIGluc3RhbmNlKS4KICAgICBAY2xhc3NtZXRob2QKICAgICBk
ZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJhd19pbnB1dD1yYXdfaW5wdXQpOgog
ICAgICAgICByZXNwb25zZSA9IE5vbmUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggYmI0Nzg4YTU1ZGI2OGZiYzcxMDQ4NDk5NjNlODli
MjZiYzQzZDU4NS4uM2JhMGZhZTllODVmMGY3ZTUwYWNiMmUyZDYyM2VlZGE5Y2MyNGZiNiAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKQEAg
LTE0Nyw4ICsxNDcsNyBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgaXNfdmVyYm9z
ZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWluX2NvbmZpZGVuY2U9MSwKLSAgICAgICAgICAg
ICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAotICAgICAgICAgICAgICAgICBzcXVhc2g9RmFs
c2UpOgorICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PSJlbWFjcyIpOgogICAgICAgICBp
ZiBmaWx0ZXJfcnVsZXMgaXMgTm9uZToKICAgICAgICAgICAgIGZpbHRlcl9ydWxlcyA9IFtdCiAK
QEAgLTE2Nyw3ICsxNjYsNiBAQCBjbGFzcyBDb21tYW5kT3B0aW9uVmFsdWVzKG9iamVjdCk6CiAg
ICAgICAgIHNlbGYuaXNfdmVyYm9zZSA9IGlzX3ZlcmJvc2UKICAgICAgICAgc2VsZi5taW5fY29u
ZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCiAgICAgICAgIHNlbGYub3V0cHV0X2Zvcm1hdCA9IG91
dHB1dF9mb3JtYXQKLSAgICAgICAgc2VsZi5zcXVhc2ggPSBzcXVhc2gKIAogICAgICMgVXNlZnVs
IGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CkBAIC0xODIs
OCArMTgwLDYgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHNlbGYub3V0cHV0X2Zvcm1hdCAhPSBvdGhlci5v
dXRwdXRfZm9ybWF0OgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHNlbGYu
c3F1YXNoICE9IG90aGVyLnNxdWFzaDoKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAg
ICAgIHJldHVybiBUcnVlCiAKQEAgLTIxOCw4ICsyMTQsNiBAQCBjbGFzcyBBcmd1bWVudFByaW50
ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzWydmaWx0ZXInXSA9ICIsIi5qb2luKGZpbHRl
cl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAgICAgZmxh
Z3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0X2NvbW1pdAotICAgICAgICBpZiBvcHRpb25z
LnNxdWFzaDoKLSAgICAgICAgICAgIGZsYWdzWydzcXVhc2gnXSA9IG9wdGlvbnMuc3F1YXNoCiAK
ICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAgICAgICAjIEFscGhhYmV0aXppbmcgbGV0cyB1
cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0zMDksNyArMzAzLDcgQEAgY2xhc3MgQXJndW1l
bnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1mIiwgIi0tZmls
dGVyLXJ1bGVzIiwgbWV0YXZhcj0iUlVMRVMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICBk
ZXN0PSJmaWx0ZXJfdmFsdWUiLCBoZWxwPWZpbHRlcl9oZWxwKQogCi0gICAgICAgIGdpdF9jb21t
aXRfaGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhlIGdpdmVuIGdpdCBjb21taXQuICIK
KyAgICAgICAgZ2l0X2NvbW1pdF9oZWxwID0gKCJjaGVjayBhbGwgY2hhbmdlcyBpbiB0aGUgZ2l2
ZW4gY29tbWl0LiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlICdjb21taXRfaWQu
LicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIgY29tbW1pdF9pZCIpCiAgICAgICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCItZyIsICItLWdpdC1kaWZmIiwgIi0tZ2l0LWNvbW1pdCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNPTU1JVCIsIGRlc3Q9ImdpdF9jb21taXQiLCBo
ZWxwPWdpdF9jb21taXRfaGVscCwpCkBAIC0zMzAsMTQgKzMyNCw2IEBAIGNsYXNzIEFyZ3VtZW50
UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9Im91dHB1dF9m
b3JtYXQiLCBkZWZhdWx0PWRlZmF1bHRfb3V0cHV0X2Zvcm1hdCwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD1vdXRwdXRfZm9ybWF0X2hlbHApCiAKLSAgICAgICAgc3F1YXNoX2hlbHAg
PSAoIkFsbCBkaWZmcyBmcm9tIHRoZSByZW1vdGUgYnJhbmNoIGFyZSBjaGVja2VkLiIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVkLCBwcm9tcHRzIHdoZXRoZXIgdG8gc3F1YXNo
IHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMuIikKLSAgICAgICAgcGFyc2VyLmFkZF9v
cHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic3F1YXNo
IiwgaGVscD1zcXVhc2hfaGVscCkKLQotICAgICAgICBzcXVhc2hfaGVscCA9ICgiT25seSB3b3Jr
aW5nIGNvcHkgZGlmZnMgYXJlIGNoZWNrZWQuIgotICAgICAgICAgICAgICAgICAgICAgICAiSWYg
ZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2ggd2hlbiB0aGVyZSBhcmUgbXVsdGlw
bGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIuYWRkX29wdGlvbigiLS1uby1zcXVhc2giLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQog
ICAgICAgICB2ZXJib3NlX2hlbHAgPSAiZW5hYmxlIHZlcmJvc2UgbG9nZ2luZy4iCiAgICAgICAg
IHBhcnNlci5hZGRfb3B0aW9uKCItdiIsICItLXZlcmJvc2UiLCBkZXN0PSJpc192ZXJib3NlIiwg
ZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90
cnVlIiwgaGVscD12ZXJib3NlX2hlbHApCkBAIC00NTgsOCArNDQ0LDcgQEAgY2xhc3MgQXJndW1l
bnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z2l0X2NvbW1pdD1naXRfY29tbWl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpc192ZXJib3NlPWlzX3ZlcmJvc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1pbl9jb25maWRlbmNlPW1pbl9jb25maWRlbmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0PW91dHB1dF9mb3JtYXQsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNxdWFzaD1vcHRpb25zLnNxdWFzaCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRw
dXRfZm9ybWF0KQogCiAgICAgICAgIHJldHVybiAocGF0aHMsIG9wdGlvbnMpCiAKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weQppbmRleCBiYWIz
MGNhZmM1NWJhZThjMGU3MDEyYzI5MzA2OTc3NDkyM2JhM2ZkLi5hNDJiNjlkZTU4ZDk5NDMyMzYx
MWIxOGI0YmQwZDUzOWIxNTJlYzkzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBAIC02Nyw2ICs2Nyw2IEBAIGNsYXNzIFdlYktpdENo
ZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY2hlY2tvdXQgcm9vdCBhcyBh
biBhYnNvbHV0ZSBwYXRoLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fc2NtLmNoZWNrb3V0X3Jv
b3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdCwgc3F1YXNoKQor
ICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCk6CisgICAgICAgIHJldHVybiBz
ZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQppbmRleCBhODVi
MDlhZDQ0ZTJhNTgxMGFiYmUyNzU5ZTY3ZmIwZjBjYzNmYjlmLi5lODhmOGEyMzYxN2Y2MDczZDFk
M2U4ODZlM2ZkYjM3ZmRhYzA4YTZiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5CkBAIC05NCw3ICs5NCw3IEBAIElm
IGEgYnVnIGlkIGlzIHByb3ZpZGVkLCBvciBvbmUgY2FuIGJlIGZvdW5kIGluIHRoZSBDaGFuZ2VM
b2cgbGFuZCB3aWxsIHVwZGF0ZSB0CiAKICAgICBkZWYgX3ByZXBhcmVfc3RhdGUoc2VsZiwgb3B0
aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAiYnVnX2lk
IjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNf
Y29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAgICAg
ImJ1Z19pZCI6IChhcmdzIGFuZCBhcmdzWzBdKSBvciB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zv
cl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpLAogICAgICAgICB9CiAKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkK
aW5kZXggZTY4MmNhNzY5MzRkMTI3MWJmYzJjMmUxNmU0NjI3NjU5YjdmMGYwOC4uMDlkNDlkOTYy
YmE4OWViNDFkZmMyN2UwNzEzNDJmMzVlZmRiYzhjNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CkBAIC01Myw3ICs1Myw2
IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZihBYnN0cmFjdERlY2xhcmF0aXZl
Q29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIG9wdGlvbnMgPSBb
Ci0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNxdWFzaCwKICAgICAgICAgICAgIHN0ZXBzLk9w
dGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgXQogICAgICAgICBBYnN0cmFjdERlY2xhcmF0aXZl
Q29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlvbnMpCkBAIC02MSw3ICs2MCw3IEBA
IGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZihBYnN0cmFjdERlY2xhcmF0aXZlQ29t
bWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAg
ICAgICMgVGhpcyBjb21tYW5kIGlzIGEgdXNlZnVsIHRlc3QgdG8gbWFrZSBzdXJlIGNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdAogICAgICAgICAjIGFsd2F5cyByZXR1cm5zIHRoZSByaWdo
dCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotICAg
ICAgICBwcmludCAiJXMiICUgdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKS5tZXNzYWdlKCkKKyAg
ICAgICAgcHJpbnQgIiVzIiAlIHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KS5tZXNzYWdlKCkKIAogCiBjbGFzcyBDbGVhblBl
bmRpbmdDb21taXQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgpAQCAtMTUzLDcgKzE1Miw3
IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21tYW5kKEFic3RyYWN0U2VxdWVuY2Vk
Q29tbWFuZCk6CiAgICAgICAgICMgUGVyZmVyIGEgYnVnIGlkIHBhc3NlZCBhcyBhbiBhcmd1bWVu
dCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlmZiAoaS5lLiBDaGFuZ2VMb2dzKS4KICAgICAgICAg
YnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQogICAgICAgICBpZiBub3QgYnVnX2lkOgotICAgICAg
ICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21taXQob3B0
aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgIGJ1Z19pZCA9IHRv
b2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCkK
ICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9w
dGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtNDE4LDExICs0MTcsMTEgQEAgY2xhc3MgQ3JlYXRlQnVn
KEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAgICAgaWYgb3B0aW9ucy5wcm9tcHQ6
CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBjb21tZW50X3RleHQpID0gc2VsZi5wcm9tcHRfZm9y
X2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb21t
aXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21t
aXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgIGNvbW1p
dF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1p
dChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgICAgICBidWdfdGl0bGUgPSBjb21taXRfbWVz
c2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwgc3RyaXBfdXJsPVRydWUpCiAgICAgICAgICAg
ICBjb21tZW50X3RleHQgPSBjb21taXRfbWVzc2FnZS5ib2R5KGxzdHJpcD1UcnVlKQogCi0gICAg
ICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChvcHRpb25zLmdpdF9jb21taXQsIG9w
dGlvbnMuc3F1YXNoKQorICAgICAgICBkaWZmID0gdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2gob3B0
aW9ucy5naXRfY29tbWl0KQogICAgICAgICBidWdfaWQgPSB0b29sLmJ1Z3MuY3JlYXRlX2J1Zyhi
dWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9ucy5jb21wb25lbnQsIGRpZmYsICJQYXRjaCIs
IGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmlldz1vcHRpb25zLnJldmlldywgbWFya19mb3Jf
Y29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9jb21taXQpCiAKICAgICBkZWYgcHJvbXB0X2Zv
cl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggZDg4MTkwZmEwMjQ2NmQ2MGM4NDFjODU0ZDZj
MGZjNGRiNjI2NTE0Ni4uZWY4Y2M2MmFjZWJiMDkwMGFjYmY0NDNlZDBhNWYxODc0M2Y3YmEyNiAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21vY2t0b29sLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQpAQCAt
Mzk3LDcgKzM5Nyw3IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6CiAgICAgICAgICMgd2lsbCBhY3R1
YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3ZCgpIGlzIHdyb25nLCB1c2UgYSBnbG9iYWxs
eSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAgc2VsZi5jaGVja291dF9yb290ID0gc2VsZi5m
YWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dCwgc3F1YXNoKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQpOgogICAg
ICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAgIGRlZiBjb21taXRfaWRzX2Zyb21fY29tbWl0aXNo
X2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAgLTQzNywxMiArNDM3LDEyIEBAIGNsYXNzIE1vY2tD
aGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdfaWRfZm9yX3JldmlzaW9uKHNlbGYsIHN2bl9y
ZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAxMjM0NQogCi0gICAgZGVmIG1vZGlmaWVkX2NoYW5n
ZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgbW9kaWZpZWRfY2hhbmdl
bG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgIyBJZGVhbGx5IHdlJ2QgcmV0dXJuIHNv
bWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBUaGUgcHJvYmxlbSBpcwogICAgICAgICAj
IHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0dWFsbHkgcmVhZCB0aGUgcGF0Y2ggZnJvbSBk
aXNrIQogICAgICAgICByZXR1cm4gW10KIAotICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY29tbWl0X21lc3Nh
Z2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICBjb21taXRfbWVz
c2FnZSA9IE1vY2soKQogICAgICAgICBjb21taXRfbWVzc2FnZS5tZXNzYWdlID0gbGFtYmRhOiJU
aGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlzIGF0IGxlYXN0IDUwIGNoYXJhY3Rl
cnMuIgogICAgICAgICByZXR1cm4gY29tbWl0X21lc3NhZ2UKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CmluZGV4IDIw
ZjhiYmYzMDVjMmFiMmUwNDE5ZTBhZGViNmUxMjgyNTNkOWQ0ZTguLjQ3Yjk3MmFkMzY1ZGViNjFm
Yzc4M2Y2ZWJhNTZjNTgyMGU3ZWE4ZDMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQpAQCAtNTMsOCArNTMsOCBA
QCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQK
IAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7Ci0gICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGYs
IHN0YXRlOiBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9j
b21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKLSAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1i
ZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dz
KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gpLAorICAgICAg
ICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0
Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKKyAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1i
ZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dz
KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCksCiAgICAgICAgICJidWdfdGl0bGUiOiBsYW1iZGEg
c2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9idWcoc3RhdGVbImJ1Z19pZCJdKS50
aXRsZSgpLAogICAgIH0KIApAQCAtNzEsOCArNzEsNiBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2Jq
ZWN0KToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAgICMgV2UgbmVlZCB0aGVzZSBvcHRp
b25zIGhlcmUgYmVjYXVzZSBjYWNoZWRfbG9va3VwIHVzZXMgdGhlbS4gIDooCiAgICAgICAgICAg
ICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAg
ICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYs
IHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKaW5kZXggZDZi
MDI2ZGUyNTgyMWUzNDk2YWI4ZThkMmJhNDYxMTg1MTE1Njc4OC4uM2RjZDhkOTMxYTFmMzY1YmIz
M2VmYTZlM2U4ZThiZjViMGJkYzFhMyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9jYWxj
b21taXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBwbHlQYXRjaFdpdGhMb2NhbENvbW1p
dChBcHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKICAgICAgICAgQXBwbHlQ
YXRjaC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMubG9jYWxfY29t
bWl0OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCku
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZh
bHNlKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCku
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSkKICAgICAgICAg
ICAgIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKGNvbW1pdF9t
ZXNzYWdlLm1lc3NhZ2UoKSBvciBzdGF0ZVsicGF0Y2giXS5uYW1lKCkpCmRpZmYgLS1naXQgYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weSBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CmluZGV4
IDkzZTYyMTUzMTQ0ZmY3YWQ1YTc3ZDM3MWJlYzcyMTIzNzY3MDViYmQuLmFmMzgyMTQ0MGE5NWVj
OWM4NTA4NjBmMTIyYjdmMzU1ODFmYmEyNzMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CisrKyBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5CkBAIC00MCw4ICs0MCw2IEBA
IGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMubm9u
X2ludGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5jaGVja19zdHlsZSwKICAgICAgICAg
ICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAot
ICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBydW4oc2Vs
Ziwgc3RhdGUpOgpAQCAtNTMsMTAgKzUxLDYgQEAgY2xhc3MgQ2hlY2tTdHlsZShBYnN0cmFjdFN0
ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6CiAgICAgICAgICAgICBh
cmdzLmFwcGVuZCgiLS1naXQtY29tbWl0IikKICAgICAgICAgICAgIGFyZ3MuYXBwZW5kKHNlbGYu
X29wdGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRf
c3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LXNxdWFzaCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1uby1z
cXVhc2giKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3J1bl9zY3JpcHQoImNo
ZWNrLXdlYmtpdC1zdHlsZSIsIGFyZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weSBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5CmluZGV4
IGEyM2VhMWIzYzVkNDZmMmVhM2IzOGU0NjJmM2I5MWM5NjUyYjM4ZDEuLjk5ZjMwMGY3MjNkYzM4
OWM3N2NiYTY1N2I2YzgxOTA0OTJhZWM3YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3VuaXR0ZXN0LnB5
CkBAIC0zNSwxMiArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuY2hlY2tzdHlsZSBp
bXBvcnQgQ2hlY2tTdHlsZQogCiAKIGNsYXNzIENoZWNrU3R5bGVUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vycm9yKHNlbGYpOgotICAgICAgICAi
IiJzaG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4gVGhhdCBlcnJvciBzaG91bGQgbm90
IGJlIGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAgIGRlZiBzaG91bGRfc3F1YXNoKHNx
dWFzaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJEdW1teSBlcnJv
ciIpCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAgdG9vbC5fc2NtLnNob3Vs
ZF9zcXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0ZXAgPSBDaGVja1N0eWxlKHRvb2ws
IE1vY2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHN0ZXAucnVu
LCBbXSkKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NvbW1pdC5weQppbmRleCA3YmY4YjhhYTI3NjYxMDQ5MDZjMjZhMWQ5Mzc3Y2QzMTVm
OGM1YTc4Li43MmQ5ODg5OWY5ODY2NWNiMGJjOTkzNzI0YjNkODU0Yjc4NDQ0MDg5IDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkKQEAg
LTI2LDYgKzI2LDkgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2Zyb20gd2Vi
a2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQXV0aGVudGljYXRpb25FcnJvciwgQW1i
aWd1b3VzQ29tbWl0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUg
aW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBv
cnQgVXNlcgogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFic3RyYWN0c3RlcCBpbXBvcnQgQWJz
dHJhY3RTdGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9u
cwogCkBAIC0zNSwxMyArMzgsMzQgQEAgY2xhc3MgQ29tbWl0KEFic3RyYWN0U3RlcCk6CiAgICAg
ZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3RlcC5vcHRpb25zKCkg
KyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25z
Lm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKKyAg
ICBkZWYgX2NvbW1pdF93YXJuaW5nKHNlbGYsIGVycm9yKToKKyAgICAgICAgd29ya2luZ19kaXJl
Y3RvcnlfbWVzc2FnZSA9ICIiIGlmIGVycm9yLndvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuIGVs
c2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCisgICAgICAgIHJldHVybiAoJ1RoZXJlIGFy
ZSAlcyBsb2NhbCBjb21taXRzJXMuIEV2ZXJ5dGhpbmcgd2lsbCBiZSBjb21taXR0ZWQgYXMgYSBz
aW5nbGUgY29tbWl0LiAnCisgICAgICAgICAgICAgICAgJ1RvIGF2b2lkIHRoaXMgcHJvbXB0LCBz
ZXQgImdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlIi4nICUgKAorICAgICAgICAg
ICAgICAgIGVycm9yLm51bV9sb2NhbF9jb21taXRzLCB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdl
KSkKKworICAgIGRlZiBfY29tbWl0KHNlbGYsIHVzZXJuYW1lPU5vbmUsIGZvcmNlX3NxdWFzaD1G
YWxzZSk6CisgICAgICAgIHNlbGYuX3N0YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5fdG9vbC5z
Y20oKS5jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYuX2NvbW1pdF9tZXNzYWdlLCBnaXRfY29tbWl0
PXNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgdXNlcm5hbWU9dXNlcm5hbWUsIGZvcmNlX3NxdWFz
aD1mb3JjZV9zcXVhc2gpCisKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKLSAgICAgICAgY29t
bWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3Ro
aXNfY29tbWl0KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0aW9ucy5zcXVhc2gp
Ci0gICAgICAgIGlmIGxlbihjb21taXRfbWVzc2FnZS5tZXNzYWdlKCkpIDwgNTA6CisgICAgICAg
IHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNz
YWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQpLm1lc3NhZ2UoKQor
ICAgICAgICBpZiBsZW4oc2VsZi5fY29tbWl0X21lc3NhZ2UpIDwgNTA6CiAgICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oIkF0dGVtcHRlZCB0byBjb21taXQgd2l0aCBhIGNvbW1pdCBtZXNzYWdl
IHNob3J0ZXIgdGhhbiA1MCBjaGFyYWN0ZXJzLiAgRWl0aGVyIHlvdXIgcGF0Y2ggaXMgbWlzc2lu
ZyBhIENoYW5nZUxvZyBvciB3ZWJraXQtcGF0Y2ggbWF5IGhhdmUgYSBidWcuIikKLSAgICAgICAg
c3RhdGVbImNvbW1pdF90ZXh0Il0gPSBzZWxmLl90b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3Nh
Z2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpLAotICAgICAgICAgICAgZ2l0X2NvbW1pdD1zZWxm
Ll9vcHRpb25zLmdpdF9jb21taXQsIHNxdWFzaD1zZWxmLl9vcHRpb25zLnNxdWFzaCkKKworICAg
ICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fY29tbWl0KCkKKyAgICAgICAgZXhjZXB0IEFtYmlndW91c0NvbW1pdEVycm9yLCBlOgorICAg
ICAgICAgICAgaWYgc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0oc2VsZi5fY29tbWl0X3dhcm5pbmco
ZSkpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvbW1pdChmb3JjZV9zcXVhc2g9VHJ1ZSkKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBUaGlzIHdpbGwgY29ycmVjdGx5IGlu
dGVycnVwdCB0aGUgcmVzdCBvZiB0aGUgY29tbWl0IHByb2Nlc3MuCisgICAgICAgICAgICAgICAg
cmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRGlkIG5vdCBjb21taXQiKQorICAgICAgICBleGNl
cHQgQXV0aGVudGljYXRpb25FcnJvciwgZToKKyAgICAgICAgICAgIHVzZXJuYW1lID0gVXNlci5w
cm9tcHQoIiVzIGxvZ2luOiAiICUgZS5zZXJ2ZXJfaG9zdCwgcmVwZWF0PTUpCisgICAgICAgICAg
ICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IoIllv
dSBuZWVkIHRvIHNwZWNpZnkgdGhlIHVzZXJuYW1lIG9uICVzIHRvIHBlcmZvcm0gdGhlIGNvbW1p
dCBhcy4iICUgc2VsZi5zdm5fc2VydmVyX2hvc3QpCisgICAgICAgICAgICBzZWxmLl9jb21taXQo
dXNlcm5hbWU9dXNlcm5hbWUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy9vcHRpb25zLnB5CmluZGV4IGZhMzZmNzMwNzg2MTRhMzc4ODA2NWUwMzc4Yjk2
ZTEzOGE4NzNmMzguLjdiNTFmY2EyOTYzN2IwMWMwNTAxZjE0MzNhZTQyYTE0MDU3MjU5NGQgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25z
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25z
LnB5CkBAIC00MiwxMCArNDIsOCBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgZGVzY3Jp
cHRpb24gPSBtYWtlX29wdGlvbigiLW0iLCAiLS1kZXNjcmlwdGlvbiIsIGFjdGlvbj0ic3RvcmUi
LCB0eXBlPSJzdHJpbmciLCBkZXN0PSJkZXNjcmlwdGlvbiIsIGhlbHA9IkRlc2NyaXB0aW9uIHN0
cmluZyBmb3IgdGhlIGF0dGFjaG1lbnQgKGRlZmF1bHQ6IFwicGF0Y2hcIikiKQogICAgIGVtYWls
ID0gbWFrZV9vcHRpb24oIi0tZW1haWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwg
ZGVzdD0iZW1haWwiLCBoZWxwPSJFbWFpbCBhZGRyZXNzIHRvIHVzZSBpbiBDaGFuZ2VMb2dzLiIp
CiAgICAgZm9yY2VfY2xlYW4gPSBtYWtlX29wdGlvbigiLS1mb3JjZS1jbGVhbiIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iQ2xl
YW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5nIHBhdGNoZXMgKHJlbW92ZXMgbG9j
YWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKQotIyBGSVhNRTogTWFrZSBjb21taXQgcmFuZ2VzIHRy
ZWF0IGVhY2ggY29tbWl0IHNlcGFyYXRlbHkgaW5zdGVhZCBvZiBzcXVhc2hpbmcgdGhlbSBpbnRv
IG9uZS4KLSAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24oIi0tZ2l0LWNvbW1pdCIsIGFjdGlv
bj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD0iTG9jYWwgZ2l0IGNvbW1pdCB0byB1
cGxvYWQvbGFuZC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMgYXJlIHNxdWFzaGVkIGludG8gb25l
LiIpCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItZyIsICItLWdpdC1jb21taXQiLCBh
Y3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9Ik9wZXJhdGUgb24gYSBsb2Nh
bCBjb21taXQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4i
KQogICAgIGxvY2FsX2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWxvY2FsLWNvbW1pdCIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImxvY2FsX2NvbW1pdCIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9
Ik1ha2UgYSBsb2NhbCBjb21taXQgZm9yIGVhY2ggYXBwbGllZCBwYXRjaCIpCi0gICAgbm9fc3F1
YXNoID0gbWFrZV9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRl
c3Q9InNxdWFzaCIsIGhlbHA9IkRvbid0IHNxdWFzaCBsb2NhbCBjb21taXRzIGludG8gb25lIG9u
IHVwbG9hZC9sYW5kIChnaXQtb25seSkuIikKICAgICBub25faW50ZXJhY3RpdmUgPSBtYWtlX29w
dGlvbigiLS1ub24taW50ZXJhY3RpdmUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJub25f
aW50ZXJhY3RpdmUiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJOZXZlciBwcm9tcHQgdGhlIHVzZXIs
IGZhaWwgYXMgZmFzdCBhcyBwb3NzaWJsZS4iKQogICAgIG9ic29sZXRlX3BhdGNoZXMgPSBtYWtl
X29wdGlvbigiLS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJvYnNv
bGV0ZV9wYXRjaGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3Qgb2Jzb2xldGUgb2xkIHBh
dGNoZXMgYmVmb3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAgICBvcGVuX2J1ZyA9IG1ha2Vfb3B0
aW9uKCItLW9wZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ib3Blbl9idWciLCBk
ZWZhdWx0PUZhbHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2NpYXRlZCBidWcgaW4gYSBicm93c2Vy
LiIpCkBAIC01NSw2ICs1Myw1IEBAIGNsYXNzIE9wdGlvbnMob2JqZWN0KToKICAgICByZXF1ZXN0
X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLXJlcXVlc3QtY29tbWl0IiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVzdD0icmVxdWVzdF9jb21taXQiLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJNYXJrIHRo
ZSBwYXRjaCBhcyBuZWVkaW5nIGF1dG8tY29tbWl0IGFmdGVyIHJldmlldy4iKQogICAgIHJldmll
dyA9IG1ha2Vfb3B0aW9uKCItLW5vLXJldmlldyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0
PSJyZXZpZXciLCBkZWZhdWx0PVRydWUsIGhlbHA9IkRvIG5vdCBtYXJrIHRoZSBwYXRjaCBmb3Ig
cmV2aWV3LiIpCiAgICAgcmV2aWV3ZXIgPSBtYWtlX29wdGlvbigiLXIiLCAiLS1yZXZpZXdlciIs
IGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJyZXZpZXdlciIsIGhlbHA9IlVw
ZGF0ZSBDaGFuZ2VMb2dzIHRvIHNheSBSZXZpZXdlZCBieSBSRVZJRVdFUi4iKQotICAgIHNxdWFz
aCA9IG1ha2Vfb3B0aW9uKCItcyIsICItLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRl
c3Q9InNxdWFzaCIsIGhlbHA9IlNxdWFzaCBhbGwgbG9jYWwgY29tbWl0cyBpbnRvIG9uZSBvbiB1
cGxvYWQvbGFuZCAoZ2l0LW9ubHkpLiIpCiAgICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCItLXRlc3Qi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0i
UnVuIHJ1bi13ZWJraXQtdGVzdHMgYmVmb3JlIGNvbW1pdHRpbmcuIikKICAgICB1cGRhdGUgPSBt
YWtlX29wdGlvbigiLS1uby11cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idXBk
YXRlIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0
b3J5LiIpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CmluZGV4IDU5MDQ4YTM4YmI1OGFmNTJkZGJmNTQx
NjJhYWMyZDI3ZjBlY2UzNmUuLjQ4YTUxMGY4OTlhMTIzMjhjMmQxZDhmYTg5NGQ1MTAzMzQzZjc5
ZjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9w
cmVwYXJlY2hhbmdlbG9nLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nLnB5CkBAIC00Myw4ICs0Myw2IEBAIGNsYXNzIFByZXBh
cmVDaGFuZ2VMb2coQWJzdHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucXVpZXQsCiAg
ICAgICAgICAgICBPcHRpb25zLmVtYWlsLAogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0
LAotICAgICAgICAgICAgT3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNx
dWFzaCwKICAgICAgICAgXQogCiAgICAgZGVmIF9lbnN1cmVfYnVnX3VybChzZWxmLCBzdGF0ZSk6
CkBAIC02OSwxMCArNjcsOSBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6
CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1idWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmVtYWlsOgogICAgICAgICAgICAgYXJncy5hcHBlbmQo
Ii0tZW1haWw9JXMiICUgc2VsZi5fb3B0aW9ucy5lbWFpbCkKLSAgICAgICAgaWYgc2VsZi5fdG9v
bC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAgICAgICAg
IGFyZ3MuYXBwZW5kKCItLW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5yZW1vdGVf
bWVyZ2VfYmFzZSgpKQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6Ci0gICAg
ICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0
X2NvbW1pdCkKKworICAgICAgICBpZiBzZWxmLl90b29sLnNjbSgpLnN1cHBvcnRfbG9jYWxfY29t
bWl0cygpOgorICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tbWVyZ2UtYmFzZT0lcyIgJSBzZWxm
Ll90b29sLnNjbSgpLm1lcmdlX2Jhc2Uoc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSkKIAogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl90b29sLmV4ZWN1dGl2ZS5ydW5fYW5kX3Rocm93
X2lmX2ZhaWwoYXJncywgc2VsZi5fb3B0aW9ucy5xdWlldCkKZGlmZiAtLWdpdCBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFu
Z2Vsb2dmb3JyZXZlcnQucHkKaW5kZXggNGQyOTlmYTIxYWQzYWJjNDI5ZTI4MjM1OTQ0ZWYxMDY1
N2MyMzc2NS4uMGU3OGJjMjI5NWQwZDNlNmEwMzNlNjE2MzAxZjNiMGFlNzRmMmY5NCAxMDA2NDQK
LS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFu
Z2Vsb2dmb3JyZXZlcnQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2dmb3JyZXZlcnQucHkKQEAgLTM2LDcgKzM2LDcgQEAgY2xh
c3MgUHJlcGFyZUNoYW5nZUxvZ0ZvclJldmVydChBYnN0cmFjdFN0ZXApOgogICAgIGRlZiBydW4o
c2VsZiwgc3RhdGUpOgogICAgICAgICAjIFRoaXMgY291bGQgbW92ZSB0byBwcmVwYXJlLUNoYW5n
ZUxvZyBieSBhZGRpbmcgYSAtLXJldmVydD0gb3B0aW9uLgogICAgICAgICBzZWxmLl9ydW5fc2Ny
aXB0KCJwcmVwYXJlLUNoYW5nZUxvZyIpCi0gICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYu
X3Rvb2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSwgc3F1
YXNoPUZhbHNlKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0
KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpCiAgICAgICAgIGJ1Z191cmwg
PSBzZWxmLl90b29sLmJ1Z3MuYnVnX3VybF9mb3JfYnVnX2lkKHN0YXRlWyJidWdfaWQiXSkgaWYg
c3RhdGVbImJ1Z19pZCJdIGVsc2UgTm9uZQogICAgICAgICBmb3IgY2hhbmdlbG9nX3BhdGggaW4g
Y2hhbmdlbG9nX3BhdGhzOgogICAgICAgICAgICAgIyBGSVhNRTogU2VlbXMgd2Ugc2hvdWxkIHBy
ZXBhcmUgdGhlIG1lc3NhZ2Ugb3V0c2lkZSBvZiBjaGFuZ2Vsb2dzLnB5IGFuZCB0aGVuIGp1c3Qg
cGFzcyBpbgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weQppbmRl
eCBlZjRiYWEyNTEyNDEzZTU2ZGQ5ZmI5ZTFmZjk3NGI2ZGI4ZjJiZTc0Li5lNDZiNzkwMGNlZDky
ODVlNzFkNjc4NDlmNjVlMmVmODQ0ZTY2ODdiIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdl
bG9nc3dpdGhyZXZpZXdlci5weQpAQCAtNDAsOCArNDAsNiBAQCBjbGFzcyBVcGRhdGVDaGFuZ2VM
b2dzV2l0aFJldmlld2VyKEFic3RyYWN0U3RlcCk6CiAgICAgICAgIHJldHVybiBBYnN0cmFjdFN0
ZXAub3B0aW9ucygpICsgWwogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAogICAgICAg
ICAgICAgT3B0aW9ucy5yZXZpZXdlciwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAot
ICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBfZ3Vlc3Nf
cmV2aWV3ZXJfZnJvbV9idWcoc2VsZiwgYnVnX2lkKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKaW5k
ZXggOWY0ZDQ0ZTBiNmM1YjA5YTZhNGEzOGY0NWZmMGNiY2VkNTNkNWI1Yy4uYmRmNzI5ZTRiZmUy
ZDA0NDNiNTc5MTg4ZDU5NjkyY2MwNjY2NDFkNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIucHkKQEAg
LTQxLDggKzQxLDYgQEAgY2xhc3MgVmFsaWRhdGVSZXZpZXdlcihBYnN0cmFjdFN0ZXApOgogICAg
IGRlZiBvcHRpb25zKGNscyk6CiAgICAgICAgIHJldHVybiBBYnN0cmFjdFN0ZXAub3B0aW9ucygp
ICsgWwogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAgICAgICAgT3B0aW9u
cy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAgXQogCiAg
ICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgbW92ZSBvbnRvIENoYW5nZUxvZ0VudHJ5
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60408</attachid>
            <date>2010-07-02 14:44:31 -0700</date>
            <delta_ts>2010-07-09 12:16:59 -0700</delta_ts>
            <desc>Support --git-commit=HEAD..</desc>
            <filename>bug-39624-20100702144430.patch</filename>
            <type>text/plain</type>
            <size>61116</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCAxNmU1OWY4YmE0ZjVhOWY4MWUxZGYxZTUzYzc1NjJhODU3MmZlOGY3Li4xYWEwYmM2
YzRkNWRmMDA1YzdkYTBiMDBkZTVmMTI0NTE2OTM3ZTkwIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzkgQEAK
KzIwMTAtMDUtMjQgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIHNxdWFzaCB0aGUgZGVm
YXVsdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM5
NjI0CisKKyAgICAgICAgRGVsZXRlIC0tbm8tc3F1YXNoIGVudGlyZWx5LiBUaGF0IHVzZS1jYXNl
IChsb2NhbC1jb21taXQtcGVyLWJ1Zykgd2lsbAorICAgICAgICBuZWVkIHRvIGJlIG1ldCBieSBh
IHdyYXBwZXIgc2NyaXB0IGFyb3VuZCB3ZWJraXQtcGF0Y2guCisKKyAgICAgICAgSWYgdGhlcmUg
YXJlIGxvY2FsIGNvbW1pdHMgYW5kIHdvcmtpbmcgY29weSBjaGFuZ2VzLCB0aGVuIHByb21wdCB0
aGUgdXNlcgorICAgICAgICB3aGV0aGVyIHRvIGNvbnRpbnVlLiBTZXR0aW5nIGdpdCBjb25maWcg
d2Via2l0LXBhdGNoLmNvbW1pdF9zaG91bGRfYWx3YXlzX3NxdWFzaAorICAgICAgICB0cnVlIGJ5
cGFzc2VzIHRoZSBwcm9tcHQuCisKKyAgICAgICAgKiBTY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHls
ZToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvc3R5bGVfcmVmZXJlbmNlcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvbW9ja3Rvb2wucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2Fic3RyYWN0c3RlcC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
YXBwbHlwYXRjaHdpdGhsb2NhbGNvbW1pdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9vcHRpb25zLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9wcmVwYXJlY2hhbmdlbG9nLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5OgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5OgorCiAy
MDEwLTA3LTAyICBCcmlhbiBXZWluc3RlaW4gIDxid2VpbnN0ZWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBTdGV2ZSBGYWxrZW5idXJnLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNr
LXdlYmtpdC1zdHlsZQppbmRleCAxOWQzNzYyNzU1OTI3ZGJlNTI5MmJmNTkxNTk3MDhkOTIxYWI2
ZDI3Li45YTFhZTFlM2JmNGQwMGI0NDg2M2U1ZjNkZTc5NGRmYzEzODhiMmFkIDEwMDc1NQotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAtMTE1LDcgKzExNSw3IEBAIGRlZiBtYWlu
KCk6CiAgICAgaWYgcGF0aHM6CiAgICAgICAgIGZpbGVfcmVhZGVyLnByb2Nlc3NfcGF0aHMocGF0
aHMpCiAgICAgZWxzZToKLSAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0Y2gob3B0
aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAgICAgICAgcGF0Y2ggPSBjaGVja291
dC5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBwYXRjaF9jaGVja2Vy
ID0gUGF0Y2hSZWFkZXIoZmlsZV9yZWFkZXIpCiAgICAgICAgIHBhdGNoX2NoZWNrZXIuY2hlY2so
cGF0Y2gpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2No
ZWNrb3V0L2FwaS5weQppbmRleCBhNWFjOTM5OGU4OGU3NTFmZTg1NDQzNjRiNjljMzYzNWZlMTBh
N2YxLi5jYTI4ZTMyMzMyNTg3MmRjZWMwMWQxM2FkMTY3ZjUyNWJmNzc2ZDIzIDEwMDY0NAotLS0g
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGkucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5CkBA
IC04MywxNiArODMsMTYgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKICAgICBkZWYgYnVnX2lk
X2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAgICAgICAgIHJldHVybiBzZWxmLmNvbW1p
dF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikuYnVnX2lkKCkKIAotICAgIGRlZiBtb2RpZmll
ZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIG1vZGlmaWVk
X2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCk6CiAgICAgICAgICMgU0NNIHJldHVybnMgcGF0
aHMgcmVsYXRpdmUgdG8gc2NtLmNoZWNrb3V0X3Jvb3QKICAgICAgICAgIyBDYWxsZXJzIChlc3Bl
Y2lhbGx5IHRob3NlIHVzaW5nIHRoZSBDaGFuZ2VMb2cgY2xhc3MpIG1heQogICAgICAgICAjIGV4
cGVjdCBhYnNvbHV0ZSBwYXRocywgc28gdGhpcyBtZXRob2QgcmV0dXJucyBhYnNvbHV0ZSBwYXRo
cy4KLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9j
b21taXQsIHNxdWFzaCkKKyAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2Vk
X2ZpbGVzKGdpdF9jb21taXQpCiAgICAgICAgIGFic29sdXRlX3BhdGhzID0gW29zLnBhdGguam9p
bihzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCwgcGF0aCkgZm9yIHBhdGggaW4gY2hhbmdlZF9maWxl
c10KICAgICAgICAgcmV0dXJuIFtwYXRoIGZvciBwYXRoIGluIGFic29sdXRlX3BhdGhzIGlmIHNl
bGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQogCi0gICAgZGVmIGNvbW1pdF9tZXNzYWdl
X2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgotICAgICAgICBjaGFu
Z2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdCwgc3F1YXNo
KQorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1p
dCk6CisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYubW9kaWZpZWRfY2hhbmdlbG9ncyhn
aXRfY29tbWl0KQogICAgICAgICBpZiBub3QgbGVuKGNoYW5nZWxvZ19wYXRocyk6CiAgICAgICAg
ICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJGb3VuZCBubyBtb2RpZmllZCBDaGFuZ2VM
b2dzLCBjYW5ub3QgY3JlYXRlIGEgY29tbWl0IG1lc3NhZ2UuXG4iCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiQWxsIGNoYW5nZXMgcmVxdWlyZSBhIENoYW5nZUxvZy4gIFNlZTpcbiIK
QEAgLTEwOSw5ICsxMDksOSBAQCBjbGFzcyBDaGVja291dChvYmplY3QpOgogICAgICAgICAjIEZJ
WE1FOiBXZSBzaG91bGQgc29ydCBhbmQgbGFiZWwgdGhlIENoYW5nZUxvZyBtZXNzYWdlcyBsaWtl
IGNvbW1pdC1sb2ctZWRpdG9yIGRvZXMuCiAgICAgICAgIHJldHVybiBDb21taXRNZXNzYWdlKCIi
LmpvaW4oY2hhbmdlbG9nX21lc3NhZ2VzKS5zcGxpdGxpbmVzKCkpCiAKLSAgICBkZWYgYnVnX2lk
X2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0LCBzcXVhc2gpOgorICAgIGRlZiBidWdf
aWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQpOgogICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKHNlbGYuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNf
Y29tbWl0KGdpdF9jb21taXQsIHNxdWFzaCkubWVzc2FnZSgpKQorICAgICAgICAgICAgcmV0dXJu
IHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChnaXRfY29t
bWl0KS5tZXNzYWdlKCkpCiAgICAgICAgIGV4Y2VwdCBTY3JpcHRFcnJvciwgZToKICAgICAgICAg
ICAgIHBhc3MgIyBXZSBtaWdodCBub3QgaGF2ZSBDaGFuZ2VMb2dzLgogCkBAIC0xMzEsNyArMTMx
LDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAogICAgICAgICAjIFdlIHJldmVydCB0aGUg
Q2hhbmdlTG9ncyBiZWNhdXNlIHJlbW92aW5nIGxpbmVzIGZyb20gYSBDaGFuZ2VMb2cKICAgICAg
ICAgIyBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBDaGFuZ2VMb2dzIGFyZSBhcHBlbmQgb25seS4KLSAg
ICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1v
ZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBpZiBsZW4oY2hhbmdl
bG9nX3BhdGhzKToKICAgICAgICAgICAgIHNlbGYuX3NjbS5yZXZlcnRfZmlsZXMoY2hhbmdlbG9n
X3BhdGhzKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkKaW5kZXggMTQzNjM3OWE4ZDczYjVkMjg0
OWNlODcxZDI0NTAzMDg1MGYzYTJmNy4uZmRmZDg3OThkZDVjYjk3ZTNlMWM1YTI5NmE2YzA2MGJi
M2MxNmM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weQpAQCAtMTE0LDExICsxMTQsMTEgQEAg
Y2xhc3MgQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
ICAgICAjIENoYW5nZUxvZyBpcyBkaWZmaWN1bHQgdG8gbW9jayBhdCBjdXJyZW50LgogICAgIGRl
ZiB0ZXN0X2NvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAgY2hl
Y2tvdXQgPSBDaGVja291dChOb25lKQotICAgICAgICBjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vs
b2dzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDogWyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxv
ZzIiXQorICAgICAgICBjaGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRhIGdpdF9j
b21taXQ6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cyIl0KICAgICAgICAgb3V0cHV0ID0gT3V0
cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0ZGVyciA9ICJQYXJzaW5nIENoYW5nZUxv
ZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFuZ2VMb2c6IENoYW5nZUxvZzJcbiIKICAgICAgICAg
Y29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNzZXJ0X291dHB1dHMoc2VsZiwgY2hlY2tvdXQuY29t
bWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0LAotICAgICAgICAgICAga3dhcmdzPXsiZ2l0X2Nv
bW1pdCI6IE5vbmUsICJzcXVhc2giOiBGYWxzZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9z
dGRlcnIpCisgICAgICAgICAgICBrd2FyZ3M9eyJnaXRfY29tbWl0IjogTm9uZX0sIGV4cGVjdGVk
X3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0
X21lc3NhZ2UubWVzc2FnZSgpLCBzZWxmLmV4cGVjdGVkX2NvbW1pdF9tZXNzYWdlKQogCiAKQEAg
LTE2MywxMyArMTYzLDEzIEBAIGNsYXNzIENoZWNrb3V0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmKToKICAgICAgICAgc2Nt
ID0gTW9jaygpCiAgICAgICAgIGNoZWNrb3V0ID0gQ2hlY2tvdXQoc2NtKQotICAgICAgICBjaGVj
a291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwg
c3F1YXNoOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5j
b250ZW50cygpLnNwbGl0bGluZXMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291
dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKSwg
MzY2MjkpCisgICAgICAgIGNoZWNrb3V0LmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9
IGxhbWJkYSBnaXRfY29tbWl0OiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vs
b2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQ9Tm9uZSksIDM2
NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmKToKICAgICAgICAg
c2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVja291dF9yb290ID0gIi9mb28vYmFyIgotICAg
ICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBnaXRfY29tbWl0LCBzcXVhc2g6IFsiZmls
ZTEiLCAiQ2hhbmdlTG9nIiwgInJlbGF0aXZlL3BhdGgvQ2hhbmdlTG9nIl0KKyAgICAgICAgc2Nt
LmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1pdDogWyJmaWxlMSIsICJDaGFuZ2VMb2ci
LCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQogICAgICAgICBjaGVja291dCA9IENoZWNrb3V0
KHNjbSkKICAgICAgICAgZXhwZWN0ZWRfY2hhbmdsb2dzID0gWyIvZm9vL2Jhci9DaGFuZ2VMb2ci
LCAiL2Zvby9iYXIvcmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVh
c2g9RmFsc2UpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUpLCBleHBlY3RlZF9j
aGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1v
bi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9j
aGVja291dC9zY20ucHkKaW5kZXggNzAyZTFhMGZlOTE2MDZjZWZkYWI3OTM4Mjg1OGMzMTc3ZWI3
MDcyMC4uNTFhNDBjODY5MDQ2NzZlY2U2ZWRiZmVmMTA5MWNjYzQwMmYxMDY5NyAxMDA2NDQKLS0t
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtLnB5Cisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbS5weQpA
QCAtMzUsNyArMzUsNiBAQCBpbXBvcnQgc3lzCiBpbXBvcnQgc2h1dGlsCiAKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IEV4ZWN1dGl2ZSwgcnVuX2NvbW1hbmQs
IFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNl
cgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQg
ZXJyb3IsIGxvZwogCiAKQEAgLTk0LDYgKzkzLDE3IEBAIGRlZiBjb21taXRfZXJyb3JfaGFuZGxl
cihlcnJvcik6CiAgICAgRXhlY3V0aXZlLmRlZmF1bHRfZXJyb3JfaGFuZGxlcihlcnJvcikKIAog
CitjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yKEV4Y2VwdGlvbik6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHNlcnZlcl9ob3N0KToKKyAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdCA9IHNlcnZlcl9o
b3N0CisKKworY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJyb3IoRXhjZXB0aW9uKToKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2Ns
ZWFuKToKKyAgICAgICAgc2VsZi5udW1fbG9jYWxfY29tbWl0cyA9IG51bV9sb2NhbF9jb21taXRz
CisgICAgICAgIHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4gPSB3b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbgorCisKICMgU0NNIG1ldGhvZHMgYXJlIGV4cGVjdGVkIHRvIHJldHVybiBw
YXRocyByZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0X3Jvb3QuCiBjbGFzcyBTQ006CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGN3ZCk6CkBAIC0xOTgsNyArMjA4LDcgQEAgY2xhc3MgU0NNOgogICAg
IGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1w
bGVtZW50KCkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwg
c3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9u
ZSk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAogICAgIGRlZiBj
aGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToKQEAgLTIxMyw3ICsyMjMsNyBAQCBjbGFz
cyBTQ006CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxmKToKICAgICAgICAgc2VsZi5fc3ViY2xh
c3NfbXVzdF9pbXBsZW1lbnQoKQogCi0gICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29t
bWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9j
b21taXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAog
ICAgIGRlZiBjb21taXR0ZXJfZW1haWxfZm9yX3JldmlzaW9uKHNlbGYsIHJldmlzaW9uKToKQEAg
LTIzNywxMCArMjQ3LDcgQEAgY2xhc3MgU0NNOgogICAgIGRlZiByZXZlcnRfZmlsZXMoc2VsZiwg
ZmlsZV9wYXRocyk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAot
ICAgIGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgIHNlbGYuX3N1YmNs
YXNzX211c3RfaW1wbGVtZW50KCkKLQotICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgor
ICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUs
IGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZhbHNlKToKICAgICAgICAgc2VsZi5fc3Vi
Y2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCiAgICAgZGVmIHN2bl9jb21taXRfbG9nKHNlbGYsIHN2
bl9yZXZpc2lvbik6CkBAIC0zNzcsNyArMzg0LDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAg
IHBhcmVudCwgYmFzZSA9IG9zLnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKHBhdGgpKQogICAg
ICAgICByZXR1cm4gc2VsZi5ydW4oWyJzdm4iLCAiZGVsZXRlIiwgIi0tZm9yY2UiLCBiYXNlXSwg
Y3dkPXBhcmVudCkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9u
ZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9
Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9zdGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5h
bWVzKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5fc3RhdHVzX3JlZ2V4cCgiQUNETVIiKSkK
IAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CkBA
IC00MDMsNyArNDEwLDcgQEAgY2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgIHJldHVybiAic3ZuIgog
CiAgICAgIyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxkIGJlIG9uIENoZWNrb3V0LgotICAgIGRl
ZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAg
ZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1
cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAg
ICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBj
b250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIi
CkBAIC00NzcsMjIgKzQ4NCwxOSBAQCBjbGFzcyBTVk4oU0NNKToKICAgICAgICAgIyBGSVhNRTog
VGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxmLmNoZWNrb3V0X3Jvb3QuCiAgICAgICAg
IHNlbGYucnVuKFsnc3ZuJywgJ3JldmVydCddICsgZmlsZV9wYXRocykKIAotICAgIGRlZiBzaG91
bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAgICMgU1ZOIGRvZXNuJ3Qgc3VwcG9ydCB0
aGUgY29uY2VwdCBvZiBzcXVhc2hpbmcuCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVm
IGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2Nv
bW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAgICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0
IGFyZSBub3QgdXNlZCBieSBTVk4uCisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwg
bWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBmb3JjZV9zcXVhc2g9RmFs
c2UpOgorICAgICAgICAjIGdpdC1jb21taXQgYW5kIGZvcmNlIGFyZSBub3QgdXNlZCBieSBTVk4u
CiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAgICAgICAgIyBSZXR1cm4gYSBzdHJpbmcg
d2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlz
IG91dHB1dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAgICByZXR1cm4gIkRyeSBydW4sIG5vIGNv
bW1pdC5cbkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKKwogICAgICAgICBzdm5fY29tbWl0X2FyZ3Mg
PSBbInN2biIsICJjb21taXQiXQorCiAgICAgICAgIGlmIG5vdCB1c2VybmFtZSBhbmQgbm90IHNl
bGYuaGFzX2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKCk6Ci0gICAgICAgICAgICB1c2VybmFtZSA9
IFVzZXIucHJvbXB0KCIlcyBsb2dpbjogIiAlIHNlbGYuc3ZuX3NlcnZlcl9ob3N0LCByZXBlYXQ9
NSkKLSAgICAgICAgICAgIGlmIG5vdCB1c2VybmFtZToKLSAgICAgICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIHVzZXJuYW1lIG9uICVzIHRvIHBlcmZv
cm0gdGhlIGNvbW1pdCBhcy4iICUgc2VsZi5zdm5fc2VydmVyX2hvc3QpCisgICAgICAgICAgICBy
YWlzZSBBdXRoZW50aWNhdGlvbkVycm9yKHNlbGYuc3ZuX3NlcnZlcl9ob3N0KQogICAgICAgICBp
ZiB1c2VybmFtZToKICAgICAgICAgICAgIHN2bl9jb21taXRfYXJncy5leHRlbmQoWyItLXVzZXJu
YW1lIiwgdXNlcm5hbWVdKQorCiAgICAgICAgIHN2bl9jb21taXRfYXJncy5leHRlbmQoWyItbSIs
IG1lc3NhZ2VdKQogICAgICAgICAjIEZJWE1FOiBTaG91bGQgdGhpcyB1c2UgY3dkPXNlbGYuY2hl
Y2tvdXRfcm9vdD8KICAgICAgICAgcmV0dXJuIHNlbGYucnVuKHN2bl9jb21taXRfYXJncywgZXJy
b3JfaGFuZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikKQEAgLTU4NCwyNCArNTg4LDI1IEBAIGNs
YXNzIEdpdChTQ00pOgogICAgIGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIHJldHVy
biBzZWxmLnJ1bihbImdpdCIsICJybSIsICItZiIsIHBhdGhdKQogCi0gICAgZGVmIF9tZXJnZV9i
YXNlKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIF9hc3NlcnRfc3luY2VkKHNl
bGYpOgorICAgICAgICBpZiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxpc3QnLCAnLS1t
YXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ15IRUFEJ10pKToKKyAgICAg
ICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9Ik5vdCBmdWxseSBtZXJnZWQvcmViYXNl
ZCB0byAlcy4gVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxmLnJl
bW90ZV9icmFuY2hfcmVmKCkpCisKKyAgICBkZWYgbWVyZ2VfYmFzZShzZWxmLCBnaXRfY29tbWl0
KToKICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKLSAgICAgICAgICAgICMgRklYTUU6IENhbGxpbmcg
Y29kZSBzaG91bGQgdHVybiBjb21taXQgcmFuZ2VzIGludG8gYSBsaXN0IG9mIGNvbW1pdCBJRHMK
LSAgICAgICAgICAgICMgYW5kIHRoZW4gdHJlYXQgZWFjaCBjb21taXQgc2VwYXJhdGVseS4KKyAg
ICAgICAgICAgICMgU3BlY2lhbC1jYXNlIEhFQUQuLiB0byBtZWFuIHdvcmtpbmctY29weSBjaGFu
Z2VzIG9ubHkuCisgICAgICAgICAgICBpZiBnaXRfY29tbWl0LnVwcGVyKCkgPT0gJ0hFQUQuLic6
CisgICAgICAgICAgICAgICAgcmV0dXJuICdIRUFEJworCiAgICAgICAgICAgICBpZiAnLi4nIG5v
dCBpbiBnaXRfY29tbWl0OgogICAgICAgICAgICAgICAgIGdpdF9jb21taXQgPSBnaXRfY29tbWl0
ICsgIl4uLiIgKyBnaXRfY29tbWl0CiAgICAgICAgICAgICByZXR1cm4gZ2l0X2NvbW1pdAogCi0g
ICAgICAgIGlmIHNlbGYuc2hvdWxkX3NxdWFzaChzcXVhc2gpOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYucmVtb3RlX21lcmdlX2Jhc2UoKQotCi0gICAgICAgICMgRklYTUU6IE5vbi1zcXVhc2gg
YmVoYXZpb3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRoX21lc3NhZ2UuIEl0IHJhaXNlcyBhbiBl
cnJvcgotICAgICAgICAjIGlmIHRoZXJlIGFyZSB3b3JraW5nIGNvcHkgY2hhbmdlcyBhbmQgLS1z
cXVhc2ggb3IgLS1uby1zcXVhc2ggd2Fzbid0IHBhc3NlZCBpbi4KLSAgICAgICAgIyBJZiAtLW5v
LXNxdWFzaCwgdGhlbiBpdCBzaG91bGQgcHJvY2VlZCB3aXRoIGVhY2ggbG9jYWwgY29tbWl0IGFz
IGEgc2VwYXJhdGUgcGF0Y2guCi0gICAgICAgIHJldHVybiAnSEVBRCcKKyAgICAgICAgc2VsZi5f
YXNzZXJ0X3N5bmNlZCgpCisgICAgICAgIHJldHVybiBzZWxmLnJlbW90ZV9tZXJnZV9iYXNlKCkK
IAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5v
bmUpOgotICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1u
YW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIs
IHNlbGYuX21lcmdlX2Jhc2UoZ2l0X2NvbW1pdCwgc3F1YXNoKV0KKyAgICBkZWYgY2hhbmdlZF9m
aWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgorICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsn
Z2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4
dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYubWVyZ2VfYmFzZShnaXRfY29tbWl0KV0KICAg
ICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRfZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVz
X2NvbW1hbmQsIHNlbGYuX3N0YXR1c19yZWdleHAoIkFETSIpKQogCiAgICAgZGVmIF9jaGFuZ2Vz
X2ZpbGVzX2Zvcl9jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CkBAIC02MzMsMTIgKzYzOCwxMiBA
QCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgZGlzcGxheV9uYW1lKHNlbGYpOgogICAgICAgICBy
ZXR1cm4gImdpdCIKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25l
LCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5v
bmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2VudGlu
ZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJp
bmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxlIGRp
ZmZlcmVudCBlbmNvZGluZ3MuIiIiCiAgICAgICAgICMgRklYTUU6IFRoaXMgc2hvdWxkIHByb2Jh
Ymx5IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290Ci0gICAgICAgIHJldHVybiBzZWxmLnJ1bihb
J2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgIi0tbm8tZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4
IiwgIi1NIiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29tbWl0LCBzcXVhc2gpXSwgZGVjb2RlX291
dHB1dD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHNlbGYucnVuKFsnZ2l0JywgJ2RpZmYnLCAnLS1i
aW5hcnknLCAiLS1uby1leHQtZGlmZiIsICItLWZ1bGwtaW5kZXgiLCAiLU0iLCBzZWxmLm1lcmdl
X2Jhc2UoZ2l0X2NvbW1pdCldLCBkZWNvZGVfb3V0cHV0PUZhbHNlKQogCiAgICAgQGNsYXNzbWV0
aG9kCiAgICAgZGVmIGdpdF9jb21taXRfZnJvbV9zdm5fcmV2aXNpb24oY2xzLCByZXZpc2lvbik6
CkBAIC02NzksNjMgKzY4NCw0MSBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgcmV2ZXJ0X2Zp
bGVzKHNlbGYsIGZpbGVfcGF0aHMpOgogICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdjaGVja291
dCcsICdIRUFEJ10gKyBmaWxlX3BhdGhzKQogCi0gICAgZGVmIF9nZXRfc3F1YXNoX2Vycm9yX21l
c3NhZ2Uoc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMpOgotICAgICAgICB3b3JraW5nX2RpcmVjdG9y
eV9tZXNzYWdlID0gIiIgaWYgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigpIGVsc2Ug
IiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCi0gICAgICAgIHJldHVybiAoIiIiVGhlcmUgYXJl
ICVzIGxvY2FsIGNvbW1pdHMlcy4gRG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6Ci0gICAgICAgICAg
ICAxKSBVc2UgLS1zcXVhc2ggb3IgLS1uby1zcXVhc2gKLSAgICAgICAgICAgIDIpIGdpdCBjb25m
aWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlL2ZhbHNlCi0gICAgICAgICAgICAiIiIgJSAobnVt
X2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X21lc3NhZ2UpKQotCi0gICAgZGVmIHNo
b3VsZF9zcXVhc2goc2VsZiwgc3F1YXNoKToKLSAgICAgICAgaWYgc3F1YXNoIGlzIE5vbmU6Ci0g
ICAgICAgICAgICBjb25maWdfc3F1YXNoID0gR2l0LnJlYWRfZ2l0X2NvbmZpZygnd2Via2l0LXBh
dGNoLnNxdWFzaCcpCi0gICAgICAgICAgICBpZiAoY29uZmlnX3NxdWFzaCBhbmQgY29uZmlnX3Nx
dWFzaCBpcyBub3QgIiIpOgotICAgICAgICAgICAgICAgIHNxdWFzaCA9IGNvbmZpZ19zcXVhc2gu
bG93ZXIoKSA9PSAidHJ1ZSIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBP
bmx5IHJhaXNlIGFuIGVycm9yIGlmIHRoZXJlIGFyZSBhY3R1YWxseSBtdWx0aXBsZSBjb21taXRz
IHRvIHNxdWFzaC4KLSAgICAgICAgICAgICAgICBudW1fbG9jYWxfY29tbWl0cyA9IGxlbihzZWxm
LmxvY2FsX2NvbW1pdHMoKSkKLSAgICAgICAgICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+
IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgbm90IHNlbGYud29ya2luZ19kaXJlY3Rv
cnlfaXNfY2xlYW4oKSk6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1l
c3NhZ2U9c2VsZi5fZ2V0X3NxdWFzaF9lcnJvcl9tZXNzYWdlKG51bV9sb2NhbF9jb21taXRzKSkK
LQotICAgICAgICBpZiBzcXVhc2ggYW5kIHNlbGYuX3JlbW90ZV9icmFuY2hfaGFzX2V4dHJhX2Nv
bW1pdHMoKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9IkNhbm5vdCB1
c2UgLS1zcXVhc2ggd2hlbiBIRUFEIGlzIG5vdCBmdWxseSBtZXJnZWQvcmViYXNlZCB0byAlcy4g
IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBicmFuY2ggbmVl
ZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCkpCisgICAg
ZGVmIF9hc3NlcnRfY2FuX3NxdWFzaChzZWxmLCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbik6
CisgICAgICAgIHNxdWFzaCA9IEdpdC5yZWFkX2dpdF9jb25maWcoJ3dlYmtpdC1wYXRjaC5jb21t
aXRfc2hvdWxkX2Fsd2F5c19zcXVhc2gnKQorICAgICAgICBzaG91bGRfc3F1YXNoID0gc3F1YXNo
IGFuZCBzcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKIAotICAgICAgICByZXR1cm4gc3F1YXNoCisg
ICAgICAgIGlmIG5vdCBzaG91bGRfc3F1YXNoOgorICAgICAgICAgICAgIyBPbmx5IHdhcm4gaWYg
dGhlcmUgYXJlIGFjdHVhbGx5IG11bHRpcGxlIGNvbW1pdHMgdG8gc3F1YXNoLgorICAgICAgICAg
ICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBsZW4oc2VsZi5sb2NhbF9jb21taXRzKCkpCisgICAgICAg
ICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBh
bmQgbm90IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICAgICAgICAgICAgICByYWlz
ZSBBbWJpZ3VvdXNDb21taXRFcnJvcihudW1fbG9jYWxfY29tbWl0cywgd29ya2luZ19kaXJlY3Rv
cnlfaXNfY2xlYW4pCiAKLSAgICBkZWYgX3JlbW90ZV9icmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMo
c2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4ocnVuX2NvbW1hbmQoWydnaXQnLCAncmV2LWxpc3Qn
LCAnLS1tYXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKSwgJ15IRUFEJ10pKQot
Ci0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9u
ZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNvbW1pdF93aXRoX21l
c3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBmb3Jj
ZV9zcXVhc2g9RmFsc2UpOgogICAgICAgICAjIFVzZXJuYW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdp
dCBjb21taXRzLgorICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbiA9IHNlbGYud29y
a2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKQorCiAgICAgICAgIGlmIGdpdF9jb21taXQ6CisgICAg
ICAgICAgICAjIFNwZWNpYWwtY2FzZSBIRUFELi4gdG8gbWVhbiB3b3JraW5nLWNvcHkgY2hhbmdl
cyBvbmx5LgorICAgICAgICAgICAgaWYgZ2l0X2NvbW1pdC51cHBlcigpID09ICdIRUFELi4nOgor
ICAgICAgICAgICAgICAgIGlmIHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuOgorICAgICAgICAg
ICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJUaGUgd29ya2luZyBjb3B5IGlz
IG5vdCBtb2RpZmllZC4gLS1naXQtY29tbWl0PUhFQUQuLiBvbmx5IGNvbW1pdHMgd29ya2luZyBj
b3B5IGNoYW5nZXMuIikKKyAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhf
bWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb21taXRfb25f
YnJhbmNoKG1lc3NhZ2UsICdIRUFEJykKKwogICAgICAgICAgICAgIyBOZWVkIHdvcmtpbmcgZGly
ZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNvIHdlIGNhbiBjaGVja291dCB0aGUgbWVy
Z2UgYnJhbmNoLgotICAgICAgICAgICAgaWYgbm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNf
Y2xlYW4oKToKKyAgICAgICAgICAgIGlmIG5vdCB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbjoK
ICAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQtcGF0Y2ggbGFuZCB3aWxsIG1vZGlmeSB0
aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZpZXdlci4KICAgICAgICAgICAgICAgICAj
IFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29weSBhbmQgY2F1c2UgdXMgdG8gaGl0IHRo
aXMgZXJyb3IuCi0gICAgICAgICAgICAgICAgIyBUaGUgQ2hhbmdlTG9nIG1vZGlmaWNhdGlvbiBj
b3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3RpbmcgbG9jYWwgY29tbWl0PworICAgICAg
ICAgICAgICAgICMgVGhlIENoYW5nZUxvZyBtb2RpZmljYXRpb24gY291bGQgYmUgbWFkZSB0byBt
b2RpZnkgdGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1pdC4KICAgICAgICAgICAgICAgICByYWlzZSBT
Y3JpcHRFcnJvcihtZXNzYWdlPSJXb3JraW5nIGNvcHkgaXMgbW9kaWZpZWQuIENhbm5vdCBjb21t
aXQgaW5kaXZpZHVhbCBnaXRfY29tbWl0cy4iKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bW1pdF9vbl9icmFuY2gobWVzc2FnZSwgZ2l0X2NvbW1pdCkKIAotICAgICAgICBzcXVhc2ggPSBz
ZWxmLnNob3VsZF9zcXVhc2goc3F1YXNoKQotICAgICAgICBpZiBzcXVhc2g6Ci0gICAgICAgICAg
ICBzZWxmLnJ1bihbJ2dpdCcsICdyZXNldCcsICctLXNvZnQnLCBzZWxmLnJlbW90ZV9icmFuY2hf
cmVmKCldKQotICAgICAgICAgICAgc2VsZi5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UobWVz
c2FnZSkKLSAgICAgICAgZWxpZiBub3Qgc2VsZi53b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbigp
OgotICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSk6Ci0gICAgICAg
ICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5nIGNvcHkgY2hhbmdlcy4gQXNzdW1lIHRo
ZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSAgICAgICAgICAgICAgICBzZWxmLmNvbW1pdF9sb2Nh
bGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAgZWxpZiBzcXVhc2ggaXMgTm9u
ZToKLSAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRpZG4ndCBleHBsaWNpdGx5IHNheSB0byBz
cXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxvY2FsIGNvbW1pdHMKLSAgICAgICAgICAg
ICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4gTm90IGNsZWFyIHdoYXQgdGhlIHVzZXIg
d2FudHMuCi0gICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iIiJUaGVy
ZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMuIERvIG9uZSBvZiB0
aGUgZm9sbG93aW5nOgotMSkgQ29tbWl0L3JldmVydCB3b3JraW5nIGNvcHkgY2hhbmdlcy4KLTIp
IFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAotMykgZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2gu
c3F1YXNoIHRydWUvZmFsc2UKLSIiIikKLQotICAgICAgICAjIEZJWE1FOiBUaGlzIHdpbGwgY29t
bWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGggaXQncyBvd24gbWVzc2FnZS4gV2Ugc2hv
dWxkIHJlc3RydWN0dXJlCi0gICAgICAgICMgc28gdGhhdCBlYWNoIGxvY2FsIGNvbW1pdCBoYXMg
dGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJhc2VkIG9mZiBpdCdzIENoYW5nZUxvZ3Mu
CisgICAgICAgIGlmIG5vdCBmb3JjZV9zcXVhc2g6CisgICAgICAgICAgICBzZWxmLl9hc3NlcnRf
Y2FuX3NxdWFzaCh3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbikKKyAgICAgICAgc2VsZi5fYXNz
ZXJ0X3N5bmNlZCgpCisgICAgICAgIHNlbGYucnVuKFsnZ2l0JywgJ3Jlc2V0JywgJy0tc29mdCcs
IHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKV0pCisgICAgICAgIHNlbGYuY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHJldHVybiBzZWxmLnB1c2hfbG9jYWxfY29t
bWl0c190b19zZXJ2ZXIoKQogCiAgICAgZGVmIF9jb21taXRfb25fYnJhbmNoKHNlbGYsIG1lc3Nh
Z2UsIGdpdF9jb21taXQpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5CmluZGV4IGY3NDRlMmE0NGNh
MTQxZWU4OGI0NWI5MDgxYTY3NDc1ODI3OGUwY2IuLmQ3MmQ3OGUyYTczYzg4ZDU4YTI4Y2U1M2Ez
MmU4OWEzZDg1NzY4OWYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5pdHRlc3QucHkKQEAgLTQ0LDcgKzQ0LDcg
QEAgaW1wb3J0IHNodXRpbAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRlCiBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENoZWNrb3V0Ci1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5jaGVja291dC5zY20gaW1wb3J0IGRldGVjdF9zY21fc3lzdGVtLCBTQ00sIFNWTiwgQ2hl
Y2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hhbmRsZXIKK2Zyb20gd2Via2l0cHkuY29t
bW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGV0ZWN0X3NjbV9zeXN0ZW0sIFNDTSwgU1ZOLCBDaGVj
a291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFuZGxlciwgQXV0aGVudGljYXRpb25FcnJv
ciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKIGZyb20gd2Via2l0cHkuY29tbW9uLmNvbmZpZy5jb21t
aXR0ZXJzIGltcG9ydCBDb21taXR0ZXIgICMgRklYTUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVk
ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6aWxsYSBpbXBvcnQgQXR0YWNobWVudCAj
IEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5z
eXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUsIHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJv
cgpAQCAtNTkzLDYgKzU5MywxMCBAQCBRMWRUQngwQUFBQjQyaXRnNEdsZ1lKakd3TUREeU9ETXhN
RHczNEdCZ1FFQUpQUURKQT09CiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfdXNlcm5hbWUoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2UoImRiYXRl
c0B3ZWJraXQub3JnIikKIAorICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRob3V0X2F1dGhvcml6YXRp
b24oc2VsZik6CisgICAgICAgIHNlbGYuc2NtLmhhc19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbSA9
IGxhbWJkYTogRmFsc2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXV0aGVudGljYXRpb25F
cnJvciwgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dpdGhfbWVzc2FnZSkKKwogICAgIGRlZiB0
ZXN0X2hhc19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbShzZWxmKToKICAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5zdm5fY2hlY2tvdXRfcGF0aCkKICAgICAgICAgZmFrZV9ob21l
X2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PSJmYWtlX2hvbWVfZGlyIikKQEAgLTg1Niwy
NCArODYwLDE0IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAKICAgICBkZWYgdGVzdF9j
b21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0
aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgc2VsZi5zY20uY29t
bWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAg
Y29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3Qg
Y29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnNjbS5zdm5fcmV2aXNpb25f
ZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzZWxmLnNjbS5k
cnlydW4gPSBUcnVlCiAgICAgICAgIHdyaXRlX2ludG9fZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUn
LCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQotICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9j
YWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgY29t
bWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0
IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9u
X2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnMCcpCiAKLSAgICBkZWYgX29uZV9sb2Nh
bF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcyhzZWxmKToKLSAgICAgICAgd3JpdGVf
aW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ21vcmUgdGVzdCBjb250ZW50
JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQx
J10pCi0gICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhl
ciB0ZXN0IGNvbW1pdCIpCi0KLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgcnVuX2Nv
bW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCi0KICAgICBkZWYgdGVz
dF9jb21taXRfd2l0aF9tZXNzYWdlX3dvcmtpbmdfY29weV9vbmx5KHNlbGYpOgogICAgICAgICB3
cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNv
bnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2Nv
bW1pdDEnXSkKQEAgLTg4NCwyMSArODc4LDE4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6
CiAgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0t
bGltaXQ9MScsICctLXZlcmJvc2UnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJj
aChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCiAKLSAgICBkZWYgdGVzdF9jb21taXRf
d2l0aF9tZXNzYWdlX3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29t
bWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2Nt
X3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBjb21taXRfdGV4dCA9IHNj
bS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1U
cnVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2NtLnN2bl9yZXZpc2lvbl9mcm9tX2Nv
bW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQotICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1h
bmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9s
b2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1p
dDEnLCBzdm5fbG9nKSkKLQotICAgIGRlZiBfdHdvX2xvY2FsX2NvbW1pdHMoc2VsZik6CisgICAg
ZGVmIF9vbmVfbG9jYWxfY29tbWl0KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRf
cGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBy
dW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKICAgICAgICAg
c2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0
IikKIAorICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2Vz
KHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKKyAgICAgICAgd3JpdGVf
aW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBj
b250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9j
b21taXQyJ10pCisKKyAgICBkZWYgX3R3b19sb2NhbF9jb21taXRzKHNlbGYpOgorICAgICAgICBz
ZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgo
J3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKICAgICAgICAg
cnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCiAgICAgICAg
IHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBj
b21taXQiKQpAQCAtOTA5LDYgKzkwMCwxNyBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgog
ICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVz
dCBjb21taXQiKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKKyAgICBkZWYg
dGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQorICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsICJ5ZXQg
YW5vdGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93
aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0IiwgZm9yY2Vfc3F1YXNoPVRydWUp
CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0
X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChb
J2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykp
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScs
IHN2bl9sb2cpKQorCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0
KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAKQEAgLTkzMiw1MSAr
OTM0LDY4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBzdm5fbG9nKSkK
IAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0
cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0
X2NoYW5nZWRfZmlsZXNfd29ya2luZ19jb3B5X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX29u
ZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90
aGVyIHRlc3QgY29tbWl0Il0pCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRo
X21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBnaXRfY29tbWl0PSJIRUFELi4iKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3Zu
X2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29t
bWl0MicsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9vbmx5
X2xvY2FsX2NvbW1pdChzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdCgpCisg
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisg
ICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVz
dCBjb21taXQiKQorICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywg
J2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogCiAgICAgZGVmIHRl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2FuZF93b3JraW5n
X2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29w
eSBjaGFuZ2UnKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCJdKQorCisgICAgICAgIHNl
bGYuYXNzZXJ0UmFpc2VzKEFtYmlndW91c0NvbW1pdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVz
c2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5j
b21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IiwgZm9yY2Vfc3F1YXNoPVRy
dWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20uc3ZuX3JldmlzaW9uX2Zyb21fY29t
bWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFu
ZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKKyAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgc3ZuX2xv
ZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHN2bl9sb2cpKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9naXRfY29t
bWl0X2FuZF93b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21t
aXRzKCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQx
JywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3Rl
bShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3Jp
cHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0IGNvbW1pdCIs
ICdnaXRfY29tbWl0PSJIRUFEXiInXSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0
RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdp
dF9jb21taXQ9IkhFQUReIikKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVs
dGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzX2Fsd2F5c19zcXVhc2goc2VsZik6
CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0
X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgY29tbWl0X3RleHQg
PSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVh
c2g9RmFsc2UpCisgICAgICAgIHNjbS5fYXNzZXJ0X2Nhbl9zcXVhc2ggPSBsYW1iZGEgd29ya2lu
Z19kaXJlY3RvcnlfaXNfY2xlYW46IFRydWUKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4
dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywg
J2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxm
LmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCi0K
LSAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsnZ2l0JywgJ3N2bicsICdsb2cnLCAnLS1s
aW1pdD0yJywgJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNo
KHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93
aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVm
IHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgog
ICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIGNvbW1pdF90ZXh0ID0g
c2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNo
PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFtYmlndW91c0NvbW1pdEVycm9yLCBz
Y20uY29tbWl0X3dpdGhfbWVzc2FnZSwgInlldCBhbm90aGVyIHRlc3QgY29tbWl0IikKKyAgICAg
ICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKKwogICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAog
ICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxp
bWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2go
cid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0
X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRl
c3RfY29tbWl0X3dpdGhfbWVzc2FnZV9ub3Rfc3luY2VkKHNlbGYpOgogICAgICAgICBydW5fY29t
bWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1bmt+MyddKQog
ICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9z
Y21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBj
b21taXQiLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQW1iaWd1b3Vz
Q29tbWl0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1p
dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dp
dGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAog
ICAgIGRlZiB0ZXN0X3JlbW90ZV9icmFuY2hfcmVmKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHNlbGYuc2NtLnJlbW90ZV9icmFuY2hfcmVmKCksICdyZWZzL3JlbW90ZXMvdHJ1bmsn
KQpAQCAtOTkzLDI2ICsxMDEyLDE2IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAg
ZGVmIHRlc3RfY3JlYXRlX3BhdGNoX2xvY2FsX3BsdXNfd29ya2luZ19jb3B5KHNlbGYpOgogICAg
ICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQog
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkK
LQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYp
OgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0gICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY3JlYXRlX3BhdGNoKQotCi0gICAgZGVmIHRlc3RfY3Jl
YXRlX3BhdGNoX3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0
X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5
c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVf
cGF0Y2goc3F1YXNoPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKKyAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3Bh
dGNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDInLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3Nx
dWFzaGVkKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaChzZWxmKToKICAgICAgICAg
c2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAg
ICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAg
ICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1GYWxzZSkKKyAgICAgICAgcGF0Y2gg
PSBzY20uY3JlYXRlX3BhdGNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJl
LnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2Vy
dFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKICAgICBkZWYg
dGVzdF9jcmVhdGVfcGF0Y2hfZ2l0X2NvbW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQpAQCAtMTAyOSwyNiArMTAzOCwyNSBAQCBjbGFzcyBHaXRTVk5UZXN0KFND
TVRlc3QpOgogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2Nv
bW1pdDInLCBwYXRjaCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0
X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0
aXBsZV9sb2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xv
Y2FsX2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF93b3JraW5nX2NvcHlfb25s
eShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29w
eV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKLSAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1GYWxz
ZSkKLSAgICAgICAgIyBGSVhNRTogSXQncyB3ZWlyZCB0aGF0IHdpdGggc3F1YXNoPUZhbHNlLCBj
cmVhdGVfcGF0Y2gvY2hhbmdlZF9maWxlcyBpZ25vcmVzIGxvY2FsIGNvbW1pdHMsCi0gICAgICAg
ICMgYnV0IGNvbW1pdF93aXRoX21lc3NhZ2UgY29tbWl0cyB0aGVtLgotICAgICAgICBzZWxmLmFz
c2VydFRydWUocGF0Y2ggPT0gIiIpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChn
aXRfY29tbWl0PSJIRUFELi4iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQxJywgcGF0Y2gpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9jcmVh
dGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRl
c3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6CiAgICAgICAgIHNl
bGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNo
KHNxdWFzaD1UcnVlKQorICAgICAgICBwYXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkp
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScs
IHBhdGNoKSkKIAotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9ub3Rfc3luY2VkX3NxdWFzaChz
ZWxmKToKKyAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbm90X3N5bmNlZChzZWxmKToKICAgICAg
ICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQnLCAnLWInLCAnbXktYnJhbmNoJywgJ3Ry
dW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMoKQogICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCwgc3F1YXNoPVRydWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY3JlYXRlX3BhdGNo
KQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX2JpbmFyeV9wYXRjaChzZWxmKToKICAgICAgICAgIyBD
cmVhdGUgYSBnaXQgYmluYXJ5IHBhdGNoIGFuZCBjaGVjayB0aGUgY29udGVudHMuCkBAIC0xMDc5
LDI2ICsxMDg3LDkgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICBkZWYgdGVzdF9j
aGFuZ2VkX2ZpbGVzX2xvY2FsX3BsdXNfd29ya2luZ19jb3B5KHNlbGYpOgogICAgICAgICBzZWxm
Ll9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQogICAgICAgICBz
Y20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMpCi0KLSAgICBk
ZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9z
eXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIHNjbS5jaGFuZ2VkX2ZpbGVzKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9m
aWxlc19zcXVhc2hlZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVz
X3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxl
cyhzcXVhc2g9VHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0
MicgaW4gZmlsZXMpCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKLQotICAgIGRl
ZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3NxdWFzaGVkKHNlbGYpOgotICAgICAgICBzZWxmLl9v
bmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQotICAgICAgICBzY20g
PSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBmaWxl
cyA9IHNjbS5jaGFuZ2VkX2ZpbGVzKHNxdWFzaD1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFs
c2UoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKIAogICAgIGRlZiB0ZXN0X2NoYW5nZWRf
ZmlsZXNfZ2l0X2NvbW1pdChzZWxmKToKICAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1pdHMo
KQpAQCAtMTExNSwyNiArMTEwNiwyNSBAQCBjbGFzcyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAg
ICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBmaWxlcykKICAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29tbWl0MicgaW4gZmlsZXMpCiAKLSAgICBk
ZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHNfbm9fc3F1YXNoKHNl
bGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCisgICAgZGVmIHRlc3RfY2hh
bmdlZF9maWxlc193b3JraW5nX2NvcHlfb25seShzZWxmKToKKyAgICAgICAgc2VsZi5fb25lX2xv
Y2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBz
Y20uY2hhbmdlZF9maWxlcyhzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6IEl0J3Mgd2Vp
cmQgdGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdu
b3JlcyBsb2NhbCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNv
bW1pdHMgdGhlbS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihmaWxlcykgPT0gMCkKKyAg
ICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhnaXRfY29tbWl0PSJIRUFELi4iKQorICAg
ICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCisgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQogCi0gICAg
ZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9sb2NhbF9jb21taXRzX3NxdWFzaChzZWxm
KToKKyAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX211bHRpcGxlX2xvY2FsX2NvbW1pdHMoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0
ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBz
Y20uY2hhbmdlZF9maWxlcyhzcXVhc2g9VHJ1ZSkKKyAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdl
ZF9maWxlcygpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGlu
IGZpbGVzKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9jb21taXQxJyBpbiBm
aWxlcykKIAotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbm90X3N5bmNlZF9zcXVhc2goc2Vs
Zik6CisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19ub3Rfc3luY2VkKHNlbGYpOgogICAgICAg
ICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdteS1icmFuY2gnLCAndHJ1
bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAgIHNjbSA9
IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcywgc3F1YXNoPVRydWUp
CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxl
cykKIAogICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXMoc2VsZik6CiAgICAgICAgIHNlbGYuX3No
YXJlZF90ZXN0X2NoYW5nZWRfZmlsZXMoKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5CmluZGV4IGVjY2RhM2E4YjJlMmI5NTIyNzkz
MTdmZmFhMjg0ZTBkM2E1NmNhMzQuLjBjNmEzMTM0Nzg5MmI2NDUxNjlmYjJjZDFhODI2Y2Q2NTk1
ZmY1NjMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25l
dC9yaWV0dmVsZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9u
ZXQvcmlldHZlbGQucHkKQEAgLTczLDYgKzczLDYgQEAgY2xhc3MgUmlldHZlbGQob2JqZWN0KToK
IAogICAgICAgICAjIFVzZSBSZWFsTWFpbiBpbnN0ZWFkIG9mIGNhbGxpbmcgdXBsb2FkIGZyb20g
dGhlIGNvbW1hbmRsaW5lIHNvIHRoYXQKICAgICAgICAgIyB3ZSBjYW4gcGFzcyBpbiB0aGUgZGlm
ZiBvdXJzZWx2ZXMuIE90aGVyd2lzZSwgdXBsb2FkIHdpbGwganVzdCB1c2UKLSAgICAgICAgIyBn
aXQgZGlmZiBmb3IgZ2l0IGNoZWNrb3V0cywgd2hpY2ggZG9lc24ndCByZXNwZWN0IC0tc3F1YXNo
IGFuZCAtLWdpdC1jb21taXQuCisgICAgICAgICMgZ2l0IGRpZmYgZm9yIGdpdCBjaGVja291dHMs
IHdoaWNoIGRvZXNuJ3QgcmVzcGVjdCAtLWdpdC1jb21taXQuCiAgICAgICAgIGlzc3VlLCBwYXRj
aHNldCA9IHVwbG9hZC5SZWFsTWFpbihhcmdzLCBkYXRhPWRpZmYpCiAgICAgICAgIHJldHVybiBp
c3N1ZQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lz
dGVtL3VzZXIucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0v
dXNlci5weQppbmRleCBiNGRmM2NiNDcwOTAyNjMxY2RkYjhhZTYwYzRjZTg3ZWEzNzQ4Yzk3Li45
NDQ0YzAwYzU4ZjUzZDNjMjYyYjFlYWU1ZTBjNDQzYjk3OGIzZjE3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weQpAQCAtNTEsNyAr
NTEsNyBAQCBleGNlcHQgSW1wb3J0RXJyb3I6CiAKIAogY2xhc3MgVXNlcihvYmplY3QpOgotICAg
ICMgRklYTUU6IFRoZXNlIGFyZSBAY2xhc3NtZXRob2RzIGJlY2F1c2Ugc2NtLnB5IGFuZCBidWd6
aWxsYS5weSBkb24ndCBoYXZlIGEgVG9vbCBvYmplY3QgKHRodXMgbm8gVXNlciBpbnN0YW5jZSku
CisgICAgIyBGSVhNRTogVGhlc2UgYXJlIEBjbGFzc21ldGhvZHMgYmVjYXVzZSBidWd6aWxsYS5w
eSBkb2Vzbid0IGhhdmUgYSBUb29sIG9iamVjdCAodGh1cyBubyBVc2VyIGluc3RhbmNlKS4KICAg
ICBAY2xhc3NtZXRob2QKICAgICBkZWYgcHJvbXB0KGNscywgbWVzc2FnZSwgcmVwZWF0PTEsIHJh
d19pbnB1dD1yYXdfaW5wdXQpOgogICAgICAgICByZXNwb25zZSA9IE5vbmUKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9vcHRwYXJzZXIucHkKaW5kZXggYmI0Nzg4YTU1
ZGI2OGZiYzcxMDQ4NDk5NjNlODliMjZiYzQzZDU4NS4uM2JhMGZhZTllODVmMGY3ZTUwYWNiMmUy
ZDYyM2VlZGE5Y2MyNGZiNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9zdHlsZS9vcHRwYXJzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9z
dHlsZS9vcHRwYXJzZXIucHkKQEAgLTE0Nyw4ICsxNDcsNyBAQCBjbGFzcyBDb21tYW5kT3B0aW9u
VmFsdWVzKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9Tm9uZSwKICAgICAg
ICAgICAgICAgICAgaXNfdmVyYm9zZT1GYWxzZSwKICAgICAgICAgICAgICAgICAgbWluX2NvbmZp
ZGVuY2U9MSwKLSAgICAgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiLAotICAgICAg
ICAgICAgICAgICBzcXVhc2g9RmFsc2UpOgorICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0
PSJlbWFjcyIpOgogICAgICAgICBpZiBmaWx0ZXJfcnVsZXMgaXMgTm9uZToKICAgICAgICAgICAg
IGZpbHRlcl9ydWxlcyA9IFtdCiAKQEAgLTE2Nyw3ICsxNjYsNiBAQCBjbGFzcyBDb21tYW5kT3B0
aW9uVmFsdWVzKG9iamVjdCk6CiAgICAgICAgIHNlbGYuaXNfdmVyYm9zZSA9IGlzX3ZlcmJvc2UK
ICAgICAgICAgc2VsZi5taW5fY29uZmlkZW5jZSA9IG1pbl9jb25maWRlbmNlCiAgICAgICAgIHNl
bGYub3V0cHV0X2Zvcm1hdCA9IG91dHB1dF9mb3JtYXQKLSAgICAgICAgc2VsZi5zcXVhc2ggPSBz
cXVhc2gKIAogICAgICMgVXNlZnVsIGZvciB1bml0IHRlc3RpbmcuCiAgICAgZGVmIF9fZXFfXyhz
ZWxmLCBvdGhlcik6CkBAIC0xODIsOCArMTgwLDYgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVl
cyhvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIHNlbGYub3V0
cHV0X2Zvcm1hdCAhPSBvdGhlci5vdXRwdXRfZm9ybWF0OgogICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0gICAgICAgIGlmIHNlbGYuc3F1YXNoICE9IG90aGVyLnNxdWFzaDoKLSAgICAgICAgICAg
IHJldHVybiBGYWxzZQogCiAgICAgICAgIHJldHVybiBUcnVlCiAKQEAgLTIxOCw4ICsyMTQsNiBA
QCBjbGFzcyBBcmd1bWVudFByaW50ZXIob2JqZWN0KToKICAgICAgICAgICAgIGZsYWdzWydmaWx0
ZXInXSA9ICIsIi5qb2luKGZpbHRlcl9ydWxlcykKICAgICAgICAgaWYgb3B0aW9ucy5naXRfY29t
bWl0OgogICAgICAgICAgICAgZmxhZ3NbJ2dpdC1jb21taXQnXSA9IG9wdGlvbnMuZ2l0X2NvbW1p
dAotICAgICAgICBpZiBvcHRpb25zLnNxdWFzaDoKLSAgICAgICAgICAgIGZsYWdzWydzcXVhc2gn
XSA9IG9wdGlvbnMuc3F1YXNoCiAKICAgICAgICAgZmxhZ19zdHJpbmcgPSAnJwogICAgICAgICAj
IEFscGhhYmV0aXppbmcgbGV0cyB1cyB1bml0IHRlc3QgdGhpcyBtZXRob2QuCkBAIC0zMDksNyAr
MzAzLDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgcGFyc2VyLmFk
ZF9vcHRpb24oIi1mIiwgIi0tZmlsdGVyLXJ1bGVzIiwgbWV0YXZhcj0iUlVMRVMiLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSJmaWx0ZXJfdmFsdWUiLCBoZWxwPWZpbHRlcl9oZWxw
KQogCi0gICAgICAgIGdpdF9jb21taXRfaGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhl
IGdpdmVuIGdpdCBjb21taXQuICIKKyAgICAgICAgZ2l0X2NvbW1pdF9oZWxwID0gKCJjaGVjayBh
bGwgY2hhbmdlcyBpbiB0aGUgZ2l2ZW4gY29tbWl0LiAiCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiVXNlICdjb21taXRfaWQuLicgdG8gY2hlY2sgYWxsIGNoYW5nZXMgYWZ0ZXIgY29tbW1p
dF9pZCIpCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZyIsICItLWdpdC1kaWZmIiwgIi0t
Z2l0LWNvbW1pdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGF2YXI9IkNPTU1JVCIs
IGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPWdpdF9jb21taXRfaGVscCwpCkBAIC0zMzAsMTQgKzMy
NCw2IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9Im91dHB1dF9mb3JtYXQiLCBkZWZhdWx0PWRlZmF1bHRfb3V0cHV0X2Zvcm1h
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD1vdXRwdXRfZm9ybWF0X2hlbHApCiAK
LSAgICAgICAgc3F1YXNoX2hlbHAgPSAoIkFsbCBkaWZmcyBmcm9tIHRoZSByZW1vdGUgYnJhbmNo
IGFyZSBjaGVja2VkLiIKLSAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVkLCBwcm9t
cHRzIHdoZXRoZXIgdG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMuIikK
LSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9y
ZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwgaGVscD1zcXVhc2hfaGVscCkKLQotICAgICAgICBzcXVh
c2hfaGVscCA9ICgiT25seSB3b3JraW5nIGNvcHkgZGlmZnMgYXJlIGNoZWNrZWQuIgotICAgICAg
ICAgICAgICAgICAgICAgICAiSWYgZXhjbHVkZWQsIHByb21wdHMgd2hldGhlciB0byBzcXVhc2gg
d2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgY29tbWl0cy4iKQotICAgICAgICBwYXJzZXIuYWRkX29w
dGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwg
aGVscD1zcXVhc2hfaGVscCkKLQogICAgICAgICB2ZXJib3NlX2hlbHAgPSAiZW5hYmxlIHZlcmJv
c2UgbG9nZ2luZy4iCiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItdiIsICItLXZlcmJvc2Ui
LCBkZXN0PSJpc192ZXJib3NlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD12ZXJib3NlX2hlbHApCkBAIC00NTgsOCAr
NDQ0LDcgQEAgY2xhc3MgQXJndW1lbnRQYXJzZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZ2l0X2NvbW1pdD1naXRfY29tbWl0LAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpc192ZXJib3NlPWlzX3ZlcmJvc2UsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPW1pbl9jb25maWRl
bmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRfZm9ybWF0
PW91dHB1dF9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNx
dWFzaD1vcHRpb25zLnNxdWFzaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0KQogCiAgICAgICAgIHJldHVybiAocGF0aHMs
IG9wdGlvbnMpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5
bGVfcmVmZXJlbmNlcy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVfcmVm
ZXJlbmNlcy5weQppbmRleCBiYWIzMGNhZmM1NWJhZThjMGU3MDEyYzI5MzA2OTc3NDkyM2JhM2Zk
Li5hNDJiNjlkZTU4ZDk5NDMyMzYxMWIxOGI0YmQwZDUzOWIxNTJlYzkzIDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKKysrIGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZV9yZWZlcmVuY2VzLnB5CkBAIC02Nyw2ICs2
Nyw2IEBAIGNsYXNzIFdlYktpdENoZWNrb3V0KG9iamVjdCk6CiAgICAgICAgICIiIlJldHVybiB0
aGUgY2hlY2tvdXQgcm9vdCBhcyBhbiBhYnNvbHV0ZSBwYXRoLiIiIgogICAgICAgICByZXR1cm4g
c2VsZi5fc2NtLmNoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0
X2NvbW1pdCwgc3F1YXNoKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jcmVhdGVfcGF0Y2go
Z2l0X2NvbW1pdCwgc3F1YXNoKQorICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1p
dCk6CisgICAgICAgIHJldHVybiBzZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQpCiAK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9k
b3dubG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9k
b3dubG9hZC5weQppbmRleCA1OWFmMTZhYzliNDU5NTEwOWY5ZTcyYjM3NjJjYTE3N2E0ZWRlYzE1
Li5kMjdhYjBlMDQ3MWZkZGE2YmJmZGVlNzI4NWI3NzUwNDE5M2I1YmM3IDEwMDY0NAotLS0gYS9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKKysr
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5
CkBAIC05Myw3ICs5Myw3IEBAIElmIGEgYnVnIGlkIGlzIHByb3ZpZGVkLCBvciBvbmUgY2FuIGJl
IGZvdW5kIGluIHRoZSBDaGFuZ2VMb2cgbGFuZCB3aWxsIHVwZGF0ZSB0CiAKICAgICBkZWYgX3By
ZXBhcmVfc3RhdGUoc2VsZiwgb3B0aW9ucywgYXJncywgdG9vbCk6CiAgICAgICAgIHJldHVybiB7
Ci0gICAgICAgICAgICAiYnVnX2lkIjogKGFyZ3MgYW5kIGFyZ3NbMF0pIG9yIHRvb2wuY2hlY2tv
dXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2NvbW1pdCwgb3B0aW9ucy5z
cXVhc2gpLAorICAgICAgICAgICAgImJ1Z19pZCI6IChhcmdzIGFuZCBhcmdzWzBdKSBvciB0b29s
LmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpLAog
ICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL3VwbG9hZC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy91cGxvYWQucHkKaW5kZXggOWM5MzVlODBiMTUxZWQ2NDk1ZTAwOWE0ZjFkMWI0
NDRjZTMxNDBjYS4uNGExNWVkNjQxNmZhNjUxYTRhNzczNjJiNjgzYjI2NzczMzZiOTBhZCAxMDA2
NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9h
ZC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBs
b2FkLnB5CkBAIC01Myw3ICs1Myw2IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlm
ZihBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZik6
CiAgICAgICAgIG9wdGlvbnMgPSBbCi0gICAgICAgICAgICBzdGVwcy5PcHRpb25zLnNxdWFzaCwK
ICAgICAgICAgICAgIHN0ZXBzLk9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgXQogICAgICAg
ICBBYnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZC5fX2luaXRfXyhzZWxmLCBvcHRpb25zPW9wdGlv
bnMpCkBAIC02MSw3ICs2MCw3IEBAIGNsYXNzIENvbW1pdE1lc3NhZ2VGb3JDdXJyZW50RGlmZihB
YnN0cmFjdERlY2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgZGVmIGV4ZWN1dGUoc2VsZiwgb3B0aW9u
cywgYXJncywgdG9vbCk6CiAgICAgICAgICMgVGhpcyBjb21tYW5kIGlzIGEgdXNlZnVsIHRlc3Qg
dG8gbWFrZSBzdXJlIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdAogICAgICAgICAjIGFs
d2F5cyByZXR1cm5zIHRoZSByaWdodCB2YWx1ZSByZWdhcmRsZXNzIG9mIHRoZSBjdXJyZW50IHdv
cmtpbmcgZGlyZWN0b3J5LgotICAgICAgICBwcmludCAiJXMiICUgdG9vbC5jaGVja291dCgpLmNv
bW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMu
c3F1YXNoKS5tZXNzYWdlKCkKKyAgICAgICAgcHJpbnQgIiVzIiAlIHRvb2wuY2hlY2tvdXQoKS5j
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0KS5tZXNzYWdl
KCkKIAogCiBjbGFzcyBDbGVhblBlbmRpbmdDb21taXQoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1h
bmQpOgpAQCAtMTUzLDcgKzE1Miw3IEBAIGNsYXNzIEFic3RyYWN0UGF0Y2hVcGxvYWRpbmdDb21t
YW5kKEFic3RyYWN0U2VxdWVuY2VkQ29tbWFuZCk6CiAgICAgICAgICMgUGVyZmVyIGEgYnVnIGlk
IHBhc3NlZCBhcyBhbiBhcmd1bWVudCBvdmVyIGEgYnVnIHVybCBpbiB0aGUgZGlmZiAoaS5lLiBD
aGFuZ2VMb2dzKS4KICAgICAgICAgYnVnX2lkID0gYXJncyBhbmQgYXJnc1swXQogICAgICAgICBp
ZiBub3QgYnVnX2lkOgotICAgICAgICAgICAgYnVnX2lkID0gdG9vbC5jaGVja291dCgpLmJ1Z19p
ZF9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkKKyAg
ICAgICAgICAgIGJ1Z19pZCA9IHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0
KG9wdGlvbnMuZ2l0X2NvbW1pdCkKICAgICAgICAgcmV0dXJuIGJ1Z19pZAogCiAgICAgZGVmIF9w
cmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgpAQCAtNDIzLDExICs0MjIs
MTEgQEAgY2xhc3MgQ3JlYXRlQnVnKEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKICAgICAg
ICAgaWYgb3B0aW9ucy5wcm9tcHQ6CiAgICAgICAgICAgICAoYnVnX3RpdGxlLCBjb21tZW50X3Rl
eHQpID0gc2VsZi5wcm9tcHRfZm9yX2J1Z190aXRsZV9hbmRfY29tbWVudCgpCiAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9IHRvb2wuY2hlY2tvdXQoKS5jb21taXRf
bWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFz
aCkKKyAgICAgICAgICAgIGNvbW1pdF9tZXNzYWdlID0gdG9vbC5jaGVja291dCgpLmNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgICAgICBi
dWdfdGl0bGUgPSBjb21taXRfbWVzc2FnZS5kZXNjcmlwdGlvbihsc3RyaXA9VHJ1ZSwgc3RyaXBf
dXJsPVRydWUpCiAgICAgICAgICAgICBjb21tZW50X3RleHQgPSBjb21taXRfbWVzc2FnZS5ib2R5
KGxzdHJpcD1UcnVlKQogCi0gICAgICAgIGRpZmYgPSB0b29sLnNjbSgpLmNyZWF0ZV9wYXRjaChv
cHRpb25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKQorICAgICAgICBkaWZmID0gdG9vbC5z
Y20oKS5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0KQogICAgICAgICBidWdfaWQgPSB0
b29sLmJ1Z3MuY3JlYXRlX2J1ZyhidWdfdGl0bGUsIGNvbW1lbnRfdGV4dCwgb3B0aW9ucy5jb21w
b25lbnQsIGRpZmYsICJQYXRjaCIsIGNjPW9wdGlvbnMuY2MsIG1hcmtfZm9yX3Jldmlldz1vcHRp
b25zLnJldmlldywgbWFya19mb3JfY29tbWl0X3F1ZXVlPW9wdGlvbnMucmVxdWVzdF9jb21taXQp
CiAKICAgICBkZWYgcHJvbXB0X2Zvcl9idWdfdGl0bGVfYW5kX2NvbW1lbnQoc2VsZik6CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKaW5kZXggZDg4MTkw
ZmEwMjQ2NmQ2MGM4NDFjODU0ZDZjMGZjNGRiNjI2NTE0Ni4uZWY4Y2M2MmFjZWJiMDkwMGFjYmY0
NDNlZDBhNWYxODc0M2Y3YmEyNiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21vY2t0b29sLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9tb2NrdG9vbC5weQpAQCAtMzk3LDcgKzM5Nyw3IEBAIGNsYXNzIE1vY2tTQ00oTW9jayk6
CiAgICAgICAgICMgd2lsbCBhY3R1YWxseSBiZSB0aGUgcm9vdC4gIFNpbmNlIGdldGN3ZCgpIGlz
IHdyb25nLCB1c2UgYSBnbG9iYWxseSBmYWtlIHJvb3QgZm9yIG5vdy4KICAgICAgICAgc2VsZi5j
aGVja291dF9yb290ID0gc2VsZi5mYWtlX2NoZWNrb3V0X3Jvb3QKIAotICAgIGRlZiBjcmVhdGVf
cGF0Y2goc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAgICBkZWYgY3JlYXRlX3BhdGNoKHNl
bGYsIGdpdF9jb21taXQpOgogICAgICAgICByZXR1cm4gIlBhdGNoMSIKIAogICAgIGRlZiBjb21t
aXRfaWRzX2Zyb21fY29tbWl0aXNoX2FyZ3VtZW50cyhzZWxmLCBhcmdzKToKQEAgLTQzNywxMiAr
NDM3LDEyIEBAIGNsYXNzIE1vY2tDaGVja291dChvYmplY3QpOgogICAgIGRlZiBidWdfaWRfZm9y
X3JldmlzaW9uKHNlbGYsIHN2bl9yZXZpc2lvbik6CiAgICAgICAgIHJldHVybiAxMjM0NQogCi0g
ICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToKKyAg
ICBkZWYgbW9kaWZpZWRfY2hhbmdlbG9ncyhzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgIyBJ
ZGVhbGx5IHdlJ2QgcmV0dXJuIHNvbWV0aGluZyBtb3JlIGludGVyZXN0aW5nIGhlcmUuICBUaGUg
cHJvYmxlbSBpcwogICAgICAgICAjIHRoYXQgTGFuZERpZmYgd2lsbCB0cnkgdG8gYWN0dWFsbHkg
cmVhZCB0aGUgcGF0Y2ggZnJvbSBkaXNrIQogICAgICAgICByZXR1cm4gW10KIAotICAgIGRlZiBj
b21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCwgc3F1YXNoKToK
KyAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21taXQp
OgogICAgICAgICBjb21taXRfbWVzc2FnZSA9IE1vY2soKQogICAgICAgICBjb21taXRfbWVzc2Fn
ZS5tZXNzYWdlID0gbGFtYmRhOiJUaGlzIGlzIGEgZmFrZSBjb21taXQgbWVzc2FnZSB0aGF0IGlz
IGF0IGxlYXN0IDUwIGNoYXJhY3RlcnMuIgogICAgICAgICByZXR1cm4gY29tbWl0X21lc3NhZ2UK
ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0
cmFjdHN0ZXAucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJz
dHJhY3RzdGVwLnB5CmluZGV4IDIwZjhiYmYzMDVjMmFiMmUwNDE5ZTBhZGViNmUxMjgyNTNkOWQ0
ZTguLjQ3Yjk3MmFkMzY1ZGViNjFmYzc4M2Y2ZWJhNTZjNTgyMGU3ZWE4ZDMgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3Rl
cC5weQpAQCAtNTMsOCArNTMsOCBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX3BvcnQKIAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7Ci0gICAgICAg
ICJkaWZmIjogbGFtYmRhIHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLnNjbSgpLmNyZWF0ZV9wYXRj
aChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKSwKLSAgICAg
ICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQo
KS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgc2VsZi5fb3B0
aW9ucy5zcXVhc2gpLAorICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0ZTogc2VsZi5f
dG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0KSwKKyAgICAg
ICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuY2hlY2tvdXQo
KS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCksCiAgICAgICAg
ICJidWdfdGl0bGUiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuYnVncy5mZXRjaF9i
dWcoc3RhdGVbImJ1Z19pZCJdKS50aXRsZSgpLAogICAgIH0KIApAQCAtNzEsOCArNzEsNiBAQCBj
bGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICAgICAgcmV0dXJuIFsKICAgICAgICAgICAg
ICMgV2UgbmVlZCB0aGVzZSBvcHRpb25zIGhlcmUgYmVjYXVzZSBjYWNoZWRfbG9va3VwIHVzZXMg
dGhlbS4gIDooCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAgICAgICBP
cHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBd
CiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9j
YWxjb21taXQucHkKaW5kZXggZDZiMDI2ZGUyNTgyMWUzNDk2YWI4ZThkMmJhNDYxMTg1MTE1Njc4
OC4uM2RjZDhkOTMxYTFmMzY1YmIzM2VmYTZlM2U4ZThiZjViMGJkYzFhMyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0Y2h3aXRobG9j
YWxjb21taXQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2FwcGx5cGF0Y2h3aXRobG9jYWxjb21taXQucHkKQEAgLTM5LDUgKzM5LDUgQEAgY2xhc3MgQXBw
bHlQYXRjaFdpdGhMb2NhbENvbW1pdChBcHBseVBhdGNoKToKICAgICBkZWYgcnVuKHNlbGYsIHN0
YXRlKToKICAgICAgICAgQXBwbHlQYXRjaC5ydW4oc2VsZiwgc3RhdGUpCiAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMubG9jYWxfY29tbWl0OgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBz
ZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBz
ZWxmLl90b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9j
b21taXQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuc2NtKCkuY29tbWl0X2xvY2FsbHlf
d2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSBvciBzdGF0ZVsicGF0Y2giXS5u
YW1lKCkpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvY2hlY2tzdHlsZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVw
cy9jaGVja3N0eWxlLnB5CmluZGV4IDkzZTYyMTUzMTQ0ZmY3YWQ1YTc3ZDM3MWJlYzcyMTIzNzY3
MDViYmQuLmFmMzgyMTQ0MGE5NWVjOWM4NTA4NjBmMTIyYjdmMzU1ODFmYmEyNzMgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxl
LnB5CkBAIC00MCw4ICs0MCw2IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAg
ICAgICAgICAgIE9wdGlvbnMubm9uX2ludGVyYWN0aXZlLAogICAgICAgICAgICAgT3B0aW9ucy5j
aGVja19zdHlsZSwKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAg
IE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAg
IF0KIAogICAgIGRlZiBydW4oc2VsZiwgc3RhdGUpOgpAQCAtNTMsMTAgKzUxLDYgQEAgY2xhc3Mg
Q2hlY2tTdHlsZShBYnN0cmFjdFN0ZXApOgogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9j
b21taXQ6CiAgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1naXQtY29tbWl0IikKICAgICAgICAg
ICAgIGFyZ3MuYXBwZW5kKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKLSAgICAgICAgaWYgc2Vs
Zi5fdG9vbC5zY20oKS5zaG91bGRfc3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLXNxdWFzaCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBhcmdzLmFwcGVuZCgiLS1uby1zcXVhc2giKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAg
IHNlbGYuX3J1bl9zY3JpcHQoImNoZWNrLXdlYmtpdC1zdHlsZSIsIGFyZ3MpCmRpZmYgLS1naXQg
YS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0
dGVzdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0
eWxlX3VuaXR0ZXN0LnB5CmluZGV4IGEyM2VhMWIzYzVkNDZmMmVhM2IzOGU0NjJmM2I5MWM5NjUy
YjM4ZDEuLjk5ZjMwMGY3MjNkYzM4OWM3N2NiYTY1N2I2YzgxOTA0OTJhZWM3YmYgMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jaGVja3N0eWxlX3Vu
aXR0ZXN0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9j
aGVja3N0eWxlX3VuaXR0ZXN0LnB5CkBAIC0zNSwxMiArMzUsNCBAQCBmcm9tIHdlYmtpdHB5LnRv
b2wuc3RlcHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQogCiAKIGNsYXNzIENoZWNrU3R5
bGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vy
cm9yKHNlbGYpOgotICAgICAgICAiIiJzaG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4g
VGhhdCBlcnJvciBzaG91bGQgbm90IGJlIGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAg
IGRlZiBzaG91bGRfc3F1YXNoKHNxdWFzaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJv
cihtZXNzYWdlPSJEdW1teSBlcnJvciIpCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAg
ICAgICAgdG9vbC5fc2NtLnNob3VsZF9zcXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0
ZXAgPSBDaGVja1N0eWxlKHRvb2wsIE1vY2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
U2NyaXB0RXJyb3IsIHN0ZXAucnVuLCBbXSkKKyAgICBwYXNzCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY29tbWl0LnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5weQppbmRleCA3YmY4YjhhYTI3NjYx
MDQ5MDZjMjZhMWQ5Mzc3Y2QzMTVmOGM1YTc4Li43MmQ5ODg5OWY5ODY2NWNiMGJjOTkzNzI0YjNk
ODU0Yjc4NDQ0MDg5IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9jb21taXQucHkKQEAgLTI2LDYgKzI2LDkgQEAKICMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgQXV0
aGVudGljYXRpb25FcnJvciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29t
bW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS50b29sLnN0ZXBzLmFi
c3RyYWN0c3RlcCBpbXBvcnQgQWJzdHJhY3RTdGVwCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMu
b3B0aW9ucyBpbXBvcnQgT3B0aW9ucwogCkBAIC0zNSwxMyArMzgsMzQgQEAgY2xhc3MgQ29tbWl0
KEFic3RyYWN0U3RlcCk6CiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFi
c3RyYWN0U3RlcC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQs
Ci0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1
YXNoLAogICAgICAgICBdCiAKKyAgICBkZWYgX2NvbW1pdF93YXJuaW5nKHNlbGYsIGVycm9yKToK
KyAgICAgICAgd29ya2luZ19kaXJlY3RvcnlfbWVzc2FnZSA9ICIiIGlmIGVycm9yLndvcmtpbmdf
ZGlyZWN0b3J5X2lzX2NsZWFuIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCisgICAg
ICAgIHJldHVybiAoJ1RoZXJlIGFyZSAlcyBsb2NhbCBjb21taXRzJXMuIEV2ZXJ5dGhpbmcgd2ls
bCBiZSBjb21taXR0ZWQgYXMgYSBzaW5nbGUgY29tbWl0LiAnCisgICAgICAgICAgICAgICAgJ1Rv
IGF2b2lkIHRoaXMgcHJvbXB0LCBzZXQgImdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0
cnVlIi4nICUgKAorICAgICAgICAgICAgICAgIGVycm9yLm51bV9sb2NhbF9jb21taXRzLCB3b3Jr
aW5nX2RpcmVjdG9yeV9tZXNzYWdlKSkKKworICAgIGRlZiBfY29tbWl0KHNlbGYsIHVzZXJuYW1l
PU5vbmUsIGZvcmNlX3NxdWFzaD1GYWxzZSk6CisgICAgICAgIHNlbGYuX3N0YXRlWyJjb21taXRf
dGV4dCJdID0gc2VsZi5fdG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYuX2NvbW1p
dF9tZXNzYWdlLCBnaXRfY29tbWl0PXNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwgdXNlcm5hbWU9
dXNlcm5hbWUsIGZvcmNlX3NxdWFzaD1mb3JjZV9zcXVhc2gpCisKICAgICBkZWYgcnVuKHNlbGYs
IHN0YXRlKToKLSAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBzZWxmLl90b29sLmNoZWNrb3V0KCku
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwg
c2VsZi5fb3B0aW9ucy5zcXVhc2gpCi0gICAgICAgIGlmIGxlbihjb21taXRfbWVzc2FnZS5tZXNz
YWdlKCkpIDwgNTA6CisgICAgICAgIHNlbGYuX2NvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5j
aGVja291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLl9vcHRpb25zLmdp
dF9jb21taXQpLm1lc3NhZ2UoKQorICAgICAgICBpZiBsZW4oc2VsZi5fY29tbWl0X21lc3NhZ2Up
IDwgNTA6CiAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIkF0dGVtcHRlZCB0byBjb21taXQg
d2l0aCBhIGNvbW1pdCBtZXNzYWdlIHNob3J0ZXIgdGhhbiA1MCBjaGFyYWN0ZXJzLiAgRWl0aGVy
IHlvdXIgcGF0Y2ggaXMgbWlzc2luZyBhIENoYW5nZUxvZyBvciB3ZWJraXQtcGF0Y2ggbWF5IGhh
dmUgYSBidWcuIikKLSAgICAgICAgc3RhdGVbImNvbW1pdF90ZXh0Il0gPSBzZWxmLl90b29sLnNj
bSgpLmNvbW1pdF93aXRoX21lc3NhZ2UoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpLAotICAgICAg
ICAgICAgZ2l0X2NvbW1pdD1zZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNxdWFzaD1zZWxmLl9v
cHRpb25zLnNxdWFzaCkKKworICAgICAgICBzZWxmLl9zdGF0ZSA9IHN0YXRlCisKKyAgICAgICAg
dHJ5OgorICAgICAgICAgICAgc2VsZi5fY29tbWl0KCkKKyAgICAgICAgZXhjZXB0IEFtYmlndW91
c0NvbW1pdEVycm9yLCBlOgorICAgICAgICAgICAgaWYgc2VsZi5fdG9vbC51c2VyLmNvbmZpcm0o
c2VsZi5fY29tbWl0X3dhcm5pbmcoZSkpOgorICAgICAgICAgICAgICAgIHNlbGYuX2NvbW1pdChm
b3JjZV9zcXVhc2g9VHJ1ZSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBU
aGlzIHdpbGwgY29ycmVjdGx5IGludGVycnVwdCB0aGUgcmVzdCBvZiB0aGUgY29tbWl0IHByb2Nl
c3MuCisgICAgICAgICAgICAgICAgcmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRGlkIG5vdCBj
b21taXQiKQorICAgICAgICBleGNlcHQgQXV0aGVudGljYXRpb25FcnJvciwgZToKKyAgICAgICAg
ICAgIHVzZXJuYW1lID0gVXNlci5wcm9tcHQoIiVzIGxvZ2luOiAiICUgZS5zZXJ2ZXJfaG9zdCwg
cmVwZWF0PTUpCisgICAgICAgICAgICBpZiBub3QgdXNlcm5hbWU6CisgICAgICAgICAgICAgICAg
cmFpc2UgU2NyaXB0RXJyb3IoIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhlIHVzZXJuYW1lIG9uICVz
IHRvIHBlcmZvcm0gdGhlIGNvbW1pdCBhcy4iICUgc2VsZi5zdm5fc2VydmVyX2hvc3QpCisgICAg
ICAgICAgICBzZWxmLl9jb21taXQodXNlcm5hbWU9dXNlcm5hbWUpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvb3B0aW9ucy5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CmluZGV4IGZhMzZmNzMw
Nzg2MTRhMzc4ODA2NWUwMzc4Yjk2ZTEzOGE4NzNmMzguLjc4NTk0YzMwYzJjYjA3YmQwMjE1M2Vm
Nzg1NmM2NmViZDRhZWU1NWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5CkBAIC00MiwxMCArNDIsOCBAQCBjbGFzcyBPcHRpb25z
KG9iamVjdCk6CiAgICAgZGVzY3JpcHRpb24gPSBtYWtlX29wdGlvbigiLW0iLCAiLS1kZXNjcmlw
dGlvbiIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJpbmciLCBkZXN0PSJkZXNjcmlwdGlvbiIs
IGhlbHA9IkRlc2NyaXB0aW9uIHN0cmluZyBmb3IgdGhlIGF0dGFjaG1lbnQgKGRlZmF1bHQ6IFwi
cGF0Y2hcIikiKQogICAgIGVtYWlsID0gbWFrZV9vcHRpb24oIi0tZW1haWwiLCBhY3Rpb249InN0
b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0iZW1haWwiLCBoZWxwPSJFbWFpbCBhZGRyZXNzIHRv
IHVzZSBpbiBDaGFuZ2VMb2dzLiIpCiAgICAgZm9yY2VfY2xlYW4gPSBtYWtlX29wdGlvbigiLS1m
b3JjZS1jbGVhbiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9ImZvcmNlX2NsZWFuIiwgZGVm
YXVsdD1GYWxzZSwgaGVscD0iQ2xlYW4gd29ya2luZyBkaXJlY3RvcnkgYmVmb3JlIGFwcGx5aW5n
IHBhdGNoZXMgKHJlbW92ZXMgbG9jYWwgY2hhbmdlcyBhbmQgY29tbWl0cykiKQotIyBGSVhNRTog
TWFrZSBjb21taXQgcmFuZ2VzIHRyZWF0IGVhY2ggY29tbWl0IHNlcGFyYXRlbHkgaW5zdGVhZCBv
ZiBzcXVhc2hpbmcgdGhlbSBpbnRvIG9uZS4KLSAgICBnaXRfY29tbWl0ID0gbWFrZV9vcHRpb24o
Ii0tZ2l0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD0i
TG9jYWwgZ2l0IGNvbW1pdCB0byB1cGxvYWQvbGFuZC4gSWYgYSByYW5nZSwgdGhlIGNvbW1pdHMg
YXJlIHNxdWFzaGVkIGludG8gb25lLiIpCisgICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCIt
ZyIsICItLWdpdC1jb21taXQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhl
bHA9Ik9wZXJhdGUgb24gYSBsb2NhbCBjb21taXQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFy
ZSBzcXVhc2hlZCBpbnRvIG9uZS4gSEVBRC4uIG9wZXJhdGVzIG9uIHdvcmtpbmcgY29weSBjaGFu
Z2VzIG9ubHkuIikKICAgICBsb2NhbF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1sb2NhbC1jb21t
aXQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJsb2NhbF9jb21taXQiLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJNYWtlIGEgbG9jYWwgY29tbWl0IGZvciBlYWNoIGFwcGxpZWQgcGF0Y2giKQot
ICAgIG5vX3NxdWFzaCA9IG1ha2Vfb3B0aW9uKCItLW5vLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVf
ZmFsc2UiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJEb24ndCBzcXVhc2ggbG9jYWwgY29tbWl0cyBp
bnRvIG9uZSBvbiB1cGxvYWQvbGFuZCAoZ2l0LW9ubHkpLiIpCiAgICAgbm9uX2ludGVyYWN0aXZl
ID0gbWFrZV9vcHRpb24oIi0tbm9uLWludGVyYWN0aXZlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVzdD0ibm9uX2ludGVyYWN0aXZlIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTmV2ZXIgcHJvbXB0
IHRoZSB1c2VyLCBmYWlsIGFzIGZhc3QgYXMgcG9zc2libGUuIikKICAgICBvYnNvbGV0ZV9wYXRj
aGVzID0gbWFrZV9vcHRpb24oIi0tbm8tb2Jzb2xldGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwg
ZGVzdD0ib2Jzb2xldGVfcGF0Y2hlcyIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG8gbm90IG9ic29s
ZXRlIG9sZCBwYXRjaGVzIGJlZm9yZSBwb3N0aW5nIHRoaXMgb25lLiIpCiAgICAgb3Blbl9idWcg
PSBtYWtlX29wdGlvbigiLS1vcGVuLWJ1ZyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im9w
ZW5fYnVnIiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iT3BlbnMgdGhlIGFzc29jaWF0ZWQgYnVnIGlu
IGEgYnJvd3Nlci4iKQpAQCAtNTUsNiArNTMsNSBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAg
ICAgcmVxdWVzdF9jb21taXQgPSBtYWtlX29wdGlvbigiLS1yZXF1ZXN0LWNvbW1pdCIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlcXVlc3RfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVs
cD0iTWFyayB0aGUgcGF0Y2ggYXMgbmVlZGluZyBhdXRvLWNvbW1pdCBhZnRlciByZXZpZXcuIikK
ICAgICByZXZpZXcgPSBtYWtlX29wdGlvbigiLS1uby1yZXZpZXciLCBhY3Rpb249InN0b3JlX2Zh
bHNlIiwgZGVzdD0icmV2aWV3IiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3QgbWFyayB0aGUg
cGF0Y2ggZm9yIHJldmlldy4iKQogICAgIHJldmlld2VyID0gbWFrZV9vcHRpb24oIi1yIiwgIi0t
cmV2aWV3ZXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0icmV2aWV3ZXIi
LCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9ncyB0byBzYXkgUmV2aWV3ZWQgYnkgUkVWSUVXRVIuIikK
LSAgICBzcXVhc2ggPSBtYWtlX29wdGlvbigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJzcXVhc2giLCBoZWxwPSJTcXVhc2ggYWxsIGxvY2FsIGNvbW1pdHMgaW50
byBvbmUgb24gdXBsb2FkL2xhbmQgKGdpdC1vbmx5KS4iKQogICAgIHRlc3QgPSBtYWtlX29wdGlv
bigiLS10ZXN0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0idGVzdCIsIGRlZmF1bHQ9RmFs
c2UsIGhlbHA9IlJ1biBydW4td2Via2l0LXRlc3RzIGJlZm9yZSBjb21taXR0aW5nLiIpCiAgICAg
dXBkYXRlID0gbWFrZV9vcHRpb24oIi0tbm8tdXBkYXRlIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIs
IGRlc3Q9InVwZGF0ZSIsIGRlZmF1bHQ9VHJ1ZSwgaGVscD0iRG9uJ3QgdXBkYXRlIHRoZSB3b3Jr
aW5nIGRpcmVjdG9yeS4iKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vsb2cucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQppbmRleCA3ZjBjMWE4ZWExYmM4
N2ZmZTY2MmIxMjg2MTJmNDgyMmMzNmRiNDVjLi5jZTA0MDI0OGYxZjAzOGZiMmM2ODllNTQ1NGYw
YzFmYWJiNzkzZjQ1IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZy5weQpAQCAtNDMsOCArNDMsNiBAQCBj
bGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBPcHRpb25z
LnF1aWV0LAogICAgICAgICAgICAgT3B0aW9ucy5lbWFpbCwKICAgICAgICAgICAgIE9wdGlvbnMu
Z2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAg
T3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgIGRlZiBfZW5zdXJlX2J1Z191cmwoc2Vs
Ziwgc3RhdGUpOgpAQCAtNjksMTAgKzY3LDkgQEAgY2xhc3MgUHJlcGFyZUNoYW5nZUxvZyhBYnN0
cmFjdFN0ZXApOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tYnVnPSVzIiAlIHN0YXRlWyJi
dWdfaWQiXSkKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5lbWFpbDoKICAgICAgICAgICAgIGFy
Z3MuYXBwZW5kKCItLWVtYWlsPSVzIiAlIHNlbGYuX29wdGlvbnMuZW1haWwpCi0gICAgICAgIGlm
IHNlbGYuX3Rvb2wuc2NtKCkuc2hvdWxkX3NxdWFzaChzZWxmLl9vcHRpb25zLnNxdWFzaCk6Ci0g
ICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1tZXJnZS1iYXNlPSVzIiAlIHNlbGYuX3Rvb2wuc2Nt
KCkucmVtb3RlX21lcmdlX2Jhc2UoKSkKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5naXRfY29t
bWl0OgotICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZ2l0LWNvbW1pdD0lcyIgJSBzZWxmLl9v
cHRpb25zLmdpdF9jb21taXQpCisKKyAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zdXBwb3J0
c19sb2NhbF9jb21taXRzKCk6CisgICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1tZXJnZS1iYXNl
PSVzIiAlIHNlbGYuX3Rvb2wuc2NtKCkubWVyZ2VfYmFzZShzZWxmLl9vcHRpb25zLmdpdF9jb21t
aXQpKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuX3Rvb2wuZXhlY3V0aXZlLnJ1
bl9hbmRfdGhyb3dfaWZfZmFpbChhcmdzLCBzZWxmLl9vcHRpb25zLnF1aWV0KQpkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ByZXBhcmVjaGFuZ2Vs
b2dmb3JyZXZlcnQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQppbmRleCA0ZDI5OWZhMjFhZDNhYmM0MjllMjgy
MzU5NDRlZjEwNjU3YzIzNzY1Li4wZTc4YmMyMjk1ZDBkM2U2YTAzM2U2MTYzMDFmM2IwYWU3NGYy
Zjk0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMv
cHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weQpAQCAtMzYsNyAr
MzYsNyBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nRm9yUmV2ZXJ0KEFic3RyYWN0U3RlcCk6CiAg
ICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgICMgVGhpcyBjb3VsZCBtb3ZlIHRvIHBy
ZXBhcmUtQ2hhbmdlTG9nIGJ5IGFkZGluZyBhIC0tcmV2ZXJ0PSBvcHRpb24uCiAgICAgICAgIHNl
bGYuX3J1bl9zY3JpcHQoInByZXBhcmUtQ2hhbmdlTG9nIikKLSAgICAgICAgY2hhbmdlbG9nX3Bh
dGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1p
dD1Ob25lLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNlbGYuX3Rv
b2wuY2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSkKICAgICAg
ICAgYnVnX3VybCA9IHNlbGYuX3Rvb2wuYnVncy5idWdfdXJsX2Zvcl9idWdfaWQoc3RhdGVbImJ1
Z19pZCJdKSBpZiBzdGF0ZVsiYnVnX2lkIl0gZWxzZSBOb25lCiAgICAgICAgIGZvciBjaGFuZ2Vs
b2dfcGF0aCBpbiBjaGFuZ2Vsb2dfcGF0aHM6CiAgICAgICAgICAgICAjIEZJWE1FOiBTZWVtcyB3
ZSBzaG91bGQgcHJlcGFyZSB0aGUgbWVzc2FnZSBvdXRzaWRlIG9mIGNoYW5nZWxvZ3MucHkgYW5k
IHRoZW4ganVzdCBwYXNzIGluCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmll
d2VyLnB5CmluZGV4IGVmNGJhYTI1MTI0MTNlNTZkZDlmYjllMWZmOTc0YjZkYjhmMmJlNzQuLmU0
NmI3OTAwY2VkOTI4NWU3MWQ2Nzg0OWY2NWUyZWY4NDRlNjY4N2IgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFuZ2Vsb2dzd2l0aHJl
dmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91
cGRhdGVjaGFuZ2Vsb2dzd2l0aHJldmlld2VyLnB5CkBAIC00MCw4ICs0MCw2IEBAIGNsYXNzIFVw
ZGF0ZUNoYW5nZUxvZ3NXaXRoUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICAgICAgcmV0dXJu
IEFic3RyYWN0U3RlcC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21t
aXQsCiAgICAgICAgICAgICBPcHRpb25zLnJldmlld2VyLAotICAgICAgICAgICAgT3B0aW9ucy5u
b19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAgXQogCiAgICAg
ZGVmIF9ndWVzc19yZXZpZXdlcl9mcm9tX2J1ZyhzZWxmLCBidWdfaWQpOgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3ZhbGlkYXRlcmV2aWV3ZXIu
cHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZp
ZXdlci5weQppbmRleCA5ZjRkNDRlMGI2YzViMDlhNmE0YTM4ZjQ1ZmYwY2JjZWQ1M2Q1YjVjLi5i
ZGY3MjllNGJmZTJkMDQ0M2I1NzkxODhkNTk2OTJjYzA2NjY0MWQ3IDEwMDY0NAotLS0gYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZp
ZXdlci5weQpAQCAtNDEsOCArNDEsNiBAQCBjbGFzcyBWYWxpZGF0ZVJldmlld2VyKEFic3RyYWN0
U3RlcCk6CiAgICAgZGVmIG9wdGlvbnMoY2xzKToKICAgICAgICAgcmV0dXJuIEFic3RyYWN0U3Rl
cC5vcHRpb25zKCkgKyBbCiAgICAgICAgICAgICBPcHRpb25zLmdpdF9jb21taXQsCi0gICAgICAg
ICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAg
ICAgICBdCiAKICAgICAjIEZJWE1FOiBUaGlzIHNob3VsZCBwcm9iYWJseSBtb3ZlIG9udG8gQ2hh
bmdlTG9nRW50cnkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>61074</attachid>
            <date>2010-07-09 12:17:03 -0700</date>
            <delta_ts>2010-07-09 15:17:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-39624-20100709121702.patch</filename>
            <type>text/plain</type>
            <size>64967</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBjOTIwNjM2M2VmOGY5MTQ1NzdhYzk5NTJiNTViOWNlNDA2NjZjMGUyLi5iNzljMzYw
N2IzZWJlOGQzMTJmMWY1YzgyZWJjYzcyM2JiZmRhOWZjIDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTAtMDctMDkgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAtLXNxdWFzaCBzaG91bGQgZ28g
YXdheSBhbmQgYmVjb21lIHRoZSBkZWZhdWx0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zOTYyNAorCisgICAgICAgIElmIHRoZXJlIGFyZSBsb2NhbCBj
b21taXRzIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcywgdGhlbiBwcm9tcHQgdGhlIHVzZXIKKyAg
ICAgICAgd2hldGhlciB0byBjb250aW51ZS4gU2V0dGluZyBnaXQgY29uZmlnIHdlYmtpdC1wYXRj
aC5jb21taXRfc2hvdWxkX2Fsd2F5c19zcXVhc2gKKyAgICAgICAgdHJ1ZSBieXBhc3NlcyB0aGUg
cHJvbXB0LgorCisgICAgICAgIC0tZ2l0LWNvbW1pdD1IRUFELi4gb3BlcmF0ZXMgb24gd29ya2lu
ZyBjb3B5IGNoYW5nZXMgb25seS4KKyAgICAgICAgLS1naXQtY29tbWl0PWNvbW1pdHRpc2ggb3Bl
cmF0ZXMgb24gYSByYW5nZSBvZiBjb21taXRzIGFzIGEgc2luZ2xlIGNvbW1pdC4KKyAgICAgICAg
ICAgIGUuZy4gLS1naXQtY29tbWl0PUhFQUQgb25seSBvcGVyYXRlcyBvbiB0aGUgSEVBRCBjb21t
aXQuCisgICAgICAgICAgICAtLWdpdC1jb21taXQ9SEVBRH40Li5IRUFEfjIgd2lsbCBvcGVyYXRl
IG9uIEhFQUR+MyBhbmQgSEVBRH4yIGFzIGEgc2luZ2xlIGNvbW1pdC4KKworICAgICAgICAtLW5v
LXNxdWFzaCBhbmQgLS1zcXVhc2ggYXJlIGxlZnQgaW4gd2l0aCBkZXNjcmlwdGl2ZSBlcnJvciBt
ZXNzYWdlcyBpZiB1c2VkLgorCisgICAgICAgICogU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGU6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpLnB5OgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5weToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vdXNlci5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlL29wdHBhcnNlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Rvd25sb2FkLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy91cGxvYWQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21v
Y2t0b29sLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hYnN0cmFj
dHN0ZXAucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2FwcGx5cGF0
Y2h3aXRobG9jYWxjb21taXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0
ZXBzL2NoZWNrc3R5bGUucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBz
L2NoZWNrc3R5bGVfdW5pdHRlc3QucHk6IFJlbW92ZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS90b29sL3N0ZXBzL2NvbW1pdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvb3B0aW9ucy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3Rl
cHMvcHJlcGFyZWNoYW5nZWxvZy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
c3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvdXBkYXRlY2hhbmdlbG9nc3dpdGhyZXZpZXdlci5weToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weToKKwog
MjAxMC0wNy0wOSAgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4gIDxrZW5uZXRoLmNocmlzdGlh
bnNlbkBvcGVuYm9zc2Eub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3Rv
LgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9jaGVjay13ZWJraXQtc3R5bGUgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQppbmRleCAxOWQzNzYyNzU1OTI3
ZGJlNTI5MmJmNTkxNTk3MDhkOTIxYWI2ZDI3Li45YTFhZTFlM2JmNGQwMGI0NDg2M2U1ZjNkZTc5
NGRmYzEzODhiMmFkIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtp
dC1zdHlsZQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL2NoZWNrLXdlYmtpdC1zdHlsZQpAQCAt
MTE1LDcgKzExNSw3IEBAIGRlZiBtYWluKCk6CiAgICAgaWYgcGF0aHM6CiAgICAgICAgIGZpbGVf
cmVhZGVyLnByb2Nlc3NfcGF0aHMocGF0aHMpCiAgICAgZWxzZToKLSAgICAgICAgcGF0Y2ggPSBj
aGVja291dC5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkK
KyAgICAgICAgcGF0Y2ggPSBjaGVja291dC5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0
KQogICAgICAgICBwYXRjaF9jaGVja2VyID0gUGF0Y2hSZWFkZXIoZmlsZV9yZWFkZXIpCiAgICAg
ICAgIHBhdGNoX2NoZWNrZXIuY2hlY2socGF0Y2gpCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaS5weQppbmRleCBhNWFjOTM5OGU4OGU3
NTFmZTg1NDQzNjRiNjljMzYzNWZlMTBhN2YxLi5jYTI4ZTMyMzMyNTg3MmRjZWMwMWQxM2FkMTY3
ZjUyNWJmNzc2ZDIzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jaGVja291dC9hcGkucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvYXBpLnB5CkBAIC04MywxNiArODMsMTYgQEAgY2xhc3MgQ2hlY2tvdXQo
b2JqZWN0KToKICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lvbihzZWxmLCByZXZpc2lvbik6CiAg
ICAgICAgIHJldHVybiBzZWxmLmNvbW1pdF9pbmZvX2Zvcl9yZXZpc2lvbihyZXZpc2lvbikuYnVn
X2lkKCkKIAotICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYsIGdpdF9jb21taXQsIHNx
dWFzaCk6CisgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwgZ2l0X2NvbW1pdCk6CiAg
ICAgICAgICMgU0NNIHJldHVybnMgcGF0aHMgcmVsYXRpdmUgdG8gc2NtLmNoZWNrb3V0X3Jvb3QK
ICAgICAgICAgIyBDYWxsZXJzIChlc3BlY2lhbGx5IHRob3NlIHVzaW5nIHRoZSBDaGFuZ2VMb2cg
Y2xhc3MpIG1heQogICAgICAgICAjIGV4cGVjdCBhYnNvbHV0ZSBwYXRocywgc28gdGhpcyBtZXRo
b2QgcmV0dXJucyBhYnNvbHV0ZSBwYXRocy4KLSAgICAgICAgY2hhbmdlZF9maWxlcyA9IHNlbGYu
X3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQsIHNxdWFzaCkKKyAgICAgICAgY2hhbmdlZF9m
aWxlcyA9IHNlbGYuX3NjbS5jaGFuZ2VkX2ZpbGVzKGdpdF9jb21taXQpCiAgICAgICAgIGFic29s
dXRlX3BhdGhzID0gW29zLnBhdGguam9pbihzZWxmLl9zY20uY2hlY2tvdXRfcm9vdCwgcGF0aCkg
Zm9yIHBhdGggaW4gY2hhbmdlZF9maWxlc10KICAgICAgICAgcmV0dXJuIFtwYXRoIGZvciBwYXRo
IGluIGFic29sdXRlX3BhdGhzIGlmIHNlbGYuX2lzX3BhdGhfdG9fY2hhbmdlbG9nKHBhdGgpXQog
Ci0gICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0
LCBzcXVhc2gpOgotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5n
ZWxvZ3MoZ2l0X2NvbW1pdCwgc3F1YXNoKQorICAgIGRlZiBjb21taXRfbWVzc2FnZV9mb3JfdGhp
c19jb21taXQoc2VsZiwgZ2l0X2NvbW1pdCk6CisgICAgICAgIGNoYW5nZWxvZ19wYXRocyA9IHNl
bGYubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0KQogICAgICAgICBpZiBub3QgbGVuKGNo
YW5nZWxvZ19wYXRocyk6CiAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJG
b3VuZCBubyBtb2RpZmllZCBDaGFuZ2VMb2dzLCBjYW5ub3QgY3JlYXRlIGEgY29tbWl0IG1lc3Nh
Z2UuXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWxsIGNoYW5nZXMgcmVxdWly
ZSBhIENoYW5nZUxvZy4gIFNlZTpcbiIKQEAgLTEwOSw5ICsxMDksOSBAQCBjbGFzcyBDaGVja291
dChvYmplY3QpOgogICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGQgc29ydCBhbmQgbGFiZWwgdGhl
IENoYW5nZUxvZyBtZXNzYWdlcyBsaWtlIGNvbW1pdC1sb2ctZWRpdG9yIGRvZXMuCiAgICAgICAg
IHJldHVybiBDb21taXRNZXNzYWdlKCIiLmpvaW4oY2hhbmdlbG9nX21lc3NhZ2VzKS5zcGxpdGxp
bmVzKCkpCiAKLSAgICBkZWYgYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChzZWxmLCBnaXRfY29tbWl0
LCBzcXVhc2gpOgorICAgIGRlZiBidWdfaWRfZm9yX3RoaXNfY29tbWl0KHNlbGYsIGdpdF9jb21t
aXQpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gcGFyc2VfYnVnX2lkKHNlbGYu
Y29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21taXQsIHNxdWFzaCkubWVzc2Fn
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBhcnNlX2J1Z19pZChzZWxmLmNvbW1pdF9tZXNzYWdl
X2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0KS5tZXNzYWdlKCkpCiAgICAgICAgIGV4Y2VwdCBT
Y3JpcHRFcnJvciwgZToKICAgICAgICAgICAgIHBhc3MgIyBXZSBtaWdodCBub3QgaGF2ZSBDaGFu
Z2VMb2dzLgogCkBAIC0xMzEsNyArMTMxLDcgQEAgY2xhc3MgQ2hlY2tvdXQob2JqZWN0KToKIAog
ICAgICAgICAjIFdlIHJldmVydCB0aGUgQ2hhbmdlTG9ncyBiZWNhdXNlIHJlbW92aW5nIGxpbmVz
IGZyb20gYSBDaGFuZ2VMb2cKICAgICAgICAgIyBkb2Vzbid0IG1ha2Ugc2Vuc2UuICBDaGFuZ2VM
b2dzIGFyZSBhcHBlbmQgb25seS4KLSAgICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5tb2Rp
ZmllZF9jaGFuZ2Vsb2dzKGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKQorICAgICAgICBj
aGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLm1vZGlmaWVkX2NoYW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25l
KQogICAgICAgICBpZiBsZW4oY2hhbmdlbG9nX3BhdGhzKToKICAgICAgICAgICAgIHNlbGYuX3Nj
bS5yZXZlcnRfZmlsZXMoY2hhbmdlbG9nX3BhdGhzKQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9hcGlfdW5pdHRlc3QucHkK
aW5kZXggMTQzNjM3OWE4ZDczYjVkMjg0OWNlODcxZDI0NTAzMDg1MGYzYTJmNy4uZmRmZDg3OThk
ZDVjYjk3ZTNlMWM1YTI5NmE2YzA2MGJiM2MxNmM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYXBpX3VuaXR0ZXN0LnB5CisrKyBiL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2FwaV91bml0dGVzdC5w
eQpAQCAtMTE0LDExICsxMTQsMTEgQEAgY2xhc3MgQ29tbWl0TWVzc2FnZUZvclRoaXNDb21taXRU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAjIENoYW5nZUxvZyBpcyBkaWZmaWN1bHQgdG8g
bW9jayBhdCBjdXJyZW50LgogICAgIGRlZiB0ZXN0X2NvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2Nv
bW1pdChzZWxmKToKICAgICAgICAgY2hlY2tvdXQgPSBDaGVja291dChOb25lKQotICAgICAgICBj
aGVja291dC5tb2RpZmllZF9jaGFuZ2Vsb2dzID0gbGFtYmRhIGdpdF9jb21taXQsIHNxdWFzaDog
WyJDaGFuZ2VMb2cxIiwgIkNoYW5nZUxvZzIiXQorICAgICAgICBjaGVja291dC5tb2RpZmllZF9j
aGFuZ2Vsb2dzID0gbGFtYmRhIGdpdF9jb21taXQ6IFsiQ2hhbmdlTG9nMSIsICJDaGFuZ2VMb2cy
Il0KICAgICAgICAgb3V0cHV0ID0gT3V0cHV0Q2FwdHVyZSgpCiAgICAgICAgIGV4cGVjdGVkX3N0
ZGVyciA9ICJQYXJzaW5nIENoYW5nZUxvZzogQ2hhbmdlTG9nMVxuUGFyc2luZyBDaGFuZ2VMb2c6
IENoYW5nZUxvZzJcbiIKICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBvdXRwdXQuYXNzZXJ0X291
dHB1dHMoc2VsZiwgY2hlY2tvdXQuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0LAotICAg
ICAgICAgICAga3dhcmdzPXsiZ2l0X2NvbW1pdCI6IE5vbmUsICJzcXVhc2giOiBGYWxzZX0sIGV4
cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCisgICAgICAgICAgICBrd2FyZ3M9eyJnaXRf
Y29tbWl0IjogTm9uZX0sIGV4cGVjdGVkX3N0ZGVycj1leHBlY3RlZF9zdGRlcnIpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbWl0X21lc3NhZ2UubWVzc2FnZSgpLCBzZWxmLmV4cGVjdGVk
X2NvbW1pdF9tZXNzYWdlKQogCiAKQEAgLTE2MywxMyArMTYzLDEzIEBAIGNsYXNzIENoZWNrb3V0
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYnVnX2lkX2Zvcl90aGlzX2Nv
bW1pdChzZWxmKToKICAgICAgICAgc2NtID0gTW9jaygpCiAgICAgICAgIGNoZWNrb3V0ID0gQ2hl
Y2tvdXQoc2NtKQotICAgICAgICBjaGVja291dC5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21t
aXQgPSBsYW1iZGEgZ2l0X2NvbW1pdCwgc3F1YXNoOiBDb21taXRNZXNzYWdlKENoYW5nZUxvZ0Vu
dHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29tbWl0KGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPUZhbHNlKSwgMzY2MjkpCisgICAgICAgIGNoZWNrb3V0LmNvbW1pdF9t
ZXNzYWdlX2Zvcl90aGlzX2NvbW1pdCA9IGxhbWJkYSBnaXRfY29tbWl0OiBDb21taXRNZXNzYWdl
KENoYW5nZUxvZ0VudHJ5KF9jaGFuZ2Vsb2cxZW50cnkxKS5jb250ZW50cygpLnNwbGl0bGluZXMo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja291dC5idWdfaWRfZm9yX3RoaXNfY29t
bWl0KGdpdF9jb21taXQ9Tm9uZSksIDM2NjI5KQogCiAgICAgZGVmIHRlc3RfbW9kaWZpZWRfY2hh
bmdlbG9ncyhzZWxmKToKICAgICAgICAgc2NtID0gTW9jaygpCiAgICAgICAgIHNjbS5jaGVja291
dF9yb290ID0gIi9mb28vYmFyIgotICAgICAgICBzY20uY2hhbmdlZF9maWxlcyA9IGxhbWJkYSBn
aXRfY29tbWl0LCBzcXVhc2g6IFsiZmlsZTEiLCAiQ2hhbmdlTG9nIiwgInJlbGF0aXZlL3BhdGgv
Q2hhbmdlTG9nIl0KKyAgICAgICAgc2NtLmNoYW5nZWRfZmlsZXMgPSBsYW1iZGEgZ2l0X2NvbW1p
dDogWyJmaWxlMSIsICJDaGFuZ2VMb2ciLCAicmVsYXRpdmUvcGF0aC9DaGFuZ2VMb2ciXQogICAg
ICAgICBjaGVja291dCA9IENoZWNrb3V0KHNjbSkKICAgICAgICAgZXhwZWN0ZWRfY2hhbmdsb2dz
ID0gWyIvZm9vL2Jhci9DaGFuZ2VMb2ciLCAiL2Zvby9iYXIvcmVsYXRpdmUvcGF0aC9DaGFuZ2VM
b2ciXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrb3V0Lm1vZGlmaWVkX2NoYW5nZWxv
Z3MoZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9RmFsc2UpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tvdXQubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRf
Y29tbWl0PU5vbmUpLCBleHBlY3RlZF9jaGFuZ2xvZ3MpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY20ucHkKaW5kZXggZDdjNjIxYzViNjJl
MjU5ZTUzZTBjNTI5MjQxNzBjZGQ2NjJhY2Y0Ny4uNTY5NTU4YThmOTkwN2UwOGNlMWYwZDAyMTZm
YTRhMGY2OWNlNDc2OSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvc2NtLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
Y29tbW9uL2NoZWNrb3V0L3NjbS5weQpAQCAtMzUsNyArMzUsNiBAQCBpbXBvcnQgc3lzCiBpbXBv
cnQgc2h1dGlsCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0
IEV4ZWN1dGl2ZSwgcnVuX2NvbW1hbmQsIFNjcmlwdEVycm9yCi1mcm9tIHdlYmtpdHB5LmNvbW1v
bi5zeXN0ZW0udXNlciBpbXBvcnQgVXNlcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRl
cHJlY2F0ZWRfbG9nZ2luZyBpbXBvcnQgZXJyb3IsIGxvZwogCiAKQEAgLTk0LDYgKzkzLDE3IEBA
IGRlZiBjb21taXRfZXJyb3JfaGFuZGxlcihlcnJvcik6CiAgICAgRXhlY3V0aXZlLmRlZmF1bHRf
ZXJyb3JfaGFuZGxlcihlcnJvcikKIAogCitjbGFzcyBBdXRoZW50aWNhdGlvbkVycm9yKEV4Y2Vw
dGlvbik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNlcnZlcl9ob3N0KToKKyAgICAgICAgc2Vs
Zi5zZXJ2ZXJfaG9zdCA9IHNlcnZlcl9ob3N0CisKKworY2xhc3MgQW1iaWd1b3VzQ29tbWl0RXJy
b3IoRXhjZXB0aW9uKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMs
IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFuKToKKyAgICAgICAgc2VsZi5udW1fbG9jYWxfY29t
bWl0cyA9IG51bV9sb2NhbF9jb21taXRzCisgICAgICAgIHNlbGYud29ya2luZ19kaXJlY3Rvcnlf
aXNfY2xlYW4gPSB3b3JraW5nX2RpcmVjdG9yeV9pc19jbGVhbgorCisKICMgU0NNIG1ldGhvZHMg
YXJlIGV4cGVjdGVkIHRvIHJldHVybiBwYXRocyByZWxhdGl2ZSB0byBzZWxmLmNoZWNrb3V0X3Jv
b3QuCiBjbGFzcyBTQ006CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGN3ZCk6CkBAIC0xOTgsNyAr
MjA4LDcgQEAgY2xhc3MgU0NNOgogICAgIGRlZiBkZWxldGUoc2VsZiwgcGF0aCk6CiAgICAgICAg
IHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVz
KHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3Rf
aW1wbGVtZW50KCkKIAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZpc2lvbihzZWxmKToK
QEAgLTIxMyw3ICsyMjMsNyBAQCBjbGFzcyBTQ006CiAgICAgZGVmIGRpc3BsYXlfbmFtZShzZWxm
KToKICAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCi0gICAgZGVmIGNy
ZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1Ob25lKToKKyAgICBkZWYg
Y3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuX3N1YmNs
YXNzX211c3RfaW1wbGVtZW50KCkKIAogICAgIGRlZiBjb21taXR0ZXJfZW1haWxfZm9yX3Jldmlz
aW9uKHNlbGYsIHJldmlzaW9uKToKQEAgLTIzNywxMCArMjQ3LDcgQEAgY2xhc3MgU0NNOgogICAg
IGRlZiByZXZlcnRfZmlsZXMoc2VsZiwgZmlsZV9wYXRocyk6CiAgICAgICAgIHNlbGYuX3N1YmNs
YXNzX211c3RfaW1wbGVtZW50KCkKIAotICAgIGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFz
aCk6Ci0gICAgICAgIHNlbGYuX3N1YmNsYXNzX211c3RfaW1wbGVtZW50KCkKLQotICAgIGRlZiBj
b21taXRfd2l0aF9tZXNzYWdlKHNlbGYsIG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21t
aXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjb21taXRfd2l0aF9tZXNzYWdlKHNlbGYs
IG1lc3NhZ2UsIHVzZXJuYW1lPU5vbmUsIGdpdF9jb21taXQ9Tm9uZSwgZm9yY2Vfc3F1YXNoPUZh
bHNlKToKICAgICAgICAgc2VsZi5fc3ViY2xhc3NfbXVzdF9pbXBsZW1lbnQoKQogCiAgICAgZGVm
IHN2bl9jb21taXRfbG9nKHNlbGYsIHN2bl9yZXZpc2lvbik6CkBAIC0zNzcsNyArMzg0LDcgQEAg
Y2xhc3MgU1ZOKFNDTSk6CiAgICAgICAgIHBhcmVudCwgYmFzZSA9IG9zLnBhdGguc3BsaXQob3Mu
cGF0aC5hYnNwYXRoKHBhdGgpKQogICAgICAgICByZXR1cm4gc2VsZi5ydW4oWyJzdm4iLCAiZGVs
ZXRlIiwgIi0tZm9yY2UiLCBiYXNlXSwgY3dkPXBhcmVudCkKIAotICAgIGRlZiBjaGFuZ2VkX2Zp
bGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgorICAgIGRlZiBjaGFuZ2Vk
X2ZpbGVzKHNlbGYsIGdpdF9jb21taXQ9Tm9uZSk6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bl9z
dGF0dXNfYW5kX2V4dHJhY3RfZmlsZW5hbWVzKHNlbGYuc3RhdHVzX2NvbW1hbmQoKSwgc2VsZi5f
c3RhdHVzX3JlZ2V4cCgiQUNETVIiKSkKIAogICAgIGRlZiBjaGFuZ2VkX2ZpbGVzX2Zvcl9yZXZp
c2lvbihzZWxmLCByZXZpc2lvbik6CkBAIC00MDMsNyArNDEwLDcgQEAgY2xhc3MgU1ZOKFNDTSk6
CiAgICAgICAgIHJldHVybiAic3ZuIgogCiAgICAgIyBGSVhNRTogVGhpcyBtZXRob2Qgc2hvdWxk
IGJlIG9uIENoZWNrb3V0LgotICAgIGRlZiBjcmVhdGVfcGF0Y2goc2VsZiwgZ2l0X2NvbW1pdD1O
b25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0
PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBhcnJheSAoc3RyKCkpIHJlcHJlc2Vu
dGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2ggZmlsZXMgYXJlIGVmZmVjdGl2ZWx5
IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAgICAgIGZpbGVzIG9mIG11bHRpcGxl
IGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCkBAIC00NzcsMjIgKzQ4NCwxOSBAQCBjbGFzcyBTVk4o
U0NNKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBzaG91bGQgcHJvYmFibHkgdXNlIGN3ZD1zZWxm
LmNoZWNrb3V0X3Jvb3QuCiAgICAgICAgIHNlbGYucnVuKFsnc3ZuJywgJ3JldmVydCddICsgZmls
ZV9wYXRocykKIAotICAgIGRlZiBzaG91bGRfc3F1YXNoKHNlbGYsIHNxdWFzaCk6Ci0gICAgICAg
ICMgU1ZOIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgY29uY2VwdCBvZiBzcXVhc2hpbmcuCi0gICAgICAg
IHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2Fn
ZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6Ci0gICAgICAg
ICMgc3F1YXNoIGFuZCBnaXQtY29tbWl0IGFyZSBub3QgdXNlZCBieSBTVk4uCisgICAgZGVmIGNv
bW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1p
dD1Ob25lLCBmb3JjZV9zcXVhc2g9RmFsc2UpOgorICAgICAgICAjIGdpdC1jb21taXQgYW5kIGZv
cmNlIGFyZSBub3QgdXNlZCBieSBTVk4uCiAgICAgICAgIGlmIHNlbGYuZHJ5cnVuOgogICAgICAg
ICAgICAgIyBSZXR1cm4gYSBzdHJpbmcgd2hpY2ggbG9va3MgbGlrZSBhIGNvbW1pdCBzbyB0aGF0
IHRoaW5ncyB3aGljaCBwYXJzZSB0aGlzIG91dHB1dCB3aWxsIHN1Y2NlZWQuCiAgICAgICAgICAg
ICByZXR1cm4gIkRyeSBydW4sIG5vIGNvbW1pdC5cbkNvbW1pdHRlZCByZXZpc2lvbiAwLiIKKwog
ICAgICAgICBzdm5fY29tbWl0X2FyZ3MgPSBbInN2biIsICJjb21taXQiXQorCiAgICAgICAgIGlm
IG5vdCB1c2VybmFtZSBhbmQgbm90IHNlbGYuaGFzX2F1dGhvcml6YXRpb25fZm9yX3JlYWxtKCk6
Ci0gICAgICAgICAgICB1c2VybmFtZSA9IFVzZXIucHJvbXB0KCIlcyBsb2dpbjogIiAlIHNlbGYu
c3ZuX3NlcnZlcl9ob3N0LCByZXBlYXQ9NSkKLSAgICAgICAgICAgIGlmIG5vdCB1c2VybmFtZToK
LSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oIllvdSBuZWVkIHRvIHNwZWNpZnkgdGhl
IHVzZXJuYW1lIG9uICVzIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCBhcy4iICUgc2VsZi5zdm5fc2Vy
dmVyX2hvc3QpCisgICAgICAgICAgICByYWlzZSBBdXRoZW50aWNhdGlvbkVycm9yKHNlbGYuc3Zu
X3NlcnZlcl9ob3N0KQogICAgICAgICBpZiB1c2VybmFtZToKICAgICAgICAgICAgIHN2bl9jb21t
aXRfYXJncy5leHRlbmQoWyItLXVzZXJuYW1lIiwgdXNlcm5hbWVdKQorCiAgICAgICAgIHN2bl9j
b21taXRfYXJncy5leHRlbmQoWyItbSIsIG1lc3NhZ2VdKQogICAgICAgICAjIEZJWE1FOiBTaG91
bGQgdGhpcyB1c2UgY3dkPXNlbGYuY2hlY2tvdXRfcm9vdD8KICAgICAgICAgcmV0dXJuIHNlbGYu
cnVuKHN2bl9jb21taXRfYXJncywgZXJyb3JfaGFuZGxlcj1jb21taXRfZXJyb3JfaGFuZGxlcikK
QEAgLTU4NCwyNCArNTg4LDI1IEBAIGNsYXNzIEdpdChTQ00pOgogICAgIGRlZiBkZWxldGUoc2Vs
ZiwgcGF0aCk6CiAgICAgICAgIHJldHVybiBzZWxmLnJ1bihbImdpdCIsICJybSIsICItZiIsIHBh
dGhdKQogCi0gICAgZGVmIF9tZXJnZV9iYXNlKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6Cisg
ICAgZGVmIF9hc3NlcnRfc3luY2VkKHNlbGYpOgorICAgICAgICBpZiBsZW4ocnVuX2NvbW1hbmQo
WydnaXQnLCAncmV2LWxpc3QnLCAnLS1tYXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2JyYW5jaF9y
ZWYoKSwgJ15IRUFEJ10pKToKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9
Ik5vdCBmdWxseSBtZXJnZWQvcmViYXNlZCB0byAlcy4gVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUg
c3luY2VkIGZpcnN0LiIgJSBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCkpCisKKyAgICBkZWYgbWVy
Z2VfYmFzZShzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgaWYgZ2l0X2NvbW1pdDoKLSAgICAg
ICAgICAgICMgRklYTUU6IENhbGxpbmcgY29kZSBzaG91bGQgdHVybiBjb21taXQgcmFuZ2VzIGlu
dG8gYSBsaXN0IG9mIGNvbW1pdCBJRHMKLSAgICAgICAgICAgICMgYW5kIHRoZW4gdHJlYXQgZWFj
aCBjb21taXQgc2VwYXJhdGVseS4KKyAgICAgICAgICAgICMgU3BlY2lhbC1jYXNlIEhFQUQuLiB0
byBtZWFuIHdvcmtpbmctY29weSBjaGFuZ2VzIG9ubHkuCisgICAgICAgICAgICBpZiBnaXRfY29t
bWl0LnVwcGVyKCkgPT0gJ0hFQUQuLic6CisgICAgICAgICAgICAgICAgcmV0dXJuICdIRUFEJwor
CiAgICAgICAgICAgICBpZiAnLi4nIG5vdCBpbiBnaXRfY29tbWl0OgogICAgICAgICAgICAgICAg
IGdpdF9jb21taXQgPSBnaXRfY29tbWl0ICsgIl4uLiIgKyBnaXRfY29tbWl0CiAgICAgICAgICAg
ICByZXR1cm4gZ2l0X2NvbW1pdAogCi0gICAgICAgIGlmIHNlbGYuc2hvdWxkX3NxdWFzaChzcXVh
c2gpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVtb3RlX21lcmdlX2Jhc2UoKQotCi0gICAg
ICAgICMgRklYTUU6IE5vbi1zcXVhc2ggYmVoYXZpb3Igc2hvdWxkIG1hdGNoIGNvbW1pdF93aXRo
X21lc3NhZ2UuIEl0IHJhaXNlcyBhbiBlcnJvcgotICAgICAgICAjIGlmIHRoZXJlIGFyZSB3b3Jr
aW5nIGNvcHkgY2hhbmdlcyBhbmQgLS1zcXVhc2ggb3IgLS1uby1zcXVhc2ggd2Fzbid0IHBhc3Nl
ZCBpbi4KLSAgICAgICAgIyBJZiAtLW5vLXNxdWFzaCwgdGhlbiBpdCBzaG91bGQgcHJvY2VlZCB3
aXRoIGVhY2ggbG9jYWwgY29tbWl0IGFzIGEgc2VwYXJhdGUgcGF0Y2guCi0gICAgICAgIHJldHVy
biAnSEVBRCcKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N5bmNlZCgpCisgICAgICAgIHJldHVybiBz
ZWxmLnJlbW90ZV9tZXJnZV9iYXNlKCkKIAotICAgIGRlZiBjaGFuZ2VkX2ZpbGVzKHNlbGYsIGdp
dF9jb21taXQ9Tm9uZSwgc3F1YXNoPU5vbmUpOgotICAgICAgICBzdGF0dXNfY29tbWFuZCA9IFsn
Z2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1cycsICctQycsICctTScsICItLW5vLWV4
dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYuX21lcmdlX2Jhc2UoZ2l0X2NvbW1pdCwgc3F1
YXNoKV0KKyAgICBkZWYgY2hhbmdlZF9maWxlcyhzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgorICAg
ICAgICBzdGF0dXNfY29tbWFuZCA9IFsnZ2l0JywgJ2RpZmYnLCAnLXInLCAnLS1uYW1lLXN0YXR1
cycsICctQycsICctTScsICItLW5vLWV4dC1kaWZmIiwgIi0tZnVsbC1pbmRleCIsIHNlbGYubWVy
Z2VfYmFzZShnaXRfY29tbWl0KV0KICAgICAgICAgcmV0dXJuIHNlbGYucnVuX3N0YXR1c19hbmRf
ZXh0cmFjdF9maWxlbmFtZXMoc3RhdHVzX2NvbW1hbmQsIHNlbGYuX3N0YXR1c19yZWdleHAoIkFE
TSIpKQogCiAgICAgZGVmIF9jaGFuZ2VzX2ZpbGVzX2Zvcl9jb21taXQoc2VsZiwgZ2l0X2NvbW1p
dCk6CkBAIC02MzMsMTIgKzYzOCwxMiBAQCBjbGFzcyBHaXQoU0NNKToKICAgICBkZWYgZGlzcGxh
eV9uYW1lKHNlbGYpOgogICAgICAgICByZXR1cm4gImdpdCIKIAotICAgIGRlZiBjcmVhdGVfcGF0
Y2goc2VsZiwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6CisgICAgZGVmIGNyZWF0ZV9w
YXRjaChzZWxmLCBnaXRfY29tbWl0PU5vbmUpOgogICAgICAgICAiIiJSZXR1cm5zIGEgYnl0ZSBh
cnJheSAoc3RyKCkpIHJlcHJlc2VudGluZyB0aGUgcGF0Y2ggZmlsZS4KICAgICAgICAgUGF0Y2gg
ZmlsZXMgYXJlIGVmZmVjdGl2ZWx5IGJpbmFyeSBzaW5jZSB0aGV5IG1heSBjb250YWluCiAgICAg
ICAgIGZpbGVzIG9mIG11bHRpcGxlIGRpZmZlcmVudCBlbmNvZGluZ3MuIiIiCiAgICAgICAgICMg
RklYTUU6IFRoaXMgc2hvdWxkIHByb2JhYmx5IHVzZSBjd2Q9c2VsZi5jaGVja291dF9yb290Ci0g
ICAgICAgIHJldHVybiBzZWxmLnJ1bihbJ2dpdCcsICdkaWZmJywgJy0tYmluYXJ5JywgIi0tbm8t
ZXh0LWRpZmYiLCAiLS1mdWxsLWluZGV4IiwgIi1NIiwgc2VsZi5fbWVyZ2VfYmFzZShnaXRfY29t
bWl0LCBzcXVhc2gpXSwgZGVjb2RlX291dHB1dD1GYWxzZSkKKyAgICAgICAgcmV0dXJuIHNlbGYu
cnVuKFsnZ2l0JywgJ2RpZmYnLCAnLS1iaW5hcnknLCAiLS1uby1leHQtZGlmZiIsICItLWZ1bGwt
aW5kZXgiLCAiLU0iLCBzZWxmLm1lcmdlX2Jhc2UoZ2l0X2NvbW1pdCldLCBkZWNvZGVfb3V0cHV0
PUZhbHNlKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGdpdF9jb21taXRfZnJvbV9zdm5f
cmV2aXNpb24oY2xzLCByZXZpc2lvbik6CkBAIC02NzksNjMgKzY4NCw0MSBAQCBjbGFzcyBHaXQo
U0NNKToKICAgICBkZWYgcmV2ZXJ0X2ZpbGVzKHNlbGYsIGZpbGVfcGF0aHMpOgogICAgICAgICBz
ZWxmLnJ1bihbJ2dpdCcsICdjaGVja291dCcsICdIRUFEJ10gKyBmaWxlX3BhdGhzKQogCi0gICAg
ZGVmIF9nZXRfc3F1YXNoX2Vycm9yX21lc3NhZ2Uoc2VsZiwgbnVtX2xvY2FsX2NvbW1pdHMpOgot
ICAgICAgICB3b3JraW5nX2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYgc2VsZi53b3JraW5nX2Rp
cmVjdG9yeV9pc19jbGVhbigpIGVsc2UgIiBhbmQgd29ya2luZyBjb3B5IGNoYW5nZXMiCi0gICAg
ICAgIHJldHVybiAoIiIiVGhlcmUgYXJlICVzIGxvY2FsIGNvbW1pdHMlcy4gRG8gb25lIG9mIHRo
ZSBmb2xsb3dpbmc6Ci0gICAgICAgICAgICAxKSBVc2UgLS1zcXVhc2ggb3IgLS1uby1zcXVhc2gK
LSAgICAgICAgICAgIDIpIGdpdCBjb25maWcgd2Via2l0LXBhdGNoLnNxdWFzaCB0cnVlL2ZhbHNl
Ci0gICAgICAgICAgICAiIiIgJSAobnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5
X21lc3NhZ2UpKQotCi0gICAgZGVmIHNob3VsZF9zcXVhc2goc2VsZiwgc3F1YXNoKToKLSAgICAg
ICAgaWYgc3F1YXNoIGlzIE5vbmU6Ci0gICAgICAgICAgICBjb25maWdfc3F1YXNoID0gR2l0LnJl
YWRfZ2l0X2NvbmZpZygnd2Via2l0LXBhdGNoLnNxdWFzaCcpCi0gICAgICAgICAgICBpZiAoY29u
ZmlnX3NxdWFzaCBhbmQgY29uZmlnX3NxdWFzaCBpcyBub3QgIiIpOgotICAgICAgICAgICAgICAg
IHNxdWFzaCA9IGNvbmZpZ19zcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgIyBPbmx5IHJhaXNlIGFuIGVycm9yIGlmIHRoZXJlIGFyZSBh
Y3R1YWxseSBtdWx0aXBsZSBjb21taXRzIHRvIHNxdWFzaC4KLSAgICAgICAgICAgICAgICBudW1f
bG9jYWxfY29tbWl0cyA9IGxlbihzZWxmLmxvY2FsX2NvbW1pdHMoKSkKLSAgICAgICAgICAgICAg
ICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3IgKG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQg
bm90IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKSk6Ci0gICAgICAgICAgICAgICAg
ICAgIHJhaXNlIFNjcmlwdEVycm9yKG1lc3NhZ2U9c2VsZi5fZ2V0X3NxdWFzaF9lcnJvcl9tZXNz
YWdlKG51bV9sb2NhbF9jb21taXRzKSkKLQotICAgICAgICBpZiBzcXVhc2ggYW5kIHNlbGYuX3Jl
bW90ZV9icmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMoKToKLSAgICAgICAgICAgIHJhaXNlIFNjcmlw
dEVycm9yKG1lc3NhZ2U9IkNhbm5vdCB1c2UgLS1zcXVhc2ggd2hlbiBIRUFEIGlzIG5vdCBmdWxs
eSBtZXJnZWQvcmViYXNlZCB0byAlcy4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiVGhpcyBicmFuY2ggbmVlZHMgdG8gYmUgc3luY2VkIGZpcnN0LiIgJSBzZWxmLnJl
bW90ZV9icmFuY2hfcmVmKCkpCisgICAgZGVmIF9hc3NlcnRfY2FuX3NxdWFzaChzZWxmLCB3b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbik6CisgICAgICAgIHNxdWFzaCA9IEdpdC5yZWFkX2dpdF9j
b25maWcoJ3dlYmtpdC1wYXRjaC5jb21taXRfc2hvdWxkX2Fsd2F5c19zcXVhc2gnKQorICAgICAg
ICBzaG91bGRfc3F1YXNoID0gc3F1YXNoIGFuZCBzcXVhc2gubG93ZXIoKSA9PSAidHJ1ZSIKIAot
ICAgICAgICByZXR1cm4gc3F1YXNoCisgICAgICAgIGlmIG5vdCBzaG91bGRfc3F1YXNoOgorICAg
ICAgICAgICAgIyBPbmx5IHdhcm4gaWYgdGhlcmUgYXJlIGFjdHVhbGx5IG11bHRpcGxlIGNvbW1p
dHMgdG8gc3F1YXNoLgorICAgICAgICAgICAgbnVtX2xvY2FsX2NvbW1pdHMgPSBsZW4oc2VsZi5s
b2NhbF9jb21taXRzKCkpCisgICAgICAgICAgICBpZiBudW1fbG9jYWxfY29tbWl0cyA+IDEgb3Ig
KG51bV9sb2NhbF9jb21taXRzID4gMCBhbmQgbm90IHdvcmtpbmdfZGlyZWN0b3J5X2lzX2NsZWFu
KToKKyAgICAgICAgICAgICAgICByYWlzZSBBbWJpZ3VvdXNDb21taXRFcnJvcihudW1fbG9jYWxf
Y29tbWl0cywgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4pCiAKLSAgICBkZWYgX3JlbW90ZV9i
cmFuY2hfaGFzX2V4dHJhX2NvbW1pdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4ocnVuX2Nv
bW1hbmQoWydnaXQnLCAncmV2LWxpc3QnLCAnLS1tYXgtY291bnQ9MScsIHNlbGYucmVtb3RlX2Jy
YW5jaF9yZWYoKSwgJ15IRUFEJ10pKQotCi0gICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2Vs
ZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9uZSwgZ2l0X2NvbW1pdD1Ob25lLCBzcXVhc2g9Tm9uZSk6
CisgICAgZGVmIGNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgdXNlcm5hbWU9Tm9u
ZSwgZ2l0X2NvbW1pdD1Ob25lLCBmb3JjZV9zcXVhc2g9RmFsc2UpOgogICAgICAgICAjIFVzZXJu
YW1lIGlzIGlnbm9yZWQgZHVyaW5nIEdpdCBjb21taXRzLgorICAgICAgICB3b3JraW5nX2RpcmVj
dG9yeV9pc19jbGVhbiA9IHNlbGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKQorCiAgICAg
ICAgIGlmIGdpdF9jb21taXQ6CisgICAgICAgICAgICAjIFNwZWNpYWwtY2FzZSBIRUFELi4gdG8g
bWVhbiB3b3JraW5nLWNvcHkgY2hhbmdlcyBvbmx5LgorICAgICAgICAgICAgaWYgZ2l0X2NvbW1p
dC51cHBlcigpID09ICdIRUFELi4nOgorICAgICAgICAgICAgICAgIGlmIHdvcmtpbmdfZGlyZWN0
b3J5X2lzX2NsZWFuOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNz
YWdlPSJUaGUgd29ya2luZyBjb3B5IGlzIG5vdCBtb2RpZmllZC4gLS1naXQtY29tbWl0PUhFQUQu
LiBvbmx5IGNvbW1pdHMgd29ya2luZyBjb3B5IGNoYW5nZXMuIikKKyAgICAgICAgICAgICAgICBz
ZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAg
IHJldHVybiBzZWxmLl9jb21taXRfb25fYnJhbmNoKG1lc3NhZ2UsICdIRUFEJykKKwogICAgICAg
ICAgICAgIyBOZWVkIHdvcmtpbmcgZGlyZWN0b3J5IGNoYW5nZXMgdG8gYmUgY29tbWl0dGVkIHNv
IHdlIGNhbiBjaGVja291dCB0aGUgbWVyZ2UgYnJhbmNoLgotICAgICAgICAgICAgaWYgbm90IHNl
bGYud29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW4oKToKKyAgICAgICAgICAgIGlmIG5vdCB3b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbjoKICAgICAgICAgICAgICAgICAjIEZJWE1FOiB3ZWJraXQt
cGF0Y2ggbGFuZCB3aWxsIG1vZGlmeSB0aGUgQ2hhbmdlTG9ncyB0byBjb3JyZWN0IHRoZSByZXZp
ZXdlci4KICAgICAgICAgICAgICAgICAjIFRoYXQgd2lsbCBtb2RpZnkgdGhlIHdvcmtpbmctY29w
eSBhbmQgY2F1c2UgdXMgdG8gaGl0IHRoaXMgZXJyb3IuCi0gICAgICAgICAgICAgICAgIyBUaGUg
Q2hhbmdlTG9nIG1vZGlmaWNhdGlvbiBjb3VsZCBiZSBtYWRlIHRvIG1vZGlmeSB0aGUgZXhpc3Rp
bmcgbG9jYWwgY29tbWl0PworICAgICAgICAgICAgICAgICMgVGhlIENoYW5nZUxvZyBtb2RpZmlj
YXRpb24gY291bGQgYmUgbWFkZSB0byBtb2RpZnkgdGhlIGV4aXN0aW5nIGxvY2FsIGNvbW1pdC4K
ICAgICAgICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNzYWdlPSJXb3JraW5nIGNvcHkg
aXMgbW9kaWZpZWQuIENhbm5vdCBjb21taXQgaW5kaXZpZHVhbCBnaXRfY29tbWl0cy4iKQogICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbW1pdF9vbl9icmFuY2gobWVzc2FnZSwgZ2l0X2NvbW1p
dCkKIAotICAgICAgICBzcXVhc2ggPSBzZWxmLnNob3VsZF9zcXVhc2goc3F1YXNoKQotICAgICAg
ICBpZiBzcXVhc2g6Ci0gICAgICAgICAgICBzZWxmLnJ1bihbJ2dpdCcsICdyZXNldCcsICctLXNv
ZnQnLCBzZWxmLnJlbW90ZV9icmFuY2hfcmVmKCldKQotICAgICAgICAgICAgc2VsZi5jb21taXRf
bG9jYWxseV93aXRoX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgZWxpZiBub3Qgc2VsZi53b3Jr
aW5nX2RpcmVjdG9yeV9pc19jbGVhbigpOgotICAgICAgICAgICAgaWYgbm90IGxlbihzZWxmLmxv
Y2FsX2NvbW1pdHMoKSk6Ci0gICAgICAgICAgICAgICAgIyBUaGVyZSBhcmUgb25seSB3b3JraW5n
IGNvcHkgY2hhbmdlcy4gQXNzdW1lIHRoZXkgc2hvdWxkIGJlIGNvbW1pdHRlZC4KLSAgICAgICAg
ICAgICAgICBzZWxmLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShtZXNzYWdlKQotICAgICAg
ICAgICAgZWxpZiBzcXVhc2ggaXMgTm9uZToKLSAgICAgICAgICAgICAgICAjIFRoZSB1c2VyIGRp
ZG4ndCBleHBsaWNpdGx5IHNheSB0byBzcXVhc2ggb3Igbm90IHNxdWFzaC4gVGhlcmUgYXJlIGxv
Y2FsIGNvbW1pdHMKLSAgICAgICAgICAgICAgICAjIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcy4g
Tm90IGNsZWFyIHdoYXQgdGhlIHVzZXIgd2FudHMuCi0gICAgICAgICAgICAgICAgcmFpc2UgU2Ny
aXB0RXJyb3IobWVzc2FnZT0iIiJUaGVyZSBhcmUgbG9jYWwgY29tbWl0cyBhbmQgd29ya2luZyBj
b3B5IGNoYW5nZXMuIERvIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotMSkgQ29tbWl0L3JldmVydCB3
b3JraW5nIGNvcHkgY2hhbmdlcy4KLTIpIFVzZSAtLXNxdWFzaCBvciAtLW5vLXNxdWFzaAotMykg
Z2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUvZmFsc2UKLSIiIikKLQotICAgICAg
ICAjIEZJWE1FOiBUaGlzIHdpbGwgY29tbWl0IGFsbCBsb2NhbCBjb21taXRzLCBlYWNoIHdpdGgg
aXQncyBvd24gbWVzc2FnZS4gV2Ugc2hvdWxkIHJlc3RydWN0dXJlCi0gICAgICAgICMgc28gdGhh
dCBlYWNoIGxvY2FsIGNvbW1pdCBoYXMgdGhlIGFwcHJvcHJpYXRlIGNvbW1pdCBtZXNzYWdlIGJh
c2VkIG9mZiBpdCdzIENoYW5nZUxvZ3MuCisgICAgICAgIGlmIG5vdCBmb3JjZV9zcXVhc2g6Cisg
ICAgICAgICAgICBzZWxmLl9hc3NlcnRfY2FuX3NxdWFzaCh3b3JraW5nX2RpcmVjdG9yeV9pc19j
bGVhbikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X3N5bmNlZCgpCisgICAgICAgIHNlbGYucnVuKFsn
Z2l0JywgJ3Jlc2V0JywgJy0tc29mdCcsIHNlbGYucmVtb3RlX2JyYW5jaF9yZWYoKV0pCisgICAg
ICAgIHNlbGYuY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKG1lc3NhZ2UpCiAgICAgICAgIHJl
dHVybiBzZWxmLnB1c2hfbG9jYWxfY29tbWl0c190b19zZXJ2ZXIoKQogCiAgICAgZGVmIF9jb21t
aXRfb25fYnJhbmNoKHNlbGYsIG1lc3NhZ2UsIGdpdF9jb21taXQpOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0ZXN0LnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvc2NtX3VuaXR0
ZXN0LnB5CmluZGV4IGVhYTNiNDY3ZTlmZWI3YjNlZTdlZjhjMjMxM2VjNjlkNWFkODJkNWUuLjg1
MmY4MzhlNWE5ZjE2ZmQyNmUyMWI3MWUzN2JmYTYxM2QzZGFlYWIgMTAwNjQ0Ci0tLSBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L3NjbV91bml0dGVzdC5weQor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9zY21fdW5p
dHRlc3QucHkKQEAgLTQ0LDcgKzQ0LDcgQEAgaW1wb3J0IHNodXRpbAogCiBmcm9tIGRhdGV0aW1l
IGltcG9ydCBkYXRlCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5hcGkgaW1wb3J0IENo
ZWNrb3V0Ci1mcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20gaW1wb3J0IGRldGVjdF9z
Y21fc3lzdGVtLCBTQ00sIFNWTiwgQ2hlY2tvdXROZWVkc1VwZGF0ZSwgY29tbWl0X2Vycm9yX2hh
bmRsZXIKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbSBpbXBvcnQgZGV0ZWN0X3Nj
bV9zeXN0ZW0sIFNDTSwgU1ZOLCBDaGVja291dE5lZWRzVXBkYXRlLCBjb21taXRfZXJyb3JfaGFu
ZGxlciwgQXV0aGVudGljYXRpb25FcnJvciwgQW1iaWd1b3VzQ29tbWl0RXJyb3IKIGZyb20gd2Vi
a2l0cHkuY29tbW9uLmNvbmZpZy5jb21taXR0ZXJzIGltcG9ydCBDb21taXR0ZXIgICMgRklYTUU6
IFRoaXMgc2hvdWxkIG5vdCBiZSBuZWVkZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldC5idWd6
aWxsYSBpbXBvcnQgQXR0YWNobWVudCAjIEZJWE1FOiBUaGlzIHNob3VsZCBub3QgYmUgbmVlZGVk
CiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBFeGVjdXRpdmUs
IHJ1bl9jb21tYW5kLCBTY3JpcHRFcnJvcgpAQCAtNTk3LDYgKzU5NywxMCBAQCBRMWRUQngwQUFB
QjQyaXRnNEdsZ1lKakd3TUREeU9ETXhNRHczNEdCZ1FFQUpQUURKQT09CiAgICAgZGVmIHRlc3Rf
Y29tbWl0X3dpdGhfdXNlcm5hbWUoc2VsZik6CiAgICAgICAgIHNlbGYuX3NoYXJlZF90ZXN0X2Nv
bW1pdF93aXRoX21lc3NhZ2UoImRiYXRlc0B3ZWJraXQub3JnIikKIAorICAgIGRlZiB0ZXN0X2Nv
bW1pdF93aXRob3V0X2F1dGhvcml6YXRpb24oc2VsZik6CisgICAgICAgIHNlbGYuc2NtLmhhc19h
dXRob3JpemF0aW9uX2Zvcl9yZWFsbSA9IGxhbWJkYTogRmFsc2UKKyAgICAgICAgc2VsZi5hc3Nl
cnRSYWlzZXMoQXV0aGVudGljYXRpb25FcnJvciwgc2VsZi5fc2hhcmVkX3Rlc3RfY29tbWl0X3dp
dGhfbWVzc2FnZSkKKwogICAgIGRlZiB0ZXN0X2hhc19hdXRob3JpemF0aW9uX2Zvcl9yZWFsbShz
ZWxmKToKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5zdm5fY2hlY2tvdXRf
cGF0aCkKICAgICAgICAgZmFrZV9ob21lX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAoc3VmZml4PSJm
YWtlX2hvbWVfZGlyIikKQEAgLTg2NywyNCArODcxLDE0IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NN
VGVzdCk6CiAKICAgICBkZWYgdGVzdF9jb21taXRfdGV4dF9wYXJzaW5nKHNlbGYpOgogICAgICAg
ICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlJywgJ21vcmUgdGVzdCBjb250ZW50
JykKLSAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNzYWdlKCJhbm90aGVy
IHRlc3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0
aF9tZXNzYWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChzZWxmLnNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2
JykKIAogICAgICAgICBzZWxmLnNjbS5kcnlydW4gPSBUcnVlCiAgICAgICAgIHdyaXRlX2ludG9f
ZmlsZV9hdF9wYXRoKCd0ZXN0X2ZpbGUnLCAnc3RpbGwgbW9yZSB0ZXN0IGNvbnRlbnQnKQotICAg
ICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRl
c3QgY29tbWl0IikKICAgICAgICAgY29tbWl0X3RleHQgPSBzZWxmLnNjbS5jb21taXRfd2l0aF9t
ZXNzYWdlKCJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoc2VsZi5zY20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAn
MCcpCiAKLSAgICBkZWYgX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdl
cyhzZWxmKToKLSAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21t
aXQxJywgJ21vcmUgdGVzdCBjb250ZW50JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAn
YWRkJywgJ3Rlc3RfZmlsZV9jb21taXQxJ10pCi0gICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2Nh
bGx5X3dpdGhfbWVzc2FnZSgiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCi0KLSAgICAgICAgd3JpdGVf
aW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBj
b250ZW50JykKLSAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9j
b21taXQyJ10pCi0KICAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3dvcmtpbmdfY29w
eV9vbmx5KHNlbGYpOgogICAgICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxl
X2NvbW1pdDEnLCAnbW9yZSB0ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dp
dCcsICdhZGQnLCAndGVzdF9maWxlX2NvbW1pdDEnXSkKQEAgLTg5NSwyMSArODg5LDE4IEBAIGNs
YXNzIEdpdFNWTlRlc3QoU0NNVGVzdCk6CiAgICAgICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChb
J2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScsICctLXZlcmJvc2UnXSkKICAgICAgICAg
c2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykp
CiAKLSAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlX3NxdWFzaGVkKHNlbGYpOgotICAg
ICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMoKQot
ICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQot
ICAgICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJ5ZXQgYW5vdGhl
ciB0ZXN0IGNvbW1pdCIsIHNxdWFzaD1UcnVlKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c2NtLnN2bl9yZXZpc2lvbl9mcm9tX2NvbW1pdF90ZXh0KGNvbW1pdF90ZXh0KSwgJzYnKQotICAg
ICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0
PTEnLCAnLS12ZXJib3NlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0
ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUu
c2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkKLQotICAgIGRlZiBfdHdvX2xv
Y2FsX2NvbW1pdHMoc2VsZik6CisgICAgZGVmIF9vbmVfbG9jYWxfY29tbWl0KHNlbGYpOgogICAg
ICAgICB3cml0ZV9pbnRvX2ZpbGVfYXRfcGF0aCgndGVzdF9maWxlX2NvbW1pdDEnLCAnbW9yZSB0
ZXN0IGNvbnRlbnQnKQogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdhZGQnLCAndGVzdF9m
aWxlX2NvbW1pdDEnXSkKICAgICAgICAgc2VsZi5zY20uY29tbWl0X2xvY2FsbHlfd2l0aF9tZXNz
YWdlKCJhbm90aGVyIHRlc3QgY29tbWl0IikKIAorICAgIGRlZiBfb25lX2xvY2FsX2NvbW1pdF9w
bHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxf
Y29tbWl0KCkKKyAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21t
aXQyJywgJ3N0aWxsIG1vcmUgdGVzdCBjb250ZW50JykKKyAgICAgICAgcnVuX2NvbW1hbmQoWydn
aXQnLCAnYWRkJywgJ3Rlc3RfZmlsZV9jb21taXQyJ10pCisKKyAgICBkZWYgX3R3b19sb2NhbF9j
b21taXRzKHNlbGYpOgorICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0KCkKICAgICAgICAg
d3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQyJywgJ3N0aWxsIG1vcmUg
dGVzdCBjb250ZW50JykKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnYWRkJywgJ3Rlc3Rf
ZmlsZV9jb21taXQyJ10pCiAgICAgICAgIHNlbGYuc2NtLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVz
c2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiKQpAQCAtOTIwLDYgKzkxMSwxNyBAQCBjbGFz
cyBHaXRTVk5UZXN0KFNDTVRlc3QpOgogICAgICAgICBzZWxmLnNjbS5jb21taXRfbG9jYWxseV93
aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQogICAgICAgICBzZWxmLl90d29fbG9j
YWxfY29tbWl0cygpCiAKKyAgICBkZWYgdGVzdF9jb21taXRfd2l0aF9tZXNzYWdlKHNlbGYpOgor
ICAgICAgICBzZWxmLl9vbmVfbG9jYWxfY29tbWl0X3BsdXNfd29ya2luZ19jb3B5X2NoYW5nZXMo
KQorICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRo
KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBbWJpZ3VvdXNDb21taXRFcnJvciwgc2NtLmNv
bW1pdF93aXRoX21lc3NhZ2UsICJ5ZXQgYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIGNv
bW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90aGVyIHRlc3QgY29t
bWl0IiwgZm9yY2Vfc3F1YXNoPVRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY20u
c3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAgICAg
IHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9MScs
ICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3Rf
ZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFy
Y2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQorCiAgICAgZGVmIHRlc3RfY29tbWl0
X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0KHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxf
Y29tbWl0cygpCiAKQEAgLTk0Myw1MSArOTQ1LDY4IEBAIGNsYXNzIEdpdFNWTlRlc3QoU0NNVGVz
dCk6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0
MScsIHN2bl9sb2cpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9m
aWxlX2NvbW1pdDInLCBzdm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3Nh
Z2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQorICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfd29ya2luZ19jb3B5X29ubHko
c2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlf
Y2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNr
b3V0X3BhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29t
bWl0X3dpdGhfbWVzc2FnZSwgWyJhbm90aGVyIHRlc3QgY29tbWl0Il0pCisgICAgICAgIGNvbW1p
dF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiLCBn
aXRfY29tbWl0PSJIRUFELi4iKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChy
J3Rlc3RfZmlsZV9jb21taXQxJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQorCisgICAgZGVmIHRlc3Rf
Y29tbWl0X3dpdGhfbWVzc2FnZV9vbmx5X2xvY2FsX2NvbW1pdChzZWxmKToKKyAgICAgICAgc2Vs
Zi5fb25lX2xvY2FsX2NvbW1pdCgpCisgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNl
bGYuZ2l0X2NoZWNrb3V0X3BhdGgpCisgICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93
aXRoX21lc3NhZ2UoImFub3RoZXIgdGVzdCBjb21taXQiKQorICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScs
IHN2bl9sb2cpKQogCiAgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9s
b2NhbF9jb21taXRzX2FuZF93b3JraW5nX2NvcHkoc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19s
b2NhbF9jb21taXRzKCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0X3BhdGgoJ3Rlc3RfZmls
ZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQogICAgICAgICBzY20gPSBkZXRlY3Rf
c2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UsIFsiYW5vdGhlciB0ZXN0
IGNvbW1pdCJdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFtYmlndW91c0NvbW1pdEVy
cm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiKQorICAg
ICAgICBjb21taXRfdGV4dCA9IHNjbS5jb21taXRfd2l0aF9tZXNzYWdlKCJhbm90aGVyIHRlc3Qg
Y29tbWl0IiwgZm9yY2Vfc3F1YXNoPVRydWUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
Y20uc3ZuX3JldmlzaW9uX2Zyb21fY29tbWl0X3RleHQoY29tbWl0X3RleHQpLCAnNicpCisgICAg
ICAgIHN2bl9sb2cgPSBydW5fY29tbWFuZChbJ2dpdCcsICdzdm4nLCAnbG9nJywgJy0tbGltaXQ9
MScsICctLXZlcmJvc2UnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rl
c3RfZmlsZV9jb21taXQyJywgc3ZuX2xvZykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5z
ZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHN2bl9sb2cpKQogCiAgICAgZGVmIHRlc3RfY29t
bWl0X3dpdGhfbWVzc2FnZV9naXRfY29tbWl0X2FuZF93b3JraW5nX2NvcHkoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKICAgICAgICAgd3JpdGVfaW50b19maWxlX2F0
X3BhdGgoJ3Rlc3RfZmlsZV9jb21taXQxJywgJ3dvcmtpbmcgY29weSBjaGFuZ2UnKQogICAgICAg
ICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9wYXRoKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNvbW1pdF93aXRoX21lc3NhZ2Us
IFsiYW5vdGhlciB0ZXN0IGNvbW1pdCIsICdnaXRfY29tbWl0PSJIRUFEXiInXSkKKyAgICAgICAg
c2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNzYWdlLCAi
YW5vdGhlciB0ZXN0IGNvbW1pdCIsIGdpdF9jb21taXQ9IkhFQUReIikKIAotICAgIGRlZiB0ZXN0
X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2Vs
Zik6CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBsZV9sb2NhbF9jb21t
aXRzX2Fsd2F5c19zcXVhc2goc2VsZik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRz
KCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0
aCkKLSAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFu
b3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9RmFsc2UpCisgICAgICAgIHNjbS5fYXNzZXJ0X2Nh
bl9zcXVhc2ggPSBsYW1iZGEgd29ya2luZ19kaXJlY3RvcnlfaXNfY2xlYW46IFRydWUKKyAgICAg
ICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSgieWV0IGFub3RoZXIgdGVz
dCBjb21taXQiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJv
bV9jb21taXRfdGV4dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVu
X2NvbW1hbmQoWydnaXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10p
CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0Mics
IHN2bl9sb2cpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHJlLnNlYXJjaChyJ3Rlc3RfZmls
ZV9jb21taXQxJywgc3ZuX2xvZykpCi0KLSAgICAgICAgc3ZuX2xvZyA9IHJ1bl9jb21tYW5kKFsn
Z2l0JywgJ3N2bicsICdsb2cnLCAnLS1saW1pdD0yJywgJy0tdmVyYm9zZSddKQogICAgICAgICBz
ZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBzdm5fbG9nKSkK
IAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2VfbXVsdGlwbGVfbG9jYWxfY29tbWl0
c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9tdWx0aXBs
ZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygp
CiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgp
Ci0gICAgICAgIGNvbW1pdF90ZXh0ID0gc2NtLmNvbW1pdF93aXRoX21lc3NhZ2UoInlldCBhbm90
aGVyIHRlc3QgY29tbWl0Iiwgc3F1YXNoPVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KEFtYmlndW91c0NvbW1pdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgInlldCBhbm90
aGVyIHRlc3QgY29tbWl0IikKKyAgICAgICAgY29tbWl0X3RleHQgPSBzY20uY29tbWl0X3dpdGhf
bWVzc2FnZSgieWV0IGFub3RoZXIgdGVzdCBjb21taXQiLCBmb3JjZV9zcXVhc2g9VHJ1ZSkKKwog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjbS5zdm5fcmV2aXNpb25fZnJvbV9jb21taXRfdGV4
dChjb21taXRfdGV4dCksICc2JykKIAogICAgICAgICBzdm5fbG9nID0gcnVuX2NvbW1hbmQoWydn
aXQnLCAnc3ZuJywgJ2xvZycsICctLWxpbWl0PTEnLCAnLS12ZXJib3NlJ10pCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHN2bl9sb2cpKQog
ICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBz
dm5fbG9nKSkKIAotICAgIGRlZiB0ZXN0X2NvbW1pdF93aXRoX21lc3NhZ2Vfbm90X3N5bmNlZF9z
cXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY29tbWl0X3dpdGhfbWVzc2FnZV9ub3Rfc3luY2Vk
KHNlbGYpOgogICAgICAgICBydW5fY29tbWFuZChbJ2dpdCcsICdjaGVja291dCcsICctYicsICdt
eS1icmFuY2gnLCAndHJ1bmt+MyddKQogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygp
CiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhf
bWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQiLCBzcXVhc2g9VHJ1ZSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoQW1iaWd1b3VzQ29tbWl0RXJyb3IsIHNjbS5jb21taXRfd2l0aF9tZXNz
YWdlLCAiYW5vdGhlciB0ZXN0IGNvbW1pdCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNj
cmlwdEVycm9yLCBzY20uY29tbWl0X3dpdGhfbWVzc2FnZSwgImFub3RoZXIgdGVzdCBjb21taXQi
LCBmb3JjZV9zcXVhc2g9VHJ1ZSkKIAogICAgIGRlZiB0ZXN0X3JlbW90ZV9icmFuY2hfcmVmKHNl
bGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuc2NtLnJlbW90ZV9icmFuY2hfcmVm
KCksICdyZWZzL3JlbW90ZXMvdHJ1bmsnKQpAQCAtMTAwNCwyNiArMTAyMywxNiBAQCBjbGFzcyBH
aXRTVk5UZXN0KFNDTVRlc3QpOgogICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9sb2NhbF9wbHVz
X3dvcmtpbmdfY29weShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVz
X3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0o
c2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0
RXJyb3IsIHNjbS5jcmVhdGVfcGF0Y2gpCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVs
dGlwbGVfbG9jYWxfY29tbWl0cyhzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2NvbW1p
dHMoKQotICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVja291dF9w
YXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNyZWF0ZV9w
YXRjaCkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9zcXVhc2hlZChzZWxmKToKLSAgICAg
ICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29weV9jaGFuZ2VzKCkKLSAg
ICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hlY2tvdXRfcGF0aCkKLSAg
ICAgICAgcGF0Y2ggPSBzY20uY3JlYXRlX3BhdGNoKHNxdWFzaD1UcnVlKQotICAgICAgICBzZWxm
LmFzc2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDInLCBwYXRjaCkpCisgICAg
ICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShy
ZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogCi0gICAgZGVm
IHRlc3RfY3JlYXRlX3BhdGNoX25vdF9zcXVhc2hlZChzZWxmKToKKyAgICBkZWYgdGVzdF9jcmVh
dGVfcGF0Y2goc2VsZik6CiAgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3Jr
aW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYu
Z2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVh
c2g9RmFsc2UpCisgICAgICAgIHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaCgpCiAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MicsIHBhdGNoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBh
dGNoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21t
aXQxJywgcGF0Y2gpKQogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX2dpdF9jb21taXQoc2Vs
Zik6CiAgICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKQEAgLTEwNDAsMjYgKzEwNDks
MjUgQEAgY2xhc3MgR2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFz
c2VydFRydWUocmUuc2VhcmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKLSAgICBk
ZWYgdGVzdF9jcmVhdGVfcGF0Y2hfbXVsdGlwbGVfbG9jYWxfY29tbWl0c19ub19zcXVhc2goc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKKyAgICBkZWYgdGVzdF9jcmVh
dGVfcGF0Y2hfd29ya2luZ19jb3B5X29ubHkoc2VsZik6CisgICAgICAgIHNlbGYuX29uZV9sb2Nh
bF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVj
dF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAgIHBhdGNoID0gc2Nt
LmNyZWF0ZV9wYXRjaChzcXVhc2g9RmFsc2UpCi0gICAgICAgICMgRklYTUU6IEl0J3Mgd2VpcmQg
dGhhdCB3aXRoIHNxdWFzaD1GYWxzZSwgY3JlYXRlX3BhdGNoL2NoYW5nZWRfZmlsZXMgaWdub3Jl
cyBsb2NhbCBjb21taXRzLAotICAgICAgICAjIGJ1dCBjb21taXRfd2l0aF9tZXNzYWdlIGNvbW1p
dHMgdGhlbS4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdGNoID09ICIiKQorICAgICAgICBw
YXRjaCA9IHNjbS5jcmVhdGVfcGF0Y2goZ2l0X2NvbW1pdD0iSEVBRC4uIikKKyAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShyZS5zZWFyY2gocid0ZXN0X2ZpbGVfY29tbWl0MScsIHBhdGNoKSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rlc3RfZmlsZV9jb21taXQyJywgcGF0
Y2gpKQogCi0gICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNoX211bHRpcGxlX2xvY2FsX2NvbW1pdHNf
c3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NyZWF0ZV9wYXRjaF9tdWx0aXBsZV9sb2NhbF9j
b21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCiAgICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAg
IHBhdGNoID0gc2NtLmNyZWF0ZV9wYXRjaChzcXVhc2g9VHJ1ZSkKKyAgICAgICAgcGF0Y2ggPSBz
Y20uY3JlYXRlX3BhdGNoKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLnNlYXJjaChyJ3Rl
c3RfZmlsZV9jb21taXQyJywgcGF0Y2gpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUuc2Vh
cmNoKHIndGVzdF9maWxlX2NvbW1pdDEnLCBwYXRjaCkpCiAKLSAgICBkZWYgdGVzdF9jcmVhdGVf
cGF0Y2hfbm90X3N5bmNlZF9zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY3JlYXRlX3BhdGNo
X25vdF9zeW5jZWQoc2VsZik6CiAgICAgICAgIHJ1bl9jb21tYW5kKFsnZ2l0JywgJ2NoZWNrb3V0
JywgJy1iJywgJ215LWJyYW5jaCcsICd0cnVua34zJ10pCiAgICAgICAgIHNlbGYuX3R3b19sb2Nh
bF9jb21taXRzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNjbS5j
cmVhdGVfcGF0Y2gsIHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3Jp
cHRFcnJvciwgc2NtLmNyZWF0ZV9wYXRjaCkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9iaW5hcnlf
cGF0Y2goc2VsZik6CiAgICAgICAgICMgQ3JlYXRlIGEgZ2l0IGJpbmFyeSBwYXRjaCBhbmQgY2hl
Y2sgdGhlIGNvbnRlbnRzLgpAQCAtMTA5MCwyNiArMTA5OCw5IEBAIGNsYXNzIEdpdFNWTlRlc3Qo
U0NNVGVzdCk6CiAgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19sb2NhbF9wbHVzX3dvcmtpbmdf
Y29weShzZWxmKToKICAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdf
Y29weV9jaGFuZ2VzKCkKICAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRf
Y2hlY2tvdXRfcGF0aCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0RXJyb3IsIHNj
bS5jaGFuZ2VkX2ZpbGVzKQotCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9s
b2NhbF9jb21taXRzKHNlbGYpOgotICAgICAgICBzZWxmLl90d29fbG9jYWxfY29tbWl0cygpCi0g
ICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFNjcmlwdEVycm9yLCBzY20uY2hhbmdlZF9maWxlcykK
LQotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfc3F1YXNoZWQoc2VsZik6Ci0gICAgICAgIHNl
bGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hhbmdlcygpCi0gICAgICAg
IHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0X3BhdGgpCi0gICAgICAg
IGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPVRydWUpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVzKQorICAgICAgICBmaWxlcyA9IHNj
bS5jaGFuZ2VkX2ZpbGVzKCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVfY29t
bWl0MScgaW4gZmlsZXMpCi0KLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX25vdF9zcXVhc2hl
ZChzZWxmKToKLSAgICAgICAgc2VsZi5fb25lX2xvY2FsX2NvbW1pdF9wbHVzX3dvcmtpbmdfY29w
eV9jaGFuZ2VzKCkKLSAgICAgICAgc2NtID0gZGV0ZWN0X3NjbV9zeXN0ZW0oc2VsZi5naXRfY2hl
Y2tvdXRfcGF0aCkKLSAgICAgICAgZmlsZXMgPSBzY20uY2hhbmdlZF9maWxlcyhzcXVhc2g9RmFs
c2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2NvbW1pdDInIGluIGZpbGVz
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMp
CiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVzX2dpdF9jb21taXQoc2VsZik6CiAgICAgICAg
IHNlbGYuX3R3b19sb2NhbF9jb21taXRzKCkKQEAgLTExMjYsMjYgKzExMTcsMjUgQEAgY2xhc3Mg
R2l0U1ZOVGVzdChTQ01UZXN0KToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCd0ZXN0X2ZpbGVf
Y29tbWl0MScgaW4gZmlsZXMpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgndGVzdF9maWxlX2Nv
bW1pdDInIGluIGZpbGVzKQogCi0gICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19tdWx0aXBsZV9s
b2NhbF9jb21taXRzX25vX3NxdWFzaChzZWxmKToKLSAgICAgICAgc2VsZi5fdHdvX2xvY2FsX2Nv
bW1pdHMoKQorICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfd29ya2luZ19jb3B5X29ubHkoc2Vs
Zik6CisgICAgICAgIHNlbGYuX29uZV9sb2NhbF9jb21taXRfcGx1c193b3JraW5nX2NvcHlfY2hh
bmdlcygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPUZhbHNlKQot
ICAgICAgICAjIEZJWE1FOiBJdCdzIHdlaXJkIHRoYXQgd2l0aCBzcXVhc2g9RmFsc2UsIGNyZWF0
ZV9wYXRjaC9jaGFuZ2VkX2ZpbGVzIGlnbm9yZXMgbG9jYWwgY29tbWl0cywKLSAgICAgICAgIyBi
dXQgY29tbWl0X3dpdGhfbWVzc2FnZSBjb21taXRzIHRoZW0uCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShsZW4oZmlsZXMpID09IDApCisgICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMo
Z2l0X2NvbW1pdD0iSEVBRC4uIikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZSgndGVzdF9maWxl
X2NvbW1pdDEnIGluIGZpbGVzKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoJ3Rlc3RfZmlsZV9j
b21taXQyJyBpbiBmaWxlcykKIAotICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNfbXVsdGlwbGVf
bG9jYWxfY29tbWl0c19zcXVhc2goc2VsZik6CisgICAgZGVmIHRlc3RfY2hhbmdlZF9maWxlc19t
dWx0aXBsZV9sb2NhbF9jb21taXRzKHNlbGYpOgogICAgICAgICBzZWxmLl90d29fbG9jYWxfY29t
bWl0cygpCiAgICAgICAgIHNjbSA9IGRldGVjdF9zY21fc3lzdGVtKHNlbGYuZ2l0X2NoZWNrb3V0
X3BhdGgpCi0gICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoc3F1YXNoPVRydWUpCisg
ICAgICAgIGZpbGVzID0gc2NtLmNoYW5nZWRfZmlsZXMoKQogICAgICAgICBzZWxmLmFzc2VydFRy
dWUoJ3Rlc3RfZmlsZV9jb21taXQyJyBpbiBmaWxlcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KCd0ZXN0X2ZpbGVfY29tbWl0MScgaW4gZmlsZXMpCiAKLSAgICBkZWYgdGVzdF9jaGFuZ2VkX2Zp
bGVzX25vdF9zeW5jZWRfc3F1YXNoKHNlbGYpOgorICAgIGRlZiB0ZXN0X2NoYW5nZWRfZmlsZXNf
bm90X3N5bmNlZChzZWxmKToKICAgICAgICAgcnVuX2NvbW1hbmQoWydnaXQnLCAnY2hlY2tvdXQn
LCAnLWInLCAnbXktYnJhbmNoJywgJ3RydW5rfjMnXSkKICAgICAgICAgc2VsZi5fdHdvX2xvY2Fs
X2NvbW1pdHMoKQogICAgICAgICBzY20gPSBkZXRlY3Rfc2NtX3N5c3RlbShzZWxmLmdpdF9jaGVj
a291dF9wYXRoKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3JpcHRFcnJvciwgc2NtLmNo
YW5nZWRfZmlsZXMsIHNxdWFzaD1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTY3Jp
cHRFcnJvciwgc2NtLmNoYW5nZWRfZmlsZXMpCiAKICAgICBkZWYgdGVzdF9jaGFuZ2VkX2ZpbGVz
KHNlbGYpOgogICAgICAgICBzZWxmLl9zaGFyZWRfdGVzdF9jaGFuZ2VkX2ZpbGVzKCkKZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5w
eSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL25ldC9yaWV0dmVsZC5weQpp
bmRleCBlY2NkYTNhOGIyZTJiOTUyMjc5MzE3ZmZhYTI4NGUwZDNhNTZjYTM0Li4wYzZhMzEzNDc4
OTJiNjQ1MTY5ZmIyY2QxYTgyNmNkNjU5NWZmNTYzIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9uZXQvcmlldHZlbGQucHkKKysrIGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vbmV0L3JpZXR2ZWxkLnB5CkBAIC03Myw2ICs3Myw2IEBA
IGNsYXNzIFJpZXR2ZWxkKG9iamVjdCk6CiAKICAgICAgICAgIyBVc2UgUmVhbE1haW4gaW5zdGVh
ZCBvZiBjYWxsaW5nIHVwbG9hZCBmcm9tIHRoZSBjb21tYW5kbGluZSBzbyB0aGF0CiAgICAgICAg
ICMgd2UgY2FuIHBhc3MgaW4gdGhlIGRpZmYgb3Vyc2VsdmVzLiBPdGhlcndpc2UsIHVwbG9hZCB3
aWxsIGp1c3QgdXNlCi0gICAgICAgICMgZ2l0IGRpZmYgZm9yIGdpdCBjaGVja291dHMsIHdoaWNo
IGRvZXNuJ3QgcmVzcGVjdCAtLXNxdWFzaCBhbmQgLS1naXQtY29tbWl0LgorICAgICAgICAjIGdp
dCBkaWZmIGZvciBnaXQgY2hlY2tvdXRzLCB3aGljaCBkb2Vzbid0IHJlc3BlY3QgLS1naXQtY29t
bWl0LgogICAgICAgICBpc3N1ZSwgcGF0Y2hzZXQgPSB1cGxvYWQuUmVhbE1haW4oYXJncywgZGF0
YT1kaWZmKQogICAgICAgICByZXR1cm4gaXNzdWUKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS91c2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL3VzZXIucHkKaW5kZXggYjRkZjNjYjQ3MDkwMjYzMWNk
ZGI4YWU2MGM0Y2U4N2VhMzc0OGM5Ny4uOTQ0NGMwMGM1OGY1M2QzYzI2MmIxZWFlNWUwYzQ0M2I5
NzhiM2YxNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3VzZXIucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
c3lzdGVtL3VzZXIucHkKQEAgLTUxLDcgKzUxLDcgQEAgZXhjZXB0IEltcG9ydEVycm9yOgogCiAK
IGNsYXNzIFVzZXIob2JqZWN0KToKLSAgICAjIEZJWE1FOiBUaGVzZSBhcmUgQGNsYXNzbWV0aG9k
cyBiZWNhdXNlIHNjbS5weSBhbmQgYnVnemlsbGEucHkgZG9uJ3QgaGF2ZSBhIFRvb2wgb2JqZWN0
ICh0aHVzIG5vIFVzZXIgaW5zdGFuY2UpLgorICAgICMgRklYTUU6IFRoZXNlIGFyZSBAY2xhc3Nt
ZXRob2RzIGJlY2F1c2UgYnVnemlsbGEucHkgZG9lc24ndCBoYXZlIGEgVG9vbCBvYmplY3QgKHRo
dXMgbm8gVXNlciBpbnN0YW5jZSkuCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHByb21wdChj
bHMsIG1lc3NhZ2UsIHJlcGVhdD0xLCByYXdfaW5wdXQ9cmF3X2lucHV0KToKICAgICAgICAgcmVz
cG9uc2UgPSBOb25lCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL29wdHBhcnNlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0
cGFyc2VyLnB5CmluZGV4IGJiNDc4OGE1NWRiNjhmYmM3MTA0ODQ5OTYzZTg5YjI2YmM0M2Q1ODUu
LjNiYTBmYWU5ZTg1ZjBmN2U1MGFjYjJlMmQ2MjNlZWRhOWNjMjRmYjYgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5CisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvb3B0cGFyc2VyLnB5CkBAIC0xNDcsOCArMTQ3
LDcgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICAgICAgICAg
ICBnaXRfY29tbWl0PU5vbmUsCiAgICAgICAgICAgICAgICAgIGlzX3ZlcmJvc2U9RmFsc2UsCiAg
ICAgICAgICAgICAgICAgIG1pbl9jb25maWRlbmNlPTEsCi0gICAgICAgICAgICAgICAgIG91dHB1
dF9mb3JtYXQ9ImVtYWNzIiwKLSAgICAgICAgICAgICAgICAgc3F1YXNoPUZhbHNlKToKKyAgICAg
ICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD0iZW1hY3MiKToKICAgICAgICAgaWYgZmlsdGVyX3J1
bGVzIGlzIE5vbmU6CiAgICAgICAgICAgICBmaWx0ZXJfcnVsZXMgPSBbXQogCkBAIC0xNjcsNyAr
MTY2LDYgQEAgY2xhc3MgQ29tbWFuZE9wdGlvblZhbHVlcyhvYmplY3QpOgogICAgICAgICBzZWxm
LmlzX3ZlcmJvc2UgPSBpc192ZXJib3NlCiAgICAgICAgIHNlbGYubWluX2NvbmZpZGVuY2UgPSBt
aW5fY29uZmlkZW5jZQogICAgICAgICBzZWxmLm91dHB1dF9mb3JtYXQgPSBvdXRwdXRfZm9ybWF0
Ci0gICAgICAgIHNlbGYuc3F1YXNoID0gc3F1YXNoCiAKICAgICAjIFVzZWZ1bCBmb3IgdW5pdCB0
ZXN0aW5nLgogICAgIGRlZiBfX2VxX18oc2VsZiwgb3RoZXIpOgpAQCAtMTgyLDggKzE4MCw2IEBA
IGNsYXNzIENvbW1hbmRPcHRpb25WYWx1ZXMob2JqZWN0KToKICAgICAgICAgICAgIHJldHVybiBG
YWxzZQogICAgICAgICBpZiBzZWxmLm91dHB1dF9mb3JtYXQgIT0gb3RoZXIub3V0cHV0X2Zvcm1h
dDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBpZiBzZWxmLnNxdWFzaCAhPSBv
dGhlci5zcXVhc2g6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4g
VHJ1ZQogCkBAIC0yMTgsOCArMjE0LDYgQEAgY2xhc3MgQXJndW1lbnRQcmludGVyKG9iamVjdCk6
CiAgICAgICAgICAgICBmbGFnc1snZmlsdGVyJ10gPSAiLCIuam9pbihmaWx0ZXJfcnVsZXMpCiAg
ICAgICAgIGlmIG9wdGlvbnMuZ2l0X2NvbW1pdDoKICAgICAgICAgICAgIGZsYWdzWydnaXQtY29t
bWl0J10gPSBvcHRpb25zLmdpdF9jb21taXQKLSAgICAgICAgaWYgb3B0aW9ucy5zcXVhc2g6Ci0g
ICAgICAgICAgICBmbGFnc1snc3F1YXNoJ10gPSBvcHRpb25zLnNxdWFzaAogCiAgICAgICAgIGZs
YWdfc3RyaW5nID0gJycKICAgICAgICAgIyBBbHBoYWJldGl6aW5nIGxldHMgdXMgdW5pdCB0ZXN0
IHRoaXMgbWV0aG9kLgpAQCAtMzA5LDcgKzMwMyw3IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9i
amVjdCk6CiAgICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWZpbHRlci1ydWxlcyIs
IG1ldGF2YXI9IlJVTEVTIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0iZmlsdGVy
X3ZhbHVlIiwgaGVscD1maWx0ZXJfaGVscCkKIAotICAgICAgICBnaXRfY29tbWl0X2hlbHAgPSAo
ImNoZWNrIGFsbCBjaGFuZ2VzIGluIHRoZSBnaXZlbiBnaXQgY29tbWl0LiAiCisgICAgICAgIGdp
dF9jb21taXRfaGVscCA9ICgiY2hlY2sgYWxsIGNoYW5nZXMgaW4gdGhlIGdpdmVuIGNvbW1pdC4g
IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVzZSAnY29tbWl0X2lkLi4nIHRvIGNoZWNr
IGFsbCBjaGFuZ2VzIGFmdGVyIGNvbW1taXRfaWQiKQogICAgICAgICBwYXJzZXIuYWRkX29wdGlv
bigiLWciLCAiLS1naXQtZGlmZiIsICItLWdpdC1jb21taXQiLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICBtZXRhdmFyPSJDT01NSVQiLCBkZXN0PSJnaXRfY29tbWl0IiwgaGVscD1naXRfY29t
bWl0X2hlbHAsKQpAQCAtMzMwLDE0ICszMjQsNiBAQCBjbGFzcyBBcmd1bWVudFBhcnNlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJvdXRwdXRfZm9ybWF0IiwgZGVm
YXVsdD1kZWZhdWx0X291dHB1dF9mb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9b3V0cHV0X2Zvcm1hdF9oZWxwKQogCi0gICAgICAgIHNxdWFzaF9oZWxwID0gKCJBbGwgZGlm
ZnMgZnJvbSB0aGUgcmVtb3RlIGJyYW5jaCBhcmUgY2hlY2tlZC4iCi0gICAgICAgICAgICAgICAg
ICAgICAgICJJZiBleGNsdWRlZCwgcHJvbXB0cyB3aGV0aGVyIHRvIHNxdWFzaCB3aGVuIHRoZXJl
IGFyZSBtdWx0aXBsZSBjb21taXRzLiIpCi0gICAgICAgIHBhcnNlci5hZGRfb3B0aW9uKCItcyIs
ICItLXNxdWFzaCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9c3F1
YXNoX2hlbHApCi0KLSAgICAgICAgc3F1YXNoX2hlbHAgPSAoIk9ubHkgd29ya2luZyBjb3B5IGRp
ZmZzIGFyZSBjaGVja2VkLiIKLSAgICAgICAgICAgICAgICAgICAgICAgIklmIGV4Y2x1ZGVkLCBw
cm9tcHRzIHdoZXRoZXIgdG8gc3F1YXNoIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNvbW1pdHMu
IikKLSAgICAgICAgcGFyc2VyLmFkZF9vcHRpb24oIi0tbm8tc3F1YXNoIiwgYWN0aW9uPSJzdG9y
ZV9mYWxzZSIsIGRlc3Q9InNxdWFzaCIsIGhlbHA9c3F1YXNoX2hlbHApCi0KICAgICAgICAgdmVy
Ym9zZV9oZWxwID0gImVuYWJsZSB2ZXJib3NlIGxvZ2dpbmcuIgogICAgICAgICBwYXJzZXIuYWRk
X29wdGlvbigiLXYiLCAiLS12ZXJib3NlIiwgZGVzdD0iaXNfdmVyYm9zZSIsIGRlZmF1bHQ9RmFs
c2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9
dmVyYm9zZV9oZWxwKQpAQCAtNDU4LDggKzQ0NCw3IEBAIGNsYXNzIEFyZ3VtZW50UGFyc2VyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdF9jb21taXQ9
Z2l0X2NvbW1pdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfdmVy
Ym9zZT1pc192ZXJib3NlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
aW5fY29uZmlkZW5jZT1taW5fY29uZmlkZW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdD1vdXRwdXRfZm9ybWF0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzcXVhc2g9b3B0aW9ucy5zcXVhc2gpCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQ9b3V0cHV0X2Zvcm1hdCkK
IAogICAgICAgICByZXR1cm4gKHBhdGhzLCBvcHRpb25zKQogCmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3N0eWxlX3JlZmVyZW5jZXMucHkKaW5kZXggYmFiMzBjYWZjNTViYWU4
YzBlNzAxMmMyOTMwNjk3NzQ5MjNiYTNmZC4uYTQyYjY5ZGU1OGQ5OTQzMjM2MTFiMThiNGJkMGQ1
MzliMTUyZWM5MyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZV9yZWZlcmVuY2VzLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGVf
cmVmZXJlbmNlcy5weQpAQCAtNjcsNiArNjcsNiBAQCBjbGFzcyBXZWJLaXRDaGVja291dChvYmpl
Y3QpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGNoZWNrb3V0IHJvb3QgYXMgYW4gYWJzb2x1dGUg
cGF0aC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3NjbS5jaGVja291dF9yb290CiAKLSAgICBk
ZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9zY20uY3JlYXRlX3BhdGNoKGdpdF9jb21taXQsIHNxdWFzaCkKKyAgICBkZWYgY3Jl
YXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQpOgorICAgICAgICByZXR1cm4gc2VsZi5fc2NtLmNy
ZWF0ZV9wYXRjaChnaXRfY29tbWl0KQogCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZG93bmxvYWQucHkKaW5kZXggNTlhZjE2YWM5YjQ1OTUx
MDlmOWU3MmIzNzYyY2ExNzdhNGVkZWMxNS4uZDI3YWIwZTA0NzFmZGRhNmJiZmRlZTcyODViNzc1
MDQxOTNiNWJjNyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2NvbW1hbmRzL2Rvd25sb2FkLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9kb3dubG9hZC5weQpAQCAtOTMsNyArOTMsNyBAQCBJZiBhIGJ1ZyBpZCBp
cyBwcm92aWRlZCwgb3Igb25lIGNhbiBiZSBmb3VuZCBpbiB0aGUgQ2hhbmdlTG9nIGxhbmQgd2ls
bCB1cGRhdGUgdAogCiAgICAgZGVmIF9wcmVwYXJlX3N0YXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3Ms
IHRvb2wpOgogICAgICAgICByZXR1cm4gewotICAgICAgICAgICAgImJ1Z19pZCI6IChhcmdzIGFu
ZCBhcmdzWzBdKSBvciB0b29sLmNoZWNrb3V0KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRp
b25zLmdpdF9jb21taXQsIG9wdGlvbnMuc3F1YXNoKSwKKyAgICAgICAgICAgICJidWdfaWQiOiAo
YXJncyBhbmQgYXJnc1swXSkgb3IgdG9vbC5jaGVja291dCgpLmJ1Z19pZF9mb3JfdGhpc19jb21t
aXQob3B0aW9ucy5naXRfY29tbWl0KSwKICAgICAgICAgfQogCiAKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvdXBsb2FkLnB5CmluZGV4IDljOTM1
ZTgwYjE1MWVkNjQ5NWUwMDlhNGYxZDFiNDQ0Y2UzMTQwY2EuLjRhMTVlZDY0MTZmYTY1MWE0YTc3
MzYyYjY4M2IyNjc3MzM2YjkwYWQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9jb21tYW5kcy91cGxvYWQucHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90b29sL2NvbW1hbmRzL3VwbG9hZC5weQpAQCAtNTMsNyArNTMsNiBAQCBjbGFzcyBD
b21taXRNZXNzYWdlRm9yQ3VycmVudERpZmYoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgogICAgICAgICBvcHRpb25zID0gWwotICAgICAgICAg
ICAgc3RlcHMuT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgICAgICBzdGVwcy5PcHRpb25zLmdpdF9j
b21taXQsCiAgICAgICAgIF0KICAgICAgICAgQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQuX19p
bml0X18oc2VsZiwgb3B0aW9ucz1vcHRpb25zKQpAQCAtNjEsNyArNjAsNyBAQCBjbGFzcyBDb21t
aXRNZXNzYWdlRm9yQ3VycmVudERpZmYoQWJzdHJhY3REZWNsYXJhdGl2ZUNvbW1hbmQpOgogICAg
IGRlZiBleGVjdXRlKHNlbGYsIG9wdGlvbnMsIGFyZ3MsIHRvb2wpOgogICAgICAgICAjIFRoaXMg
Y29tbWFuZCBpcyBhIHVzZWZ1bCB0ZXN0IHRvIG1ha2Ugc3VyZSBjb21taXRfbWVzc2FnZV9mb3Jf
dGhpc19jb21taXQKICAgICAgICAgIyBhbHdheXMgcmV0dXJucyB0aGUgcmlnaHQgdmFsdWUgcmVn
YXJkbGVzcyBvZiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeS4KLSAgICAgICAgcHJpbnQg
IiVzIiAlIHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0
aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFzaCkubWVzc2FnZSgpCisgICAgICAgIHByaW50
ICIlcyIgJSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9w
dGlvbnMuZ2l0X2NvbW1pdCkubWVzc2FnZSgpCiAKIAogY2xhc3MgQ2xlYW5QZW5kaW5nQ29tbWl0
KEFic3RyYWN0RGVjbGFyYXRpdmVDb21tYW5kKToKQEAgLTE1Myw3ICsxNTIsNyBAQCBjbGFzcyBB
YnN0cmFjdFBhdGNoVXBsb2FkaW5nQ29tbWFuZChBYnN0cmFjdFNlcXVlbmNlZENvbW1hbmQpOgog
ICAgICAgICAjIFBlcmZlciBhIGJ1ZyBpZCBwYXNzZWQgYXMgYW4gYXJndW1lbnQgb3ZlciBhIGJ1
ZyB1cmwgaW4gdGhlIGRpZmYgKGkuZS4gQ2hhbmdlTG9ncykuCiAgICAgICAgIGJ1Z19pZCA9IGFy
Z3MgYW5kIGFyZ3NbMF0KICAgICAgICAgaWYgbm90IGJ1Z19pZDoKLSAgICAgICAgICAgIGJ1Z19p
ZCA9IHRvb2wuY2hlY2tvdXQoKS5idWdfaWRfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMuZ2l0X2Nv
bW1pdCwgb3B0aW9ucy5zcXVhc2gpCisgICAgICAgICAgICBidWdfaWQgPSB0b29sLmNoZWNrb3V0
KCkuYnVnX2lkX2Zvcl90aGlzX2NvbW1pdChvcHRpb25zLmdpdF9jb21taXQpCiAgICAgICAgIHJl
dHVybiBidWdfaWQKIAogICAgIGRlZiBfcHJlcGFyZV9zdGF0ZShzZWxmLCBvcHRpb25zLCBhcmdz
LCB0b29sKToKQEAgLTQyMywxMSArNDIyLDExIEBAIGNsYXNzIENyZWF0ZUJ1ZyhBYnN0cmFjdERl
Y2xhcmF0aXZlQ29tbWFuZCk6CiAgICAgICAgIGlmIG9wdGlvbnMucHJvbXB0OgogICAgICAgICAg
ICAgKGJ1Z190aXRsZSwgY29tbWVudF90ZXh0KSA9IHNlbGYucHJvbXB0X2Zvcl9idWdfdGl0bGVf
YW5kX2NvbW1lbnQoKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgY29tbWl0X21lc3NhZ2Ug
PSB0b29sLmNoZWNrb3V0KCkuY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KG9wdGlvbnMu
Z2l0X2NvbW1pdCwgb3B0aW9ucy5zcXVhc2gpCisgICAgICAgICAgICBjb21taXRfbWVzc2FnZSA9
IHRvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQob3B0aW9ucy5n
aXRfY29tbWl0KQogICAgICAgICAgICAgYnVnX3RpdGxlID0gY29tbWl0X21lc3NhZ2UuZGVzY3Jp
cHRpb24obHN0cmlwPVRydWUsIHN0cmlwX3VybD1UcnVlKQogICAgICAgICAgICAgY29tbWVudF90
ZXh0ID0gY29tbWl0X21lc3NhZ2UuYm9keShsc3RyaXA9VHJ1ZSkKIAotICAgICAgICBkaWZmID0g
dG9vbC5zY20oKS5jcmVhdGVfcGF0Y2gob3B0aW9ucy5naXRfY29tbWl0LCBvcHRpb25zLnNxdWFz
aCkKKyAgICAgICAgZGlmZiA9IHRvb2wuc2NtKCkuY3JlYXRlX3BhdGNoKG9wdGlvbnMuZ2l0X2Nv
bW1pdCkKICAgICAgICAgYnVnX2lkID0gdG9vbC5idWdzLmNyZWF0ZV9idWcoYnVnX3RpdGxlLCBj
b21tZW50X3RleHQsIG9wdGlvbnMuY29tcG9uZW50LCBkaWZmLCAiUGF0Y2giLCBjYz1vcHRpb25z
LmNjLCBtYXJrX2Zvcl9yZXZpZXc9b3B0aW9ucy5yZXZpZXcsIG1hcmtfZm9yX2NvbW1pdF9xdWV1
ZT1vcHRpb25zLnJlcXVlc3RfY29tbWl0KQogCiAgICAgZGVmIHByb21wdF9mb3JfYnVnX3RpdGxl
X2FuZF9jb21tZW50KHNlbGYpOgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL21vY2t0b29sLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L21vY2t0b29sLnB5CmluZGV4IGQ4ODE5MGZhMDI0NjZkNjBjODQxYzg1NGQ2YzBmYzRkYjYyNjUx
NDYuLmVmOGNjNjJhY2ViYjA5MDBhY2JmNDQzZWQwYTVmMTg3NDNmN2JhMjYgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9tb2NrdG9vbC5weQorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbW9ja3Rvb2wucHkKQEAgLTM5Nyw3ICszOTcs
NyBAQCBjbGFzcyBNb2NrU0NNKE1vY2spOgogICAgICAgICAjIHdpbGwgYWN0dWFsbHkgYmUgdGhl
IHJvb3QuICBTaW5jZSBnZXRjd2QoKSBpcyB3cm9uZywgdXNlIGEgZ2xvYmFsbHkgZmFrZSByb290
IGZvciBub3cuCiAgICAgICAgIHNlbGYuY2hlY2tvdXRfcm9vdCA9IHNlbGYuZmFrZV9jaGVja291
dF9yb290CiAKLSAgICBkZWYgY3JlYXRlX3BhdGNoKHNlbGYsIGdpdF9jb21taXQsIHNxdWFzaCk6
CisgICAgZGVmIGNyZWF0ZV9wYXRjaChzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgcmV0dXJu
ICJQYXRjaDEiCiAKICAgICBkZWYgY29tbWl0X2lkc19mcm9tX2NvbW1pdGlzaF9hcmd1bWVudHMo
c2VsZiwgYXJncyk6CkBAIC00MzcsMTIgKzQzNywxMiBAQCBjbGFzcyBNb2NrQ2hlY2tvdXQob2Jq
ZWN0KToKICAgICBkZWYgYnVnX2lkX2Zvcl9yZXZpc2lvbihzZWxmLCBzdm5fcmV2aXNpb24pOgog
ICAgICAgICByZXR1cm4gMTIzNDUKIAotICAgIGRlZiBtb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYs
IGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIG1vZGlmaWVkX2NoYW5nZWxvZ3Moc2VsZiwg
Z2l0X2NvbW1pdCk6CiAgICAgICAgICMgSWRlYWxseSB3ZSdkIHJldHVybiBzb21ldGhpbmcgbW9y
ZSBpbnRlcmVzdGluZyBoZXJlLiAgVGhlIHByb2JsZW0gaXMKICAgICAgICAgIyB0aGF0IExhbmRE
aWZmIHdpbGwgdHJ5IHRvIGFjdHVhbGx5IHJlYWQgdGhlIHBhdGNoIGZyb20gZGlzayEKICAgICAg
ICAgcmV0dXJuIFtdCiAKLSAgICBkZWYgY29tbWl0X21lc3NhZ2VfZm9yX3RoaXNfY29tbWl0KHNl
bGYsIGdpdF9jb21taXQsIHNxdWFzaCk6CisgICAgZGVmIGNvbW1pdF9tZXNzYWdlX2Zvcl90aGlz
X2NvbW1pdChzZWxmLCBnaXRfY29tbWl0KToKICAgICAgICAgY29tbWl0X21lc3NhZ2UgPSBNb2Nr
KCkKICAgICAgICAgY29tbWl0X21lc3NhZ2UubWVzc2FnZSA9IGxhbWJkYToiVGhpcyBpcyBhIGZh
a2UgY29tbWl0IG1lc3NhZ2UgdGhhdCBpcyBhdCBsZWFzdCA1MCBjaGFyYWN0ZXJzLiIKICAgICAg
ICAgcmV0dXJuIGNvbW1pdF9tZXNzYWdlCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3Rvb2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90b29sL3N0ZXBzL2Fic3RyYWN0c3RlcC5weQppbmRleCAyMGY4YmJmMzA1YzJh
YjJlMDQxOWUwYWRlYjZlMTI4MjUzZDlkNGU4Li44YzJhNjc3ZWYyNDIyYmU3YTgxMTIyMWFlZmY5
ZGRjMTcxMDk4Y2I2IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvYWJzdHJhY3RzdGVwLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9zdGVwcy9hYnN0cmFjdHN0ZXAucHkKQEAgLTI3LDYgKzI3LDcgQEAKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmRlcHJlY2F0ZWRfbG9nZ2luZyBp
bXBvcnQgbG9nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBT
Y3JpcHRFcnJvcgogZnJvbSB3ZWJraXRweS5jb21tb24uY29uZmlnLnBvcnRzIGltcG9ydCBXZWJL
aXRQb3J0CiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBvcnQgT3B0aW9ucwog
CkBAIC0zNCw2ICszNSwxMCBAQCBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMub3B0aW9ucyBpbXBv
cnQgT3B0aW9ucwogY2xhc3MgQWJzdHJhY3RTdGVwKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHRvb2wsIG9wdGlvbnMpOgogICAgICAgICBzZWxmLl90b29sID0gdG9vbAorICAgICAg
ICBpZiBvcHRpb25zLm5vX3NxdWFzaDoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCct
LW5vLXNxdWFzaCBoYXMgYmVlbiByZW1vdmVkLiBVc2UgIi0tZ2l0LWNvbW1pdD1IRUFELi4iIHRv
IG9wZXJhdGUgb24gdGhlIHdvcmtpbmcgY29weS4nKQorICAgICAgICBpZiBvcHRpb25zLnNxdWFz
aDoKKyAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCctLXNxdWFzaCBoYXMgYmVlbiByZW1v
dmVkLiBJdCBpcyBub3cgdGhlIGRlZmF1bHQgYmVoYXZpb3IgaWYgLS1naXQtY29tbWl0IGlzIG9t
aXR0ZWQuJykKICAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKICAgICAgICAgc2VsZi5f
cG9ydCA9IE5vbmUKIApAQCAtNTMsOCArNTgsOCBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0
KToKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQKIAogICAgIF93ZWxsX2tub3duX2tleXMgPSB7
Ci0gICAgICAgICJkaWZmIjogbGFtYmRhIHNlbGYsIHN0YXRlOiBzZWxmLl90b29sLnNjbSgpLmNy
ZWF0ZV9wYXRjaChzZWxmLl9vcHRpb25zLmdpdF9jb21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNo
KSwKLSAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wu
Y2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCwg
c2VsZi5fb3B0aW9ucy5zcXVhc2gpLAorICAgICAgICAiZGlmZiI6IGxhbWJkYSBzZWxmLCBzdGF0
ZTogc2VsZi5fdG9vbC5zY20oKS5jcmVhdGVfcGF0Y2goc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0
KSwKKyAgICAgICAgImNoYW5nZWxvZ3MiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wu
Y2hlY2tvdXQoKS5tb2RpZmllZF9jaGFuZ2Vsb2dzKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCks
CiAgICAgICAgICJidWdfdGl0bGUiOiBsYW1iZGEgc2VsZiwgc3RhdGU6IHNlbGYuX3Rvb2wuYnVn
cy5mZXRjaF9idWcoc3RhdGVbImJ1Z19pZCJdKS50aXRsZSgpLAogICAgIH0KIApAQCAtNjksOCAr
NzQsOSBAQCBjbGFzcyBBYnN0cmFjdFN0ZXAob2JqZWN0KToKICAgICBAY2xhc3NtZXRob2QKICAg
ICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gWwotICAgICAgICAgICAgIyBXZSBu
ZWVkIHRoZXNlIG9wdGlvbnMgaGVyZSBiZWNhdXNlIGNhY2hlZF9sb29rdXAgdXNlcyB0aGVtLiAg
OigKKyAgICAgICAgICAgICMgV2UgbmVlZCB0aGlzIG9wdGlvbiBoZXJlIGJlY2F1c2UgY2FjaGVk
X2xvb2t1cCB1c2VzIGl0LiAgOigKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKKyAg
ICAgICAgICAgICMgRklYTUU6IEdldCByaWQgb2YgdGhlc2UuCiAgICAgICAgICAgICBPcHRpb25z
Lm5vX3NxdWFzaCwKICAgICAgICAgICAgIE9wdGlvbnMuc3F1YXNoLAogICAgICAgICBdCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvYXBwbHlwYXRj
aHdpdGhsb2NhbGNvbW1pdC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5CmluZGV4IGQ2YjAyNmRlMjU4MjFlMzQ5
NmFiOGU4ZDJiYTQ2MTE4NTExNTY3ODguLjNkY2Q4ZDkzMWExZjM2NWJiMzNlZmE2ZTNlOGU4YmY1
YjBiZGMxYTMgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9z
dGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5CisrKyBiL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9zdGVwcy9hcHBseXBhdGNod2l0aGxvY2FsY29tbWl0LnB5CkBAIC0z
OSw1ICszOSw1IEBAIGNsYXNzIEFwcGx5UGF0Y2hXaXRoTG9jYWxDb21taXQoQXBwbHlQYXRjaCk6
CiAgICAgZGVmIHJ1bihzZWxmLCBzdGF0ZSk6CiAgICAgICAgIEFwcGx5UGF0Y2gucnVuKHNlbGYs
IHN0YXRlKQogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmxvY2FsX2NvbW1pdDoKLSAgICAgICAg
ICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdl
X2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAgICAgICAg
ICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVja291dCgpLmNvbW1pdF9tZXNzYWdl
X2Zvcl90aGlzX2NvbW1pdChnaXRfY29tbWl0PU5vbmUpCiAgICAgICAgICAgICBzZWxmLl90b29s
LnNjbSgpLmNvbW1pdF9sb2NhbGx5X3dpdGhfbWVzc2FnZShjb21taXRfbWVzc2FnZS5tZXNzYWdl
KCkgb3Igc3RhdGVbInBhdGNoIl0ubmFtZSgpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NoZWNrc3R5bGUucHkgYi9XZWJLaXRUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weQppbmRleCA5M2U2MjE1MzE0NGZm
N2FkNWE3N2QzNzFiZWM3MjEyMzc2NzA1YmJkLi5hZjM4MjE0NDBhOTVlYzljODUwODYwZjEyMmI3
ZjM1NTgxZmJhMjczIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvc3RlcHMvY2hlY2tzdHlsZS5weQorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZS5weQpAQCAtNDAsOCArNDAsNiBAQCBjbGFzcyBDaGVja1N0
eWxlKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBPcHRpb25zLm5vbl9pbnRlcmFjdGl2ZSwK
ICAgICAgICAgICAgIE9wdGlvbnMuY2hlY2tfc3R5bGUsCiAgICAgICAgICAgICBPcHRpb25zLmdp
dF9jb21taXQsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9w
dGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToKQEAg
LTUzLDEwICs1MSw2IEBAIGNsYXNzIENoZWNrU3R5bGUoQWJzdHJhY3RTdGVwKToKICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5naXRfY29tbWl0OgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0t
Z2l0LWNvbW1pdCIpCiAgICAgICAgICAgICBhcmdzLmFwcGVuZChzZWxmLl9vcHRpb25zLmdpdF9j
b21taXQpCi0gICAgICAgIGlmIHNlbGYuX3Rvb2wuc2NtKCkuc2hvdWxkX3NxdWFzaChzZWxmLl9v
cHRpb25zLnNxdWFzaCk6Ci0gICAgICAgICAgICBhcmdzLmFwcGVuZCgiLS1zcXVhc2giKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tbm8tc3F1YXNoIikKIAogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJjaGVjay13ZWJraXQtc3R5
bGUiLCBhcmdzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL2NoZWNrc3R5bGVfdW5pdHRlc3QucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYTIzZWExYjNjNWQ0NmYyZWEzYjM4ZTQ2MmYzYjkxYzk2NTJiMzhkMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvY2hlY2tzdHlsZV91bml0dGVzdC5weQorKysgL2Rl
di9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0j
IG1ldDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QK
LQotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJy
b3IKLWZyb20gd2Via2l0cHkudGhpcmRwYXJ0eS5tb2NrIGltcG9ydCBNb2NrCi1mcm9tIHdlYmtp
dHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tUb29sCi1mcm9tIHdlYmtpdHB5LnRvb2wuc3Rl
cHMuY2hlY2tzdHlsZSBpbXBvcnQgQ2hlY2tTdHlsZQotCi0KLWNsYXNzIENoZWNrU3R5bGVUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9zaG91bGRfc3F1YXNoX2Vycm9yKHNl
bGYpOgotICAgICAgICAiIiJzaG91bGRfc3F1YXNoIGNhbiB0aHJvdyBhbiBlcnJvci4gVGhhdCBl
cnJvciBzaG91bGQgbm90IGJlIGVhdGVuIGJ5IENoZWNrU3R5bGUuIiIiCi0gICAgICAgIGRlZiBz
aG91bGRfc3F1YXNoKHNxdWFzaCk6Ci0gICAgICAgICAgICByYWlzZSBTY3JpcHRFcnJvcihtZXNz
YWdlPSJEdW1teSBlcnJvciIpCi0KLSAgICAgICAgdG9vbCA9IE1vY2tUb29sKCkKLSAgICAgICAg
dG9vbC5fc2NtLnNob3VsZF9zcXVhc2ggPSBzaG91bGRfc3F1YXNoCi0gICAgICAgIHN0ZXAgPSBD
aGVja1N0eWxlKHRvb2wsIE1vY2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU2NyaXB0
RXJyb3IsIHN0ZXAucnVuLCBbXSkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9zdGVwcy9jb21taXQucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvY29tbWl0LnB5CmluZGV4IDdiZjhiOGFhMjc2NjEwNDkwNmMyNmExZDkzNzdj
ZDMxNWY4YzVhNzguLmRjY2E0YzBiYTI1ODczM2I2NGZhODRhYTcwOWZiMzRlZWZkN2MwOGMgMTAw
NjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9jb21taXQu
cHkKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL2NvbW1pdC5w
eQpAQCAtMjYsNiArMjYsOSBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KIAorZnJv
bSB3ZWJraXRweS5jb21tb24uY2hlY2tvdXQuc2NtIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9y
LCBBbWJpZ3VvdXNDb21taXRFcnJvcgorZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS51c2Vy
IGltcG9ydCBVc2VyCiBmcm9tIHdlYmtpdHB5LnRvb2wuc3RlcHMuYWJzdHJhY3RzdGVwIGltcG9y
dCBBYnN0cmFjdFN0ZXAKIGZyb20gd2Via2l0cHkudG9vbC5zdGVwcy5vcHRpb25zIGltcG9ydCBP
cHRpb25zCiAKQEAgLTM1LDEzICszOCw0MSBAQCBjbGFzcyBDb21taXQoQWJzdHJhY3RTdGVwKToK
ICAgICBkZWYgb3B0aW9ucyhjbHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlv
bnMoKSArIFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9w
dGlvbnMubm9fc3F1YXNoLAotICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0K
IAorICAgIGRlZiBfY29tbWl0X3dhcm5pbmcoc2VsZiwgZXJyb3IpOgorICAgICAgICB3b3JraW5n
X2RpcmVjdG9yeV9tZXNzYWdlID0gIiIgaWYgZXJyb3Iud29ya2luZ19kaXJlY3RvcnlfaXNfY2xl
YW4gZWxzZSAiIGFuZCB3b3JraW5nIGNvcHkgY2hhbmdlcyIKKyAgICAgICAgcmV0dXJuICgnVGhl
cmUgYXJlICVzIGxvY2FsIGNvbW1pdHMlcy4gRXZlcnl0aGluZyB3aWxsIGJlIGNvbW1pdHRlZCBh
cyBhIHNpbmdsZSBjb21taXQuICcKKyAgICAgICAgICAgICAgICAnVG8gYXZvaWQgdGhpcyBwcm9t
cHQsIHNldCAiZ2l0IGNvbmZpZyB3ZWJraXQtcGF0Y2guc3F1YXNoIHRydWUiLicgJSAoCisgICAg
ICAgICAgICAgICAgZXJyb3IubnVtX2xvY2FsX2NvbW1pdHMsIHdvcmtpbmdfZGlyZWN0b3J5X21l
c3NhZ2UpKQorCisgICAgZGVmIF9jb21taXQoc2VsZiwgdXNlcm5hbWU9Tm9uZSwgZm9yY2Vfc3F1
YXNoPUZhbHNlKToKKyAgICAgICAgc2VsZi5fc3RhdGVbImNvbW1pdF90ZXh0Il0gPSBzZWxmLl90
b29sLnNjbSgpLmNvbW1pdF93aXRoX21lc3NhZ2Uoc2VsZi5fY29tbWl0X21lc3NhZ2UsIGdpdF9j
b21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCB1c2VybmFtZT11c2VybmFtZSwgZm9yY2Vf
c3F1YXNoPWZvcmNlX3NxdWFzaCkKKworICAgIGRlZiBfaGFuZGxlX2FtYmlndW91c19jb21taXRf
ZXJyb3Ioc2VsZiwgZSk6CisgICAgICAgIGlmIHNlbGYuX3Rvb2wudXNlci5jb25maXJtKHNlbGYu
X2NvbW1pdF93YXJuaW5nKGUpKToKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdChmb3JjZV9zcXVh
c2g9VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVGhpcyB3aWxsIGNvcnJlY3Rs
eSBpbnRlcnJ1cHQgdGhlIHJlc3Qgb2YgdGhlIGNvbW1pdCBwcm9jZXNzLgorICAgICAgICAgICAg
cmFpc2UgU2NyaXB0RXJyb3IobWVzc2FnZT0iRGlkIG5vdCBjb21taXQiKQorCiAgICAgZGVmIHJ1
bihzZWxmLCBzdGF0ZSk6Ci0gICAgICAgIGNvbW1pdF9tZXNzYWdlID0gc2VsZi5fdG9vbC5jaGVj
a291dCgpLmNvbW1pdF9tZXNzYWdlX2Zvcl90aGlzX2NvbW1pdChzZWxmLl9vcHRpb25zLmdpdF9j
b21taXQsIHNlbGYuX29wdGlvbnMuc3F1YXNoKQotICAgICAgICBpZiBsZW4oY29tbWl0X21lc3Nh
Z2UubWVzc2FnZSgpKSA8IDUwOgorICAgICAgICBzZWxmLl9jb21taXRfbWVzc2FnZSA9IHNlbGYu
X3Rvb2wuY2hlY2tvdXQoKS5jb21taXRfbWVzc2FnZV9mb3JfdGhpc19jb21taXQoc2VsZi5fb3B0
aW9ucy5naXRfY29tbWl0KS5tZXNzYWdlKCkKKyAgICAgICAgaWYgbGVuKHNlbGYuX2NvbW1pdF9t
ZXNzYWdlKSA8IDUwOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJBdHRlbXB0ZWQgdG8g
Y29tbWl0IHdpdGggYSBjb21taXQgbWVzc2FnZSBzaG9ydGVyIHRoYW4gNTAgY2hhcmFjdGVycy4g
IEVpdGhlciB5b3VyIHBhdGNoIGlzIG1pc3NpbmcgYSBDaGFuZ2VMb2cgb3Igd2Via2l0LXBhdGNo
IG1heSBoYXZlIGEgYnVnLiIpCi0gICAgICAgIHN0YXRlWyJjb21taXRfdGV4dCJdID0gc2VsZi5f
dG9vbC5zY20oKS5jb21taXRfd2l0aF9tZXNzYWdlKGNvbW1pdF9tZXNzYWdlLm1lc3NhZ2UoKSwK
LSAgICAgICAgICAgIGdpdF9jb21taXQ9c2VsZi5fb3B0aW9ucy5naXRfY29tbWl0LCBzcXVhc2g9
c2VsZi5fb3B0aW9ucy5zcXVhc2gpCisKKyAgICAgICAgc2VsZi5fc3RhdGUgPSBzdGF0ZQorCisg
ICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX2NvbW1pdCgpCisgICAgICAgIGV4Y2VwdCBB
bWJpZ3VvdXNDb21taXRFcnJvciwgZToKKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9hbWJpZ3Vv
dXNfY29tbWl0X2Vycm9yKGUpCisgICAgICAgIGV4Y2VwdCBBdXRoZW50aWNhdGlvbkVycm9yLCBl
OgorICAgICAgICAgICAgdXNlcm5hbWUgPSBzZWxmLl90b29sLnVzZXIucHJvbXB0KCIlcyBsb2dp
bjogIiAlIGUuc2VydmVyX2hvc3QsIHJlcGVhdD01KQorICAgICAgICAgICAgaWYgbm90IHVzZXJu
YW1lOgorICAgICAgICAgICAgICAgIHJhaXNlIFNjcmlwdEVycm9yKCJZb3UgbmVlZCB0byBzcGVj
aWZ5IHRoZSB1c2VybmFtZSBvbiAlcyB0byBwZXJmb3JtIHRoZSBjb21taXQgYXMuIiAlIHNlbGYu
c3ZuX3NlcnZlcl9ob3N0KQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2Vs
Zi5fY29tbWl0KHVzZXJuYW1lPXVzZXJuYW1lKQorICAgICAgICAgICAgZXhjZXB0IEFtYmlndW91
c0NvbW1pdEVycm9yLCBlOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9hbWJpZ3VvdXNf
Y29tbWl0X2Vycm9yKGUpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3Rvb2wvc3RlcHMvb3B0aW9ucy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9zdGVwcy9vcHRpb25zLnB5CmluZGV4IGQwNzBkZGEwYTE1MjExYmE2MmE4MjE4ZWUxNThhNGFi
ZTE0ZDk0NzcuLjljNzNmNWE2NTdhZWI5Yzc0MTRiMTZhZWJiYjU3NzE2ODQxNGRjMWYgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9vcHRpb25zLnB5
CkBAIC00MywxMSArNDMsMTEgQEAgY2xhc3MgT3B0aW9ucyhvYmplY3QpOgogICAgIGRlc2NyaXB0
aW9uID0gbWFrZV9vcHRpb24oIi1tIiwgIi0tZGVzY3JpcHRpb24iLCBhY3Rpb249InN0b3JlIiwg
dHlwZT0ic3RyaW5nIiwgZGVzdD0iZGVzY3JpcHRpb24iLCBoZWxwPSJEZXNjcmlwdGlvbiBzdHJp
bmcgZm9yIHRoZSBhdHRhY2htZW50IChkZWZhdWx0OiBcInBhdGNoXCIpIikKICAgICBlbWFpbCA9
IG1ha2Vfb3B0aW9uKCItLWVtYWlsIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9InN0cmluZyIsIGRl
c3Q9ImVtYWlsIiwgaGVscD0iRW1haWwgYWRkcmVzcyB0byB1c2UgaW4gQ2hhbmdlTG9ncy4iKQog
ICAgIGZvcmNlX2NsZWFuID0gbWFrZV9vcHRpb24oIi0tZm9yY2UtY2xlYW4iLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZXN0PSJmb3JjZV9jbGVhbiIsIGRlZmF1bHQ9RmFsc2UsIGhlbHA9IkNsZWFu
IHdvcmtpbmcgZGlyZWN0b3J5IGJlZm9yZSBhcHBseWluZyBwYXRjaGVzIChyZW1vdmVzIGxvY2Fs
IGNoYW5nZXMgYW5kIGNvbW1pdHMpIikKLSMgRklYTUU6IE1ha2UgY29tbWl0IHJhbmdlcyB0cmVh
dCBlYWNoIGNvbW1pdCBzZXBhcmF0ZWx5IGluc3RlYWQgb2Ygc3F1YXNoaW5nIHRoZW0gaW50byBv
bmUuCi0gICAgZ2l0X2NvbW1pdCA9IG1ha2Vfb3B0aW9uKCItLWdpdC1jb21taXQiLCBhY3Rpb249
InN0b3JlIiwgZGVzdD0iZ2l0X2NvbW1pdCIsIGhlbHA9IkxvY2FsIGdpdCBjb21taXQgdG8gdXBs
b2FkL2xhbmQuIElmIGEgcmFuZ2UsIHRoZSBjb21taXRzIGFyZSBzcXVhc2hlZCBpbnRvIG9uZS4i
KQorICAgIGdpdF9jb21taXQgPSBtYWtlX29wdGlvbigiLWciLCAiLS1naXQtY29tbWl0IiwgYWN0
aW9uPSJzdG9yZSIsIGRlc3Q9ImdpdF9jb21taXQiLCBoZWxwPSJPcGVyYXRlIG9uIGEgbG9jYWwg
Y29tbWl0LiBJZiBhIHJhbmdlLCB0aGUgY29tbWl0cyBhcmUgc3F1YXNoZWQgaW50byBvbmUuIEhF
QUQuLiBvcGVyYXRlcyBvbiB3b3JraW5nIGNvcHkgY2hhbmdlcyBvbmx5LiIpCiAgICAgbG9jYWxf
Y29tbWl0ID0gbWFrZV9vcHRpb24oIi0tbG9jYWwtY29tbWl0IiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVzdD0ibG9jYWxfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFrZSBhIGxvY2Fs
IGNvbW1pdCBmb3IgZWFjaCBhcHBsaWVkIHBhdGNoIikKLSAgICBub19zcXVhc2ggPSBtYWtlX29w
dGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ic3F1YXNoIiwg
aGVscD0iRG9uJ3Qgc3F1YXNoIGxvY2FsIGNvbW1pdHMgaW50byBvbmUgb24gdXBsb2FkL2xhbmQg
KGdpdC1vbmx5KS4iKQogICAgIG5vbl9pbnRlcmFjdGl2ZSA9IG1ha2Vfb3B0aW9uKCItLW5vbi1p
bnRlcmFjdGl2ZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9Im5vbl9pbnRlcmFjdGl2ZSIs
IGRlZmF1bHQ9RmFsc2UsIGhlbHA9Ik5ldmVyIHByb21wdCB0aGUgdXNlciwgZmFpbCBhcyBmYXN0
IGFzIHBvc3NpYmxlLiIpCisgICAgIyBGSVhNRTogUmVtb3ZlIC0tbm8tc3F1YXNoLCBvbmNlIHBl
b3BsZSBoYXZlIGFkanVzdGVkIHRvIHVzaW5nIC0tZ2l0LWNvbW1pdC4KKyAgICBub19zcXVhc2gg
PSBtYWtlX29wdGlvbigiLS1uby1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJu
b19zcXVhc2giLCBkZWZhdWx0PUZhbHNlLCBoZWxwPSJPYnNvbGV0ZS4gVXNlIC0tZ2l0LWNvbW1p
dD1IRUFELi4gaW5zdGVhZC4iKQogICAgIG9ic29sZXRlX3BhdGNoZXMgPSBtYWtlX29wdGlvbigi
LS1uby1vYnNvbGV0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJvYnNvbGV0ZV9wYXRj
aGVzIiwgZGVmYXVsdD1UcnVlLCBoZWxwPSJEbyBub3Qgb2Jzb2xldGUgb2xkIHBhdGNoZXMgYmVm
b3JlIHBvc3RpbmcgdGhpcyBvbmUuIikKICAgICBvcGVuX2J1ZyA9IG1ha2Vfb3B0aW9uKCItLW9w
ZW4tYnVnIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ib3Blbl9idWciLCBkZWZhdWx0PUZh
bHNlLCBoZWxwPSJPcGVucyB0aGUgYXNzb2NpYXRlZCBidWcgaW4gYSBicm93c2VyLiIpCiAgICAg
cGFyZW50X2NvbW1hbmQgPSBtYWtlX29wdGlvbigiLS1wYXJlbnQtY29tbWFuZCIsIGFjdGlvbj0i
c3RvcmUiLCBkZXN0PSJwYXJlbnRfY29tbWFuZCIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0iKEludGVy
bmFsKSBUaGUgY29tbWFuZCB0aGF0IHNwYXduZWQgdGhpcyBpbnN0YW5jZS4iKQpAQCAtNTYsNiAr
NTYsNyBAQCBjbGFzcyBPcHRpb25zKG9iamVjdCk6CiAgICAgcmVxdWVzdF9jb21taXQgPSBtYWtl
X29wdGlvbigiLS1yZXF1ZXN0LWNvbW1pdCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJl
cXVlc3RfY29tbWl0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iTWFyayB0aGUgcGF0Y2ggYXMgbmVl
ZGluZyBhdXRvLWNvbW1pdCBhZnRlciByZXZpZXcuIikKICAgICByZXZpZXcgPSBtYWtlX29wdGlv
bigiLS1uby1yZXZpZXciLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0icmV2aWV3IiwgZGVm
YXVsdD1UcnVlLCBoZWxwPSJEbyBub3QgbWFyayB0aGUgcGF0Y2ggZm9yIHJldmlldy4iKQogICAg
IHJldmlld2VyID0gbWFrZV9vcHRpb24oIi1yIiwgIi0tcmV2aWV3ZXIiLCBhY3Rpb249InN0b3Jl
IiwgdHlwZT0ic3RyaW5nIiwgZGVzdD0icmV2aWV3ZXIiLCBoZWxwPSJVcGRhdGUgQ2hhbmdlTG9n
cyB0byBzYXkgUmV2aWV3ZWQgYnkgUkVWSUVXRVIuIikKLSAgICBzcXVhc2ggPSBtYWtlX29wdGlv
bigiLXMiLCAiLS1zcXVhc2giLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJzcXVhc2giLCBo
ZWxwPSJTcXVhc2ggYWxsIGxvY2FsIGNvbW1pdHMgaW50byBvbmUgb24gdXBsb2FkL2xhbmQgKGdp
dC1vbmx5KS4iKQorICAgICMgRklYTUU6IFJlbW92ZSAtLXNxdWFzaCwgb25jZSBwZW9wbGUgaGF2
ZSBhZGp1c3RlZCB0byB1c2luZyAtLWdpdC1jb21taXQuCisgICAgc3F1YXNoID0gbWFrZV9vcHRp
b24oIi1zIiwgIi0tc3F1YXNoIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVzdD0ic3F1YXNoIiwg
ZGVmYXVsdD1GYWxzZSwgaGVscD0iT2Jzb2xldGUuIFRoaXMgaXMgbm93IHRoZSBkZWZhdWx0IGJl
aGF2aW9yLiIpCiAgICAgdGVzdCA9IG1ha2Vfb3B0aW9uKCItLXRlc3QiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBkZXN0PSJ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwgaGVscD0iUnVuIHJ1bi13ZWJraXQt
dGVzdHMgYmVmb3JlIGNvbW1pdHRpbmcuIikKICAgICB1cGRhdGUgPSBtYWtlX29wdGlvbigiLS1u
by11cGRhdGUiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0idXBkYXRlIiwgZGVmYXVsdD1U
cnVlLCBoZWxwPSJEb24ndCB1cGRhdGUgdGhlIHdvcmtpbmcgZGlyZWN0b3J5LiIpCmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5n
ZWxvZy5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nLnB5CmluZGV4IDdmMGMxYThlYTFiYzg3ZmZlNjYyYjEyODYxMmY0ODIyYzM2ZGI0
NWMuLmNlMDQwMjQ4ZjFmMDM4ZmIyYzY4OWU1NDU0ZjBjMWZhYmI3OTNmNDUgMTAwNjQ0Ci0tLSBh
L1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9n
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nLnB5CkBAIC00Myw4ICs0Myw2IEBAIGNsYXNzIFByZXBhcmVDaGFuZ2VMb2coQWJz
dHJhY3RTdGVwKToKICAgICAgICAgICAgIE9wdGlvbnMucXVpZXQsCiAgICAgICAgICAgICBPcHRp
b25zLmVtYWlsLAogICAgICAgICAgICAgT3B0aW9ucy5naXRfY29tbWl0LAotICAgICAgICAgICAg
T3B0aW9ucy5ub19zcXVhc2gsCi0gICAgICAgICAgICBPcHRpb25zLnNxdWFzaCwKICAgICAgICAg
XQogCiAgICAgZGVmIF9lbnN1cmVfYnVnX3VybChzZWxmLCBzdGF0ZSk6CkBAIC02OSwxMCArNjcs
OSBAQCBjbGFzcyBQcmVwYXJlQ2hhbmdlTG9nKEFic3RyYWN0U3RlcCk6CiAgICAgICAgICAgICBh
cmdzLmFwcGVuZCgiLS1idWc9JXMiICUgc3RhdGVbImJ1Z19pZCJdKQogICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLmVtYWlsOgogICAgICAgICAgICAgYXJncy5hcHBlbmQoIi0tZW1haWw9JXMiICUg
c2VsZi5fb3B0aW9ucy5lbWFpbCkKLSAgICAgICAgaWYgc2VsZi5fdG9vbC5zY20oKS5zaG91bGRf
c3F1YXNoKHNlbGYuX29wdGlvbnMuc3F1YXNoKToKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCIt
LW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5yZW1vdGVfbWVyZ2VfYmFzZSgpKQot
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdpdF9jb21taXQ6Ci0gICAgICAgICAgICBhcmdzLmFw
cGVuZCgiLS1naXQtY29tbWl0PSVzIiAlIHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkKKworICAg
ICAgICBpZiBzZWxmLl90b29sLnNjbSgpLnN1cHBvcnRzX2xvY2FsX2NvbW1pdHMoKToKKyAgICAg
ICAgICAgIGFyZ3MuYXBwZW5kKCItLW1lcmdlLWJhc2U9JXMiICUgc2VsZi5fdG9vbC5zY20oKS5t
ZXJnZV9iYXNlKHNlbGYuX29wdGlvbnMuZ2l0X2NvbW1pdCkpCiAKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgc2VsZi5fdG9vbC5leGVjdXRpdmUucnVuX2FuZF90aHJvd19pZl9mYWlsKGFyZ3Ms
IHNlbGYuX29wdGlvbnMucXVpZXQpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvc3RlcHMvcHJlcGFyZWNoYW5nZWxvZ2ZvcnJldmVydC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5CmluZGV4IDRkMjk5ZmEyMWFkM2FiYzQyOWUyODIzNTk0NGVmMTA2NTdjMjM3NjUuLjBlNzhi
YzIyOTVkMGQzZTZhMDMzZTYxNjMwMWYzYjBhZTc0ZjJmOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJlY2hhbmdlbG9nZm9ycmV2ZXJ0
LnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy9wcmVwYXJl
Y2hhbmdlbG9nZm9ycmV2ZXJ0LnB5CkBAIC0zNiw3ICszNiw3IEBAIGNsYXNzIFByZXBhcmVDaGFu
Z2VMb2dGb3JSZXZlcnQoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgcnVuKHNlbGYsIHN0YXRlKToK
ICAgICAgICAgIyBUaGlzIGNvdWxkIG1vdmUgdG8gcHJlcGFyZS1DaGFuZ2VMb2cgYnkgYWRkaW5n
IGEgLS1yZXZlcnQ9IG9wdGlvbi4KICAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgicHJlcGFyZS1D
aGFuZ2VMb2ciKQotICAgICAgICBjaGFuZ2Vsb2dfcGF0aHMgPSBzZWxmLl90b29sLmNoZWNrb3V0
KCkubW9kaWZpZWRfY2hhbmdlbG9ncyhnaXRfY29tbWl0PU5vbmUsIHNxdWFzaD1GYWxzZSkKKyAg
ICAgICAgY2hhbmdlbG9nX3BhdGhzID0gc2VsZi5fdG9vbC5jaGVja291dCgpLm1vZGlmaWVkX2No
YW5nZWxvZ3MoZ2l0X2NvbW1pdD1Ob25lKQogICAgICAgICBidWdfdXJsID0gc2VsZi5fdG9vbC5i
dWdzLmJ1Z191cmxfZm9yX2J1Z19pZChzdGF0ZVsiYnVnX2lkIl0pIGlmIHN0YXRlWyJidWdfaWQi
XSBlbHNlIE5vbmUKICAgICAgICAgZm9yIGNoYW5nZWxvZ19wYXRoIGluIGNoYW5nZWxvZ19wYXRo
czoKICAgICAgICAgICAgICMgRklYTUU6IFNlZW1zIHdlIHNob3VsZCBwcmVwYXJlIHRoZSBtZXNz
YWdlIG91dHNpZGUgb2YgY2hhbmdlbG9ncy5weSBhbmQgdGhlbiBqdXN0IHBhc3MgaW4KZGlmZiAt
LWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9zdGVwcy91cGRhdGVjaGFu
Z2Vsb2dzd2l0aHJldmlld2VyLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKaW5kZXggZWY0YmFhMjUxMjQx
M2U1NmRkOWZiOWUxZmY5NzRiNmRiOGYyYmU3NC4uZTQ2Yjc5MDBjZWQ5Mjg1ZTcxZDY3ODQ5ZjY1
ZTJlZjg0NGU2Njg3YiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3ZXIucHkKKysrIGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL3N0ZXBzL3VwZGF0ZWNoYW5nZWxvZ3N3aXRocmV2aWV3
ZXIucHkKQEAgLTQwLDggKzQwLDYgQEAgY2xhc3MgVXBkYXRlQ2hhbmdlTG9nc1dpdGhSZXZpZXdl
cihBYnN0cmFjdFN0ZXApOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSAr
IFsKICAgICAgICAgICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKICAgICAgICAgICAgIE9wdGlvbnMu
cmV2aWV3ZXIsCi0gICAgICAgICAgICBPcHRpb25zLm5vX3NxdWFzaCwKLSAgICAgICAgICAgIE9w
dGlvbnMuc3F1YXNoLAogICAgICAgICBdCiAKICAgICBkZWYgX2d1ZXNzX3Jldmlld2VyX2Zyb21f
YnVnKHNlbGYsIGJ1Z19pZCk6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvc3RlcHMvdmFsaWRhdGVyZXZpZXdlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CmluZGV4IDlmNGQ0NGUwYjZj
NWIwOWE2YTRhMzhmNDVmZjBjYmNlZDUzZDViNWMuLmJkZjcyOWU0YmZlMmQwNDQzYjU3OTE4OGQ1
OTY5MmNjMDY2NjQxZDcgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdG9vbC9zdGVwcy92YWxpZGF0ZXJldmlld2VyLnB5CkBAIC00MSw4ICs0MSw2IEBA
IGNsYXNzIFZhbGlkYXRlUmV2aWV3ZXIoQWJzdHJhY3RTdGVwKToKICAgICBkZWYgb3B0aW9ucyhj
bHMpOgogICAgICAgICByZXR1cm4gQWJzdHJhY3RTdGVwLm9wdGlvbnMoKSArIFsKICAgICAgICAg
ICAgIE9wdGlvbnMuZ2l0X2NvbW1pdCwKLSAgICAgICAgICAgIE9wdGlvbnMubm9fc3F1YXNoLAot
ICAgICAgICAgICAgT3B0aW9ucy5zcXVhc2gsCiAgICAgICAgIF0KIAogICAgICMgRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IG1vdmUgb250byBDaGFuZ2VMb2dFbnRyeQo=
</data>
<flag name="review"
          id="49042"
          type_id="1"
          status="+"
          setter="abarth"
    />
    <flag name="commit-queue"
          id="49080"
          type_id="3"
          status="-"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>