<?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>63832</bug_id>
          
          <creation_ts>2011-07-01 12:33:26 -0700</creation_ts>
          <short_desc>new-run-webkit-tests should support --leaks</short_desc>
          <delta_ts>2011-07-19 04:34:46 -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>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>34984</blocked>
    
    <blocked>64792</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>431350</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-07-01 12:33:26 -0700</bug_when>
    <thetext>new-run-webkit-tests should support --leaks
Requested by abarth on #webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>431359</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-01 12:42:42 -0700</bug_when>
    <thetext>This will require a little work.  There is a lot of leak detection/interpretation logic in ORWT these days.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438051</commentid>
    <comment_count>2</comment_count>
      <attachid>101067</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-15 16:25:57 -0700</bug_when>
    <thetext>Created attachment 101067
wip</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438775</commentid>
    <comment_count>3</comment_count>
      <attachid>101222</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 15:33:02 -0700</bug_when>
    <thetext>Created attachment 101222
wip, makes everything crash</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438821</commentid>
    <comment_count>4</comment_count>
      <attachid>101233</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 16:49:53 -0700</bug_when>
    <thetext>Created attachment 101233
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438868</commentid>
    <comment_count>5</comment_count>
      <attachid>101245</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 17:52:03 -0700</bug_when>
    <thetext>Created attachment 101245
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438875</commentid>
    <comment_count>6</comment_count>
      <attachid>101245</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-18 17:59:41 -0700</bug_when>
    <thetext>Comment on attachment 101245
Patch

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

I&apos;m sure you&apos;ve heard this before, but (as I&apos;ve frequently been given the feedback myself), mixing whitespace diffs, and code cleanup along with actual changes makes reviewing the actual change harder. It&apos;d be great if you could split the changes into two different patches.

R-&apos;ing because there&apos;s at least (I think) one out-and-out typo, and apart from that it&apos;s hard for me to tell what the intended logic of the mods to the base class are (i.e., what are the semantics of checking for leaks, when can those methods be called, etc.).

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:291
&gt; +    def check_for_leaks(self, process_name, process_pid):

What are the actual semantics of this routine? I assume pid must be alive? What is this supposed to do or return? Is it totally arbitrary?

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:296
&gt; +        # while running the layout tests.

Print to where? Is this a log call? what level?

It might be better if the information was just returned so that the caller could decide what to do with it (e.g., maybe this should also be stored in results.json?))

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:43
&gt; +class LeakDetector(object):

I would probably move this into a separate module, e..g, mac_leak_detector.py or something.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:105
&gt; +        return &quot;leaks-%s-%s-%s.txt&quot; % (process_name, process_pid, len(self._leaks_filenames))

Do you need to keep the actual list of filenames? It looks like you&apos;re mostly just using this as a counter and maybe that would be clearer?

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:107
&gt; +    def parse_leak_files(self):

don&apos;t you need to pass in leak_files here?

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:121
&gt; +        _log.info(&quot; ? checking for leaks in %s&quot; % process_name)

This might want to be log.debug() ... I think this is called in every worker, right? We probably don&apos;t want that being logged all the time.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:141
&gt; +            _log.warn(&quot; + %s leaks (%s bytes) were found, details in %s&quot; % (count, bytes, leaks_output_path))

I&apos;m not sure if you want this to be treated as a warning, or if this should just be info() ?

warnings are used to indicate that something went wrong with NRWT itself, usually (but it was a survivable error).

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:250
&gt; +        _log.warn(&quot;%s unique leaks found!&quot; % unique_leaks)

Ugh :(

Fixing this &quot;right&quot; could be annoying, all right. I don&apos;t know anything about run-leaks (and have never used the feature in ORWT); does it run when the process is still alive, or after the process exits? Does it pick up incremental leaks since the last run, or anything smart like that?

I can&apos;t tell if you are checking for leaks per-test, or per-driver-instance, or something else, so it&apos;s hard to say what the &quot;right&quot; way to fix this is.

&gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:456
&gt;      def restart(self):

Is restart() actually called by anything()? I didn&apos;t see any callers in the currently checked-in code. Does this patch call it from somewhere? If not, you can probably just delete this whole function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438880</commentid>
    <comment_count>7</comment_count>
      <attachid>101250</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 18:06:20 -0700</bug_when>
    <thetext>Created attachment 101250
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438884</commentid>
    <comment_count>8</comment_count>
      <attachid>101250</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 18:07:45 -0700</bug_when>
    <thetext>Comment on attachment 101250
Patch

Will respond to dirk&apos;s comments and re-post.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438888</commentid>
    <comment_count>9</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 18:13:58 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 101245 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101245&amp;action=review
&gt; 
&gt; I&apos;m sure you&apos;ve heard this before, but (as I&apos;ve frequently been given the feedback myself), mixing whitespace diffs, and code cleanup along with actual changes makes reviewing the actual change harder. It&apos;d be great if you could split the changes into two different patches.

Agreed.  Will do.

&gt; R-&apos;ing because there&apos;s at least (I think) one out-and-out typo, and apart from that it&apos;s hard for me to tell what the intended logic of the mods to the base class are (i.e., what are the semantics of checking for leaks, when can those methods be called, etc.).
&gt;
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:291
&gt; &gt; +    def check_for_leaks(self, process_name, process_pid):
&gt; 
&gt; What are the actual semantics of this routine? I assume pid must be alive? What is this supposed to do or return? Is it totally arbitrary?

Yup.  Pid must be alive.  Otherwise undefined.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:296
&gt; &gt; +        # while running the layout tests.
&gt; 
&gt; Print to where? Is this a log call? what level?
&gt; 
&gt; It might be better if the information was just returned so that the caller could decide what to do with it (e.g., maybe this should also be stored in results.json?))
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:43
&gt; &gt; +class LeakDetector(object):
&gt; 
&gt; I would probably move this into a separate module, e..g, mac_leak_detector.py or something.

I certainly could.  The more I think about it, the more it may belong closer to executive.  It has little to do with &quot;port&quot; except for the excusion lists and where to find run-leaks/parse-malloc-history.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:105
&gt; &gt; +        return &quot;leaks-%s-%s-%s.txt&quot; % (process_name, process_pid, len(self._leaks_filenames))
&gt; 
&gt; Do you need to keep the actual list of filenames? It looks like you&apos;re mostly just using this as a counter and maybe that would be clearer?

I&apos;ve fixed this in my most recent patch.  ORWT kept a global list and used it in various places.  That doesn&apos;t work for NRWT&apos;s multi-worker setup, so slowly that code has been dying, and is now finally dead. :)

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:107
&gt; &gt; +    def parse_leak_files(self):
&gt; 
&gt; don&apos;t you need to pass in leak_files here?

Thx.  Will unittest.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:121
&gt; &gt; +        _log.info(&quot; ? checking for leaks in %s&quot; % process_name)
&gt; 
&gt; This might want to be log.debug() ... I think this is called in every worker, right? We probably don&apos;t want that being logged all the time.

Agreed.  I also got rid of the ? and + from these logs.  Just more leftover from the ORWT code.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:141
&gt; &gt; +            _log.warn(&quot; + %s leaks (%s bytes) were found, details in %s&quot; % (count, bytes, leaks_output_path))
&gt; 
&gt; I&apos;m not sure if you want this to be treated as a warning, or if this should just be info() ?

Donno.  Ideally i&apos;d like to print it through the printer, I would think?  Except workers don&apos;t seem to have a printer object.

&gt; warnings are used to indicate that something went wrong with NRWT itself, usually (but it was a survivable error).

I see.  I&apos;ll make it info then.  Info will be printed by default I assume?  We need leak summary information, etc. to be printed by default.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:250
&gt; &gt; +        _log.warn(&quot;%s unique leaks found!&quot; % unique_leaks)
&gt; 
&gt; Ugh :(
&gt; 
&gt; Fixing this &quot;right&quot; could be annoying, all right. I don&apos;t know anything about run-leaks (and have never used the feature in ORWT); does it run when the process is still alive, or after the process exits? Does it pick up incremental leaks since the last run, or anything smart like that?

I&apos;m not sure I understand.  what&apos;s &quot;wrong&quot; about it?

&gt; I can&apos;t tell if you are checking for leaks per-test, or per-driver-instance, or something else, so it&apos;s hard to say what the &quot;right&quot; way to fix this is.

Per server/driver instance.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/webkit.py:456
&gt; &gt;      def restart(self):
&gt; 
&gt; Is restart() actually called by anything()? I didn&apos;t see any callers in the currently checked-in code. Does this patch call it from somewhere? If not, you can probably just delete this whole function.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438893</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-18 18:24:46 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #6)
&gt; &gt; (From update of attachment 101245 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101245&amp;action=review
&gt; &gt; 
&gt; &gt; I&apos;m sure you&apos;ve heard this before, but (as I&apos;ve frequently been given the feedback myself), mixing whitespace diffs, and code cleanup along with actual changes makes reviewing the actual change harder. It&apos;d be great if you could split the changes into two different patches.
&gt; 
&gt; Agreed.  Will do.
&gt; 
&gt; &gt; R-&apos;ing because there&apos;s at least (I think) one out-and-out typo, and apart from that it&apos;s hard for me to tell what the intended logic of the mods to the base class are (i.e., what are the semantics of checking for leaks, when can those methods be called, etc.).
&gt; &gt;
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:291
&gt; &gt; &gt; +    def check_for_leaks(self, process_name, process_pid):
&gt; &gt; 
&gt; &gt; What are the actual semantics of this routine? I assume pid must be alive? What is this supposed to do or return? Is it totally arbitrary?
&gt; 
&gt; Yup.  Pid must be alive.  Otherwise undefined.
&gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:296
&gt; &gt; &gt; +        # while running the layout tests.
&gt; &gt; 
&gt; &gt; Print to where? Is this a log call? what level?
&gt; &gt; 
&gt; &gt; It might be better if the information was just returned so that the caller could decide what to do with it (e.g., maybe this should also be stored in results.json?))
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:43
&gt; &gt; &gt; +class LeakDetector(object):
&gt; &gt; 
&gt; &gt; I would probably move this into a separate module, e..g, mac_leak_detector.py or something.
&gt; 
&gt; I certainly could.  The more I think about it, the more it may belong closer to executive.  It has little to do with &quot;port&quot; except for the excusion lists and where to find run-leaks/parse-malloc-history.
&gt; 

Yeah, I was thinking it belonged in common.system somewhere as well.

&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:105
&gt; &gt; &gt; +        return &quot;leaks-%s-%s-%s.txt&quot; % (process_name, process_pid, len(self._leaks_filenames))
&gt; &gt; 
&gt; &gt; Do you need to keep the actual list of filenames? It looks like you&apos;re mostly just using this as a counter and maybe that would be clearer?
&gt; 
&gt; I&apos;ve fixed this in my most recent patch.  ORWT kept a global list and used it in various places.  That doesn&apos;t work for NRWT&apos;s multi-worker setup, so slowly that code has been dying, and is now finally dead. :)
&gt; 

Okay.

&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:107
&gt; &gt; &gt; +    def parse_leak_files(self):
&gt; &gt; 
&gt; &gt; don&apos;t you need to pass in leak_files here?
&gt; 
&gt; Thx.  Will unittest.
&gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:121
&gt; &gt; &gt; +        _log.info(&quot; ? checking for leaks in %s&quot; % process_name)
&gt; &gt; 
&gt; &gt; This might want to be log.debug() ... I think this is called in every worker, right? We probably don&apos;t want that being logged all the time.
&gt; 
&gt; Agreed.  I also got rid of the ? and + from these logs.  Just more leftover from the ORWT code.
&gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:141
&gt; &gt; &gt; +            _log.warn(&quot; + %s leaks (%s bytes) were found, details in %s&quot; % (count, bytes, leaks_output_path))
&gt; &gt; 
&gt; &gt; I&apos;m not sure if you want this to be treated as a warning, or if this should just be info() ?
&gt; 
&gt; Donno.  Ideally i&apos;d like to print it through the printer, I would think?  Except workers don&apos;t seem to have a printer object.
&gt; 

Yeah, workers don&apos;t have access to the printer object. Not coincidentally, we don&apos;t usually ask the workers to print anything :) I&apos;ve normally tried to avoid that, but it may not always be possible in the future.

&gt; &gt; warnings are used to indicate that something went wrong with NRWT itself, usually (but it was a survivable error).
&gt; 
&gt; I see.  I&apos;ll make it info then.  Info will be printed by default I assume?  We need leak summary information, etc. to be printed by default.
&gt; 

Yes, info() is printed by default.

&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:250
&gt; &gt; &gt; +        _log.warn(&quot;%s unique leaks found!&quot; % unique_leaks)
&gt; &gt; 
&gt; &gt; Ugh :(
&gt; &gt; 
&gt; &gt; Fixing this &quot;right&quot; could be annoying, all right. I don&apos;t know anything about run-leaks (and have never used the feature in ORWT); does it run when the process is still alive, or after the process exits? Does it pick up incremental leaks since the last run, or anything smart like that?
&gt; 
&gt; I&apos;m not sure I understand.  what&apos;s &quot;wrong&quot; about it?
&gt; 

There may not be anything &quot;wrong&quot; about it, which is why it was in quotes. Mostly I was referring to it being &quot;wrong&quot; in the sense that you were also calling it a hack. Without knowing what the intended behavior was, it was hard to say what the right way to implement it would be.

&gt; &gt; I can&apos;t tell if you are checking for leaks per-test, or per-driver-instance, or something else, so it&apos;s hard to say what the &quot;right&quot; way to fix this is.
&gt; 
&gt; Per server/driver instance.
&gt; 

Hm. Okay. There is no mechanism to report &quot;per-server/driver instance&quot;-level data anywhere. i.e., there is neither a way to send a message from worker -&gt; manager, nor a way to summarize per-worker data in the results objects (results.json, etc.). Perhaps there should be in the future, and we could also create a &quot;worker_data&quot; message that was sent from worker to manager. 

Writing stuff to the filesystem isn&apos;t too bad, as long as it&apos;s not being used as a communication mechanism to get data back into the manager for further processing (AFAIK, we don&apos;t do that anywhere). If the manager is just reading data and logging it, that&apos;s less objectionable, although I have normally tried not to rely on the filesystem for anything at all. Architecturally I was tempted to never even write to the filesystem from the workers, but (a) that would force the manager to do a lot more work and (b) I wasn&apos;t sure how sending images, diffs, etc. across the message queue would even scale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438901</commentid>
    <comment_count>11</comment_count>
      <attachid>101254</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 18:27:55 -0700</bug_when>
    <thetext>Created attachment 101254
Fixed errors pointed out by dirk</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438902</commentid>
    <comment_count>12</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-18 18:28:29 -0700</bug_when>
    <thetext>I&apos;ve not split out the unrelated cleanups yet, but I will if no one is brave enough to review it as-is in the next 12 hours or so. :)

Dinner time for me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>438912</commentid>
    <comment_count>13</comment_count>
      <attachid>101254</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-07-18 18:46:10 -0700</bug_when>
    <thetext>Comment on attachment 101254
Fixed errors pointed out by dirk

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

change basically looks fine. R+-ing / CQ-&apos;ing assuming you will clean this stuff up.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:291
&gt; +    def check_for_leaks(self, process_name, process_pid):

Please add comments to this and print_leaks_summary() about what the routines should do (what the contracts are); you answered in the bug comments, but I would like those answers to be in the code.

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:42
&gt; +# If other ports/platforms decide to support --leaks, we should see about sharing as much of this code as possible.

You are going to move this into a different file, right?

&gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:136
&gt; +            _log.info(&quot;%s leaks (%s bytes including %s excluded leaks) were found, details in %s&quot; % (adjusted_count, bytes, excluded, leaks_output_path))

Were you going to change these to log.debug() also? These are printed out by the worker while the driver is actively running, right? Do you want these to be printed mid-run? (I&apos;m not sure if this is intentional or not). I don&apos;t really have a problem with this being printed mid-run (it&apos;s kind of like an unexpected failure), but it would be good to figure out how to send this data from worker to manager to not have to log from the worker. You might want this to be a FIXME or something. Also note that you might want to log a blank line first in order to deal with the overlapping of progress-meter log messages from the manager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439053</commentid>
    <comment_count>14</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-19 02:14:55 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 101254 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=101254&amp;action=review
&gt; 
&gt; change basically looks fine. R+-ing / CQ-&apos;ing assuming you will clean this stuff up.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:291
&gt; &gt; +    def check_for_leaks(self, process_name, process_pid):
&gt; 
&gt; Please add comments to this and print_leaks_summary() about what the routines should do (what the contracts are); you answered in the bug comments, but I would like those answers to be in the code.

Will fix.  THanks.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:42
&gt; &gt; +# If other ports/platforms decide to support --leaks, we should see about sharing as much of this code as possible.
&gt; 
&gt; You are going to move this into a different file, right?

I&apos;m just going to leave it a FIXME for now.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/port/mac.py:136
&gt; &gt; +            _log.info(&quot;%s leaks (%s bytes including %s excluded leaks) were found, details in %s&quot; % (adjusted_count, bytes, excluded, leaks_output_path))
&gt; 
&gt; Were you going to change these to log.debug() also? These are printed out by the worker while the driver is actively running, right? Do you want these to be printed mid-run? (I&apos;m not sure if this is intentional or not). I don&apos;t really have a problem with this being printed mid-run (it&apos;s kind of like an unexpected failure), but it would be good to figure out how to send this data from worker to manager to not have to log from the worker.

Yes, they&apos;re expected to be printed mid-run.  (When the worker is spinning down.).  Ideally yes, we&apos;d send the data back and the manager would print it, but there seems to be no way to do that.

&gt; You might want this to be a FIXME or something. Also note that you might want to log a blank line first in order to deal with the overlapping of progress-meter log messages from the manager.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439058</commentid>
    <comment_count>15</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-07-19 02:25:55 -0700</bug_when>
    <thetext>Committed r91245: &lt;http://trac.webkit.org/changeset/91245&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101067</attachid>
            <date>2011-07-15 16:25:57 -0700</date>
            <delta_ts>2011-07-18 15:32:59 -0700</delta_ts>
            <desc>wip</desc>
            <filename>bug-63832-20110715162556.patch</filename>
            <type>text/plain</type>
            <size>11772</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEwODQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwMTk2M2RkN2RkZjMzY2NiNTU4NmNjOTIxMWEwMDVjN2U0
YjhiM2ZlLi44NzM0ZDYyZmEzMDZjZTYyNTMzNmFhMTFjNjA1ZDYzOWM4ZGRjNWVlIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYg
QEAKKzIwMTEtMDctMTUgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgorCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKwogMjAxMS0wNy0xNSAgTWFydGluIFJvYmlu
c29uICA8bXJvYmluc29uQGlnYWxpYS5jb20+CiAKICAgICAgICAgQnVpbGQgZml4ZXMgZm9yIFdl
YktpdDIuIEVuc3VyZSB0aGF0IGFsbCBnZW5lcmF0ZWQgc291cmNlcyBhcmUKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkgYi9Ub29scy9TY3JpcHRzL3BhcnNl
LW1hbGxvYy1oaXN0b3J5CmluZGV4IDE3N2RlMWM5MDNjZjZkMjUxMWQ4ZjQ0ZmI3YzdjODFmNDdj
YTFkZTIuLmQyNTdmOWZlMTgyMGRlYjIwZWYyYjE2ZGU1N2I3ZWNmOWQyZmEzNGYgMTAwNzU1Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkKKysrIGIvVG9vbHMvU2NyaXB0
cy9wYXJzZS1tYWxsb2MtaGlzdG9yeQpAQCAtNTcsMTggKzU3LDIwIEBAIHN1YiBtYWluKCkKICAg
ICAgICAgIm1lcmdlLXJlZ2V4cDpzIiA9PiBcQG1lcmdlUmVnZXhwcywKICAgICAgICAgIm1lcmdl
LWRlcHRoOmkiID0+IFwkbWVyZ2VEZXB0aAogICAgICk7Ci0gICAgbXkgJGZpbGVOYW1lID0gJEFS
R1ZbMF07Ci0gICAgZGllICR1c2FnZSBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICEkZmlsZU5h
bWUpOworICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhc2NhbGFyKEBB
UkdWKSk7CiAKLSAgICBvcGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAk
ZmlsZU5hbWUiOwotICAgIG15IEBmaWxlID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7CisgICAg
bXkgQGxpbmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkZmlsZU5hbWUgKEBBUkdWKSB7CisgICAg
ICAgIG9wZW4gRklMRSwgIjwkZmlsZU5hbWUiIG9yIGRpZSAiYmFkIGZpbGU6ICRmaWxlTmFtZSI7
CisgICAgICAgIHB1c2goQGxpbmVzLCA8RklMRT4pOworICAgICAgICBjbG9zZSBGSUxFOworICAg
IH0KIAogICAgIG15ICVjYWxsc3RhY2tzID0gKCk7CiAgICAgbXkgJGJ5dGVDb3VudFRvdGFsID0g
MDsKIAotICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBmaWxlOyAkaSsrKSB7Ci0gICAgICAgIG15
ICRsaW5lID0gJGZpbGVbJGldOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaW5lczsgJGkr
KykgeworICAgICAgICBteSAkbGluZSA9ICRsaW5lc1skaV07CiAgICAgICAgIG15ICgkY2FsbENv
dW50LCAkYnl0ZUNvdW50KTsKIAogICAgICAgICAjIEZpcnN0IHRyeSBtYWxsb2NfaGlzdG9yeSBm
b3JtYXQKQEAgLTg2LDcgKzg4LDcgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgaWYgKCRieXRl
Q291bnQpIHsKICAgICAgICAgICAgICAgICB3aGlsZSAoISgkbGluZSA9fiAiQ2FsbCBzdGFjazog
IikpIHsKICAgICAgICAgICAgICAgICAgICAgJGkrKzsKLSAgICAgICAgICAgICAgICAgICAgJGxp
bmUgPSAkZmlsZVskaV07CisgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDE1ICsx
MDEsMTUgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgJGNhbGxDb3VudCA9IDE7CiAgICAgICAg
ICAgICAoJGJ5dGVDb3VudCkgPSAoJGxpbmUgPX4gL0tleTogKD86XGQrKSwgKFxkKykgYnl0ZXMv
KTsKICAgICAgICAgICAgIGlmICgkYnl0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUg
PSAkZmlsZVsrKyRpXTsKKyAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAg
ICAgICAgICAgICAgICBteSBAdGVtcFN0YWNrOwotICAgICAgICAgICAgICAgIHdoaWxlICgkZmls
ZVskaSsxXSAhfiAvXig/Oi18XGQpLykgeworICAgICAgICAgICAgICAgIHdoaWxlICgkbGluZXNb
JGkrMV0gIX4gL14oPzotfFxkKS8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+
IC9cKTogKC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbCA9ICQxOwog
ICAgICAgICAgICAgICAgICAgICAgICAgJGNhbGwgPX4gcy9cciQvLzsKICAgICAgICAgICAgICAg
ICAgICAgICAgIHVuc2hpZnQoQHRlbXBTdGFjaywgJGNhbGwpOwogICAgICAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGZpbGVbKyskaV07CisgICAgICAgICAg
ICAgICAgICAgICRsaW5lID0gJGxpbmVzWysrJGldOwogICAgICAgICAgICAgICAgIH0gICAgICAg
ICAgICAKICAgICAgICAgICAgICAgICAkbGluZSA9IGpvaW4oIiB8ICIsIEB0ZW1wU3RhY2spOwog
ICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L21hYy5weQppbmRleCA5YTU1MWM1ZWQ0YTcyYTYxMjFiMWVkODMyMDQ3NDE0MjQxZGM2MDMw
Li5jNjMyZjI0NDhkNTAwNmVlMGMxOTVlZDA4MmUyY2Y0MjdiYWRmMGI3IDEwMDY0NAotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21hYy5weQpAQCAtOTksNiArOTks
MTA5IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICBzZWFyY2hfcGF0
aHMuaW5zZXJ0KDAsIHNlbGYuX3drMl9wb3J0X25hbWUoKSkKICAgICAgICAgcmV0dXJuIG1hcChz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VhcmNoX3BhdGhzKQogCisgICAgZGVmIHNldHVw
X2Vudmlyb25fZm9yX3NlcnZlcihzZWxmKToKKyAgICAgICAgZW52ID0gV2ViS2l0UG9ydC5zZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZikKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCds
ZWFrcycpOgorICAgICAgICAgICAgZW52WydNYWxsb2NTdGFja0xvZ2dpbmcnXSA9ICcxJworICAg
ICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxvYycpOgorICAgICAgICAgICAgZW52
WydEWUxEX0lOU0VSVF9MSUJSQVJJRVMnXSA9ICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGliJwor
ICAgICAgICByZXR1cm4gZW52CisKKyAgICBkZWYgaXNfbGVvcGFyZChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3ZlcnNpb24gPT0gImxlb3BhcmQiCisKKyAgICBkZWYgaXNfc25vd2xlb3Bh
cmQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9uID09ICJzbm93bGVvcGFyZCIK
KworICAgICMgV2UgZXhjbHVkZSB0aGUgZm9sbG93aW5nIHJlcG9ydGVkIGxlYWtzIHNvIHRoZXkg
ZG8gbm90IGdldCBpbiBvdXIgd2F5IHdoZW4gbG9va2luZyBmb3IgV2ViS2l0IGxlYWtzOgorICAg
ICMgVGhpcyBhbGxvd3MgdXMgaWdub3JlIGtub3duIGxlYWtzIGFuZCBvbmx5IGJlIGFsZXJ0ZWQg
d2hlbiBuZXcgbGVha3Mgb2NjdXIuIFNvbWUgbGVha3MgYXJlIGluIHRoZSBvbGQKKyAgICAjIHZl
cnNpb25zIG9mIHRoZSBzeXN0ZW0gZnJhbWV3b3JrcyB0aGF0IGFyZSBiZWluZyB1c2VkIGJ5IHRo
ZSBsZWFrcyBib3RzLiBFdmVuIHRob3VnaCBhIGxlYWsgaGFzIGJlZW4KKyAgICAjIGZpeGVkLCBp
dCB3aWxsIGJlIGxpc3RlZCBoZXJlIHVudGlsIHRoZSBib3QgaGFzIGJlZW4gdXBkYXRlZCB3aXRo
IHRoZSBuZXdlciBmcmFtZXdvcmtzLgorICAgIGRlZiBfdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVh
a3Moc2VsZik6CisgICAgICAgICMgQ3VycmVudGx5IHdlIGRvbid0IGhhdmUgYW55IHR5cGUgZXhj
bHVkZXMgZnJvbSBPUyBsZWFrcywgYnV0IHdlIHdpbGwgbGlrZWx5IGFnYWluIGluIHRoZSBmdXR1
cmUuCisgICAgICAgIHJldHVybiBbXQorCisgICAgZGVmIF9jYWxsc3RhY2tzX3RvX2V4Y2x1ZGVf
ZnJvbV9sZWFrcyhzZWxmKToKKyAgICAgICAgY2FsbHN0YWNrcyA9IFsKKyAgICAgICAgICAgICJG
bGFzaF9FbmZvcmNlTG9jYWxTZWN1cml0eSIsICAjIGxlYWtzIGluIEZsYXNoIHBsdWctaW4gY29k
ZSwgcmRhcjovL3Byb2JsZW0vNDQ0OTc0NworICAgICAgICBdCisgICAgICAgIGlmIHNlbGYuaXNf
bGVvcGFyZCgpOgorICAgICAgICAgICAgY2FsbHN0YWNrcyArPSBbCisgICAgICAgICAgICAgICAg
IkNGSFRUUE1lc3NhZ2VBcHBlbmRCeXRlcyIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8v
cHJvYmxlbS81NDM1OTEyCisgICAgICAgICAgICAgICAgInNlbmREaWRSZWNlaXZlRGF0YUNhbGxi
YWNrIiwgICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0NDE2MTkKKyAgICAg
ICAgICAgICAgICAiX0NGSFRUUFJlYWRTdHJlYW1SZWFkTWFyayIsICAjIGxlYWsgaW4gQ0ZOZXR3
b3JrLCByZGFyOi8vcHJvYmxlbS81NDQxNDY4CisgICAgICAgICAgICAgICAgImh0dHBQcm90b2Nv
bFN0YXJ0IiwgICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0Njg4MzcKKyAg
ICAgICAgICAgICAgICAiX0NGVVJMQ29ubmVjdGlvblNlbmRDYWxsYmFja3MiLCAgIyBsZWFrIGlu
IENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQ0MTYwMAorICAgICAgICAgICAgICAgICJEaXNw
YXRjaFFUTXNnIiwgICMgbGVhayBpbiBRdWlja1RpbWUsIFBQQyBvbmx5LCByZGFyOi8vcHJvYmxl
bS81NjY3MTMyCisgICAgICAgICAgICAgICAgIlFUTW92aWVDb250ZW50VmlldyBjcmVhdGVWaXN1
YWxDb250ZXh0IiwgICMgbGVhayBpbiBRdWlja1RpbWUsIFBQQyBvbmx5LCByZGFyOi8vcHJvYmxl
bS81NjY3MTMyCisgICAgICAgICAgICAgICAgIl9Db3B5QXJjaGl0ZWN0dXJlc0ZvckpWTVZlcnNp
b24iLCAgIyBsZWFrIGluIEphdmEsIHJkYXI6Ly9wcm9ibGVtLzU5MTA4MjMKKyAgICAgICAgICAg
IF0KKyAgICAgICAgZWxpZiBzZWxmLmlzX3Nub3dsZW9wYXJkKCk6CisgICAgICAgICAgICBjYWxs
c3RhY2tzICs9IFsKKyAgICAgICAgICAgICAgICAicmVhZE1ha2VyTm90ZVByb3BzIiwgICMgPHJk
YXI6Ly9wcm9ibGVtLzcxNTY0MzI+IGxlYWsgaW4gSW1hZ2VJTworICAgICAgICAgICAgICAgICJR
VEtpdE1vdmllQ29udHJvbGxlclZpZXcgY29tcGxldGVVSVNldHVwIiwgICMgPHJkYXI6Ly9wcm9i
bGVtLzcxNTUxNTY+IGxlYWsgaW4gUVRLaXQKKyAgICAgICAgICAgICAgICAiZ2V0Vk1Jbml0QXJn
cyIsICAjIDxyZGFyOi8vcHJvYmxlbS83NzE0NDQ0PiBsZWFrIGluIEphdmEKKyAgICAgICAgICAg
ICAgICAiSmF2YV9qYXZhX2xhbmdfU3lzdGVtX2luaXRQcm9wZXJ0aWVzIiwgICMgPHJkYXI6Ly9w
cm9ibGVtLzc3MTQ0NjU+IGxlYWsgaW4gSmF2YQorICAgICAgICAgICAgICAgICJnbHJDb21wRXhl
Y3V0ZUtlcm5lbCIsICAjIDxyZGFyOi8vcHJvYmxlbS83ODE1MzkxPiBsZWFrIGluIGdyYXBoaWNz
IGRyaXZlciB3aGlsZSB1c2luZyBPcGVuR0wKKyAgICAgICAgICAgICAgICAiTlNOdW1iZXJGb3Jt
YXR0ZXIgZ2V0T2JqZWN0VmFsdWU6Zm9yU3RyaW5nOmVycm9yRGVzY3JpcHRpb246IiwgICMgPHJk
YXI6Ly9wcm9ibGVtLzcxNDkzNTA+IExlYWsgaW4gTlNOdW1iZXJGb3JtYXR0ZXIKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgcmV0dXJuIGNhbGxzdGFja3MKKworICAgIGRlZiBfbGVha3NfY29tbWFu
ZChzZWxmLCBwaWQpOgorICAgICAgICBsZWFrc19jb21tYW5kID0gW3NlbGYuX2NvbmZpZy5zY3Jp
cHRfcGF0aCgicnVuLWxlYWtzIildCisgICAgICAgIGZvciBjYWxsc3RhY2sgaW4gc2VsZi5fY2Fs
bHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAgICAgIGxlYWtzX2NvbW1h
bmQgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0YWNrJywgY2FsbHN0YWNrXQorICAgICAgICBmb3IgZXhj
bHVkZWRfdHlwZSBpbiBzZWxmLl90eXBlc190b19leGx1ZGVfZnJvbV9sZWFrcygpOgorICAgICAg
ICAgICAgbGVha3NfY29tbWFuZCArPSBbJy0tZXhjbHVkZS10eXBlJywgZXhjbHVkZWRfdHlwZV0K
KyAgICAgICAgbGVha3NfY29tbWFuZC5hcHBlbmQocGlkKQorICAgICAgICByZXR1cm4gbGVha3Nf
Y29tbWFuZAorCisgICAgZGVmIF9wYXJzZV9sZWFrc19vdXRwdXQoc2VsZiwgbGVha3Nfb3V0cHV0
KToKKyAgICAgICAgY291bnQsIGJ5dGVzID0gcmUuc2VhcmNoKHInUHJvY2VzcyAlczogKFxkKykg
bGVha3M/IGZvciAoXGQrKSB0b3RhbCcgJSB0b29sX3BpZCwgbGVha3Nfb3V0cHV0KS5ncm91cHMo
KQorICAgICAgICBleGNsdWRlZCA9IHJlLnNlYXJjaChyJyhcZCspIGxlYWtzPyBleGNsdWRlZCcs
IGxlYWtzX291dHB1dCkuZ3JvdXAoMCkKKyAgICAgICAgcmV0dXJuIGNvdW50LCBleGNsdWRlZAor
CisgICAgZGVmIF9wYXJzZV9sZWFrX2ZpbGVzKHNlbGYpOgorICAgICAgICBtZXJnZV9kZXB0aCA9
IDUgICMgT1JXVCBoYWQgYSAtLW1lcmdlLWxlYWstZGVwdGggYXJndW1lbnQsIGJ1dCB0aGF0IHNl
ZW1zIG91dCBvZiBzY29wZSBmb3IgdGhlIHJ1bi13ZWJraXQtdGVzdHMgdG9vbC4KKyAgICAgICAg
cGFyc2VfbWFsbG9jX2hpc3RvcnlfY29tbWFuZCA9IFsKKyAgICAgICAgICAgIHNlbGYuX2NvbmZp
Zy5zY3JpcHRfcGF0aCgicGFyc2UtbWFsbG9jLWhpc3RvcnkiKSwKKyAgICAgICAgICAgICctLW1l
cmdlLWRlcHRoJywKKyAgICAgICAgICAgIG1lcmdlX2RlcHRoLAorICAgICAgICBdICsgbGVha19m
aWxlcworICAgICAgICBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQgPSBzZWxmLl9leGVjdXRp
dmUucnVuX2NvbW1hbmQocGFyc2VfbWFsbG9jX2hpc3RvcnlfY29tbWFuZCkKKworICAgICAgICB1
bmlxdWVfbGVha19jb3VudCA9IGxlbihyZS5maW5kYWxsKHInXihcZCopXHNjYWxscycsIHBhcnNl
X21hbGxvY19oaXN0b3J5X291dHB1dCkpCisgICAgICAgIHRvdGFsX2J5dGVzID0gcmUuc2VhcmNo
KHInXnRvdGFsXDpccyguKilcc1woJywgcGFyc2VfbWFsbG9jX2hpc3Rvcnlfb3V0cHV0KS5ncm91
cCgwKQorICAgICAgICByZXR1cm4gKHRvdGFsX2J5dGVzLCB1bmlxdWVfbGVha19jb3VudCkKKwor
ICAgIGRlZiBfbGVha3NfZmlsZV9mb3JfZHJpdmVyKHNlbGYpOgorICAgICAgICByZXR1cm4gImZv
byIKKworICAgIGRlZiBkcml2ZXJfd2lsbF9zdG9wKHNlbGYpOgorICAgICAgICBfbG9nLmluZm8o
IiA/IGNoZWNraW5nIGZvciBsZWFrcyBpbiAlcyIgJSB0b29sX25hbWUpCisgICAgICAgIGxlYWtz
X291dHB1dCA9IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChzZWxmLl9sZWFrc19jb21tYW5k
KHRvb2xfcGlkKSkKKyAgICAgICAgY291bnQsIGV4Y2x1ZGVkID0gc2VsZi5fcGFyc2VfbGVha3Nf
b3V0cHV0KGxlYWtzX291dHB1dCkKKyAgICAgICAgYWRqdXN0ZWRfY291bnQgPSBjb3VudCAtIGV4
Y2x1ZGVkCisgICAgICAgIGlmIG5vdCBhZGp1c3RlZF9jb3VudDoKKyAgICAgICAgICAgIHJldHVy
bgorCisgICAgICAgIGxlYWtzX2ZpbGVfcGF0aCA9IHNlbGYuX2xlYWtzX2ZpbGVfZm9yX2RyaXZl
cigpCisgICAgICAgIGxlYWtzX2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVuYW1lLmRpcm5hbWUobGVh
a3NfZmlsZV9wYXRoKQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLm1heWJlX21ha2VfZGlyZWN0
b3J5KGxlYWtzX2RpcmVjdG9yeSkKKworICAgICAgICBpZiBleGNsdWRlZDoKKyAgICAgICAgICAg
IF9sb2cud2FybigiICsgJXMgbGVha3MgKCVzIGJ5dGVzIGluY2x1ZGluZyAlcyBleGNsdWRlZCBs
ZWFrcykgd2VyZSBmb3VuZCwgZGV0YWlscyBpbiAlcyIgJSAoYWRqdXN0ZWRfY291bnQsIGJ5dGVz
LCBleGNsdWRlZCwgbGVha3NfZmlsZV9wYXRoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAg
IF9sb2cud2FybigiICsgJXMgbGVha3MgKCVzIGJ5dGVzKSB3ZXJlIGZvdW5kLCBkZXRhaWxzIGlu
ICVzIiAlIChjb3VudCwgYnl0ZXMsIGxlYWtzX2ZpbGVfcGF0aCkpCisKKyAgICAgICAgc2VsZi5f
ZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUobGVha3NfZmlsZV9wYXRoLCBsZWFrc19vdXRwdXQp
CisgICAgICAgIHNlbGYuX2xlYWtzX2ZpbGVuYW1lcy5hcHBlbmQobGVha3NfZmlsZV9wYXRoKQor
CisgICAgZGVmIHN1bW1hcml6ZV9sZWFrcyhzZWxmKToKKyAgICAgICAgdG90YWxfYnl0ZXMsIHVu
aXF1ZV9sZWFrcyA9IHNlbGYucGFyc2VfbGVha19maWxlcyhzZWxmLl9sZWFrc19maWxlbmFtZXMp
CisgICAgICAgIF9sb2cud2FybigiJXMgdG90YWwgbGVha3MgZm91bmQgZm9yIGEgdG90YWwgb2Yg
JXMhIiAlIChzZWxmLl90b3RhbF9sZWFrcywgdG90YWxfYnl0ZXMpKQorICAgICAgICBfbG9nLndh
cm4oIiVzIHVuaXF1ZSBsZWFrcyBmb3VuZCEiICUgdW5pcXVlX2xlYWtzKQorCiAgICAgZGVmIGlz
X2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6CiAgICAgICAgIHJldHVybiByZS5z
ZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFtZSkKIApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJraXQucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQppbmRleCA0NWZmYjIzY2Y4
NTg4OGMzZTAwNmIyZGNiMTE0ZDM5NGFkMjVhMTNmLi4yNzg0OTYwMDMwMzI5MWNjNTg0NmY4ZjM0
NDUyNjAwNzY3ODRhMmFmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNTUsNyArNTUsOSBAQCBjbGFzcyBXZWJLaXRQb3J0
KFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHBpeGVsIHRlc3RzIHVudGlsIHRoZXkg
YXJlIHJ1biBieSBkZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5vcmcuCiAgICAgICAgIHNlbGYuc2V0
X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQogICAgICAgICAjIFdlYktpdCBw
b3J0cyBleHBlY3QgYSAzNXMgdGltZW91dCwgb3IgMzUwcyB0aW1lb3V0IHdoZW4gcnVubmluZyB3
aXRoIC1nLy0tZ3VhcmQtbWFsbG9jLgotICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgi
dGltZV9vdXRfbXMiLCAzNTAwMCkKKyAgICAgICAgIyBGSVhNRTogLS1ndWFyZC1tYWxsb2MgaXMg
b25seSBzdXBwb3J0ZWQgb24gTWFjLCBzbyB0aGlzIGxvZ2ljIHNob3VsZCBiZSBpbiBtYWMucHku
CisgICAgICAgIGRlZmF1bHRfdGltZV9vdXRfc2Vjb25kcyA9IDM1MCBpZiBzZWxmLmdldF9vcHRp
b24oJ2d1YXJkX21hbGxvYycpIGVsc2UgMzUKKyAgICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1
bHQoInRpbWVfb3V0X21zIiwgZGVmYXVsdF90aW1lX291dF9zZWNvbmRzICogMTAwMCkKIAogICAg
IGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJr
aXRfdGVzdF9ydW5uZXInKToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IDlkODNmZmUyYzQ4MzU4YTM5Nzcy
NmRmZGYwOWI1YTdjYTg2M2NmN2MuLjUyYTQ4Nzk1ZWRlMjI2MDkxNTg1Y2ZmMWFiMmMxYzBiZTk1
ZGE3MmIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtMjM3LDIyICsyMzcsMjAgQEAgZGVmIHBhcnNlX2Fy
Z3MoYXJncz1Ob25lKToKICAgICAgICAgICAgIGhlbHA9IkZvcmNlIGdhcmJhZ2UgY29sbGVjdGlv
biBiZXR3ZWVuIGVhY2ggdGVzdCIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1j
b21wbGV4LXRleHQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAg
ICAgICAgaGVscD0iVXNlIHRoZSBjb21wbGV4IHRleHQgY29kZSBwYXRoIGZvciBhbGwgdGV4dCAo
TWFjIE9TIFggYW5kIFdpbmRvd3Mgb25seSkiKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRp
b24oIi1sIiwgIi0tbGVha3MiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAor
ICAgICAgICAgICAgaGVscD0iRW5hYmxlIGxlYWtzIGNoZWNraW5nIChNYWMgT1MgWCBvbmx5KSIp
LAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLWciLCAiLS1ndWFyZC1tYWxsb2MiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgaGVscD0iRW5h
YmxlIG1hbGxvYyBndWFyZCAoTWFjIE9TIFggb25seSkiKSwKICAgICAgICAgb3B0cGFyc2UubWFr
ZV9vcHRpb24oIi0tdGhyZWFkZWQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNl
LAogICAgICAgICAgICAgaGVscD0iUnVuIGEgY29uY3VycmVudCBKYXZhU2NyaXB0IHRocmVhZCB3
aXRoIGVhY2ggdGVzdCIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13ZWJraXQt
dGVzdC1ydW5uZXIiLCAiLTIiLCBhY3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgaGVs
cD0iVXNlIFdlYktpdFRlc3RSdW5uZXIgcmF0aGVyIHRoYW4gRHVtcFJlbmRlclRyZWUuIiksCiAg
ICAgXQogCi0gICAgIyBNaXNzaW5nIE1hYy1zcGVjaWZpYyBvbGQtcnVuLXdlYmtpdC10ZXN0cyBv
cHRpb25zOgotICAgICMgRklYTUU6IE5lZWQ6IC1nLCAtLWd1YXJkIGZvciBndWFyZCBtYWxsb2Mg
c3VwcG9ydCBvbiBNYWMuCi0gICAgIyBGSVhNRTogTmVlZDogLWwgLS1sZWFrcyAgICBFbmFibGUg
bGVha3MgY2hlY2tpbmcuCi0KICAgICBvbGRfcnVuX3dlYmtpdF90ZXN0c19jb21wYXQgPSBbCiAg
ICAgICAgICMgRklYTUU6IFJlbW92ZSB0aGlzIG9wdGlvbiBvbmNlIHRoZSBib3RzIGRvbid0IHJl
ZmVyIHRvIGl0LgogICAgICAgICAjIHJlc3VsdHMuaHRtbCBpcyBzbWFydCBlbm91Z2ggdG8gZmln
dXJlIHRoaXMgb3V0IGl0c2VsZi4KICAgICAgICAgX2NvbXBhdF9zaGltX29wdGlvbigiLS11c2Ut
cmVtb3RlLWxpbmtzLXRvLXRlc3RzIiksCi0gICAgICAgICMgRklYTUU6IEltcGxlbWVudCBsZWFr
IGRldGVjdGlvbi4KLSAgICAgICAgX2NvbXBhdF9zaGltX29wdGlvbigiLS1sZWFrcyIpLAogICAg
IF0KIAogICAgIHJlc3VsdHNfb3B0aW9ucyA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101222</attachid>
            <date>2011-07-18 15:33:02 -0700</date>
            <delta_ts>2011-07-18 16:49:49 -0700</delta_ts>
            <desc>wip, makes everything crash</desc>
            <filename>bug-63832-20110718153301.patch</filename>
            <type>text/plain</type>
            <size>29671</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCAwZmMzYTcyOGFlMjA3MWJkYjkwYzhlMDkyM2VmYmY3MGIz
NWUzNWNiLi5jM2NiMmFjNzc0NDUwZDI2ZGQ1YjNhNzg5OTdiMGM4YmNjYWJhYWJjIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsMTgg
QEAKIDIwMTEtMDctMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5OgorICAgICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC93ZWJraXQucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKworMjAxMS0wNy0xOCAgRXJpYyBTZWlkZWwg
IDxlcmljQHdlYmtpdC5vcmc+CisKICAgICAgICAgd2Via2l0LXBhdGNoIGFwcGx5LWF0dGFjaG1l
bnQgZG9lcyBub3Qgd29yayB3aGVuIG5vdCBjYWxsZWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgY2hl
Y2tvdXQKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTY0
NzUxCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMgYi9U
b29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCmluZGV4IDAwOWU0NjJkNzUwMGJhYjU4
ZjhiOGFiZTQ4N2M0NjI2ZDU3MDc4NjguLjczYjcwOTRiMjc1OWQ3NWRlM2YzMTRjYmY2OTQ3OGRh
MjQxZTgyNzYgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMK
KysrIGIvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwpAQCAtMjI0MSw3ICsyMjQx
LDcgQEAgc3ViIGVwaWxvZ3Vlc0FuZFByb2xvZ3VlcygkJCkKIHN1YiBwYXJzZUxlYWtzYW5kUHJp
bnRVbmlxdWVMZWFrcygpCiB7CiAgICAgcmV0dXJuIHVubGVzcyBAbGVha3NGaWxlbmFtZXM7Ci0g
ICAgIAorCiAgICAgbXkgJG1lcmdlZEZpbGVuYW1lcyA9IGpvaW4gIiAiLCBAbGVha3NGaWxlbmFt
ZXM7CiAgICAgbXkgJHBhcnNlTWFsbG9jSGlzdG9yeVRvb2wgPSBzb3VyY2VEaXIoKSAuICIvVG9v
bHMvU2NyaXB0cy9wYXJzZS1tYWxsb2MtaGlzdG9yeSI7CiAgICAgCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5IGIvVG9vbHMvU2NyaXB0cy9wYXJzZS1tYWxs
b2MtaGlzdG9yeQppbmRleCAxNzdkZTFjOTAzY2Y2ZDI1MTFkOGY0NGZiN2M3YzgxZjQ3Y2ExZGUy
Li5kMjU3ZjlmZTE4MjBkZWIyMGVmMmIxNmRlNTdiN2VjZjlkMmZhMzRmIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5CisrKyBiL1Rvb2xzL1NjcmlwdHMvcGFy
c2UtbWFsbG9jLWhpc3RvcnkKQEAgLTU3LDE4ICs1NywyMCBAQCBzdWIgbWFpbigpCiAgICAgICAg
ICJtZXJnZS1yZWdleHA6cyIgPT4gXEBtZXJnZVJlZ2V4cHMsCiAgICAgICAgICJtZXJnZS1kZXB0
aDppIiA9PiBcJG1lcmdlRGVwdGgKICAgICApOwotICAgIG15ICRmaWxlTmFtZSA9ICRBUkdWWzBd
OwotICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhJGZpbGVOYW1lKTsK
KyAgICBkaWUgJHVzYWdlIGlmICghJGdldE9wdGlvbnNSZXN1bHQgfHwgIXNjYWxhcihAQVJHVikp
OwogCi0gICAgb3BlbiBGSUxFLCAiPCRmaWxlTmFtZSIgb3IgZGllICJiYWQgZmlsZTogJGZpbGVO
YW1lIjsKLSAgICBteSBAZmlsZSA9IDxGSUxFPjsKLSAgICBjbG9zZSBGSUxFOworICAgIG15IEBs
aW5lcyA9ICgpOworICAgIGZvcmVhY2ggbXkgJGZpbGVOYW1lIChAQVJHVikgeworICAgICAgICBv
cGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAkZmlsZU5hbWUiOworICAg
ICAgICBwdXNoKEBsaW5lcywgPEZJTEU+KTsKKyAgICAgICAgY2xvc2UgRklMRTsKKyAgICB9CiAK
ICAgICBteSAlY2FsbHN0YWNrcyA9ICgpOwogICAgIG15ICRieXRlQ291bnRUb3RhbCA9IDA7CiAK
LSAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAZmlsZTsgJGkrKykgewotICAgICAgICBteSAkbGlu
ZSA9ICRmaWxlWyRpXTsKKyAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAbGluZXM7ICRpKyspIHsK
KyAgICAgICAgbXkgJGxpbmUgPSAkbGluZXNbJGldOwogICAgICAgICBteSAoJGNhbGxDb3VudCwg
JGJ5dGVDb3VudCk7CiAKICAgICAgICAgIyBGaXJzdCB0cnkgbWFsbG9jX2hpc3RvcnkgZm9ybWF0
CkBAIC04Niw3ICs4OCw3IEBAIHN1YiBtYWluKCkKICAgICAgICAgICAgIGlmICgkYnl0ZUNvdW50
KSB7CiAgICAgICAgICAgICAgICAgd2hpbGUgKCEoJGxpbmUgPX4gIkNhbGwgc3RhY2s6ICIpKSB7
CiAgICAgICAgICAgICAgICAgICAgICRpKys7Ci0gICAgICAgICAgICAgICAgICAgICRsaW5lID0g
JGZpbGVbJGldOworICAgICAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1skaV07CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC05OSwxNSArMTAxLDE1
IEBAIHN1YiBtYWluKCkKICAgICAgICAgICAgICRjYWxsQ291bnQgPSAxOwogICAgICAgICAgICAg
KCRieXRlQ291bnQpID0gKCRsaW5lID1+IC9LZXk6ICg/OlxkKyksIChcZCspIGJ5dGVzLyk7CiAg
ICAgICAgICAgICBpZiAoJGJ5dGVDb3VudCkgewotICAgICAgICAgICAgICAgICRsaW5lID0gJGZp
bGVbKyskaV07CisgICAgICAgICAgICAgICAgJGxpbmUgPSAkbGluZXNbKyskaV07CiAgICAgICAg
ICAgICAgICAgbXkgQHRlbXBTdGFjazsKLSAgICAgICAgICAgICAgICB3aGlsZSAoJGZpbGVbJGkr
MV0gIX4gL14oPzotfFxkKS8pIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoJGxpbmVzWyRpKzFd
ICF+IC9eKD86LXxcZCkvKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgkbGluZSA9fiAvXCk6
ICguKikkLykgewogICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNhbGwgPSAkMTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICRjYWxsID1+IHMvXHIkLy87CiAgICAgICAgICAgICAgICAgICAg
ICAgICB1bnNoaWZ0KEB0ZW1wU3RhY2ssICRjYWxsKTsKICAgICAgICAgICAgICAgICAgICAgfQot
ICAgICAgICAgICAgICAgICAgICAkbGluZSA9ICRmaWxlWysrJGldOworICAgICAgICAgICAgICAg
ICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAgICAgICAgICAgICAgICB9ICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgJGxpbmUgPSBqb2luKCIgfCAiLCBAdGVtcFN0YWNrKTsKICAgICAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3Rl
bS9jcmFzaGxvZ3MucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jh
c2hsb2dzLnB5CmluZGV4IGZkYzg1Yjc1NWU1MTlkZjQ5MGMyYjIwNTdiMjg0NjliMWZkNmZlOTMu
LmI5ZjhhZWI5ZWEwMjkxYmNhMmVhNTg0NjExODdhNWYzODdkYzBjOGMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFzaGxvZ3MucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQpAQCAtMjYsMTUg
KzI2LDEwIEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi1pbXBvcnQgb3MKIGlt
cG9ydCByZQogaW1wb3J0IHN5cwogCiAKLWRlZiBfaXNfY3Jhc2hfcmVwb3J0ZXIocHJvY2Vzc19u
YW1lKToKLSAgICByZXR1cm4gcmUubWF0Y2gociJSZXBvcnRDcmFzaCIsIHByb2Nlc3NfbmFtZSkK
LQotCiBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmls
ZXN5c3RlbSk6CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBmaWxlc3lzdGVtCkBAIC00NSwx
MSArNDAsMTEgQEAgY2xhc3MgQ3Jhc2hMb2dzKG9iamVjdCk6CiAKICAgICBkZWYgX2xvZ19kaXJl
Y3RvcnlfZGFyd2luKHNlbGYpOgogICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5
c3RlbS5leHBhbmR1c2VyKCJ+IikKLSAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBhdGguam9p
bihsb2dfZGlyZWN0b3J5LCAiTGlicmFyeSIsICJMb2dzIikKLSAgICAgICAgaWYgc2VsZi5fZmls
ZXN5c3RlbS5leGlzdHMob3MucGF0aC5qb2luKGxvZ19kaXJlY3RvcnksICJEaWFnbm9zdGljUmVw
b3J0cyIpKToKLSAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBvcy5wYXRoLmpvaW4obG9nX2Rp
cmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikKKyAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNl
bGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiTGlicmFyeSIsICJMb2dzIikKKyAg
ICAgICAgaWYgc2VsZi5fZmlsZXN5c3RlbS5leGlzdHMoc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxv
Z19kaXJlY3RvcnksICJEaWFnbm9zdGljUmVwb3J0cyIpKToKKyAgICAgICAgICAgIGxvZ19kaXJl
Y3RvcnkgPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNS
ZXBvcnRzIikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBvcy5w
YXRoLmpvaW4obG9nX2RpcmVjdG9yeSwgIkNyYXNoUmVwb3J0ZXIiKQorICAgICAgICAgICAgbG9n
X2RpcmVjdG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiQ3Jhc2hS
ZXBvcnRlciIpCiAgICAgICAgIHJldHVybiBsb2dfZGlyZWN0b3J5CiAKICAgICBkZWYgX2ZpbmRf
bmV3ZXN0X2xvZ19kYXJ3aW4oc2VsZiwgcHJvY2Vzc19uYW1lKToKQEAgLTU5LDUgKzU0LDUgQEAg
Y2xhc3MgQ3Jhc2hMb2dzKG9iamVjdCk6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9s
b2dfZGlyZWN0b3J5X2RhcndpbigpCiAgICAgICAgIGxvZ3MgPSBzZWxmLl9maWxlc3lzdGVtLmZp
bGVzX3VuZGVyKGxvZ19kaXJlY3RvcnksIGZpbGVfZmlsdGVyPWlzX2NyYXNoX2xvZykKICAgICAg
ICAgaWYgbm90IGxvZ3M6Ci0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBO
b25lCiAgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLnJlYWRfdGV4dF9maWxlKHNvcnRl
ZChsb2dzKVstMV0pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCA4ZjNhNmRhOWE3MTEwM2NiMDUz
ZTdiYTAwOTY2NTExYjlkYjViZTU1Li43NjRiYzM4YmEzODc0MDhiMGU1YTllZjQ3ZDRlODMxNTJj
MzFmOTcyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTQ5MywxNiArNDkzLDExIEBAIGNsYXNz
IE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNraXBfY2h1bmsg
PSBza2lwcGVkCiAKLSAgICAgICAgcmVzdWx0X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYu
X2V4cGVjdGF0aW9ucywKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RfZmlsZXMgfCBza2lwX2NodW5r
KQotICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1
bW1hcnksCi0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikKLSAg
ICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5
LAotICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkFJTCwgImZhaWx1cmVzIikKLSAgICAg
ICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAot
ICAgICAgICAgICAgdGVzdF9leHBlY3RhdGlvbnMuRkxBS1ksICJmbGFreSIpCi0gICAgICAgIHNl
bGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwKLSAgICAg
ICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lwcGVkIikKKyAgICAgICAgcmVzdWx0
X3N1bW1hcnkgPSBSZXN1bHRTdW1tYXJ5KHNlbGYuX2V4cGVjdGF0aW9ucywgc2VsZi5fdGVzdF9m
aWxlcyB8IHNraXBfY2h1bmspCisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNf
b2ZfdHlwZShyZXN1bHRfc3VtbWFyeSwgdGVzdF9leHBlY3RhdGlvbnMuUEFTUywgInBhc3NlcyIp
CisgICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3Vt
bWFyeSwgdGVzdF9leHBlY3RhdGlvbnMuRkFJTCwgImZhaWx1cmVzIikKKyAgICAgICAgc2VsZi5f
cHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVj
dGF0aW9ucy5GTEFLWSwgImZsYWt5IikKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVz
dWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5TS0lQLCAic2tp
cHBlZCIpCiAKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5mb3JjZToKICAgICAgICAgICAgIHNl
bGYuX3ByaW50ZXIucHJpbnRfZXhwZWN0ZWQoJ1J1bm5pbmcgYWxsIHRlc3RzLCBpbmNsdWRpbmcg
JwpAQCAtNzE5LDggKzcxNCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MgPSBbXQogCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdT
aGFyZGluZyB0ZXN0cyAuLi4nKQotICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFy
ZHMgPSBzZWxmLl9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsCi0gICAgICAgICAgICBpbnQoc2VsZi5f
b3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxs
eV9wYXJhbGxlbCkKKyAgICAgICAgbG9ja2VkX3NoYXJkcywgdW5sb2NrZWRfc2hhcmRzID0gc2Vs
Zi5fc2hhcmRfdGVzdHMoZmlsZV9saXN0LCBpbnQoc2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNz
ZXMpLCBzZWxmLl9vcHRpb25zLmV4cGVyaW1lbnRhbF9mdWxseV9wYXJhbGxlbCkKIAogICAgICAg
ICAjIEZJWE1FOiBXZSBkb24ndCBoYXZlIGEgZ29vZCB3YXkgdG8gY29vcmRpbmF0ZSB0aGUgd29y
a2VycyBzbyB0aGF0CiAgICAgICAgICMgdGhleSBkb24ndCB0cnkgdG8gcnVuIHRoZSBzaGFyZHMg
dGhhdCBuZWVkIGEgbG9jayBpZiB3ZSBkb24ndCBhY3R1YWxseQpAQCAtNzM4LDE1ICs3MzIsMTIg
QEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICBudW1fd29ya2VycyA9IG1pbihpbnQo
c2VsZi5fb3B0aW9ucy5jaGlsZF9wcm9jZXNzZXMpLCBsZW4oYWxsX3NoYXJkcykpCiAgICAgICAg
IHNlbGYuX2xvZ19udW1fd29ya2VycyhudW1fd29ya2VycywgbGVuKGFsbF9zaGFyZHMpLCBsZW4o
bG9ja2VkX3NoYXJkcykpCiAKLSAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93
b3JrZXJfYnJva2VyLmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYsIHdvcmtlci5X
b3JrZXIpCisgICAgICAgIG1hbmFnZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfd29ya2VyX2Jyb2tl
ci5nZXQoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgc2VsZiwgd29ya2VyLldvcmtlcikKIAog
ICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmRyeV9ydW46Ci0gICAgICAgICAgICByZXR1cm4gKGtl
eWJvYXJkX2ludGVycnVwdGVkLCBpbnRlcnJ1cHRlZCwgdGhyZWFkX3RpbWluZ3MsCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAg
ICAgICAgIHJldHVybiAoa2V5Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRf
dGltaW5ncywgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQogCi0gICAgICAg
IHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyAlcyAuLi4nICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hci5wbHVyYWxpemUoJ3dvcmtlcicsIG51
bV93b3JrZXJzKSkKKyAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5n
ICVzIC4uLicgJSBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVtX3dvcmtlcnMpKQogICAg
ICAgICBmb3Igd29ya2VyX251bWJlciBpbiB4cmFuZ2UobnVtX3dvcmtlcnMpOgogICAgICAgICAg
ICAgd29ya2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX2Nvbm5lY3Rpb24uc3RhcnRfd29ya2VyKHdv
cmtlcl9udW1iZXIpCiAgICAgICAgICAgICB3b3JrZXJfc3RhdGUgPSBfV29ya2VyU3RhdGUod29y
a2VyX251bWJlciwgd29ya2VyX2Nvbm5lY3Rpb24pCkBAIC03NzIsMTAgKzc2Myw2IEBAIGNsYXNz
IE1hbmFnZXIob2JqZWN0KToKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aGlsZSBub3Qg
c2VsZi5pc19kb25lKCk6Ci0gICAgICAgICAgICAgICAgIyBUZW1wb3JhcmlseSBkaXNhYmxlZCB0
byBzZWUgaG93IHRoaXMgY29kZSBlZmZlY3QgcGVyZm9ybWFuY2Ugb24gdGhlIGJ1aWxkYm90cy4K
LSAgICAgICAgICAgICAgICAjIGlmIHNlbGYuX3BvcnQuZXhlY3V0aXZlLnJ1bm5pbmdfcGlkcyhz
ZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKToKLSAgICAgICAgICAgICAgICAjICAgICBzZWxm
Ll9wcmludGVyLnByaW50X3VwZGF0ZSgiV2FpdGluZyBmb3IgY3Jhc2ggcmVwb3J0ZXIgLi4uIikK
LSAgICAgICAgICAgICAgICAjICAgICBzZWxmLl9wb3J0LmV4ZWN1dGl2ZS53YWl0X25ld2VzdChz
ZWxmLl9wb3J0LmlzX2NyYXNoX3JlcG9ydGVyKQogICAgICAgICAgICAgICAgIG1hbmFnZXJfY29u
bmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKGRlbGF5X3NlY3M9MS4wKQogCiAgICAgICAgICAgICAj
IE1ha2Ugc3VyZSBhbGwgb2YgdGhlIHdvcmtlcnMgaGF2ZSBzaHV0IGRvd24gKGlmIHBvc3NpYmxl
KS4KQEAgLTgwOCw4ICs3OTUsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHRo
cmVhZF90aW1pbmdzID0gW3dvcmtlcl9zdGF0ZS5zdGF0cyBmb3Igd29ya2VyX3N0YXRlIGluIHNl
bGYuX3dvcmtlcl9zdGF0ZXMudmFsdWVzKCldCiAKICAgICAgICAgIyBGSVhNRTogc2hvdWxkIHRo
aXMgYmUgYSBjbGFzcyBpbnN0ZWFkIG9mIGEgdHVwbGU/Ci0gICAgICAgIHJldHVybiAoaW50ZXJy
dXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAgICAg
ICAgICBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCisgICAgICAgIHJldHVy
biAoaW50ZXJydXB0ZWQsIGtleWJvYXJkX2ludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywgc2Vs
Zi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQogCiAgICAgZGVmIHVwZGF0ZShzZWxm
KToKICAgICAgICAgc2VsZi51cGRhdGVfc3VtbWFyeShzZWxmLl9jdXJyZW50X3Jlc3VsdF9zdW1t
YXJ5KQpAQCAtOTAyLDE5ICs4ODgsMTMgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAg
ICAgIGVuZF90aW1lID0gdGltZS50aW1lKCkKIAotICAgICAgICBzZWxmLl9wcmludF90aW1pbmdf
c3RhdGlzdGljcyhlbmRfdGltZSAtIHN0YXJ0X3RpbWUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeSkKLQorICAg
ICAgICBzZWxmLl9wcmludF90aW1pbmdfc3RhdGlzdGljcyhlbmRfdGltZSAtIHN0YXJ0X3RpbWUs
IHRocmVhZF90aW1pbmdzLCB0ZXN0X3RpbWluZ3MsIGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBy
ZXN1bHRfc3VtbWFyeSkKICAgICAgICAgc2VsZi5fcHJpbnRfcmVzdWx0X3N1bW1hcnkocmVzdWx0
X3N1bW1hcnkpCiAKICAgICAgICAgc3lzLnN0ZG91dC5mbHVzaCgpCiAgICAgICAgIHN5cy5zdGRl
cnIuZmx1c2goKQogCi0gICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfb25lX2xpbmVfc3VtbWFy
eShyZXN1bHRfc3VtbWFyeS50b3RhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCkKKyAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5KHJlc3VsdF9zdW1tYXJ5
LnRvdGFsLCByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwgcmVzdWx0X3N1bW1hcnkudW5leHBlY3Rl
ZCkKIAogICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhzZWxm
Ll9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1tYXJ5
LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPVRydWUsIGludGVycnVw
dGVkPWludGVycnVwdGVkKQogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VuZXhwZWN0ZWRf
cmVzdWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCkBAIC05MjUsMTAgKzkwNSw5IEBAIGNsYXNzIE1h
bmFnZXIob2JqZWN0KToKIAogICAgICAgICAjIEZJWE1FOiByZW1vdmUgcmVjb3JkX3Jlc3VsdHMu
IEl0J3MganVzdCB1c2VkIGZvciB0ZXN0aW5nLiBUaGVyZSdzIG5vIG5lZWQKICAgICAgICAgIyBm
b3IgaXQgdG8gYmUgYSBjb21tYW5kbGluZSBhcmd1bWVudC4KLSAgICAgICAgaWYgKHNlbGYuX29w
dGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5kCi0g
ICAgICAgICAgICBub3Qga2V5Ym9hcmRfaW50ZXJydXB0ZWQpOgotICAgICAgICAgICAgIyBXcml0
ZSB0aGUgc2FtZSBkYXRhIHRvIGxvZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZp
bGVzCi0gICAgICAgICAgICAjIHRvIGFwcGVuZ2luZSBzZXJ2ZXIuCisgICAgICAgIGlmIChzZWxm
Ll9vcHRpb25zLnJlY29yZF9yZXN1bHRzIGFuZCBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuIGFu
ZCBub3Qga2V5Ym9hcmRfaW50ZXJydXB0ZWQpOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5wcmlu
dF9sZWFrc19zdW1tYXJ5KCkKKyAgICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBs
b2cgZmlsZXMgYW5kIHVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcyB0byBhcHBlbmdpbmUgc2Vy
dmVyLgogICAgICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzID0gc3VtbWFyaXplX3Jlc3VsdHMo
c2VsZi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3Vt
bWFyeSwgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZD1GYWxzZSwgaW50
ZXJydXB0ZWQ9aW50ZXJydXB0ZWQpCiAgICAgICAgICAgICBzZWxmLl91cGxvYWRfanNvbl9maWxl
cyhzdW1tYXJpemVkX3Jlc3VsdHMsIHJlc3VsdF9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGlt
aW5ncykKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvd29ya2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvd29ya2VyLnB5CmluZGV4IDJkNjU4YzBhMWRkODAyYjFiYTc5ZTQwNDVk
MmUzNTM2ZjkzNTRmZTcuLjUxNzgwNDIwMTMxNzEwZmI5ODMxYmQ2MTFiMGU4MjM3N2I4ZTAyNTcg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xs
ZXJzL3dvcmtlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkKQEAgLTEyMCwxNCArMTIwLDYgQEAgY2xhc3MgV29ya2VyKG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgIHNlbGYuX2RvbmUg
PSBUcnVlCiAKICAgICBkZWYgX3J1bl90ZXN0KHNlbGYsIHRlc3RfaW5wdXQpOgotICAgICAgICAj
IEJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0LCB3ZSB3YWl0IGZvciBhbnkgY3Jhc2ggcmVwb3J0ZXJz
IHRvIGZpbmlzaAotICAgICAgICAjIHJ1bm5pbmcuIE9uIE1hYywgUmVwb3J0Q3Jhc2ggY2hld3Mg
dXAgYSBidW5jaCBvZiByZXNvdXJjZXMgYW5kCi0gICAgICAgICMgY2F1c2VzIHRoZSB0ZXN0cyB0
byBiZWNvbWUgdW5zdGFibGUsIHNvIHdlIGRvbid0IHdhbnQgdG8gcnVuIGluCi0gICAgICAgICMg
cGFyYWxsZWwgd2l0aCBSZXBvcnRDcmFzaC4KLSAgICAgICAgIwotICAgICAgICAjIFRlbXBvcmFy
aWx5IGRpc2FibGVkIHRvIHNlZSBob3cgdGhpcyBjb2RlIGVmZmVjdCBwZXJmb3JtYW5jZSBvbiB0
aGUgYnVpbGRib3RzLgotICAgICAgICAjIHNlbGYuX3BvcnQuZXhlY3V0aXZlLndhaXRfbmV3ZXN0
KHNlbGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCi0KICAgICAgICAgdGVzdF90aW1lb3V0X3Nl
YyA9IHNlbGYudGltZW91dCh0ZXN0X2lucHV0KQogICAgICAgICBzdGFydCA9IHRpbWUudGltZSgp
CiAgICAgICAgIHNlbGYuX3dvcmtlcl9jb25uZWN0aW9uLnBvc3RfbWVzc2FnZSgnc3RhcnRlZF90
ZXN0JywgdGVzdF9pbnB1dCwgdGVzdF90aW1lb3V0X3NlYykKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQppbmRleCAxMzJkMWE2MGI4MmI3NmE1
ODA0ZTNhMTIwYTNkODZjNmJmMWUyNmRkLi5mZWMxOWY4ZDc2NWQzODA5ODEzNGRkZTVhNmI4ZDE3
YjE3MjA4NjljIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9iYXNlLnB5CkBAIC0yODgsNiArMjg4LDE0IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAg
ICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKICAgICAgICAgcmV0
dXJuIEZhbHNlCiAKKyAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwg
cHJvY2Vzc19waWQsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICBwYXNzCisKKyAgICBkZWYgcHJp
bnRfbGVha3Nfc3VtbWFyeShzZWxmKToKKyAgICAgICAgIyBTdWJjbGFzc2VzIGNhbiBvdmVycmlk
ZSB0aGlzIHRvIHByaW50IGEgc3VtbWFyeSBvZiBsZWFrcyBmb3VuZAorICAgICAgICAjIHdoaWxl
IHJ1bm5pbmcgdGhlIGxheW91dCB0ZXN0cy4KKyAgICAgICAgcGFzcworCiAgICAgZGVmIGRyaXZl
cl9uYW1lKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBhY3R1YWwg
YmluYXJ5IHRoYXQgaXMgcGVyZm9ybWluZyB0aGUgdGVzdCwKICAgICAgICAgc28gdGhhdCBpdCBj
YW4gYmUgcmVmZXJyZWQgdG8gaW4gbG9nIG1lc3NhZ2VzLiBJbiBtb3N0IGNhc2VzIHRoaXMKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXgg
ZGI0ZDI4NTJmYmQ0YzViMDdhOTBkNmVkMjNhOTU2NTFjY2RiNDQwMi4uNTc0YzI5MTdlNDAzMDJi
M2U2N2E1NWY3ZjI2MzQ4ZTJmNzBlY2I1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTQ3LDggKzQ3LDcgQEAgY2xhc3MgR3RrRHJp
dmVyKHdlYmtpdC5XZWJLaXREcml2ZXIpOgogICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3Bv
cnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgIyBXZSBtdXN0IGRvIHRoaXMg
aGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9uIF93b3JrZXJfbnVtYmVy
CiAgICAgICAgIGVudmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAlIChkaXNwbGF5X2lkKQot
ICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nl
c3Moc2VsZi5fcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2Vs
Zi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKKyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Mg
PSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQsIHNlbGYuX3BvcnQuZHJp
dmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKIAogICAgIGRlZiBzdG9w
KHNlbGYpOgogICAgICAgICB3ZWJraXQuV2ViS2l0RHJpdmVyLnN0b3Aoc2VsZikKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKaW5kZXggOWE1NTFj
NWVkNGE3MmE2MTIxYjFlZDgzMjA0NzQxNDI0MWRjNjAzMC4uZWZjYjUzN2Y1MTBhNDY0N2U1YjU3
NmE1YzFhYzdkMGE1MzFkYTk1MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTMyLDEyICszMiwxMTAgQEAgaW1wb3J0IGxvZ2dpbmcK
IGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3Rl
bS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0
cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogCisjIElmIG90aGVyIHBvcnRzL3BsYXRmb3JtcyBkZWNpZGUgdG8g
c3VwcG9ydCAtLWxlYWtzLCB3ZSBzaG91bGQgc2VlIGFib3V0IHNoYXJpbmcgYXMgbXVjaCBvZiB0
aGlzIGNvZGUgYXMgcG9zc2libGUuCitjbGFzcyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCk6CisgICAgICAgICMgV2Ugc2hvdWxkIG9wZXJhdGUgb24g
YSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVyZS4KKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQK
KyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydC5fZXhlY3V0aXZlCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNlbGYuX2xlYWtzX2ZpbGVu
YW1lcyA9IFtdCisKKyAgICAjIFdlIGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyByZXBvcnRlZCBsZWFr
cyBzbyB0aGV5IGRvIG5vdCBnZXQgaW4gb3VyIHdheSB3aGVuIGxvb2tpbmcgZm9yIFdlYktpdCBs
ZWFrczoKKyAgICAjIFRoaXMgYWxsb3dzIHVzIGlnbm9yZSBrbm93biBsZWFrcyBhbmQgb25seSBi
ZSBhbGVydGVkIHdoZW4gbmV3IGxlYWtzIG9jY3VyLiBTb21lIGxlYWtzIGFyZSBpbiB0aGUgb2xk
CisgICAgIyB2ZXJzaW9ucyBvZiB0aGUgc3lzdGVtIGZyYW1ld29ya3MgdGhhdCBhcmUgYmVpbmcg
dXNlZCBieSB0aGUgbGVha3MgYm90cy4gRXZlbiB0aG91Z2ggYSBsZWFrIGhhcyBiZWVuCisgICAg
IyBmaXhlZCwgaXQgd2lsbCBiZSBsaXN0ZWQgaGVyZSB1bnRpbCB0aGUgYm90IGhhcyBiZWVuIHVw
ZGF0ZWQgd2l0aCB0aGUgbmV3ZXIgZnJhbWV3b3Jrcy4KKyAgICBkZWYgX3R5cGVzX3RvX2V4bHVk
ZV9mcm9tX2xlYWtzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIGFu
eSB0eXBlIGV4Y2x1ZGVzIGZyb20gT1MgbGVha3MsIGJ1dCB3ZSB3aWxsIGxpa2VseSBhZ2FpbiBp
biB0aGUgZnV0dXJlLgorICAgICAgICByZXR1cm4gW10KKworICAgIGRlZiBfY2FsbHN0YWNrc190
b19leGNsdWRlX2Zyb21fbGVha3Moc2VsZik6CisgICAgICAgIGNhbGxzdGFja3MgPSBbCisgICAg
ICAgICAgICAiRmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkiLCAgIyBsZWFrcyBpbiBGbGFzaCBw
bHVnLWluIGNvZGUsIHJkYXI6Ly9wcm9ibGVtLzQ0NDk3NDcKKyAgICAgICAgXQorICAgICAgICBp
ZiBzZWxmLl9wb3J0LmlzX2xlb3BhcmQoKToKKyAgICAgICAgICAgIGNhbGxzdGFja3MgKz0gWwor
ICAgICAgICAgICAgICAgICJDRkhUVFBNZXNzYWdlQXBwZW5kQnl0ZXMiLCAgIyBsZWFrIGluIENG
TmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQzNTkxMgorICAgICAgICAgICAgICAgICJzZW5kRGlk
UmVjZWl2ZURhdGFDYWxsYmFjayIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxl
bS81NDQxNjE5CisgICAgICAgICAgICAgICAgIl9DRkhUVFBSZWFkU3RyZWFtUmVhZE1hcmsiLCAg
IyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQ0MTQ2OAorICAgICAgICAgICAg
ICAgICJodHRwUHJvdG9jb2xTdGFydCIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJv
YmxlbS81NDY4ODM3CisgICAgICAgICAgICAgICAgIl9DRlVSTENvbm5lY3Rpb25TZW5kQ2FsbGJh
Y2tzIiwgICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0NDE2MDAKKyAgICAg
ICAgICAgICAgICAiRGlzcGF0Y2hRVE1zZyIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25s
eSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAgICJRVE1vdmllQ29udGVu
dFZpZXcgY3JlYXRlVmlzdWFsQ29udGV4dCIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25s
eSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAgICJfQ29weUFyY2hpdGVj
dHVyZXNGb3JKVk1WZXJzaW9uIiwgICMgbGVhayBpbiBKYXZhLCByZGFyOi8vcHJvYmxlbS81OTEw
ODIzCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYgc2VsZi5fcG9ydC5pc19zbm93bGVvcGFy
ZCgpOgorICAgICAgICAgICAgY2FsbHN0YWNrcyArPSBbCisgICAgICAgICAgICAgICAgInJlYWRN
YWtlck5vdGVQcm9wcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU2NDMyPiBsZWFrIGluIEltYWdl
SU8KKyAgICAgICAgICAgICAgICAiUVRLaXRNb3ZpZUNvbnRyb2xsZXJWaWV3IGNvbXBsZXRlVUlT
ZXR1cCIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU1MTU2PiBsZWFrIGluIFFUS2l0CisgICAgICAg
ICAgICAgICAgImdldFZNSW5pdEFyZ3MiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzcxNDQ0ND4gbGVh
ayBpbiBKYXZhCisgICAgICAgICAgICAgICAgIkphdmFfamF2YV9sYW5nX1N5c3RlbV9pbml0UHJv
cGVydGllcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83NzE0NDY1PiBsZWFrIGluIEphdmEKKyAgICAg
ICAgICAgICAgICAiZ2xyQ29tcEV4ZWN1dGVLZXJuZWwiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzgx
NTM5MT4gbGVhayBpbiBncmFwaGljcyBkcml2ZXIgd2hpbGUgdXNpbmcgT3BlbkdMCisgICAgICAg
ICAgICAgICAgIk5TTnVtYmVyRm9ybWF0dGVyIGdldE9iamVjdFZhbHVlOmZvclN0cmluZzplcnJv
ckRlc2NyaXB0aW9uOiIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTQ5MzUwPiBMZWFrIGluIE5TTnVt
YmVyRm9ybWF0dGVyCisgICAgICAgICAgICBdCisgICAgICAgIHJldHVybiBjYWxsc3RhY2tzCisK
KyAgICBkZWYgX2xlYWtzX2FyZ3Moc2VsZiwgcGlkKToKKyAgICAgICAgbGVha3NfYXJncyA9IFtd
CisgICAgICAgIGZvciBjYWxsc3RhY2sgaW4gc2VsZi5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zy
b21fbGVha3MoKToKKyAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0
YWNrJywgY2FsbHN0YWNrXQorICAgICAgICBmb3IgZXhjbHVkZWRfdHlwZSBpbiBzZWxmLl90eXBl
c190b19leGx1ZGVfZnJvbV9sZWFrcygpOgorICAgICAgICAgICAgbGVha3NfYXJncyArPSBbJy0t
ZXhjbHVkZS10eXBlJywgZXhjbHVkZWRfdHlwZV0KKyAgICAgICAgbGVha3NfYXJncy5hcHBlbmQo
cGlkKQorICAgICAgICByZXR1cm4gbGVha3NfYXJncworCisgICAgZGVmIF9wYXJzZV9sZWFrc19v
dXRwdXQoc2VsZiwgbGVha3Nfb3V0cHV0LCBwcm9jZXNzX3BpZCk6CisgICAgICAgIGNvdW50LCBi
eXRlcyA9IHJlLnNlYXJjaChyJ1Byb2Nlc3MgJXM6IChcZCspIGxlYWtzPyBmb3IgKFxkKykgdG90
YWwnICUgcHJvY2Vzc19waWQsIGxlYWtzX291dHB1dCkuZ3JvdXBzKCkKKyAgICAgICAgZXhjbHVk
ZWQgPSByZS5zZWFyY2gocicoXGQrKSBsZWFrcz8gZXhjbHVkZWQnLCBsZWFrc19vdXRwdXQpLmdy
b3VwKDApCisgICAgICAgIHJldHVybiBjb3VudCwgZXhjbHVkZWQKKworICAgIGRlZiBsZWFrc19m
aWxlc19pbl9kaXJlY3Rvcnkoc2VsZiwgZGlyZWN0b3J5KToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uZ2xvYihzZWxmLl9maWxlc3lzdGVtLmpvaW4oZGlyZWN0b3J5LCAibGVha3Mt
KiIpKQorCisgICAgZGVmIHBhcnNlX2xlYWtfZmlsZXMoc2VsZik6CisgICAgICAgIG1lcmdlX2Rl
cHRoID0gNSAgIyBPUldUIGhhZCBhIC0tbWVyZ2UtbGVhay1kZXB0aCBhcmd1bWVudCwgYnV0IHRo
YXQgc2VlbXMgb3V0IG9mIHNjb3BlIGZvciB0aGUgcnVuLXdlYmtpdC10ZXN0cyB0b29sLgorICAg
ICAgICBhcmdzID0gWworICAgICAgICAgICAgc2VsZi5fc2NyaXB0X3BhdGgoKSwKKyAgICAgICAg
ICAgICctLW1lcmdlLWRlcHRoJywKKyAgICAgICAgICAgIG1lcmdlX2RlcHRoLAorICAgICAgICBd
ICsgbGVha19maWxlcworICAgICAgICBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQgPSBzZWxm
Ll9wb3J0Ll9ydW5fc2NyaXB0KCJwYXJzZS1tYWxsb2MtaGlzdG9yeSIsIGFyZ3MpCisKKyAgICAg
ICAgdW5pcXVlX2xlYWtfY291bnQgPSBsZW4ocmUuZmluZGFsbChyJ14oXGQqKVxzY2FsbHMnLCBw
YXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQpKQorICAgICAgICB0b3RhbF9ieXRlcyA9IHJlLnNl
YXJjaChyJ150b3RhbFw6XHMoLiopXHNcKCcsIHBhcnNlX21hbGxvY19oaXN0b3J5X291dHB1dCku
Z3JvdXAoMCkKKyAgICAgICAgcmV0dXJuICh0b3RhbF9ieXRlcywgdW5pcXVlX2xlYWtfY291bnQp
CisKKyAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19w
aWQsIHdvcmtlcl9udW1iZXIpOgorICAgICAgICBfbG9nLmluZm8oIiA/IGNoZWNraW5nIGZvciBs
ZWFrcyBpbiAlcyIgJSBwcm9jZXNzX25hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGxl
YWtzX291dHB1dCA9IHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInJ1bi1sZWFrcyIsIHNlbGYuX2xl
YWtzX2FyZ3MocHJvY2Vzc19waWQpKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6Cisg
ICAgICAgICAgICBfbG9nLndhcm4oIkZhaWxlZCB0byBydW4gbGVha3MgdG9vbDogJXMiICUgZSkK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGNvdW50LCBleGNsdWRlZCA9IHNlbGYuX3Bh
cnNlX2xlYWtzX291dHB1dChsZWFrc19vdXRwdXQsIHByb2Nlc3NfcGlkKQorICAgICAgICBhZGp1
c3RlZF9jb3VudCA9IGNvdW50IC0gZXhjbHVkZWQKKyAgICAgICAgaWYgbm90IGFkanVzdGVkX2Nv
dW50OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgbGVha3NfZmlsZW5hbWUgPSAibGVh
a3MtJXMtJXMtJXMudHh0IiAlICh0b29sX25hbWUsIHdvcmtlcl9udW1iZXIsIGxlbihzZWxmLl9s
ZWFrc19maWxlbmFtZXMpKQorICAgICAgICBsZWFrc19vdXRwdXRfcGF0aCA9IHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIGxlYWtzX2ZpbGVuYW1l
KQorICAgICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsZWFrc19maWxlX3Bh
dGgsIGxlYWtzX291dHB1dCkKKyAgICAgICAgc2VsZi5fbGVha3NfZmlsZW5hbWVzLmFwcGVuZChs
ZWFrc19maWxlX3BhdGgpCisKKyAgICAgICAgaWYgZXhjbHVkZWQ6CisgICAgICAgICAgICBfbG9n
Lndhcm4oIiArICVzIGxlYWtzICglcyBieXRlcyBpbmNsdWRpbmcgJXMgZXhjbHVkZWQgbGVha3Mp
IHdlcmUgZm91bmQsIGRldGFpbHMgaW4gJXMiICUgKGFkanVzdGVkX2NvdW50LCBieXRlcywgZXhj
bHVkZWQsIGxlYWtzX2ZpbGVfcGF0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfbG9n
Lndhcm4oIiArICVzIGxlYWtzICglcyBieXRlcykgd2VyZSBmb3VuZCwgZGV0YWlscyBpbiAlcyIg
JSAoY291bnQsIGJ5dGVzLCBsZWFrc19maWxlX3BhdGgpKQorCisKIGRlZiBvc192ZXJzaW9uKG9z
X3ZlcnNpb25fc3RyaW5nPU5vbmUsIHN1cHBvcnRlZF92ZXJzaW9ucz1Ob25lKToKICAgICBpZiBu
b3Qgb3NfdmVyc2lvbl9zdHJpbmc6CiAgICAgICAgIGlmIGhhc2F0dHIocGxhdGZvcm0sICdtYWNf
dmVyJykgYW5kIHBsYXRmb3JtLm1hY192ZXIoKVswXToKQEAgLTkyLDYgKzE5MCw3IEBAIGNsYXNz
IE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICBzZWxmLl92ZXJzaW9uID0gcG9ydF9u
YW1lW2xlbignbWFjLScpOl0KICAgICAgICAgICAgIGFzc2VydCBzZWxmLl92ZXJzaW9uIGluIHNl
bGYuU1VQUE9SVEVEX1ZFUlNJT05TLCAiJXMgaXMgbm90IGluICVzIiAlIChzZWxmLl92ZXJzaW9u
LCBzZWxmLlNVUFBPUlRFRF9WRVJTSU9OUykKICAgICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3Rl
bSA9ICdtYWMnCisgICAgICAgIHNlbGYuX2xlYWtfZGV0ZWN0b3IgPSBMZWFrRGV0ZWN0b3Ioc2Vs
ZikKIAogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKICAgICAgICAgc2VhcmNo
X3BhdGhzID0gc2VsZi5GQUxMQkFDS19QQVRIU1tzZWxmLl92ZXJzaW9uXQpAQCAtOTksMTcgKzE5
OCw0NyBAQCBjbGFzcyBNYWNQb3J0KFdlYktpdFBvcnQpOgogICAgICAgICAgICAgc2VhcmNoX3Bh
dGhzLmluc2VydCgwLCBzZWxmLl93azJfcG9ydF9uYW1lKCkpCiAgICAgICAgIHJldHVybiBtYXAo
c2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKIAorICAgIGRlZiBzZXR1
cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZik6CisgICAgICAgIGVudiA9IFdlYktpdFBvcnQuc2V0
dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYpCisgICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbign
bGVha3MnKToKKyAgICAgICAgICAgIGVudlsnTWFsbG9jU3RhY2tMb2dnaW5nJ10gPSAnMScKKyAg
ICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdndWFyZF9tYWxsb2MnKToKKyAgICAgICAgICAgIGVu
dlsnRFlMRF9JTlNFUlRfTElCUkFSSUVTJ10gPSAnL3Vzci9saWIvbGliZ21hbGxvYy5keWxpYicK
KyAgICAgICAgcmV0dXJuIGVudgorCisgICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0
LgorICAgIGRlZiBpc19sZW9wYXJkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lv
biA9PSAibGVvcGFyZCIKKworICAgICMgQmVsb25ncyBvbiBhIFBsYXRmb3JtIG9iamVjdC4KKyAg
ICBkZWYgaXNfc25vd2xlb3BhcmQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJzaW9u
ID09ICJzbm93bGVvcGFyZCIKKworICAgICMgQmVsb25ncyBvbiBhIFBsYXRmb3JtIG9iamVjdC4K
ICAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwgcHJvY2Vzc19uYW1lKToKICAgICAgICAg
cmV0dXJuIHJlLnNlYXJjaChyJ1JlcG9ydENyYXNoJywgcHJvY2Vzc19uYW1lKQogCiAgICAgZGVm
IF9idWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydChzZWxmKToKICAgICAgICAgamF2YV90ZXN0c19wYXRo
ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpLCAiamF2YSIp
CiAgICAgICAgIGJ1aWxkX2phdmEgPSBbIi91c3IvYmluL21ha2UiLCAiLUMiLCBqYXZhX3Rlc3Rz
X3BhdGhdCi0gICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChidWlsZF9qYXZh
LCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgorICAgICAgICBpZiBzZWxmLl9leGVjdXRpdmUucnVu
X2NvbW1hbmQoYnVpbGRfamF2YSwgcmV0dXJuX2V4aXRfY29kZT1UcnVlKTogICMgUGF0aHMgYXJl
IGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHNldCBhIGN3ZC4KICAgICAgICAgICAgIF9s
b2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBKYXZhIHN1cHBvcnQgZmlsZXM6ICVzIiAlIGJ1aWxk
X2phdmEpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIFRydWUKIAor
ICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCwg
d29ya2VyX251bWJlcik6CisgICAgICAgIHNlbGYuX2xlYWtfZGV0ZWN0b3IuY2hlY2tfZm9yX2xl
YWtzKHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQsIHdvcmtlcl9udW1iZXIpCisKKyAgICBkZWYg
cHJpbnRfbGVha3Nfc3VtbWFyeShzZWxmKToKKyAgICAgICAgIyBXZSdyZSBpbiB0aGUgbWFuYWdl
ciBwcm9jZXNzLCBzbyB0aGUgbGVhayBkZXRlY3RvciB3aWxsIG5vdCBoYXZlIGEgdmFsaWQgbGlz
dCBvZiBsZWFrIGZpbGVzLgorICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjaywgYnV0IHdl
IGRvbid0IGhhdmUgYSBiZXR0ZXIgd2F5IHRvIGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gdGhl
IHdvcmtlcnMgeWV0LgorICAgICAgICBsZWFrc19maWxlcyA9IHNlbGYuX2xlYWtfZGV0ZWN0b3Iu
bGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkKKyAgICAg
ICAgaWYgbm90IGxlYWtzX2ZpbGVzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRvdGFs
X2J5dGVzLCB1bmlxdWVfbGVha3MgPSBzZWxmLnBhcnNlX2xlYWtfZmlsZXMoKQorICAgICAgICBf
bG9nLndhcm4oIiVzIHRvdGFsIGxlYWtzIGZvdW5kIGZvciBhIHRvdGFsIG9mICVzISIgJSAoc2Vs
Zi5fdG90YWxfbGVha3MsIHRvdGFsX2J5dGVzKSkKKyAgICAgICAgX2xvZy53YXJuKCIlcyB1bmlx
dWUgbGVha3MgZm91bmQhIiAlIHVuaXF1ZV9sZWFrcykKKwogICAgIGRlZiBfY2hlY2tfcG9ydF9i
dWlsZChzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX2phdmFfdGVzdF9zdXBwb3J0
KCkKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9zZXJ2ZXJfcHJvY2Vzcy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKaW5kZXggMDRiMDVhOWZjNDYzMzMyMmNmNDViY2VjNDIx
NGYyYTZkMDFiYzRlZi4uZDA2NDlmNjdhZTM3NDhkNDhlZDc5MDg0YjMwODM5NGZhMWRiOTc4NCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2
ZXJfcHJvY2Vzcy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L3NlcnZlcl9wcm9jZXNzLnB5CkBAIC01NCwxMiArNTQsMTggQEAgY2xhc3MgU2VydmVyUHJv
Y2VzczoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgbmFtZSwgY21kLCBlbnY9
Tm9uZSwgZXhlY3V0aXZlPUV4ZWN1dGl2ZSgpKToKICAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnRf
b2JqCi0gICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCisgICAgICAgIHNlbGYuX25hbWUgPSBuYW1l
ICAjIFNob3VsZCBiZSB0aGUgY29tbWFuZCBuYW1lIChlLmcuIER1bXBSZW5kZXJUcmVlLCBJbWFn
ZURpZmYpCiAgICAgICAgIHNlbGYuX2NtZCA9IGNtZAogICAgICAgICBzZWxmLl9lbnYgPSBlbnYK
ICAgICAgICAgc2VsZi5fcmVzZXQoKQogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBleGVjdXRp
dmUKIAorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fbmFtZQorCisg
ICAgZGVmIHBpZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3Byb2MucGlkCisKICAgICBk
ZWYgX3Jlc2V0KHNlbGYpOgogICAgICAgICBzZWxmLl9wcm9jID0gTm9uZQogICAgICAgICBzZWxm
Ll9vdXRwdXQgPSAnJwpAQCAtMjE2LDkgKzIyMiw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAg
ICAgICAgICAgICAgICAgcmV0dXJuIG91dHB1dAogCiAgICAgICAgICAgICAjIE5vcGUgLSB3YWl0
IGZvciBtb3JlIGRhdGEuCi0gICAgICAgICAgICAocmVhZF9mZHMsIHdyaXRlX2ZkcywgZXJyX2Zk
cykgPSBzZWxlY3Quc2VsZWN0KHNlbGVjdF9mZHMsIFtdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RfZmRzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWFk
bGluZSAtIG5vdykKKyAgICAgICAgICAgIChyZWFkX2Zkcywgd3JpdGVfZmRzLCBlcnJfZmRzKSA9
IHNlbGVjdC5zZWxlY3Qoc2VsZWN0X2ZkcywgW10sIHNlbGVjdF9mZHMsIGRlYWRsaW5lIC0gbm93
KQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGlmIG91dF9mZCBpbiByZWFkX2Zk
czoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3V0cHV0ICs9IHNlbGYuX3Byb2Muc3Rkb3V0
LnJlYWQoKQpAQCAtMjQ4LDggKzI1Miw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAgICAg
ICAgICB3aGlsZSBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lIGFuZCB0aW1lLnRpbWUoKSA8IHRp
bWVvdXQ6CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgICAgICBpZiBz
ZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIF9sb2cud2FybmluZygn
c3RvcHBpbmcgJXMgdGltZWQgb3V0LCBraWxsaW5nIGl0JyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX25hbWUpCisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdzdG9w
cGluZyAlcyB0aW1lZCBvdXQsIGtpbGxpbmcgaXQnICUgc2VsZi5fbmFtZSkKICAgICAgICAgICAg
ICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQogICAgICAg
ICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykKICAgICAgICAgc2VsZi5fcmVzZXQoKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJr
aXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eQppbmRleCA0NWZmYjIzY2Y4NTg4OGMzZTAwNmIyZGNiMTE0ZDM5NGFkMjVhMTNmLi42ZGY0YzJi
MjMwNWQzMmM1Yjg0ZjUxZDMwYTZhZGNjNDQ4MGZjMTI1IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNTUsNyArNTUsOSBA
QCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHBpeGVs
IHRlc3RzIHVudGlsIHRoZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5vcmcu
CiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNlKQog
ICAgICAgICAjIFdlYktpdCBwb3J0cyBleHBlY3QgYSAzNXMgdGltZW91dCwgb3IgMzUwcyB0aW1l
b3V0IHdoZW4gcnVubmluZyB3aXRoIC1nLy0tZ3VhcmQtbWFsbG9jLgotICAgICAgICBzZWxmLnNl
dF9vcHRpb25fZGVmYXVsdCgidGltZV9vdXRfbXMiLCAzNTAwMCkKKyAgICAgICAgIyBGSVhNRTog
LS1ndWFyZC1tYWxsb2MgaXMgb25seSBzdXBwb3J0ZWQgb24gTWFjLCBzbyB0aGlzIGxvZ2ljIHNo
b3VsZCBiZSBpbiBtYWMucHkuCisgICAgICAgIGRlZmF1bHRfdGltZV9vdXRfc2Vjb25kcyA9IDM1
MCBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxvYycpIGVsc2UgMzUKKyAgICAgICAgc2Vs
Zi5zZXRfb3B0aW9uX2RlZmF1bHQoInRpbWVfb3V0X21zIiwgZGVmYXVsdF90aW1lX291dF9zZWNv
bmRzICogMTAwMCkKIAogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYgc2Vs
Zi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKQEAgLTExNSw3ICsxMTcsNyBAQCBj
bGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4
dGVuZChzZWxmLl9hcmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSkKICAgICAgICAgaWYgYXJn
czoKICAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJncykKLSAgICAgICAg
cmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQsIGN3
ZD1zZWxmLl9jb25maWcud2Via2l0X2Jhc2VfZGlyKCkpICAjIEl0J3MgdW5jbGVhciBpZiBzZXR0
aW5nIGN3ZCBpcyBuZWNlc3NhcnkgZm9yIGFsbCBjYWxsZXJzLgorICAgICAgICByZXR1cm4gc2Vs
Zi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYuX2Nv
bmZpZy53ZWJraXRfYmFzZV9kaXIoKSkKIAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgog
ICAgICAgICB0cnk6CkBAIC00NTIsOSArNDU0LDkgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZl
cik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5wb2xsKCkKIAogICAgIGRl
ZiByZXN0YXJ0KHNlbGYpOgorICAgICAgICBzZWxmLl9wb3J0LmNoZWNrX2Zvcl9sZWFrcyhzZWxm
Ll9zZXJ2ZXJfcHJvY2Vzcy5uYW1lKCksIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnBpZCgpLCBzZWxm
Ll93b3JrZXJfbnVtYmVyKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKICAg
ICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RhcnQoKQotICAgICAgICByZXR1cm4KIAogICAg
IGRlZiBkZXRlY3RlZF9jcmFzaChzZWxmKToKICAgICAgICAgIyBGSVhNRTogV2UgY2FuJ3QganVz
dCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIGZvciB0d28gcmVhc29uczoKQEAg
LTU1Niw2ICs1NTgsNyBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKIAogICAgIGRlZiBz
dG9wKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9zZXJ2ZXJfcHJvY2VzczoKKyAgICAgICAgICAg
IHNlbGYuX3BvcnQuY2hlY2tfZm9yX2xlYWtzKHNlbGYuX3NlcnZlcl9wcm9jZXNzLm5hbWUoKSwg
c2VsZi5fc2VydmVyX3Byb2Nlc3MucGlkKCksIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAg
ICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdG9wKCkKICAgICAgICAgICAgIHNlbGYuX3NlcnZl
cl9wcm9jZXNzID0gTm9uZQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCA4MGExNWIyY2JhNDEzODNlZDBh
ZjFiZTNhYjBiOTVlZGZjZTEwOWQwLi5jNzQ0NTU4ODYyYjU1MDY5ZDg2ZTU2ZjIyYjFmNThiZDhh
YzE3MzgzIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTI0MSwyMiArMjQxLDIwIEBAIGRlZiBwYXJzZV9h
cmdzKGFyZ3M9Tm9uZSk6CiAgICAgICAgICAgICBoZWxwPSJGb3JjZSBnYXJiYWdlIGNvbGxlY3Rp
b24gYmV0d2VlbiBlYWNoIHRlc3QiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0t
Y29tcGxleC10ZXh0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAg
ICAgICAgIGhlbHA9IlVzZSB0aGUgY29tcGxleCB0ZXh0IGNvZGUgcGF0aCBmb3IgYWxsIHRleHQg
KE1hYyBPUyBYIGFuZCBXaW5kb3dzIG9ubHkpIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0
aW9uKCItbCIsICItLWxlYWtzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwK
KyAgICAgICAgICAgIGhlbHA9IkVuYWJsZSBsZWFrcyBjaGVja2luZyAoTWFjIE9TIFggb25seSki
KSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi1nIiwgIi0tZ3VhcmQtbWFsbG9jIiwg
YWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9IkVu
YWJsZSBtYWxsb2MgZ3VhcmQgKE1hYyBPUyBYIG9ubHkpIiksCiAgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCItLXRocmVhZGVkIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxz
ZSwKICAgICAgICAgICAgIGhlbHA9IlJ1biBhIGNvbmN1cnJlbnQgSmF2YVNjcmlwdCB0aHJlYWQg
d2l0aCBlYWNoIHRlc3QiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td2Via2l0
LXRlc3QtcnVubmVyIiwgIi0yIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgIGhl
bHA9IlVzZSBXZWJLaXRUZXN0UnVubmVyIHJhdGhlciB0aGFuIER1bXBSZW5kZXJUcmVlLiIpLAog
ICAgIF0KIAotICAgICMgTWlzc2luZyBNYWMtc3BlY2lmaWMgb2xkLXJ1bi13ZWJraXQtdGVzdHMg
b3B0aW9uczoKLSAgICAjIEZJWE1FOiBOZWVkOiAtZywgLS1ndWFyZCBmb3IgZ3VhcmQgbWFsbG9j
IHN1cHBvcnQgb24gTWFjLgotICAgICMgRklYTUU6IE5lZWQ6IC1sIC0tbGVha3MgICAgRW5hYmxl
IGxlYWtzIGNoZWNraW5nLgotCiAgICAgb2xkX3J1bl93ZWJraXRfdGVzdHNfY29tcGF0ID0gWwog
ICAgICAgICAjIEZJWE1FOiBSZW1vdmUgdGhpcyBvcHRpb24gb25jZSB0aGUgYm90cyBkb24ndCBy
ZWZlciB0byBpdC4KICAgICAgICAgIyByZXN1bHRzLmh0bWwgaXMgc21hcnQgZW5vdWdoIHRvIGZp
Z3VyZSB0aGlzIG91dCBpdHNlbGYuCiAgICAgICAgIF9jb21wYXRfc2hpbV9vcHRpb24oIi0tdXNl
LXJlbW90ZS1saW5rcy10by10ZXN0cyIpLAotICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgbGVh
ayBkZXRlY3Rpb24uCi0gICAgICAgIF9jb21wYXRfc2hpbV9vcHRpb24oIi0tbGVha3MiKSwKICAg
ICBdCiAKICAgICByZXN1bHRzX29wdGlvbnMgPSBbCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101233</attachid>
            <date>2011-07-18 16:49:53 -0700</date>
            <delta_ts>2011-07-18 17:51:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63832-20110718164951.patch</filename>
            <type>text/plain</type>
            <size>39168</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmODIxMGVjNWM1YTNiYTY5MjkzMjMzMjhlMDM2NDE2YTlh
NWM5MmUxLi43OTM5NWRiZjlhMWZkYjdkNmExNmFhZDlmYjk4MWI1ZWY0NDlmNjkyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTEtMDctMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYXkgbm90IGJlIHN1ZmZp
Y2llbnQgdG8gYWN0dWFsbHkgdHJhbnNpdGlvbiBvdmVyIHRoZSBsZWFrcyBib3QsCisgICAgICAg
IGJ1dCB0aGlzIGlzIGEgaHVnZSBzdGVwIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAgICAg
ICAgSSBoYWQgdG8gbWFrZSBwYXJzZS1tYWxsb2MtaGlzdG9yeSB1bmRlcnN0YW5kIGJlaW5nIHBh
c3NlZCBtb3JlIHRoYW4KKyAgICAgICAgb25lIGZpbGUgKHRvIGF2b2lkIHRoZSBzaWxseSBjYXQg
fCBub25zZW5zZSBpbiBvbGQtcnVuLXdlYmtpdC10ZXN0cykuCisKKyAgICAgICAgSSByZW1vdmVk
IHNvbWUgZGVhZCBjb2RlIHJlbGF0aW5nIHRvIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2Ygb3VyIGNy
YXNoIGRldGVjdGlvbi4KKworICAgICAgICBJIGNyZWF0ZWQgYSBuZXcgY2xhc3MgIkxlYWtEZXRl
Y3RvciIgdG8gZW5jYXBzdWxhdGUgYWxsIHRoaXMgbG9naWMuCisgICAgICAgIEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGNvbnNpZGVyIHB1bGxpbmcgdGhhdCBjbGFzcyBvdXQgb2YgbWFjLnB5IGFuZAor
ICAgICAgICBzaGFyaW5nIHdpdGggb3RoZXIgcG9ydHMuICBIb3dldmVyIGdpdmVuIHRoYXQgT1JX
VCBoYXMgaGFkCisgICAgICAgIC0tbGVha3Mgc3VwcG9ydCBvbiBNYWMgZm9yIGFsbW9zdCA3IHll
YXJzIGFuZCBubyBvdGhlciBwb3J0IGhhcyBhZGRlZAorICAgICAgICBpdCwgbGVhdmVzIG1lIHRv
IGJlbGlldmUgd2UncmUgaW4gbm8gcnVzaCB0byBtb3ZlIExlYWtEZXRlY3Rvci4KKworICAgICAg
ICBJJ3ZlIHRlc3RlZCAtLWxlYWtzIGxvY2FsbHkuICBJIHN1c3BlY3QgdGhlcmUgYXJlIG1vcmUg
YnVncyB0byBzaGFrZSBvdXQKKyAgICAgICAgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91
Z2ggdG8gc3RhcnQuCisKKyAgICAgICAgSSBhbHNvIGFkZGVkIHN1cHBvcnQgZm9yIC0tZ3VhcmQt
bWFsbG9jLCBidXQgaGF2ZSBub3QgdGVzdGVkIGl0IG11Y2guICBJdAorICAgICAgICBzaG91bGQg
YmUgdmlld2VkIGFzIGV4cGVyaW1lbnRhbCBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgSSBhbHNv
IGZpeGVkIHZhcmlvdXMgb3MucGF0aCB1c2VzIHRvIHNlbGYuX2ZpbGVzeXN0ZW0gYXMgSSB3YXMg
cmVhZGluZworICAgICAgICB0aHJvdWdoIHRoZSB2YXJpb3VzIGZpbGVzIHRvIHVuZGVyc3RhbmQg
aG93IGJlc3QgdG8gZml4IHRoaXMgYnVnLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKHBhcnNlTGVha3NhbmRQcmludFVuaXF1ZUxlYWtzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3dvcmtlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorCisyMDExLTA3LTE4ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVu
dCBkb2VzIG5vdCB3b3JrIHdoZW4gbm90IGNhbGxlZCBmcm9tIHRoZSByb290IG9mIHRoZSBjaGVj
a291dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3
NTEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggMDA5ZTQ2MmQ3NTAwYmFiNThm
OGI4YWJlNDg3YzQ2MjZkNTcwNzg2OC4uNzNiNzA5NGIyNzU5ZDc1ZGUzZjMxNGNiZjY5NDc4ZGEy
NDFlODI3NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC0yMjQxLDcgKzIyNDEs
NyBAQCBzdWIgZXBpbG9ndWVzQW5kUHJvbG9ndWVzKCQkKQogc3ViIHBhcnNlTGVha3NhbmRQcmlu
dFVuaXF1ZUxlYWtzKCkKIHsKICAgICByZXR1cm4gdW5sZXNzIEBsZWFrc0ZpbGVuYW1lczsKLSAg
ICAgCisKICAgICBteSAkbWVyZ2VkRmlsZW5hbWVzID0gam9pbiAiICIsIEBsZWFrc0ZpbGVuYW1l
czsKICAgICBteSAkcGFyc2VNYWxsb2NIaXN0b3J5VG9vbCA9IHNvdXJjZURpcigpIC4gIi9Ub29s
cy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5IjsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkgYi9Ub29scy9TY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5CmluZGV4IDE3N2RlMWM5MDNjZjZkMjUxMWQ4ZjQ0ZmI3YzdjODFmNDdjYTFkZTIu
LmQyNTdmOWZlMTgyMGRlYjIwZWYyYjE2ZGU1N2I3ZWNmOWQyZmEzNGYgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkKKysrIGIvVG9vbHMvU2NyaXB0cy9wYXJz
ZS1tYWxsb2MtaGlzdG9yeQpAQCAtNTcsMTggKzU3LDIwIEBAIHN1YiBtYWluKCkKICAgICAgICAg
Im1lcmdlLXJlZ2V4cDpzIiA9PiBcQG1lcmdlUmVnZXhwcywKICAgICAgICAgIm1lcmdlLWRlcHRo
OmkiID0+IFwkbWVyZ2VEZXB0aAogICAgICk7Ci0gICAgbXkgJGZpbGVOYW1lID0gJEFSR1ZbMF07
Ci0gICAgZGllICR1c2FnZSBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICEkZmlsZU5hbWUpOwor
ICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhc2NhbGFyKEBBUkdWKSk7
CiAKLSAgICBvcGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAkZmlsZU5h
bWUiOwotICAgIG15IEBmaWxlID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7CisgICAgbXkgQGxp
bmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkZmlsZU5hbWUgKEBBUkdWKSB7CisgICAgICAgIG9w
ZW4gRklMRSwgIjwkZmlsZU5hbWUiIG9yIGRpZSAiYmFkIGZpbGU6ICRmaWxlTmFtZSI7CisgICAg
ICAgIHB1c2goQGxpbmVzLCA8RklMRT4pOworICAgICAgICBjbG9zZSBGSUxFOworICAgIH0KIAog
ICAgIG15ICVjYWxsc3RhY2tzID0gKCk7CiAgICAgbXkgJGJ5dGVDb3VudFRvdGFsID0gMDsKIAot
ICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBmaWxlOyAkaSsrKSB7Ci0gICAgICAgIG15ICRsaW5l
ID0gJGZpbGVbJGldOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaW5lczsgJGkrKykgewor
ICAgICAgICBteSAkbGluZSA9ICRsaW5lc1skaV07CiAgICAgICAgIG15ICgkY2FsbENvdW50LCAk
Ynl0ZUNvdW50KTsKIAogICAgICAgICAjIEZpcnN0IHRyeSBtYWxsb2NfaGlzdG9yeSBmb3JtYXQK
QEAgLTg2LDcgKzg4LDcgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgaWYgKCRieXRlQ291bnQp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAoISgkbGluZSA9fiAiQ2FsbCBzdGFjazogIikpIHsK
ICAgICAgICAgICAgICAgICAgICAgJGkrKzsKLSAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSAk
ZmlsZVskaV07CisgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDE1ICsxMDEsMTUg
QEAgc3ViIG1haW4oKQogICAgICAgICAgICAgJGNhbGxDb3VudCA9IDE7CiAgICAgICAgICAgICAo
JGJ5dGVDb3VudCkgPSAoJGxpbmUgPX4gL0tleTogKD86XGQrKSwgKFxkKykgYnl0ZXMvKTsKICAg
ICAgICAgICAgIGlmICgkYnl0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAkZmls
ZVsrKyRpXTsKKyAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAgICAgICAg
ICAgICAgICBteSBAdGVtcFN0YWNrOwotICAgICAgICAgICAgICAgIHdoaWxlICgkZmlsZVskaSsx
XSAhfiAvXig/Oi18XGQpLykgeworICAgICAgICAgICAgICAgIHdoaWxlICgkbGluZXNbJGkrMV0g
IX4gL14oPzotfFxkKS8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9cKTog
KC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbCA9ICQxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGNhbGwgPX4gcy9cciQvLzsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2hpZnQoQHRlbXBTdGFjaywgJGNhbGwpOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGZpbGVbKyskaV07CisgICAgICAgICAgICAgICAg
ICAgICRsaW5lID0gJGxpbmVzWysrJGldOwogICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkbGluZSA9IGpvaW4oIiB8ICIsIEB0ZW1wU3RhY2spOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHkKaW5kZXggZmRjODViNzU1ZTUxOWRmNDkwYzJiMjA1N2IyODQ2OWIxZmQ2ZmU5My4u
YjlmOGFlYjllYTAyOTFiY2EyZWE1ODQ2MTE4N2E1ZjM4N2RjMGM4YyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CkBAIC0yNiwxNSAr
MjYsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiAKIAotZGVmIF9pc19jcmFzaF9yZXBvcnRlcihwcm9jZXNzX25h
bWUpOgotICAgIHJldHVybiByZS5tYXRjaChyIlJlcG9ydENyYXNoIiwgcHJvY2Vzc19uYW1lKQot
Ci0KIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtKToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KQEAgLTQ1LDEx
ICs0MCwxMSBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKIAogICAgIGRlZiBfbG9nX2RpcmVj
dG9yeV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lz
dGVtLmV4cGFuZHVzZXIoIn4iKQotICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQotICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhvcy5wYXRoLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBv
cnRzIikpOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihsb2dfZGly
ZWN0b3J5LCAiRGlhZ25vc3RpY1JlcG9ydHMiKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9n
X2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikpOgorICAgICAgICAgICAgbG9nX2RpcmVj
dG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiRGlhZ25vc3RpY1Jl
cG9ydHMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihsb2dfZGlyZWN0b3J5LCAiQ3Jhc2hSZXBvcnRlciIpCisgICAgICAgICAgICBsb2df
ZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJDcmFzaFJl
cG9ydGVyIikKICAgICAgICAgcmV0dXJuIGxvZ19kaXJlY3RvcnkKIAogICAgIGRlZiBfZmluZF9u
ZXdlc3RfbG9nX2RhcndpbihzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNTksNSArNTQsNSBAQCBj
bGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2xv
Z19kaXJlY3RvcnlfZGFyd2luKCkKICAgICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmls
ZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hfbG9nKQogICAgICAg
ICBpZiBub3QgbG9nczoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc29ydGVk
KGxvZ3MpWy0xXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDhmM2E2ZGE5YTcxMTAzY2IwNTNl
N2JhMDA5NjY1MTFiOWRiNWJlNTUuLjc2NGJjMzhiYTM4NzQwOGIwZTVhOWVmNDdkNGU4MzE1MmMz
MWY5NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDkzLDE2ICs0OTMsMTEgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2tpcF9jaHVuayA9
IHNraXBwZWQKIAotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5f
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmsp
Ci0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3Vt
bWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAg
ICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnks
Ci0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAg
ICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0g
ICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2Vs
Zi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQorICAgICAgICByZXN1bHRf
c3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBzZWxmLl90ZXN0X2Zp
bGVzIHwgc2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19v
Zl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikK
KyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1t
YXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQorICAgICAgICBzZWxmLl9w
cmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0
YXRpb25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1
bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lw
cGVkIikKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgogICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAn
CkBAIC03MTksOCArNzE0LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB0aHJl
YWRfdGltaW5ncyA9IFtdCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1No
YXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJk
cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9v
cHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5
X3BhcmFsbGVsKQorICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxm
Ll9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQogCiAgICAgICAg
ICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3Jr
ZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0
aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CkBAIC03MzgsMTUgKzczMiwxMiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKGludChz
ZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIGxlbihhbGxfc2hhcmRzKSkKICAgICAgICAg
c2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxlbihs
b2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldv
cmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLCBzZWxmLCB3b3JrZXIuV29ya2VyKQogCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVybiAoa2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAg
ICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90
aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVt
X3dvcmtlcnMpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcg
JXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCiAgICAg
ICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29y
a2VyX251bWJlcikKICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3Jr
ZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKQEAgLTc3MiwxMCArNzYzLDYgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdoaWxlIG5vdCBz
ZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFRlbXBvcmFyaWx5IGRpc2FibGVkIHRv
IHNlZSBob3cgdGhpcyBjb2RlIGVmZmVjdCBwZXJmb3JtYW5jZSBvbiB0aGUgYnVpbGRib3RzLgot
ICAgICAgICAgICAgICAgICMgaWYgc2VsZi5fcG9ydC5leGVjdXRpdmUucnVubmluZ19waWRzKHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpOgotICAgICAgICAgICAgICAgICMgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCJXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlciAuLi4iKQot
ICAgICAgICAgICAgICAgICMgICAgIHNlbGYuX3BvcnQuZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCiAgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25u
ZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCiAKICAgICAgICAgICAgICMg
TWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUp
LgpAQCAtODA4LDggKzc5NSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2Vs
Zi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KIAogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhp
cyBiZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1
cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAgICAgcmV0dXJu
IChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxm
Ll9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYp
OgogICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnkpCkBAIC05MDIsMTkgKzg4OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQogCi0gICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19z
dGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotCisgICAg
ICAgIHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwg
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJl
c3VsdF9zdW1tYXJ5KQogICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeShyZXN1bHRf
c3VtbWFyeSkKIAogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5
KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnku
dG90YWwsIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVk
KQogCiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnks
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSwgaW50ZXJydXB0
ZWQ9aW50ZXJydXB0ZWQpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9y
ZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKQEAgLTkyNSwxMCArOTA1LDkgQEAgY2xhc3MgTWFu
YWdlcihvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4g
SXQncyBqdXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAogICAgICAgICAjIGZv
ciBpdCB0byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy5yZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAg
ICAgICAgICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRl
IHRoZSBzYW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmls
ZXMKLSAgICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KKyAgICAgICAgaWYgKHNlbGYu
X29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5k
IG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6CisgICAgICAgICAgICBzZWxmLl9wb3J0LnByaW50
X2xlYWtzX3N1bW1hcnkoKQorICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzIHRvIGFwcGVuZ2luZSBzZXJ2
ZXIuCiAgICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhz
ZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1t
YXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNlLCBpbnRl
cnJ1cHRlZD1pbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVz
KHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5kZXggMmQ2NThjMGExZGQ4MDJiMWJhNzllNDA0NWQy
ZTM1MzZmOTM1NGZlNy4uNTE3ODA0MjAxMzE3MTBmYjk4MzFiZDYxMWIwZTgyMzc3YjhlMDI1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlci5weQpAQCAtMTIwLDE0ICsxMjAsNiBAQCBjbGFzcyBXb3JrZXIobWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fZG9uZSA9
IFRydWUKIAogICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMg
QmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHdlIHdhaXQgZm9yIGFueSBjcmFzaCByZXBvcnRlcnMg
dG8gZmluaXNoCi0gICAgICAgICMgcnVubmluZy4gT24gTWFjLCBSZXBvcnRDcmFzaCBjaGV3cyB1
cCBhIGJ1bmNoIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgIyBjYXVzZXMgdGhlIHRlc3RzIHRv
IGJlY29tZSB1bnN0YWJsZSwgc28gd2UgZG9uJ3Qgd2FudCB0byBydW4gaW4KLSAgICAgICAgIyBw
YXJhbGxlbCB3aXRoIFJlcG9ydENyYXNoLgotICAgICAgICAjCi0gICAgICAgICMgVGVtcG9yYXJp
bHkgZGlzYWJsZWQgdG8gc2VlIGhvdyB0aGlzIGNvZGUgZWZmZWN0IHBlcmZvcm1hbmNlIG9uIHRo
ZSBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fcG9ydC5leGVjdXRpdmUud2FpdF9uZXdlc3Qo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLQogICAgICAgICB0ZXN0X3RpbWVvdXRfc2Vj
ID0gc2VsZi50aW1lb3V0KHRlc3RfaW5wdXQpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkK
ICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rl
c3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDEzMmQxYTYwYjgyYjc2YTU4
MDRlM2ExMjBhM2Q4NmM2YmYxZTI2ZGQuLjBhYmFkYWUwOWM1YjI0NmUzYWZjNTU4NWI4ZDhjYTc1
ZjMzNTExMmIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKQEAgLTI4OCw2ICsyODgsMTQgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
IGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAgICByZXR1
cm4gRmFsc2UKIAorICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBw
cm9jZXNzX3BpZCwgd29ya2VyX251bWJlcik6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcmlu
dF9sZWFrc19zdW1tYXJ5KHNlbGYpOgorICAgICAgICAjIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRl
IHRoaXMgdG8gcHJpbnQgYSBzdW1tYXJ5IG9mIGxlYWtzIGZvdW5kCisgICAgICAgICMgd2hpbGUg
cnVubmluZyB0aGUgbGF5b3V0IHRlc3RzLgorICAgICAgICBwYXNzCisKICAgICBkZWYgZHJpdmVy
X25hbWUoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFjdHVhbCBi
aW5hcnkgdGhhdCBpcyBwZXJmb3JtaW5nIHRoZSB0ZXN0LAogICAgICAgICBzbyB0aGF0IGl0IGNh
biBiZSByZWZlcnJlZCB0byBpbiBsb2cgbWVzc2FnZXMuIEluIG1vc3QgY2FzZXMgdGhpcwpAQCAt
ODUyLDggKzg2MCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgcnVi
eSBmYWlsZWQgdG8gcnVuIGZvciBzb21lIHJlYXNvbiwgbG9nIHRoZSBjb21tYW5kCiAgICAgICAg
ICAgICAjIG91dHB1dCBhbmQgc3RvcCB0cnlpbmcuCiAgICAgICAgICAgICBzZWxmLl9wcmV0dHlf
cGF0Y2hfYXZhaWxhYmxlID0gRmFsc2UKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0
byBydW4gUHJldHR5UGF0Y2ggKCVzKTpcbiVzIiAlIChjb21tYW5kLAotICAgICAgICAgICAgICAg
ICAgICAgICBlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkpCisgICAgICAgICAgICBfbG9nLmVycm9y
KCJGYWlsZWQgdG8gcnVuIFByZXR0eVBhdGNoICglcyk6XG4lcyIgJSAoY29tbWFuZCwgZS5tZXNz
YWdlX3dpdGhfb3V0cHV0KCkpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRj
aF9lcnJvcl9odG1sCiAKICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1
bV93aW4ucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9t
aXVtX3dpbi5weQppbmRleCBmMzYyYTIyMWU0YTM5ODhiNThiZTI2MzZhMzFjMWJjODA1NWYzNWM1
Li4zNTEyOTkxMTZkMTA2YmQzNjFhOWMwYTAzZTZhN2Q4MmIxZDQ1YTFjIDEwMDc1NQotLS0gYS9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dp
bi5weQpAQCAtMTE3LDExICsxMTcsOSBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0u
Q2hyb21pdW1Qb3J0KToKICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAg
ICAgICAgIHJlc3VsdCA9IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBu
ZWVkc19odHRwKQogICAgICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgX2xvZy5lcnJv
cignRm9yIGNvbXBsZXRlIFdpbmRvd3MgYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJwotICAg
ICAgICAgICAgICAgICAgICAgICAnc2VlOicpCisgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3Ig
Y29tcGxldGUgV2luZG93cyBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAg
ICAgICAgIF9sb2cuZXJyb3IoJycpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICAgaHR0cDov
L2Rldi5jaHJvbWl1bS5vcmcvZGV2ZWxvcGVycy9ob3ctdG9zLycKLSAgICAgICAgICAgICAgICAg
ICAgICAgJ2J1aWxkLWluc3RydWN0aW9ucy13aW5kb3dzJykKKyAgICAgICAgICAgIF9sb2cuZXJy
b3IoJyAgICBodHRwOi8vZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hvdy10b3MvYnVpbGQt
aW5zdHJ1Y3Rpb25zLXdpbmRvd3MnKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYg
cmVsYXRpdmVfdGVzdF9maWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6CkBAIC0xMzMsOCArMTMxLDcg
QEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwog
ICAgIGRlZiBfYnVpbGRfcGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVz
eXN0ZW0uam9pbihzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAgICAgICByZXR1
cm4gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5
JyksICpjb21wcykKIAogICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgn
d2Via2l0JywgKmNvbXBzKQogICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwKToK
QEAgLTE0OCwxMiArMTQ1LDEwIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJv
bWl1bVBvcnQpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0
aChzZWxmLCAqY29tcHMpOgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1f
YmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5w
YXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywg
KmNvbXBzKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICd1
c3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Jpbics
ICdodHRwZCcpCisgICAgICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0
aGlyZF9wYXJ0eScsICdjeWd3aW4nLCAndXNyJywgJ3NiaW4nLCAnaHR0cGQnKQogCiAgICAgZGVm
IF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZics
ICdjeWd3aW4taHR0cGQuY29uZicpCkBAIC0xODIsNSArMTc3LDQgQEAgY2xhc3MgQ2hyb21pdW1X
aW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWls
ZF9wYXRoKHNlbGYuZ2V0X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAog
ICAgIGRlZiBfcGF0aF90b193ZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9m
cm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKKyAgICAg
ICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5
Z3dpbicsICdiaW4nLCAnd2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKaW5kZXggZGI0ZDI4NTJmYmQ0YzViMDdhOTBkNmVkMjNh
OTU2NTFjY2RiNDQwMi4uNTc0YzI5MTdlNDAzMDJiM2U2N2E1NWY3ZjI2MzQ4ZTJmNzBlY2I1NCAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkK
QEAgLTQ3LDggKzQ3LDcgQEAgY2xhc3MgR3RrRHJpdmVyKHdlYmtpdC5XZWJLaXREcml2ZXIpOgog
ICAgICAgICBlbnZpcm9ubWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVy
KCkKICAgICAgICAgIyBXZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51
bWJlciBkZXBlbmRzIG9uIF93b3JrZXJfbnVtYmVyCiAgICAgICAgIGVudmlyb25tZW50WydESVNQ
TEFZJ10gPSAiOiVkIiAlIChkaXNwbGF5X2lkKQotICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cyA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwKLSAgICAgICAgICAg
IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkK
KyAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9j
ZXNzKHNlbGYuX3BvcnQsIHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgp
LCBlbnZpcm9ubWVudCkKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICB3ZWJraXQuV2Vi
S2l0RHJpdmVyLnN0b3Aoc2VsZikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9tYWMucHkKaW5kZXggOWE1NTFjNWVkNGE3MmE2MTIxYjFlZDgzMjA0NzQxNDI0
MWRjNjAzMC4uMjA5MjQ4MDUxNTQzZDlkZjIwNDFkN2NlMGY1Mzk5MGQyYjM1NGM0MyAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTMy
LDEyICszMiwxMTIgQEAgaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJl
CiAKK2Zyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVy
cm9yCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0
UG9ydAogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIElmIG90
aGVyIHBvcnRzL3BsYXRmb3JtcyBkZWNpZGUgdG8gc3VwcG9ydCAtLWxlYWtzLCB3ZSBzaG91bGQg
c2VlIGFib3V0IHNoYXJpbmcgYXMgbXVjaCBvZiB0aGlzIGNvZGUgYXMgcG9zc2libGUuCitjbGFz
cyBMZWFrRGV0ZWN0b3Iob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCk6Cisg
ICAgICAgICMgV2Ugc2hvdWxkIG9wZXJhdGUgb24gYSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVy
ZS4KKyAgICAgICAgc2VsZi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0g
cG9ydC5fZXhlY3V0aXZlCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lz
dGVtCisgICAgICAgIHNlbGYuX2xlYWtzX2ZpbGVuYW1lcyA9IFtdCisKKyAgICAjIFdlIGV4Y2x1
ZGUgdGhlIGZvbGxvd2luZyByZXBvcnRlZCBsZWFrcyBzbyB0aGV5IGRvIG5vdCBnZXQgaW4gb3Vy
IHdheSB3aGVuIGxvb2tpbmcgZm9yIFdlYktpdCBsZWFrczoKKyAgICAjIFRoaXMgYWxsb3dzIHVz
IGlnbm9yZSBrbm93biBsZWFrcyBhbmQgb25seSBiZSBhbGVydGVkIHdoZW4gbmV3IGxlYWtzIG9j
Y3VyLiBTb21lIGxlYWtzIGFyZSBpbiB0aGUgb2xkCisgICAgIyB2ZXJzaW9ucyBvZiB0aGUgc3lz
dGVtIGZyYW1ld29ya3MgdGhhdCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgbGVha3MgYm90cy4gRXZl
biB0aG91Z2ggYSBsZWFrIGhhcyBiZWVuCisgICAgIyBmaXhlZCwgaXQgd2lsbCBiZSBsaXN0ZWQg
aGVyZSB1bnRpbCB0aGUgYm90IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3ZXIgZnJhbWV3
b3Jrcy4KKyAgICBkZWYgX3R5cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzKHNlbGYpOgorICAgICAg
ICAjIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIGFueSB0eXBlIGV4Y2x1ZGVzIGZyb20gT1MgbGVh
a3MsIGJ1dCB3ZSB3aWxsIGxpa2VseSBhZ2FpbiBpbiB0aGUgZnV0dXJlLgorICAgICAgICByZXR1
cm4gW10KKworICAgIGRlZiBfY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3Moc2VsZik6
CisgICAgICAgIGNhbGxzdGFja3MgPSBbCisgICAgICAgICAgICAiRmxhc2hfRW5mb3JjZUxvY2Fs
U2VjdXJpdHkiLCAgIyBsZWFrcyBpbiBGbGFzaCBwbHVnLWluIGNvZGUsIHJkYXI6Ly9wcm9ibGVt
LzQ0NDk3NDcKKyAgICAgICAgXQorICAgICAgICBpZiBzZWxmLl9wb3J0LmlzX2xlb3BhcmQoKToK
KyAgICAgICAgICAgIGNhbGxzdGFja3MgKz0gWworICAgICAgICAgICAgICAgICJDRkhUVFBNZXNz
YWdlQXBwZW5kQnl0ZXMiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQz
NTkxMgorICAgICAgICAgICAgICAgICJzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayIsICAjIGxl
YWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDQxNjE5CisgICAgICAgICAgICAgICAg
Il9DRkhUVFBSZWFkU3RyZWFtUmVhZE1hcmsiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjov
L3Byb2JsZW0vNTQ0MTQ2OAorICAgICAgICAgICAgICAgICJodHRwUHJvdG9jb2xTdGFydCIsICAj
IGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDY4ODM3CisgICAgICAgICAgICAg
ICAgIl9DRlVSTENvbm5lY3Rpb25TZW5kQ2FsbGJhY2tzIiwgICMgbGVhayBpbiBDRk5ldHdvcmss
IHJkYXI6Ly9wcm9ibGVtLzU0NDE2MDAKKyAgICAgICAgICAgICAgICAiRGlzcGF0Y2hRVE1zZyIs
ICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgor
ICAgICAgICAgICAgICAgICJRVE1vdmllQ29udGVudFZpZXcgY3JlYXRlVmlzdWFsQ29udGV4dCIs
ICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgor
ICAgICAgICAgICAgICAgICJfQ29weUFyY2hpdGVjdHVyZXNGb3JKVk1WZXJzaW9uIiwgICMgbGVh
ayBpbiBKYXZhLCByZGFyOi8vcHJvYmxlbS81OTEwODIzCisgICAgICAgICAgICBdCisgICAgICAg
IGVsaWYgc2VsZi5fcG9ydC5pc19zbm93bGVvcGFyZCgpOgorICAgICAgICAgICAgY2FsbHN0YWNr
cyArPSBbCisgICAgICAgICAgICAgICAgInJlYWRNYWtlck5vdGVQcm9wcyIsICAjIDxyZGFyOi8v
cHJvYmxlbS83MTU2NDMyPiBsZWFrIGluIEltYWdlSU8KKyAgICAgICAgICAgICAgICAiUVRLaXRN
b3ZpZUNvbnRyb2xsZXJWaWV3IGNvbXBsZXRlVUlTZXR1cCIsICAjIDxyZGFyOi8vcHJvYmxlbS83
MTU1MTU2PiBsZWFrIGluIFFUS2l0CisgICAgICAgICAgICAgICAgImdldFZNSW5pdEFyZ3MiLCAg
IyA8cmRhcjovL3Byb2JsZW0vNzcxNDQ0ND4gbGVhayBpbiBKYXZhCisgICAgICAgICAgICAgICAg
IkphdmFfamF2YV9sYW5nX1N5c3RlbV9pbml0UHJvcGVydGllcyIsICAjIDxyZGFyOi8vcHJvYmxl
bS83NzE0NDY1PiBsZWFrIGluIEphdmEKKyAgICAgICAgICAgICAgICAiZ2xyQ29tcEV4ZWN1dGVL
ZXJuZWwiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzgxNTM5MT4gbGVhayBpbiBncmFwaGljcyBkcml2
ZXIgd2hpbGUgdXNpbmcgT3BlbkdMCisgICAgICAgICAgICAgICAgIk5TTnVtYmVyRm9ybWF0dGVy
IGdldE9iamVjdFZhbHVlOmZvclN0cmluZzplcnJvckRlc2NyaXB0aW9uOiIsICAjIDxyZGFyOi8v
cHJvYmxlbS83MTQ5MzUwPiBMZWFrIGluIE5TTnVtYmVyRm9ybWF0dGVyCisgICAgICAgICAgICBd
CisgICAgICAgIHJldHVybiBjYWxsc3RhY2tzCisKKyAgICBkZWYgX2xlYWtzX2FyZ3Moc2VsZiwg
cGlkKToKKyAgICAgICAgbGVha3NfYXJncyA9IFtdCisgICAgICAgIGZvciBjYWxsc3RhY2sgaW4g
c2VsZi5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAgICAgIGxl
YWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0YWNrPSIlcyInICUgY2FsbHN0YWNrXSAgIyBD
YWxsc3RhY2tzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtLCBzbyB3ZSBxdW90ZSB0aGUgYXJnIHRv
IHByZXZlbnQgY29uZnVzaW5nIHBlcmwncyBvcHRwYXJzZS4KKyAgICAgICAgZm9yIGV4Y2x1ZGVk
X3R5cGUgaW4gc2VsZi5fdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAgICAg
IGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtdHlwZT0iJXMiJyAlIGV4Y2x1ZGVkX3R5cGVdCisg
ICAgICAgIGxlYWtzX2FyZ3MuYXBwZW5kKHBpZCkKKyAgICAgICAgcmV0dXJuIGxlYWtzX2FyZ3MK
KworICAgIGRlZiBfcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCwgcHJvY2Vz
c19waWQpOgorICAgICAgICBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2gocidQcm9jZXNzICVzOiAo
XGQrKSBsZWFrcz8gZm9yIChcZCspIHRvdGFsJyAlIHByb2Nlc3NfcGlkLCBsZWFrc19vdXRwdXQp
Lmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKHInKFxkKykgbGVh
a3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0cHV0KQorICAgICAgICBleGNsdWRlZCA9IGV4Y2x1ZGVk
X21hdGNoLmdyb3VwKDApIGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAorICAgICAgICByZXR1cm4g
aW50KGNvdW50KSwgaW50KGV4Y2x1ZGVkKSwgaW50KGJ5dGVzKQorCisgICAgZGVmIGxlYWtzX2Zp
bGVzX2luX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4gc2VsZi5f
ZmlsZXN5c3RlbS5nbG9iKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJsZWFrcy0q
IikpCisKKyAgICBkZWYgcGFyc2VfbGVha19maWxlcyhzZWxmKToKKyAgICAgICAgbWVyZ2VfZGVw
dGggPSA1ICAjIE9SV1QgaGFkIGEgLS1tZXJnZS1sZWFrLWRlcHRoIGFyZ3VtZW50LCBidXQgdGhh
dCBzZWVtcyBvdXQgb2Ygc2NvcGUgZm9yIHRoZSBydW4td2Via2l0LXRlc3RzIHRvb2wuCisgICAg
ICAgIGFyZ3MgPSBbCisgICAgICAgICAgICBzZWxmLl9zY3JpcHRfcGF0aCgpLAorICAgICAgICAg
ICAgJy0tbWVyZ2UtZGVwdGgnLAorICAgICAgICAgICAgbWVyZ2VfZGVwdGgsCisgICAgICAgIF0g
KyBsZWFrX2ZpbGVzCisgICAgICAgIHBhcnNlX21hbGxvY19oaXN0b3J5X291dHB1dCA9IHNlbGYu
X3BvcnQuX3J1bl9zY3JpcHQoInBhcnNlLW1hbGxvYy1oaXN0b3J5IiwgYXJncywgaW5jbHVkZV9j
b25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSkKKworICAgICAgICB1bmlxdWVfbGVha19jb3Vu
dCA9IGxlbihyZS5maW5kYWxsKHInXihcZCopXHNjYWxscycsIHBhcnNlX21hbGxvY19oaXN0b3J5
X291dHB1dCkpCisgICAgICAgIHRvdGFsX2J5dGVzID0gcmUuc2VhcmNoKHInXnRvdGFsXDpccygu
Kilcc1woJywgcGFyc2VfbWFsbG9jX2hpc3Rvcnlfb3V0cHV0KS5ncm91cCgwKQorICAgICAgICBy
ZXR1cm4gKHRvdGFsX2J5dGVzLCB1bmlxdWVfbGVha19jb3VudCkKKworICAgIGRlZiBjaGVja19m
b3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCwgd29ya2VyX251bWJlcik6
CisgICAgICAgIF9sb2cuaW5mbygiID8gY2hlY2tpbmcgZm9yIGxlYWtzIGluICVzIiAlIHByb2Nl
c3NfbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcHJpbnQgIiAiLmpvaW4oWydydW4t
bGVha3MnXSArIG1hcChzdHIsIHNlbGYuX2xlYWtzX2FyZ3MocHJvY2Vzc19waWQpKSkKKyAgICAg
ICAgICAgIGxlYWtzX291dHB1dCA9IHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInJ1bi1sZWFrcyIs
IHNlbGYuX2xlYWtzX2FyZ3MocHJvY2Vzc19waWQpLCBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJn
dW1lbnRzPUZhbHNlKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAg
ICBfbG9nLndhcm4oIkZhaWxlZCB0byBydW4gbGVha3MgdG9vbDogJXMiICUgZS5tZXNzYWdlX3dp
dGhfb3V0cHV0KCkpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBjb3VudCwgZXhjbHVk
ZWQsIGJ5dGVzID0gc2VsZi5fcGFyc2VfbGVha3Nfb3V0cHV0KGxlYWtzX291dHB1dCwgcHJvY2Vz
c19waWQpCisgICAgICAgIGFkanVzdGVkX2NvdW50ID0gY291bnQgLSBleGNsdWRlZAorICAgICAg
ICBpZiBub3QgYWRqdXN0ZWRfY291bnQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBs
ZWFrc19maWxlbmFtZSA9ICJsZWFrcy0lcy0lcy0lcy50eHQiICUgKHRvb2xfbmFtZSwgd29ya2Vy
X251bWJlciwgbGVuKHNlbGYuX2xlYWtzX2ZpbGVuYW1lcykpCisgICAgICAgIGxlYWtzX291dHB1
dF9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3BvcnQucmVzdWx0c19kaXJlY3Rv
cnkoKSwgbGVha3NfZmlsZW5hbWUpCisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4
dF9maWxlKGxlYWtzX2ZpbGVfcGF0aCwgbGVha3Nfb3V0cHV0KQorICAgICAgICBzZWxmLl9sZWFr
c19maWxlbmFtZXMuYXBwZW5kKGxlYWtzX2ZpbGVfcGF0aCkKKworICAgICAgICBpZiBleGNsdWRl
ZDoKKyAgICAgICAgICAgIF9sb2cud2FybigiICsgJXMgbGVha3MgKCVzIGJ5dGVzIGluY2x1ZGlu
ZyAlcyBleGNsdWRlZCBsZWFrcykgd2VyZSBmb3VuZCwgZGV0YWlscyBpbiAlcyIgJSAoYWRqdXN0
ZWRfY291bnQsIGJ5dGVzLCBleGNsdWRlZCwgbGVha3NfZmlsZV9wYXRoKSkKKyAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgIF9sb2cud2FybigiICsgJXMgbGVha3MgKCVzIGJ5dGVzKSB3ZXJlIGZv
dW5kLCBkZXRhaWxzIGluICVzIiAlIChjb3VudCwgYnl0ZXMsIGxlYWtzX2ZpbGVfcGF0aCkpCisK
KwogZGVmIG9zX3ZlcnNpb24ob3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgc3VwcG9ydGVkX3ZlcnNp
b25zPU5vbmUpOgogICAgIGlmIG5vdCBvc192ZXJzaW9uX3N0cmluZzoKICAgICAgICAgaWYgaGFz
YXR0cihwbGF0Zm9ybSwgJ21hY192ZXInKSBhbmQgcGxhdGZvcm0ubWFjX3ZlcigpWzBdOgpAQCAt
OTIsNiArMTkyLDcgQEAgY2xhc3MgTWFjUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAgIHNl
bGYuX3ZlcnNpb24gPSBwb3J0X25hbWVbbGVuKCdtYWMtJyk6XQogICAgICAgICAgICAgYXNzZXJ0
IHNlbGYuX3ZlcnNpb24gaW4gc2VsZi5TVVBQT1JURURfVkVSU0lPTlMsICIlcyBpcyBub3QgaW4g
JXMiICUgKHNlbGYuX3ZlcnNpb24sIHNlbGYuU1VQUE9SVEVEX1ZFUlNJT05TKQogICAgICAgICBz
ZWxmLl9vcGVyYXRpbmdfc3lzdGVtID0gJ21hYycKKyAgICAgICAgc2VsZi5fbGVha19kZXRlY3Rv
ciA9IExlYWtEZXRlY3RvcihzZWxmKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNl
bGYpOgogICAgICAgICBzZWFyY2hfcGF0aHMgPSBzZWxmLkZBTExCQUNLX1BBVEhTW3NlbGYuX3Zl
cnNpb25dCkBAIC05OSwxNyArMjAwLDQ3IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAg
ICAgICAgICAgICBzZWFyY2hfcGF0aHMuaW5zZXJ0KDAsIHNlbGYuX3drMl9wb3J0X25hbWUoKSkK
ICAgICAgICAgcmV0dXJuIG1hcChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VhcmNoX3Bh
dGhzKQogCisgICAgZGVmIHNldHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmKToKKyAgICAgICAg
ZW52ID0gV2ViS2l0UG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZikKKyAgICAgICAg
aWYgc2VsZi5nZXRfb3B0aW9uKCdsZWFrcycpOgorICAgICAgICAgICAgZW52WydNYWxsb2NTdGFj
a0xvZ2dpbmcnXSA9ICcxJworICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxv
YycpOgorICAgICAgICAgICAgZW52WydEWUxEX0lOU0VSVF9MSUJSQVJJRVMnXSA9ICcvdXNyL2xp
Yi9saWJnbWFsbG9jLmR5bGliJworICAgICAgICByZXR1cm4gZW52CisKKyAgICAjIEJlbG9uZ3Mg
b24gYSBQbGF0Zm9ybSBvYmplY3QuCisgICAgZGVmIGlzX2xlb3BhcmQoc2VsZik6CisgICAgICAg
IHJldHVybiBzZWxmLl92ZXJzaW9uID09ICJsZW9wYXJkIgorCisgICAgIyBCZWxvbmdzIG9uIGEg
UGxhdGZvcm0gb2JqZWN0LgorICAgIGRlZiBpc19zbm93bGVvcGFyZChzZWxmKToKKyAgICAgICAg
cmV0dXJuIHNlbGYuX3ZlcnNpb24gPT0gInNub3dsZW9wYXJkIgorCisgICAgIyBCZWxvbmdzIG9u
IGEgUGxhdGZvcm0gb2JqZWN0LgogICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9j
ZXNzX25hbWUpOgogICAgICAgICByZXR1cm4gcmUuc2VhcmNoKHInUmVwb3J0Q3Jhc2gnLCBwcm9j
ZXNzX25hbWUpCiAKICAgICBkZWYgX2J1aWxkX2phdmFfdGVzdF9zdXBwb3J0KHNlbGYpOgogICAg
ICAgICBqYXZhX3Rlc3RzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRf
dGVzdHNfZGlyKCksICJqYXZhIikKICAgICAgICAgYnVpbGRfamF2YSA9IFsiL3Vzci9iaW4vbWFr
ZSIsICItQyIsIGphdmFfdGVzdHNfcGF0aF0KLSAgICAgICAgaWYgc2VsZi5fZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKGJ1aWxkX2phdmEsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSk6CisgICAgICAgIGlm
IHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChidWlsZF9qYXZhLCByZXR1cm5fZXhpdF9jb2Rl
PVRydWUpOiAgIyBQYXRocyBhcmUgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gc2V0IGEg
Y3dkLgogICAgICAgICAgICAgX2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIEphdmEgc3VwcG9y
dCBmaWxlczogJXMiICUgYnVpbGRfamF2YSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAg
ICAgICByZXR1cm4gVHJ1ZQogCisgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNz
X25hbWUsIHByb2Nlc3NfcGlkLCB3b3JrZXJfbnVtYmVyKToKKyAgICAgICAgc2VsZi5fbGVha19k
ZXRlY3Rvci5jaGVja19mb3JfbGVha3MocHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCwgd29ya2Vy
X251bWJlcikKKworICAgIGRlZiBwcmludF9sZWFrc19zdW1tYXJ5KHNlbGYpOgorICAgICAgICAj
IFdlJ3JlIGluIHRoZSBtYW5hZ2VyIHByb2Nlc3MsIHNvIHRoZSBsZWFrIGRldGVjdG9yIHdpbGwg
bm90IGhhdmUgYSB2YWxpZCBsaXN0IG9mIGxlYWsgZmlsZXMuCisgICAgICAgICMgRklYTUU6IFRo
aXMgaXMgYSBoYWNrLCBidXQgd2UgZG9uJ3QgaGF2ZSBhIGJldHRlciB3YXkgdG8gZ2V0IHRoaXMg
aW5mb3JtYXRpb24gZnJvbSB0aGUgd29ya2VycyB5ZXQuCisgICAgICAgIGxlYWtzX2ZpbGVzID0g
c2VsZi5fbGVha19kZXRlY3Rvci5sZWFrc19maWxlc19pbl9kaXJlY3Rvcnkoc2VsZi5yZXN1bHRz
X2RpcmVjdG9yeSgpKQorICAgICAgICBpZiBub3QgbGVha3NfZmlsZXM6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgdG90YWxfYnl0ZXMsIHVuaXF1ZV9sZWFrcyA9IHNlbGYucGFyc2VfbGVh
a19maWxlcygpCisgICAgICAgIF9sb2cud2FybigiJXMgdG90YWwgbGVha3MgZm91bmQgZm9yIGEg
dG90YWwgb2YgJXMhIiAlIChzZWxmLl90b3RhbF9sZWFrcywgdG90YWxfYnl0ZXMpKQorICAgICAg
ICBfbG9nLndhcm4oIiVzIHVuaXF1ZSBsZWFrcyBmb3VuZCEiICUgdW5pcXVlX2xlYWtzKQorCiAg
ICAgZGVmIF9jaGVja19wb3J0X2J1aWxkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfamF2YV90ZXN0X3N1cHBvcnQoKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CmluZGV4IDc0YmQxOGMzOGY2
YTU0MzU1NjgwZWJjMDFlNDAzN2NlYmM3YjdjODQuLmNlNjc1OGUxZGU1NTlhYmE4OTlkNWU5YTA1
YTk5MDI2NjZiNmNkMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBAIC0zMCwxMyArMzAsNzAgQEAgaW1w
b3J0IFN0cmluZ0lPCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5tYWMgaW1wb3J0IE1hY1BvcnQKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQubWFjIGltcG9ydCBNYWNQb3J0LCBMZWFrRGV0ZWN0b3IKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9j
a1VzZXIsIE1vY2tFeGVjdXRpdmUKIAogCitjbGFzcyBMZWFrRGV0ZWN0b3JUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgX21vY2tfcG9ydChzZWxmKToKKyAgICAgICAgY2xhc3MgTW9j
a1BvcnQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoKQorICAgICAgICByZXR1cm4gTW9j
a1BvcnQoKQorCisgICAgZGVmIF9tYWtlX2RldGVjdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4g
TGVha0RldGVjdG9yKHNlbGYuX21vY2tfcG9ydCgpKQorCisgICAgZGVmIHRlc3RfbGVha3NfYXJn
cyhzZWxmKToKKyAgICAgICAgZGV0ZWN0b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAg
ICAgZGV0ZWN0b3IuX2NhbGxzdGFja3NfdG9fZXhjbHVkZV9mcm9tX2xlYWtzID0gbGFtYmRhOiBb
J2ZvbyBiYXInLCAnQkFaJ10KKyAgICAgICAgZGV0ZWN0b3IuX3R5cGVzX3RvX2V4bHVkZV9mcm9t
X2xlYWtzID0gbGFtYmRhOiBbJ2FiY2RlZmcnLCAnaGkgamtsbW5vJ10KKyAgICAgICAgZXhwZWN0
ZWRfYXJncyA9IFsnLS1leGNsdWRlLWNhbGxzdGFjaz0iZm9vIGJhciInLCAnLS1leGNsdWRlLWNh
bGxzdGFjaz0iQkFaIicsICctLWV4Y2x1ZGUtdHlwZT0iYWJjZGVmZyInLCAnLS1leGNsdWRlLXR5
cGU9ImhpIGprbG1ubyInLCAxMjM0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkZXRlY3Rv
ci5fbGVha3NfYXJncygxMjM0KSwgZXhwZWN0ZWRfYXJncykKKworICAgIGV4YW1wbGVfbGVha3Nf
b3V0cHV0ID0gIiIiUHJvY2VzcyA1MTIyOiA2NjM3NDQgbm9kZXMgbWFsbG9jZWQgZm9yIDc4Njgz
IEtCCitQcm9jZXNzIDUxMjI6IDMzNzMwMSBsZWFrcyBmb3IgNjUyNTIxNiB0b3RhbCBsZWFrZWQg
Ynl0ZXMuCitMZWFrOiAweDM4Y2I2MDAgIHNpemU9MzA3MiAgem9uZTogRGVmYXVsdE1hbGxvY1pv
bmVfMHgxZDk0MDAwICAgaW5zdGFuY2Ugb2YgJ05TQ0ZEYXRhJywgdHlwZSBPYmpDLCBpbXBsZW1l
bnRlZCBpbiBGb3VuZGF0aW9uCisgICAgICAgIDB4YTAzM2YwYjggMHgwMTAwMTM4NCAweDAwMDAw
YjNhIDB4MDAwMDBiM2EgICAgIC4uMy4uLi4uOi4uLjouLi4KKyAgICAgICAgMHgwMDAwMDAwMCAw
eDAzOGNiNjIwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAgICAgLi4uLiAuLi4uLi4uLi4uLgorICAg
ICAgICAweDAwMDAwMDAwIDB4MjEwMDAwMDAgMHg3MjZjNjQ2OCAweDAwMDAwMDAwICAgICAuLi4u
Li4uIWhkbHIuLi4uCisgICAgICAgIDB4MDAwMDAwMDAgMHg3MjY5NjQ2ZCAweDZjNzA3MDYxIDB4
MDAwMDAwMDAgICAgIC4uLi5tZGlyYXBwbC4uLi4KKyAgICAgICAgMHgwMDAwMDAwMCAweDA0MDAw
MDAwIDB4NzM2YzY5YzEgMHgwMDAwMDA3NCAgICAgLi4uLi4uLi4uaWxzdC4uLgorICAgICAgICAw
eDZmNzRhOTIzIDB4MDAwMDAwNmYgMHg3NDYxNjQxYiAweDAwMDAwMDYxICAgICAjLnRvby4uLi5k
YXRhLi4uCisgICAgICAgIDB4MDAwMDAwMDEgMHg3NjYxNGMwMCAweDJlMzIzNTY2IDB4MzAyZTMy
MzYgICAgIC4uLi4uTGF2ZjUyLjYyLjAKKyAgICAgICAgMHgzNzAwMDAwMCAweDZkNjE2ZWE5IDB4
MmYwMDAwMDAgMHg2MTc0NjE2NCAgICAgLi4uNy5uYW0uLi4vZGF0YQorICAgICAgICAuLi4KK0xl
YWs6IDB4MmE5Yzk2MCAgc2l6ZT0yODggIHpvbmU6IERlZmF1bHRNYWxsb2Nab25lXzB4MWQ5NDAw
MAorICAgICAgICAweDA5YTFjYzQ3IDB4MWJkYTg1NjAgMHgzZDQ3MmNkMSAweGZiZTliY2NkICAg
ICBHLi4uYC4uLi4sRz0uLi4uCisgICAgICAgIDB4OGJjZGEwMDggMHg5ZTk3MmE5MSAweGE4OTJj
ZjYzIDB4MjQ0OGJkYjAgICAgIC4uLi4uKi4uYy4uLi4uSCQKKyAgICAgICAgMHg0NzM2ZmMzNCAw
eGRiZTJkOTRlIDB4MjVmNTY2ODggMHg4Mzk0MDJhNCAgICAgNC42R04uLi4uZi4lLi4uLgorICAg
ICAgICAweGQxMjQ5NmIzIDB4NTljNDBjMTIgMHg4Y2ZjYWIyYSAweGQyMGVmOWM0ICAgICAuLiQu
Li4uWSouLi4uLi4uCisgICAgICAgIDB4ZTdjNTZiMWIgMHg1ODM1YWY0NSAweGM2OTExNWRlIDB4
NjkyM2U0YmIgICAgIC5rLi5FLjVYLi4uLi4uI2kKKyAgICAgICAgMHg4NmYxNTU1MyAweDE1ZDQw
ZmE5IDB4NjgxMjg4YTQgMHhjMzMyOThhOSAgICAgU1UuLi4uLi4uLi5oLi4yLgorICAgICAgICAw
eDQzOWJiNTM1IDB4YzRmYzc0M2QgMHg3ZGZhYWZmOCAweDJjYzQ5YTRhICAgICA1Li5DPXQuLi4u
Ln1KLi4sCisgICAgICAgIDB4ZGQxMTlkZjggMHg3ZTA4NjgyMSAweDNkN2QxMjllIDB4MmUxYjE1
NDcgICAgIC4uLi4haC5+Li59PUcuLi4KKyAgICAgICAgLi4uCitMZWFrOiAweDI1MTAyZmUwICBz
aXplPTE3NiAgem9uZTogRGVmYXVsdE1hbGxvY1pvbmVfMHgxZDk0MDAwICAgc3RyaW5nICdOU0V4
Y2VwdGlvbiBEYXRhJworIiIiCisKKyAgICBkZWYgdGVzdF9wYXJzZV9sZWFrc19vdXRwdXQoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX21ha2VfZGV0ZWN0b3IoKS5fcGFy
c2VfbGVha3Nfb3V0cHV0KHNlbGYuZXhhbXBsZV9sZWFrc19vdXRwdXQsIDUxMjIpLCAoMzM3MzAx
LCAwLCA2NTI1MjE2KSkKKworICAgIGRlZiB0ZXN0X2xlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShz
ZWxmKToKKyAgICAgICAgZGV0ZWN0b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZGV0ZWN0b3IubGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KCcvYm9n
dXMtZGlyZWN0b3J5JyksIFtdKQorICAgICAgICBkZXRlY3Rvci5fZmlsZXN5c3RlbSA9IE1vY2tG
aWxlU3lzdGVtKHsKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJU
cmVlLTAtMS50eHQnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBS
ZW5kZXJUcmVlLTEtMS50eHQnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtz
LUR1bXBSZW5kZXJUcmVlLTAtMi50eHQnOiAnJywKKyAgICAgICAgfSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobGVuKGRldGVjdG9yLmxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeSgnL21vY2st
cmVzdWx0cycpKSwgMykKKworCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RD
YXNlKToKICAgICBkZWYgcG9ydF9tYWtlcihzZWxmLCBwbGF0Zm9ybSk6CiAgICAgICAgICMgRklY
TUU6IFRoaXMgcGxhdGZvcm0gY2hlY2sgc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnkgYW5k
IHNob3VsZCBiZSByZW1vdmVkIGFzIHNvb24gYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5w
eQppbmRleCAwNGIwNWE5ZmM0NjMzMzIyY2Y0NWJjZWM0MjE0ZjJhNmQwMWJjNGVmLi5kMDY0OWY2
N2FlMzc0OGQ0OGVkNzkwODRiMzA4Mzk0ZmExZGI5Nzg0IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkK
QEAgLTU0LDEyICs1NCwxOCBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCBleGVjdXRpdmU9RXhlY3V0
aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydF9vYmoKLSAgICAgICAgc2VsZi5fbmFt
ZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUgICMgU2hvdWxkIGJlIHRoZSBjb21t
YW5kIG5hbWUgKGUuZy4gRHVtcFJlbmRlclRyZWUsIEltYWdlRGlmZikKICAgICAgICAgc2VsZi5f
Y21kID0gY21kCiAgICAgICAgIHNlbGYuX2VudiA9IGVudgogICAgICAgICBzZWxmLl9yZXNldCgp
CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogCisgICAgZGVmIG5hbWUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgcGlkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fcHJvYy5waWQKKwogICAgIGRlZiBfcmVzZXQoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3Byb2MgPSBOb25lCiAgICAgICAgIHNlbGYuX291dHB1dCA9ICcnCkBAIC0yMTYs
OSArMjIyLDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgICAgICByZXR1cm4g
b3V0cHV0CiAKICAgICAgICAgICAgICMgTm9wZSAtIHdhaXQgZm9yIG1vcmUgZGF0YS4KLSAgICAg
ICAgICAgIChyZWFkX2Zkcywgd3JpdGVfZmRzLCBlcnJfZmRzKSA9IHNlbGVjdC5zZWxlY3Qoc2Vs
ZWN0X2ZkcywgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdF9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lIC0gbm93KQorICAgICAgICAg
ICAgKHJlYWRfZmRzLCB3cml0ZV9mZHMsIGVycl9mZHMpID0gc2VsZWN0LnNlbGVjdChzZWxlY3Rf
ZmRzLCBbXSwgc2VsZWN0X2ZkcywgZGVhZGxpbmUgLSBub3cpCiAgICAgICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAgICAgaWYgb3V0X2ZkIGluIHJlYWRfZmRzOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9vdXRwdXQgKz0gc2VsZi5fcHJvYy5zdGRvdXQucmVhZCgpCkBAIC0yNDgsOCArMjUy
LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHdoaWxlIHNlbGYuX3Byb2Mu
cG9sbCgpIGlzIE5vbmUgYW5kIHRpbWUudGltZSgpIDwgdGltZW91dDoKICAgICAgICAgICAgICAg
ICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgICAgIGlmIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5v
bmU6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdzdG9wcGluZyAlcyB0aW1lZCBvdXQs
IGtpbGxpbmcgaXQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSkK
KyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0b3BwaW5nICVzIHRpbWVkIG91dCwga2ls
bGluZyBpdCcgJSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZS5r
aWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5n
KCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4IDQ1ZmZiMjNjZjg1ODg4
YzNlMDA2YjJkY2IxMTRkMzk0YWQyNWExM2YuLjZkZjRjMmIyMzA1ZDMyYzViODRmNTFkMzBhNmFk
Y2M0NDgwZmMxMjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvd2Via2l0LnB5CkBAIC01NSw3ICs1NSw5IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9y
dCk6CiAgICAgICAgICMgRklYTUU6IERpc2FibGUgcGl4ZWwgdGVzdHMgdW50aWwgdGhleSBhcmUg
cnVuIGJ5IGRlZmF1bHQgb24gYnVpbGQud2Via2l0Lm9yZy4KICAgICAgICAgc2VsZi5zZXRfb3B0
aW9uX2RlZmF1bHQoInBpeGVsX3Rlc3RzIiwgRmFsc2UpCiAgICAgICAgICMgV2ViS2l0IHBvcnRz
IGV4cGVjdCBhIDM1cyB0aW1lb3V0LCBvciAzNTBzIHRpbWVvdXQgd2hlbiBydW5uaW5nIHdpdGgg
LWcvLS1ndWFyZC1tYWxsb2MuCi0gICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCJ0aW1l
X291dF9tcyIsIDM1MDAwKQorICAgICAgICAjIEZJWE1FOiAtLWd1YXJkLW1hbGxvYyBpcyBvbmx5
IHN1cHBvcnRlZCBvbiBNYWMsIHNvIHRoaXMgbG9naWMgc2hvdWxkIGJlIGluIG1hYy5weS4KKyAg
ICAgICAgZGVmYXVsdF90aW1lX291dF9zZWNvbmRzID0gMzUwIGlmIHNlbGYuZ2V0X29wdGlvbign
Z3VhcmRfbWFsbG9jJykgZWxzZSAzNQorICAgICAgICBzZWxmLnNldF9vcHRpb25fZGVmYXVsdCgi
dGltZV9vdXRfbXMiLCBkZWZhdWx0X3RpbWVfb3V0X3NlY29uZHMgKiAxMDAwKQogCiAgICAgZGVm
IGRyaXZlcl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90
ZXN0X3J1bm5lcicpOgpAQCAtMTE1LDcgKzExNyw3IEBAIGNsYXNzIFdlYktpdFBvcnQoUG9ydCk6
CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNlbGYuX2FyZ3VtZW50c19m
b3JfY29uZmlndXJhdGlvbigpKQogICAgICAgICBpZiBhcmdzOgogICAgICAgICAgICAgcnVuX3Nj
cmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQotICAgICAgICByZXR1cm4gc2VsZi5fZXhlY3V0aXZl
LnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYuX2NvbmZpZy53ZWJraXRf
YmFzZV9kaXIoKSkgICMgSXQncyB1bmNsZWFyIGlmIHNldHRpbmcgY3dkIGlzIG5lY2Vzc2FyeSBm
b3IgYWxsIGNhbGxlcnMuCisgICAgICAgIHJldHVybiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1h
bmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmlnLndlYmtpdF9iYXNlX2Rpcigp
KQogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAgICAgIHRyeToKQEAgLTQ1Miw5
ICs0NTQsOSBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAgICAgICAgcmV0dXJuIHNl
bGYuX3NlcnZlcl9wcm9jZXNzLnBvbGwoKQogCiAgICAgZGVmIHJlc3RhcnQoc2VsZik6CisgICAg
ICAgIHNlbGYuX3BvcnQuY2hlY2tfZm9yX2xlYWtzKHNlbGYuX3NlcnZlcl9wcm9jZXNzLm5hbWUo
KSwgc2VsZi5fc2VydmVyX3Byb2Nlc3MucGlkKCksIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAg
ICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnN0b3AoKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJv
Y2Vzcy5zdGFydCgpCi0gICAgICAgIHJldHVybgogCiAgICAgZGVmIGRldGVjdGVkX2NyYXNoKHNl
bGYpOgogICAgICAgICAjIEZJWE1FOiBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9w
cm9jZXNzLmNyYXNoZWQgZm9yIHR3byByZWFzb25zOgpAQCAtNTU2LDYgKzU1OCw3IEBAIGNsYXNz
IFdlYktpdERyaXZlcihEcml2ZXIpOgogCiAgICAgZGVmIHN0b3Aoc2VsZik6CiAgICAgICAgIGlm
IHNlbGYuX3NlcnZlcl9wcm9jZXNzOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5jaGVja19mb3Jf
bGVha3Moc2VsZi5fc2VydmVyX3Byb2Nlc3MubmFtZSgpLCBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5w
aWQoKSwgc2VsZi5fd29ya2VyX251bWJlcikKICAgICAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnN0b3AoKQogICAgICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3MgPSBOb25lCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRf
dGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0
X3Rlc3RzLnB5CmluZGV4IDgwYTE1YjJjYmE0MTM4M2VkMGFmMWJlM2FiMGI5NWVkZmNlMTA5ZDAu
LmM3NDQ1NTg4NjJiNTUwNjlkODZlNTZmMjJiMWY1OGJkOGFjMTczODMgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eQpAQCAtMjQxLDIyICsyNDEsMjAgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncz1Ob25lKToKICAgICAg
ICAgICAgIGhlbHA9IkZvcmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBiZXR3ZWVuIGVhY2ggdGVzdCIp
LAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1jb21wbGV4LXRleHQiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0iVXNlIHRoZSBj
b21wbGV4IHRleHQgY29kZSBwYXRoIGZvciBhbGwgdGV4dCAoTWFjIE9TIFggYW5kIFdpbmRvd3Mg
b25seSkiKSwKKyAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi1sIiwgIi0tbGVha3MiLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgaGVscD0iRW5h
YmxlIGxlYWtzIGNoZWNraW5nIChNYWMgT1MgWCBvbmx5KSIpLAorICAgICAgICBvcHRwYXJzZS5t
YWtlX29wdGlvbigiLWciLCAiLS1ndWFyZC1tYWxsb2MiLCBhY3Rpb249InN0b3JlX3RydWUiLCBk
ZWZhdWx0PUZhbHNlLAorICAgICAgICAgICAgaGVscD0iRW5hYmxlIG1hbGxvYyBndWFyZCAoTWFj
IE9TIFggb25seSkiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tdGhyZWFkZWQi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgaGVscD0i
UnVuIGEgY29uY3VycmVudCBKYXZhU2NyaXB0IHRocmVhZCB3aXRoIGVhY2ggdGVzdCIpLAogICAg
ICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS13ZWJraXQtdGVzdC1ydW5uZXIiLCAiLTIiLCBh
Y3Rpb249InN0b3JlX3RydWUiLAogICAgICAgICAgICAgaGVscD0iVXNlIFdlYktpdFRlc3RSdW5u
ZXIgcmF0aGVyIHRoYW4gRHVtcFJlbmRlclRyZWUuIiksCiAgICAgXQogCi0gICAgIyBNaXNzaW5n
IE1hYy1zcGVjaWZpYyBvbGQtcnVuLXdlYmtpdC10ZXN0cyBvcHRpb25zOgotICAgICMgRklYTUU6
IE5lZWQ6IC1nLCAtLWd1YXJkIGZvciBndWFyZCBtYWxsb2Mgc3VwcG9ydCBvbiBNYWMuCi0gICAg
IyBGSVhNRTogTmVlZDogLWwgLS1sZWFrcyAgICBFbmFibGUgbGVha3MgY2hlY2tpbmcuCi0KICAg
ICBvbGRfcnVuX3dlYmtpdF90ZXN0c19jb21wYXQgPSBbCiAgICAgICAgICMgRklYTUU6IFJlbW92
ZSB0aGlzIG9wdGlvbiBvbmNlIHRoZSBib3RzIGRvbid0IHJlZmVyIHRvIGl0LgogICAgICAgICAj
IHJlc3VsdHMuaHRtbCBpcyBzbWFydCBlbm91Z2ggdG8gZmlndXJlIHRoaXMgb3V0IGl0c2VsZi4K
ICAgICAgICAgX2NvbXBhdF9zaGltX29wdGlvbigiLS11c2UtcmVtb3RlLWxpbmtzLXRvLXRlc3Rz
IiksCi0gICAgICAgICMgRklYTUU6IEltcGxlbWVudCBsZWFrIGRldGVjdGlvbi4KLSAgICAgICAg
X2NvbXBhdF9zaGltX29wdGlvbigiLS1sZWFrcyIpLAogICAgIF0KIAogICAgIHJlc3VsdHNfb3B0
aW9ucyA9IFsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101245</attachid>
            <date>2011-07-18 17:52:03 -0700</date>
            <delta_ts>2011-07-18 18:06:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63832-20110718175202.patch</filename>
            <type>text/plain</type>
            <size>39296</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmODIxMGVjNWM1YTNiYTY5MjkzMjMzMjhlMDM2NDE2YTlh
NWM5MmUxLi43OTM5NWRiZjlhMWZkYjdkNmExNmFhZDlmYjk4MWI1ZWY0NDlmNjkyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTEtMDctMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYXkgbm90IGJlIHN1ZmZp
Y2llbnQgdG8gYWN0dWFsbHkgdHJhbnNpdGlvbiBvdmVyIHRoZSBsZWFrcyBib3QsCisgICAgICAg
IGJ1dCB0aGlzIGlzIGEgaHVnZSBzdGVwIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAgICAg
ICAgSSBoYWQgdG8gbWFrZSBwYXJzZS1tYWxsb2MtaGlzdG9yeSB1bmRlcnN0YW5kIGJlaW5nIHBh
c3NlZCBtb3JlIHRoYW4KKyAgICAgICAgb25lIGZpbGUgKHRvIGF2b2lkIHRoZSBzaWxseSBjYXQg
fCBub25zZW5zZSBpbiBvbGQtcnVuLXdlYmtpdC10ZXN0cykuCisKKyAgICAgICAgSSByZW1vdmVk
IHNvbWUgZGVhZCBjb2RlIHJlbGF0aW5nIHRvIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2Ygb3VyIGNy
YXNoIGRldGVjdGlvbi4KKworICAgICAgICBJIGNyZWF0ZWQgYSBuZXcgY2xhc3MgIkxlYWtEZXRl
Y3RvciIgdG8gZW5jYXBzdWxhdGUgYWxsIHRoaXMgbG9naWMuCisgICAgICAgIEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGNvbnNpZGVyIHB1bGxpbmcgdGhhdCBjbGFzcyBvdXQgb2YgbWFjLnB5IGFuZAor
ICAgICAgICBzaGFyaW5nIHdpdGggb3RoZXIgcG9ydHMuICBIb3dldmVyIGdpdmVuIHRoYXQgT1JX
VCBoYXMgaGFkCisgICAgICAgIC0tbGVha3Mgc3VwcG9ydCBvbiBNYWMgZm9yIGFsbW9zdCA3IHll
YXJzIGFuZCBubyBvdGhlciBwb3J0IGhhcyBhZGRlZAorICAgICAgICBpdCwgbGVhdmVzIG1lIHRv
IGJlbGlldmUgd2UncmUgaW4gbm8gcnVzaCB0byBtb3ZlIExlYWtEZXRlY3Rvci4KKworICAgICAg
ICBJJ3ZlIHRlc3RlZCAtLWxlYWtzIGxvY2FsbHkuICBJIHN1c3BlY3QgdGhlcmUgYXJlIG1vcmUg
YnVncyB0byBzaGFrZSBvdXQKKyAgICAgICAgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91
Z2ggdG8gc3RhcnQuCisKKyAgICAgICAgSSBhbHNvIGFkZGVkIHN1cHBvcnQgZm9yIC0tZ3VhcmQt
bWFsbG9jLCBidXQgaGF2ZSBub3QgdGVzdGVkIGl0IG11Y2guICBJdAorICAgICAgICBzaG91bGQg
YmUgdmlld2VkIGFzIGV4cGVyaW1lbnRhbCBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgSSBhbHNv
IGZpeGVkIHZhcmlvdXMgb3MucGF0aCB1c2VzIHRvIHNlbGYuX2ZpbGVzeXN0ZW0gYXMgSSB3YXMg
cmVhZGluZworICAgICAgICB0aHJvdWdoIHRoZSB2YXJpb3VzIGZpbGVzIHRvIHVuZGVyc3RhbmQg
aG93IGJlc3QgdG8gZml4IHRoaXMgYnVnLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKHBhcnNlTGVha3NhbmRQcmludFVuaXF1ZUxlYWtzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3dvcmtlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorCisyMDExLTA3LTE4ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVu
dCBkb2VzIG5vdCB3b3JrIHdoZW4gbm90IGNhbGxlZCBmcm9tIHRoZSByb290IG9mIHRoZSBjaGVj
a291dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3
NTEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggMDA5ZTQ2MmQ3NTAwYmFiNThm
OGI4YWJlNDg3YzQ2MjZkNTcwNzg2OC4uNzNiNzA5NGIyNzU5ZDc1ZGUzZjMxNGNiZjY5NDc4ZGEy
NDFlODI3NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC0yMjQxLDcgKzIyNDEs
NyBAQCBzdWIgZXBpbG9ndWVzQW5kUHJvbG9ndWVzKCQkKQogc3ViIHBhcnNlTGVha3NhbmRQcmlu
dFVuaXF1ZUxlYWtzKCkKIHsKICAgICByZXR1cm4gdW5sZXNzIEBsZWFrc0ZpbGVuYW1lczsKLSAg
ICAgCisKICAgICBteSAkbWVyZ2VkRmlsZW5hbWVzID0gam9pbiAiICIsIEBsZWFrc0ZpbGVuYW1l
czsKICAgICBteSAkcGFyc2VNYWxsb2NIaXN0b3J5VG9vbCA9IHNvdXJjZURpcigpIC4gIi9Ub29s
cy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5IjsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkgYi9Ub29scy9TY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5CmluZGV4IDE3N2RlMWM5MDNjZjZkMjUxMWQ4ZjQ0ZmI3YzdjODFmNDdjYTFkZTIu
LmQyNTdmOWZlMTgyMGRlYjIwZWYyYjE2ZGU1N2I3ZWNmOWQyZmEzNGYgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkKKysrIGIvVG9vbHMvU2NyaXB0cy9wYXJz
ZS1tYWxsb2MtaGlzdG9yeQpAQCAtNTcsMTggKzU3LDIwIEBAIHN1YiBtYWluKCkKICAgICAgICAg
Im1lcmdlLXJlZ2V4cDpzIiA9PiBcQG1lcmdlUmVnZXhwcywKICAgICAgICAgIm1lcmdlLWRlcHRo
OmkiID0+IFwkbWVyZ2VEZXB0aAogICAgICk7Ci0gICAgbXkgJGZpbGVOYW1lID0gJEFSR1ZbMF07
Ci0gICAgZGllICR1c2FnZSBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICEkZmlsZU5hbWUpOwor
ICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhc2NhbGFyKEBBUkdWKSk7
CiAKLSAgICBvcGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAkZmlsZU5h
bWUiOwotICAgIG15IEBmaWxlID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7CisgICAgbXkgQGxp
bmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkZmlsZU5hbWUgKEBBUkdWKSB7CisgICAgICAgIG9w
ZW4gRklMRSwgIjwkZmlsZU5hbWUiIG9yIGRpZSAiYmFkIGZpbGU6ICRmaWxlTmFtZSI7CisgICAg
ICAgIHB1c2goQGxpbmVzLCA8RklMRT4pOworICAgICAgICBjbG9zZSBGSUxFOworICAgIH0KIAog
ICAgIG15ICVjYWxsc3RhY2tzID0gKCk7CiAgICAgbXkgJGJ5dGVDb3VudFRvdGFsID0gMDsKIAot
ICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBmaWxlOyAkaSsrKSB7Ci0gICAgICAgIG15ICRsaW5l
ID0gJGZpbGVbJGldOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaW5lczsgJGkrKykgewor
ICAgICAgICBteSAkbGluZSA9ICRsaW5lc1skaV07CiAgICAgICAgIG15ICgkY2FsbENvdW50LCAk
Ynl0ZUNvdW50KTsKIAogICAgICAgICAjIEZpcnN0IHRyeSBtYWxsb2NfaGlzdG9yeSBmb3JtYXQK
QEAgLTg2LDcgKzg4LDcgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgaWYgKCRieXRlQ291bnQp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAoISgkbGluZSA9fiAiQ2FsbCBzdGFjazogIikpIHsK
ICAgICAgICAgICAgICAgICAgICAgJGkrKzsKLSAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSAk
ZmlsZVskaV07CisgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDE1ICsxMDEsMTUg
QEAgc3ViIG1haW4oKQogICAgICAgICAgICAgJGNhbGxDb3VudCA9IDE7CiAgICAgICAgICAgICAo
JGJ5dGVDb3VudCkgPSAoJGxpbmUgPX4gL0tleTogKD86XGQrKSwgKFxkKykgYnl0ZXMvKTsKICAg
ICAgICAgICAgIGlmICgkYnl0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAkZmls
ZVsrKyRpXTsKKyAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAgICAgICAg
ICAgICAgICBteSBAdGVtcFN0YWNrOwotICAgICAgICAgICAgICAgIHdoaWxlICgkZmlsZVskaSsx
XSAhfiAvXig/Oi18XGQpLykgeworICAgICAgICAgICAgICAgIHdoaWxlICgkbGluZXNbJGkrMV0g
IX4gL14oPzotfFxkKS8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9cKTog
KC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbCA9ICQxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGNhbGwgPX4gcy9cciQvLzsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2hpZnQoQHRlbXBTdGFjaywgJGNhbGwpOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGZpbGVbKyskaV07CisgICAgICAgICAgICAgICAg
ICAgICRsaW5lID0gJGxpbmVzWysrJGldOwogICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkbGluZSA9IGpvaW4oIiB8ICIsIEB0ZW1wU3RhY2spOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHkKaW5kZXggZmRjODViNzU1ZTUxOWRmNDkwYzJiMjA1N2IyODQ2OWIxZmQ2ZmU5My4u
YjlmOGFlYjllYTAyOTFiY2EyZWE1ODQ2MTE4N2E1ZjM4N2RjMGM4YyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CkBAIC0yNiwxNSAr
MjYsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiAKIAotZGVmIF9pc19jcmFzaF9yZXBvcnRlcihwcm9jZXNzX25h
bWUpOgotICAgIHJldHVybiByZS5tYXRjaChyIlJlcG9ydENyYXNoIiwgcHJvY2Vzc19uYW1lKQot
Ci0KIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtKToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KQEAgLTQ1LDEx
ICs0MCwxMSBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKIAogICAgIGRlZiBfbG9nX2RpcmVj
dG9yeV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lz
dGVtLmV4cGFuZHVzZXIoIn4iKQotICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQotICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhvcy5wYXRoLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBv
cnRzIikpOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihsb2dfZGly
ZWN0b3J5LCAiRGlhZ25vc3RpY1JlcG9ydHMiKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9n
X2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikpOgorICAgICAgICAgICAgbG9nX2RpcmVj
dG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiRGlhZ25vc3RpY1Jl
cG9ydHMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihsb2dfZGlyZWN0b3J5LCAiQ3Jhc2hSZXBvcnRlciIpCisgICAgICAgICAgICBsb2df
ZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJDcmFzaFJl
cG9ydGVyIikKICAgICAgICAgcmV0dXJuIGxvZ19kaXJlY3RvcnkKIAogICAgIGRlZiBfZmluZF9u
ZXdlc3RfbG9nX2RhcndpbihzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNTksNSArNTQsNSBAQCBj
bGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2xv
Z19kaXJlY3RvcnlfZGFyd2luKCkKICAgICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmls
ZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hfbG9nKQogICAgICAg
ICBpZiBub3QgbG9nczoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc29ydGVk
KGxvZ3MpWy0xXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDhmM2E2ZGE5YTcxMTAzY2IwNTNl
N2JhMDA5NjY1MTFiOWRiNWJlNTUuLjc2NGJjMzhiYTM4NzQwOGIwZTVhOWVmNDdkNGU4MzE1MmMz
MWY5NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDkzLDE2ICs0OTMsMTEgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2tpcF9jaHVuayA9
IHNraXBwZWQKIAotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5f
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmsp
Ci0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3Vt
bWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAg
ICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnks
Ci0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAg
ICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0g
ICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2Vs
Zi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQorICAgICAgICByZXN1bHRf
c3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBzZWxmLl90ZXN0X2Zp
bGVzIHwgc2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19v
Zl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikK
KyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1t
YXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQorICAgICAgICBzZWxmLl9w
cmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0
YXRpb25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1
bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lw
cGVkIikKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgogICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAn
CkBAIC03MTksOCArNzE0LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB0aHJl
YWRfdGltaW5ncyA9IFtdCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1No
YXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJk
cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9v
cHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5
X3BhcmFsbGVsKQorICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxm
Ll9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQogCiAgICAgICAg
ICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3Jr
ZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0
aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CkBAIC03MzgsMTUgKzczMiwxMiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKGludChz
ZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIGxlbihhbGxfc2hhcmRzKSkKICAgICAgICAg
c2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxlbihs
b2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldv
cmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLCBzZWxmLCB3b3JrZXIuV29ya2VyKQogCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVybiAoa2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAg
ICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90
aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVt
X3dvcmtlcnMpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcg
JXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCiAgICAg
ICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29y
a2VyX251bWJlcikKICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3Jr
ZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKQEAgLTc3MiwxMCArNzYzLDYgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdoaWxlIG5vdCBz
ZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFRlbXBvcmFyaWx5IGRpc2FibGVkIHRv
IHNlZSBob3cgdGhpcyBjb2RlIGVmZmVjdCBwZXJmb3JtYW5jZSBvbiB0aGUgYnVpbGRib3RzLgot
ICAgICAgICAgICAgICAgICMgaWYgc2VsZi5fcG9ydC5leGVjdXRpdmUucnVubmluZ19waWRzKHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpOgotICAgICAgICAgICAgICAgICMgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCJXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlciAuLi4iKQot
ICAgICAgICAgICAgICAgICMgICAgIHNlbGYuX3BvcnQuZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCiAgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25u
ZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCiAKICAgICAgICAgICAgICMg
TWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUp
LgpAQCAtODA4LDggKzc5NSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2Vs
Zi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KIAogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhp
cyBiZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1
cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAgICAgcmV0dXJu
IChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxm
Ll9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYp
OgogICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnkpCkBAIC05MDIsMTkgKzg4OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQogCi0gICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19z
dGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotCisgICAg
ICAgIHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwg
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJl
c3VsdF9zdW1tYXJ5KQogICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeShyZXN1bHRf
c3VtbWFyeSkKIAogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5
KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnku
dG90YWwsIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVk
KQogCiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnks
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSwgaW50ZXJydXB0
ZWQ9aW50ZXJydXB0ZWQpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9y
ZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKQEAgLTkyNSwxMCArOTA1LDkgQEAgY2xhc3MgTWFu
YWdlcihvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4g
SXQncyBqdXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAogICAgICAgICAjIGZv
ciBpdCB0byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy5yZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAg
ICAgICAgICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRl
IHRoZSBzYW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmls
ZXMKLSAgICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KKyAgICAgICAgaWYgKHNlbGYu
X29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5k
IG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6CisgICAgICAgICAgICBzZWxmLl9wb3J0LnByaW50
X2xlYWtzX3N1bW1hcnkoKQorICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzIHRvIGFwcGVuZ2luZSBzZXJ2
ZXIuCiAgICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhz
ZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1t
YXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNlLCBpbnRl
cnJ1cHRlZD1pbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVz
KHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5kZXggMmQ2NThjMGExZGQ4MDJiMWJhNzllNDA0NWQy
ZTM1MzZmOTM1NGZlNy4uNTE3ODA0MjAxMzE3MTBmYjk4MzFiZDYxMWIwZTgyMzc3YjhlMDI1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlci5weQpAQCAtMTIwLDE0ICsxMjAsNiBAQCBjbGFzcyBXb3JrZXIobWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fZG9uZSA9
IFRydWUKIAogICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMg
QmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHdlIHdhaXQgZm9yIGFueSBjcmFzaCByZXBvcnRlcnMg
dG8gZmluaXNoCi0gICAgICAgICMgcnVubmluZy4gT24gTWFjLCBSZXBvcnRDcmFzaCBjaGV3cyB1
cCBhIGJ1bmNoIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgIyBjYXVzZXMgdGhlIHRlc3RzIHRv
IGJlY29tZSB1bnN0YWJsZSwgc28gd2UgZG9uJ3Qgd2FudCB0byBydW4gaW4KLSAgICAgICAgIyBw
YXJhbGxlbCB3aXRoIFJlcG9ydENyYXNoLgotICAgICAgICAjCi0gICAgICAgICMgVGVtcG9yYXJp
bHkgZGlzYWJsZWQgdG8gc2VlIGhvdyB0aGlzIGNvZGUgZWZmZWN0IHBlcmZvcm1hbmNlIG9uIHRo
ZSBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fcG9ydC5leGVjdXRpdmUud2FpdF9uZXdlc3Qo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLQogICAgICAgICB0ZXN0X3RpbWVvdXRfc2Vj
ID0gc2VsZi50aW1lb3V0KHRlc3RfaW5wdXQpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkK
ICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rl
c3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDEzMmQxYTYwYjgyYjc2YTU4
MDRlM2ExMjBhM2Q4NmM2YmYxZTI2ZGQuLjI5MjU5MThmMjE0ZjQ4MjMyM2RhNjlhZTU5NTA3YzQ2
YTBmNDI4ODIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKQEAgLTI4OCw2ICsyODgsMTQgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
IGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAgICByZXR1
cm4gRmFsc2UKIAorICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBw
cm9jZXNzX3BpZCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcmludF9sZWFrc19zdW1tYXJ5
KHNlbGYpOgorICAgICAgICAjIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgdG8gcHJpbnQg
YSBzdW1tYXJ5IG9mIGxlYWtzIGZvdW5kCisgICAgICAgICMgd2hpbGUgcnVubmluZyB0aGUgbGF5
b3V0IHRlc3RzLgorICAgICAgICBwYXNzCisKICAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFjdHVhbCBiaW5hcnkgdGhhdCBpcyBw
ZXJmb3JtaW5nIHRoZSB0ZXN0LAogICAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSByZWZlcnJlZCB0
byBpbiBsb2cgbWVzc2FnZXMuIEluIG1vc3QgY2FzZXMgdGhpcwpAQCAtODUyLDggKzg2MCw3IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgcnVieSBmYWlsZWQgdG8gcnVu
IGZvciBzb21lIHJlYXNvbiwgbG9nIHRoZSBjb21tYW5kCiAgICAgICAgICAgICAjIG91dHB1dCBh
bmQgc3RvcCB0cnlpbmcuCiAgICAgICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxl
ID0gRmFsc2UKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBydW4gUHJldHR5UGF0
Y2ggKCVzKTpcbiVzIiAlIChjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICBlLm1lc3Nh
Z2Vfd2l0aF9vdXRwdXQoKSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gcnVu
IFByZXR0eVBhdGNoICglcyk6XG4lcyIgJSAoY29tbWFuZCwgZS5tZXNzYWdlX3dpdGhfb3V0cHV0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRjaF9lcnJvcl9odG1sCiAK
ICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQppbmRl
eCBmMzYyYTIyMWU0YTM5ODhiNThiZTI2MzZhMzFjMWJjODA1NWYzNWM1Li4zNTEyOTkxMTZkMTA2
YmQzNjFhOWMwYTAzZTZhN2Q4MmIxZDQ1YTFjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTE3LDEx
ICsxMTcsOSBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQogICAg
ICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgX2xvZy5lcnJvcignRm9yIGNvbXBsZXRl
IFdpbmRvd3MgYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJwotICAgICAgICAgICAgICAgICAg
ICAgICAnc2VlOicpCisgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgV2luZG93
cyBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJycpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICAgaHR0cDovL2Rldi5jaHJvbWl1bS5v
cmcvZGV2ZWxvcGVycy9ob3ctdG9zLycKLSAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLWlu
c3RydWN0aW9ucy13aW5kb3dzJykKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBodHRwOi8v
ZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hvdy10b3MvYnVpbGQtaW5zdHJ1Y3Rpb25zLXdp
bmRvd3MnKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgcmVsYXRpdmVfdGVzdF9m
aWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6CkBAIC0xMzMsOCArMTMxLDcgQEAgY2xhc3MgQ2hyb21p
dW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwogICAgIGRlZiBfYnVpbGRf
cGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2Rp
cmVjdG9yeScpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JyksICpjb21wcykKIAog
ICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywgKmNvbXBz
KQogICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwKToKQEAgLTE0OCwxMiArMTQ1
LDEwIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAg
ICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0aChzZWxmLCAqY29tcHMp
OgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFy
dHknLCAnbGlnaHR0cGQnLCAnd2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21p
dW1fYmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywgKmNvbXBzKQogCiAgICAg
ZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICd1c3InLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2JpbicsICdodHRwZCcpCisgICAg
ICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdj
eWd3aW4nLCAndXNyJywgJ3NiaW4nLCAnaHR0cGQnKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsICdjeWd3aW4taHR0cGQu
Y29uZicpCkBAIC0xODIsNSArMTc3LDQgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0
X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90
b193ZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jh
c2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLCAn
d2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGsucHkKaW5kZXggZGI0ZDI4NTJmYmQ0YzViMDdhOTBkNmVkMjNhOTU2NTFjY2RiNDQwMi4u
NTc0YzI5MTdlNDAzMDJiM2U2N2E1NWY3ZjI2MzQ4ZTJmNzBlY2I1NCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTQ3LDggKzQ3LDcg
QEAgY2xhc3MgR3RrRHJpdmVyKHdlYmtpdC5XZWJLaXREcml2ZXIpOgogICAgICAgICBlbnZpcm9u
bWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgIyBX
ZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9u
IF93b3JrZXJfbnVtYmVyCiAgICAgICAgIGVudmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAl
IChkaXNwbGF5X2lkKQotICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9j
ZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJp
dmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKKyAgICAgICAgc2VsZi5f
c2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQs
IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkK
IAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICB3ZWJraXQuV2ViS2l0RHJpdmVyLnN0b3Ao
c2VsZikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMu
cHkKaW5kZXggOWE1NTFjNWVkNGE3MmE2MTIxYjFlZDgzMjA0NzQxNDI0MWRjNjAzMC4uZWRjZGNk
NDA1ZGZmNjcyMmIxZjExNTYxZjU0MDYzZWIxYmQzNjAyMyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTMyLDEyICszMiwxMTUgQEAg
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIElmIG90aGVyIHBvcnRzL3BsYXRm
b3JtcyBkZWNpZGUgdG8gc3VwcG9ydCAtLWxlYWtzLCB3ZSBzaG91bGQgc2VlIGFib3V0IHNoYXJp
bmcgYXMgbXVjaCBvZiB0aGlzIGNvZGUgYXMgcG9zc2libGUuCitjbGFzcyBMZWFrRGV0ZWN0b3Io
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCk6CisgICAgICAgICMgV2Ugc2hv
dWxkIG9wZXJhdGUgb24gYSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVyZS4KKyAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydC5fZXhlY3V0aXZl
CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisgICAgICAgIHNl
bGYuX2xlYWtzX2ZpbGVuYW1lcyA9IFtdCisKKyAgICAjIFdlIGV4Y2x1ZGUgdGhlIGZvbGxvd2lu
ZyByZXBvcnRlZCBsZWFrcyBzbyB0aGV5IGRvIG5vdCBnZXQgaW4gb3VyIHdheSB3aGVuIGxvb2tp
bmcgZm9yIFdlYktpdCBsZWFrczoKKyAgICAjIFRoaXMgYWxsb3dzIHVzIGlnbm9yZSBrbm93biBs
ZWFrcyBhbmQgb25seSBiZSBhbGVydGVkIHdoZW4gbmV3IGxlYWtzIG9jY3VyLiBTb21lIGxlYWtz
IGFyZSBpbiB0aGUgb2xkCisgICAgIyB2ZXJzaW9ucyBvZiB0aGUgc3lzdGVtIGZyYW1ld29ya3Mg
dGhhdCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgbGVha3MgYm90cy4gRXZlbiB0aG91Z2ggYSBsZWFr
IGhhcyBiZWVuCisgICAgIyBmaXhlZCwgaXQgd2lsbCBiZSBsaXN0ZWQgaGVyZSB1bnRpbCB0aGUg
Ym90IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3ZXIgZnJhbWV3b3Jrcy4KKyAgICBkZWYg
X3R5cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzKHNlbGYpOgorICAgICAgICAjIEN1cnJlbnRseSB3
ZSBkb24ndCBoYXZlIGFueSB0eXBlIGV4Y2x1ZGVzIGZyb20gT1MgbGVha3MsIGJ1dCB3ZSB3aWxs
IGxpa2VseSBhZ2FpbiBpbiB0aGUgZnV0dXJlLgorICAgICAgICByZXR1cm4gW10KKworICAgIGRl
ZiBfY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3Moc2VsZik6CisgICAgICAgIGNhbGxz
dGFja3MgPSBbCisgICAgICAgICAgICAiRmxhc2hfRW5mb3JjZUxvY2FsU2VjdXJpdHkiLCAgIyBs
ZWFrcyBpbiBGbGFzaCBwbHVnLWluIGNvZGUsIHJkYXI6Ly9wcm9ibGVtLzQ0NDk3NDcKKyAgICAg
ICAgXQorICAgICAgICBpZiBzZWxmLl9wb3J0LmlzX2xlb3BhcmQoKToKKyAgICAgICAgICAgIGNh
bGxzdGFja3MgKz0gWworICAgICAgICAgICAgICAgICJDRkhUVFBNZXNzYWdlQXBwZW5kQnl0ZXMi
LCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQzNTkxMgorICAgICAgICAg
ICAgICAgICJzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayIsICAjIGxlYWsgaW4gQ0ZOZXR3b3Jr
LCByZGFyOi8vcHJvYmxlbS81NDQxNjE5CisgICAgICAgICAgICAgICAgIl9DRkhUVFBSZWFkU3Ry
ZWFtUmVhZE1hcmsiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2JsZW0vNTQ0MTQ2
OAorICAgICAgICAgICAgICAgICJodHRwUHJvdG9jb2xTdGFydCIsICAjIGxlYWsgaW4gQ0ZOZXR3
b3JrLCByZGFyOi8vcHJvYmxlbS81NDY4ODM3CisgICAgICAgICAgICAgICAgIl9DRlVSTENvbm5l
Y3Rpb25TZW5kQ2FsbGJhY2tzIiwgICMgbGVhayBpbiBDRk5ldHdvcmssIHJkYXI6Ly9wcm9ibGVt
LzU0NDE2MDAKKyAgICAgICAgICAgICAgICAiRGlzcGF0Y2hRVE1zZyIsICAjIGxlYWsgaW4gUXVp
Y2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAg
ICJRVE1vdmllQ29udGVudFZpZXcgY3JlYXRlVmlzdWFsQ29udGV4dCIsICAjIGxlYWsgaW4gUXVp
Y2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2NzEzMgorICAgICAgICAgICAgICAg
ICJfQ29weUFyY2hpdGVjdHVyZXNGb3JKVk1WZXJzaW9uIiwgICMgbGVhayBpbiBKYXZhLCByZGFy
Oi8vcHJvYmxlbS81OTEwODIzCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYgc2VsZi5fcG9y
dC5pc19zbm93bGVvcGFyZCgpOgorICAgICAgICAgICAgY2FsbHN0YWNrcyArPSBbCisgICAgICAg
ICAgICAgICAgInJlYWRNYWtlck5vdGVQcm9wcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU2NDMy
PiBsZWFrIGluIEltYWdlSU8KKyAgICAgICAgICAgICAgICAiUVRLaXRNb3ZpZUNvbnRyb2xsZXJW
aWV3IGNvbXBsZXRlVUlTZXR1cCIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTU1MTU2PiBsZWFrIGlu
IFFUS2l0CisgICAgICAgICAgICAgICAgImdldFZNSW5pdEFyZ3MiLCAgIyA8cmRhcjovL3Byb2Js
ZW0vNzcxNDQ0ND4gbGVhayBpbiBKYXZhCisgICAgICAgICAgICAgICAgIkphdmFfamF2YV9sYW5n
X1N5c3RlbV9pbml0UHJvcGVydGllcyIsICAjIDxyZGFyOi8vcHJvYmxlbS83NzE0NDY1PiBsZWFr
IGluIEphdmEKKyAgICAgICAgICAgICAgICAiZ2xyQ29tcEV4ZWN1dGVLZXJuZWwiLCAgIyA8cmRh
cjovL3Byb2JsZW0vNzgxNTM5MT4gbGVhayBpbiBncmFwaGljcyBkcml2ZXIgd2hpbGUgdXNpbmcg
T3BlbkdMCisgICAgICAgICAgICAgICAgIk5TTnVtYmVyRm9ybWF0dGVyIGdldE9iamVjdFZhbHVl
OmZvclN0cmluZzplcnJvckRlc2NyaXB0aW9uOiIsICAjIDxyZGFyOi8vcHJvYmxlbS83MTQ5MzUw
PiBMZWFrIGluIE5TTnVtYmVyRm9ybWF0dGVyCisgICAgICAgICAgICBdCisgICAgICAgIHJldHVy
biBjYWxsc3RhY2tzCisKKyAgICBkZWYgX2xlYWtzX2FyZ3Moc2VsZiwgcGlkKToKKyAgICAgICAg
bGVha3NfYXJncyA9IFtdCisgICAgICAgIGZvciBjYWxsc3RhY2sgaW4gc2VsZi5fY2FsbHN0YWNr
c190b19leGNsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0gWyct
LWV4Y2x1ZGUtY2FsbHN0YWNrPSIlcyInICUgY2FsbHN0YWNrXSAgIyBDYWxsc3RhY2tzIGNhbiBo
YXZlIHNwYWNlcyBpbiB0aGVtLCBzbyB3ZSBxdW90ZSB0aGUgYXJnIHRvIHByZXZlbnQgY29uZnVz
aW5nIHBlcmwncyBvcHRwYXJzZS4KKyAgICAgICAgZm9yIGV4Y2x1ZGVkX3R5cGUgaW4gc2VsZi5f
dHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAgICAgIGxlYWtzX2FyZ3MgKz0g
WyctLWV4Y2x1ZGUtdHlwZT0iJXMiJyAlIGV4Y2x1ZGVkX3R5cGVdCisgICAgICAgIGxlYWtzX2Fy
Z3MuYXBwZW5kKHBpZCkKKyAgICAgICAgcmV0dXJuIGxlYWtzX2FyZ3MKKworICAgIGRlZiBfcGFy
c2VfbGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQpOgorICAgICAg
ICBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2gocidQcm9jZXNzICVzOiAoXGQrKSBsZWFrcz8gZm9y
IChcZCspIHRvdGFsJyAlIHByb2Nlc3NfcGlkLCBsZWFrc19vdXRwdXQpLmdyb3VwcygpCisgICAg
ICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKHInKFxkKykgbGVha3M/IGV4Y2x1ZGVkJywg
bGVha3Nfb3V0cHV0KQorICAgICAgICBleGNsdWRlZCA9IGV4Y2x1ZGVkX21hdGNoLmdyb3VwKDAp
IGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAorICAgICAgICByZXR1cm4gaW50KGNvdW50KSwgaW50
KGV4Y2x1ZGVkKSwgaW50KGJ5dGVzKQorCisgICAgZGVmIGxlYWtzX2ZpbGVzX2luX2RpcmVjdG9y
eShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5c3RlbS5nbG9i
KHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJsZWFrcy0qIikpCisKKyAgICBkZWYg
bGVha3NfZmlsZV9uYW1lKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgorICAgICAg
ICAjIFdlIGluY2x1ZGUgdGhlIG51bWJlciBvZiBmaWxlcyB0aGlzIHdvcmtlciBoYXMgYWxyZWFk
eSB3cml0dGVuIGluIHRoZSBuYW1lIHRvIHByZXZlbnQgb3ZlcndyaXR0aW5nIHByZXZpb3VzIGxl
YWsgcmVzdWx0cy4uCisgICAgICAgIHJldHVybiAibGVha3MtJXMtJXMtJXMudHh0IiAlIChwcm9j
ZXNzX25hbWUsIHByb2Nlc3NfcGlkLCBsZW4oc2VsZi5fbGVha3NfZmlsZW5hbWVzKSkKKworICAg
IGRlZiBwYXJzZV9sZWFrX2ZpbGVzKHNlbGYpOgorICAgICAgICBtZXJnZV9kZXB0aCA9IDUgICMg
T1JXVCBoYWQgYSAtLW1lcmdlLWxlYWstZGVwdGggYXJndW1lbnQsIGJ1dCB0aGF0IHNlZW1zIG91
dCBvZiBzY29wZSBmb3IgdGhlIHJ1bi13ZWJraXQtdGVzdHMgdG9vbC4KKyAgICAgICAgYXJncyA9
IFsKKyAgICAgICAgICAgIHNlbGYuX3NjcmlwdF9wYXRoKCksCisgICAgICAgICAgICAnLS1tZXJn
ZS1kZXB0aCcsCisgICAgICAgICAgICBtZXJnZV9kZXB0aCwKKyAgICAgICAgXSArIGxlYWtfZmls
ZXMKKyAgICAgICAgcGFyc2VfbWFsbG9jX2hpc3Rvcnlfb3V0cHV0ID0gc2VsZi5fcG9ydC5fcnVu
X3NjcmlwdCgicGFyc2UtbWFsbG9jLWhpc3RvcnkiLCBhcmdzLCBpbmNsdWRlX2NvbmZpZ3VyYXRp
b25fYXJndW1lbnRzPUZhbHNlKQorCisgICAgICAgIHVuaXF1ZV9sZWFrX2NvdW50ID0gbGVuKHJl
LmZpbmRhbGwocideKFxkKilcc2NhbGxzJywgcGFyc2VfbWFsbG9jX2hpc3Rvcnlfb3V0cHV0KSkK
KyAgICAgICAgdG90YWxfYnl0ZXMgPSByZS5zZWFyY2gocidedG90YWxcOlxzKC4qKVxzXCgnLCBw
YXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQpLmdyb3VwKDApCisgICAgICAgIHJldHVybiAodG90
YWxfYnl0ZXMsIHVuaXF1ZV9sZWFrX2NvdW50KQorCisgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhz
ZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKToKKyAgICAgICAgX2xvZy5pbmZvKCIgPyBj
aGVja2luZyBmb3IgbGVha3MgaW4gJXMiICUgcHJvY2Vzc19uYW1lKQorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBsZWFrc19vdXRwdXQgPSBzZWxmLl9wb3J0Ll9ydW5fc2NyaXB0KCJydW4tbGVh
a3MiLCBzZWxmLl9sZWFrc19hcmdzKHByb2Nlc3NfcGlkKSwgaW5jbHVkZV9jb25maWd1cmF0aW9u
X2FyZ3VtZW50cz1GYWxzZSkKKyAgICAgICAgZXhjZXB0IFNjcmlwdEVycm9yLCBlOgorICAgICAg
ICAgICAgX2xvZy53YXJuKCJGYWlsZWQgdG8gcnVuIGxlYWtzIHRvb2w6ICVzIiAlIGUubWVzc2Fn
ZV93aXRoX291dHB1dCgpKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgY291bnQsIGV4
Y2x1ZGVkLCBieXRlcyA9IHNlbGYuX3BhcnNlX2xlYWtzX291dHB1dChsZWFrc19vdXRwdXQsIHBy
b2Nlc3NfcGlkKQorICAgICAgICBhZGp1c3RlZF9jb3VudCA9IGNvdW50IC0gZXhjbHVkZWQKKyAg
ICAgICAgaWYgbm90IGFkanVzdGVkX2NvdW50OgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAg
ICAgbGVha3NfZmlsZW5hbWUgPSBzZWxmLmxlYWtzX2ZpbGVfbmFtZShwcm9jZXNzX25hbWUsIHBy
b2Nlc3NfcGlkKQorICAgICAgICBsZWFrc19vdXRwdXRfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0u
am9pbihzZWxmLl9wb3J0LnJlc3VsdHNfZGlyZWN0b3J5KCksIGxlYWtzX2ZpbGVuYW1lKQorICAg
ICAgICBzZWxmLl9maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShsZWFrc19vdXRwdXRfcGF0aCwg
bGVha3Nfb3V0cHV0KQorICAgICAgICBzZWxmLl9sZWFrc19maWxlbmFtZXMuYXBwZW5kKGxlYWtz
X291dHB1dF9wYXRoKQorCisgICAgICAgIGlmIGV4Y2x1ZGVkOgorICAgICAgICAgICAgX2xvZy53
YXJuKCIgKyAlcyBsZWFrcyAoJXMgYnl0ZXMgaW5jbHVkaW5nICVzIGV4Y2x1ZGVkIGxlYWtzKSB3
ZXJlIGZvdW5kLCBkZXRhaWxzIGluICVzIiAlIChhZGp1c3RlZF9jb3VudCwgYnl0ZXMsIGV4Y2x1
ZGVkLCBsZWFrc19vdXRwdXRfcGF0aCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBfbG9n
Lndhcm4oIiArICVzIGxlYWtzICglcyBieXRlcykgd2VyZSBmb3VuZCwgZGV0YWlscyBpbiAlcyIg
JSAoY291bnQsIGJ5dGVzLCBsZWFrc19vdXRwdXRfcGF0aCkpCisKKwogZGVmIG9zX3ZlcnNpb24o
b3NfdmVyc2lvbl9zdHJpbmc9Tm9uZSwgc3VwcG9ydGVkX3ZlcnNpb25zPU5vbmUpOgogICAgIGlm
IG5vdCBvc192ZXJzaW9uX3N0cmluZzoKICAgICAgICAgaWYgaGFzYXR0cihwbGF0Zm9ybSwgJ21h
Y192ZXInKSBhbmQgcGxhdGZvcm0ubWFjX3ZlcigpWzBdOgpAQCAtOTIsNiArMTk1LDcgQEAgY2xh
c3MgTWFjUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAgIHNlbGYuX3ZlcnNpb24gPSBwb3J0
X25hbWVbbGVuKCdtYWMtJyk6XQogICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX3ZlcnNpb24gaW4g
c2VsZi5TVVBQT1JURURfVkVSU0lPTlMsICIlcyBpcyBub3QgaW4gJXMiICUgKHNlbGYuX3ZlcnNp
b24sIHNlbGYuU1VQUE9SVEVEX1ZFUlNJT05TKQogICAgICAgICBzZWxmLl9vcGVyYXRpbmdfc3lz
dGVtID0gJ21hYycKKyAgICAgICAgc2VsZi5fbGVha19kZXRlY3RvciA9IExlYWtEZXRlY3Rvcihz
ZWxmKQogCiAgICAgZGVmIGJhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgogICAgICAgICBzZWFy
Y2hfcGF0aHMgPSBzZWxmLkZBTExCQUNLX1BBVEhTW3NlbGYuX3ZlcnNpb25dCkBAIC05OSwxNyAr
MjAzLDUyIEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAgICBzZWFyY2hf
cGF0aHMuaW5zZXJ0KDAsIHNlbGYuX3drMl9wb3J0X25hbWUoKSkKICAgICAgICAgcmV0dXJuIG1h
cChzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VhcmNoX3BhdGhzKQogCisgICAgZGVmIHNl
dHVwX2Vudmlyb25fZm9yX3NlcnZlcihzZWxmKToKKyAgICAgICAgZW52ID0gV2ViS2l0UG9ydC5z
ZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZikKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9u
KCdsZWFrcycpOgorICAgICAgICAgICAgZW52WydNYWxsb2NTdGFja0xvZ2dpbmcnXSA9ICcxJwor
ICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxvYycpOgorICAgICAgICAgICAg
ZW52WydEWUxEX0lOU0VSVF9MSUJSQVJJRVMnXSA9ICcvdXNyL2xpYi9saWJnbWFsbG9jLmR5bGli
JworICAgICAgICByZXR1cm4gZW52CisKKyAgICAjIEJlbG9uZ3Mgb24gYSBQbGF0Zm9ybSBvYmpl
Y3QuCisgICAgZGVmIGlzX2xlb3BhcmQoc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLl92ZXJz
aW9uID09ICJsZW9wYXJkIgorCisgICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0Lgor
ICAgIGRlZiBpc19zbm93bGVvcGFyZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNp
b24gPT0gInNub3dsZW9wYXJkIgorCisgICAgIyBCZWxvbmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0
LgogICAgIGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAg
ICByZXR1cm4gcmUuc2VhcmNoKHInUmVwb3J0Q3Jhc2gnLCBwcm9jZXNzX25hbWUpCiAKICAgICBk
ZWYgX2J1aWxkX2phdmFfdGVzdF9zdXBwb3J0KHNlbGYpOgogICAgICAgICBqYXZhX3Rlc3RzX3Bh
dGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCksICJqYXZh
IikKICAgICAgICAgYnVpbGRfamF2YSA9IFsiL3Vzci9iaW4vbWFrZSIsICItQyIsIGphdmFfdGVz
dHNfcGF0aF0KLSAgICAgICAgaWYgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKGJ1aWxkX2ph
dmEsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSk6CisgICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2ZS5y
dW5fY29tbWFuZChidWlsZF9qYXZhLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOiAgIyBQYXRocyBh
cmUgYWJzb2x1dGUsIHNvIHdlIGRvbid0IG5lZWQgdG8gc2V0IGEgY3dkLgogICAgICAgICAgICAg
X2xvZy5lcnJvcigiRmFpbGVkIHRvIGJ1aWxkIEphdmEgc3VwcG9ydCBmaWxlczogJXMiICUgYnVp
bGRfamF2YSkKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gVHJ1ZQog
CisgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlk
KToKKyAgICAgICAgaWYgbm90IHNlbGYuZ2V0X29wdGlvbignbGVha3MnKToKKyAgICAgICAgICAg
IHJldHVybgorICAgICAgICAjIFdlIGNvdWxkIHVzZSBodHRwOi8vY29kZS5nb29nbGUuY29tL3Av
cHN1dGlsLyB0byBnZXQgdGhlIHByb2Nlc3NfbmFtZSBmcm9tIHRoZSBwaWQuCisgICAgICAgIHNl
bGYuX2xlYWtfZGV0ZWN0b3IuY2hlY2tfZm9yX2xlYWtzKHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19w
aWQpCisKKyAgICBkZWYgcHJpbnRfbGVha3Nfc3VtbWFyeShzZWxmKToKKyAgICAgICAgaWYgbm90
IHNlbGYuZ2V0X29wdGlvbignbGVha3MnKToKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICAj
IFdlJ3JlIGluIHRoZSBtYW5hZ2VyIHByb2Nlc3MsIHNvIHRoZSBsZWFrIGRldGVjdG9yIHdpbGwg
bm90IGhhdmUgYSB2YWxpZCBsaXN0IG9mIGxlYWsgZmlsZXMuCisgICAgICAgICMgRklYTUU6IFRo
aXMgaXMgYSBoYWNrLCBidXQgd2UgZG9uJ3QgaGF2ZSBhIGJldHRlciB3YXkgdG8gZ2V0IHRoaXMg
aW5mb3JtYXRpb24gZnJvbSB0aGUgd29ya2VycyB5ZXQuCisgICAgICAgIGxlYWtzX2ZpbGVzID0g
c2VsZi5fbGVha19kZXRlY3Rvci5sZWFrc19maWxlc19pbl9kaXJlY3Rvcnkoc2VsZi5yZXN1bHRz
X2RpcmVjdG9yeSgpKQorICAgICAgICBpZiBub3QgbGVha3NfZmlsZXM6CisgICAgICAgICAgICBy
ZXR1cm4KKyAgICAgICAgdG90YWxfYnl0ZXMsIHVuaXF1ZV9sZWFrcyA9IHNlbGYucGFyc2VfbGVh
a19maWxlcygpCisgICAgICAgIF9sb2cud2FybigiJXMgdG90YWwgbGVha3MgZm91bmQgZm9yIGEg
dG90YWwgb2YgJXMhIiAlIChzZWxmLl90b3RhbF9sZWFrcywgdG90YWxfYnl0ZXMpKQorICAgICAg
ICBfbG9nLndhcm4oIiVzIHVuaXF1ZSBsZWFrcyBmb3VuZCEiICUgdW5pcXVlX2xlYWtzKQorCiAg
ICAgZGVmIF9jaGVja19wb3J0X2J1aWxkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVp
bGRfamF2YV90ZXN0X3N1cHBvcnQoKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L21hY191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CmluZGV4IDc0YmQxOGMzOGY2
YTU0MzU1NjgwZWJjMDFlNDAzN2NlYmM3YjdjODQuLmNlNjc1OGUxZGU1NTlhYmE4OTlkNWU5YTA1
YTk5MDI2NjZiNmNkMTggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5CkBAIC0zMCwxMyArMzAsNzAgQEAgaW1w
b3J0IFN0cmluZ0lPCiBpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC5tYWMgaW1wb3J0IE1hY1BvcnQKK2Zyb20gd2Via2l0cHkubGF5
b3V0X3Rlc3RzLnBvcnQubWFjIGltcG9ydCBNYWNQb3J0LCBMZWFrRGV0ZWN0b3IKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQgaW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5maWxlc3lzdGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2Fw
dHVyZQogZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9j
a1VzZXIsIE1vY2tFeGVjdXRpdmUKIAogCitjbGFzcyBMZWFrRGV0ZWN0b3JUZXN0KHVuaXR0ZXN0
LlRlc3RDYXNlKToKKyAgICBkZWYgX21vY2tfcG9ydChzZWxmKToKKyAgICAgICAgY2xhc3MgTW9j
a1BvcnQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAg
ICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICAgICAg
ICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoKQorICAgICAgICByZXR1cm4gTW9j
a1BvcnQoKQorCisgICAgZGVmIF9tYWtlX2RldGVjdG9yKHNlbGYpOgorICAgICAgICByZXR1cm4g
TGVha0RldGVjdG9yKHNlbGYuX21vY2tfcG9ydCgpKQorCisgICAgZGVmIHRlc3RfbGVha3NfYXJn
cyhzZWxmKToKKyAgICAgICAgZGV0ZWN0b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAg
ICAgZGV0ZWN0b3IuX2NhbGxzdGFja3NfdG9fZXhjbHVkZV9mcm9tX2xlYWtzID0gbGFtYmRhOiBb
J2ZvbyBiYXInLCAnQkFaJ10KKyAgICAgICAgZGV0ZWN0b3IuX3R5cGVzX3RvX2V4bHVkZV9mcm9t
X2xlYWtzID0gbGFtYmRhOiBbJ2FiY2RlZmcnLCAnaGkgamtsbW5vJ10KKyAgICAgICAgZXhwZWN0
ZWRfYXJncyA9IFsnLS1leGNsdWRlLWNhbGxzdGFjaz0iZm9vIGJhciInLCAnLS1leGNsdWRlLWNh
bGxzdGFjaz0iQkFaIicsICctLWV4Y2x1ZGUtdHlwZT0iYWJjZGVmZyInLCAnLS1leGNsdWRlLXR5
cGU9ImhpIGprbG1ubyInLCAxMjM0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkZXRlY3Rv
ci5fbGVha3NfYXJncygxMjM0KSwgZXhwZWN0ZWRfYXJncykKKworICAgIGV4YW1wbGVfbGVha3Nf
b3V0cHV0ID0gIiIiUHJvY2VzcyA1MTIyOiA2NjM3NDQgbm9kZXMgbWFsbG9jZWQgZm9yIDc4Njgz
IEtCCitQcm9jZXNzIDUxMjI6IDMzNzMwMSBsZWFrcyBmb3IgNjUyNTIxNiB0b3RhbCBsZWFrZWQg
Ynl0ZXMuCitMZWFrOiAweDM4Y2I2MDAgIHNpemU9MzA3MiAgem9uZTogRGVmYXVsdE1hbGxvY1pv
bmVfMHgxZDk0MDAwICAgaW5zdGFuY2Ugb2YgJ05TQ0ZEYXRhJywgdHlwZSBPYmpDLCBpbXBsZW1l
bnRlZCBpbiBGb3VuZGF0aW9uCisgICAgICAgIDB4YTAzM2YwYjggMHgwMTAwMTM4NCAweDAwMDAw
YjNhIDB4MDAwMDBiM2EgICAgIC4uMy4uLi4uOi4uLjouLi4KKyAgICAgICAgMHgwMDAwMDAwMCAw
eDAzOGNiNjIwIDB4MDAwMDAwMDAgMHgwMDAwMDAwMCAgICAgLi4uLiAuLi4uLi4uLi4uLgorICAg
ICAgICAweDAwMDAwMDAwIDB4MjEwMDAwMDAgMHg3MjZjNjQ2OCAweDAwMDAwMDAwICAgICAuLi4u
Li4uIWhkbHIuLi4uCisgICAgICAgIDB4MDAwMDAwMDAgMHg3MjY5NjQ2ZCAweDZjNzA3MDYxIDB4
MDAwMDAwMDAgICAgIC4uLi5tZGlyYXBwbC4uLi4KKyAgICAgICAgMHgwMDAwMDAwMCAweDA0MDAw
MDAwIDB4NzM2YzY5YzEgMHgwMDAwMDA3NCAgICAgLi4uLi4uLi4uaWxzdC4uLgorICAgICAgICAw
eDZmNzRhOTIzIDB4MDAwMDAwNmYgMHg3NDYxNjQxYiAweDAwMDAwMDYxICAgICAjLnRvby4uLi5k
YXRhLi4uCisgICAgICAgIDB4MDAwMDAwMDEgMHg3NjYxNGMwMCAweDJlMzIzNTY2IDB4MzAyZTMy
MzYgICAgIC4uLi4uTGF2ZjUyLjYyLjAKKyAgICAgICAgMHgzNzAwMDAwMCAweDZkNjE2ZWE5IDB4
MmYwMDAwMDAgMHg2MTc0NjE2NCAgICAgLi4uNy5uYW0uLi4vZGF0YQorICAgICAgICAuLi4KK0xl
YWs6IDB4MmE5Yzk2MCAgc2l6ZT0yODggIHpvbmU6IERlZmF1bHRNYWxsb2Nab25lXzB4MWQ5NDAw
MAorICAgICAgICAweDA5YTFjYzQ3IDB4MWJkYTg1NjAgMHgzZDQ3MmNkMSAweGZiZTliY2NkICAg
ICBHLi4uYC4uLi4sRz0uLi4uCisgICAgICAgIDB4OGJjZGEwMDggMHg5ZTk3MmE5MSAweGE4OTJj
ZjYzIDB4MjQ0OGJkYjAgICAgIC4uLi4uKi4uYy4uLi4uSCQKKyAgICAgICAgMHg0NzM2ZmMzNCAw
eGRiZTJkOTRlIDB4MjVmNTY2ODggMHg4Mzk0MDJhNCAgICAgNC42R04uLi4uZi4lLi4uLgorICAg
ICAgICAweGQxMjQ5NmIzIDB4NTljNDBjMTIgMHg4Y2ZjYWIyYSAweGQyMGVmOWM0ICAgICAuLiQu
Li4uWSouLi4uLi4uCisgICAgICAgIDB4ZTdjNTZiMWIgMHg1ODM1YWY0NSAweGM2OTExNWRlIDB4
NjkyM2U0YmIgICAgIC5rLi5FLjVYLi4uLi4uI2kKKyAgICAgICAgMHg4NmYxNTU1MyAweDE1ZDQw
ZmE5IDB4NjgxMjg4YTQgMHhjMzMyOThhOSAgICAgU1UuLi4uLi4uLi5oLi4yLgorICAgICAgICAw
eDQzOWJiNTM1IDB4YzRmYzc0M2QgMHg3ZGZhYWZmOCAweDJjYzQ5YTRhICAgICA1Li5DPXQuLi4u
Ln1KLi4sCisgICAgICAgIDB4ZGQxMTlkZjggMHg3ZTA4NjgyMSAweDNkN2QxMjllIDB4MmUxYjE1
NDcgICAgIC4uLi4haC5+Li59PUcuLi4KKyAgICAgICAgLi4uCitMZWFrOiAweDI1MTAyZmUwICBz
aXplPTE3NiAgem9uZTogRGVmYXVsdE1hbGxvY1pvbmVfMHgxZDk0MDAwICAgc3RyaW5nICdOU0V4
Y2VwdGlvbiBEYXRhJworIiIiCisKKyAgICBkZWYgdGVzdF9wYXJzZV9sZWFrc19vdXRwdXQoc2Vs
Zik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYuX21ha2VfZGV0ZWN0b3IoKS5fcGFy
c2VfbGVha3Nfb3V0cHV0KHNlbGYuZXhhbXBsZV9sZWFrc19vdXRwdXQsIDUxMjIpLCAoMzM3MzAx
LCAwLCA2NTI1MjE2KSkKKworICAgIGRlZiB0ZXN0X2xlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShz
ZWxmKToKKyAgICAgICAgZGV0ZWN0b3IgPSBzZWxmLl9tYWtlX2RldGVjdG9yKCkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHMoZGV0ZWN0b3IubGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KCcvYm9n
dXMtZGlyZWN0b3J5JyksIFtdKQorICAgICAgICBkZXRlY3Rvci5fZmlsZXN5c3RlbSA9IE1vY2tG
aWxlU3lzdGVtKHsKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJU
cmVlLTAtMS50eHQnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtzLUR1bXBS
ZW5kZXJUcmVlLTEtMS50eHQnOiAnJywKKyAgICAgICAgICAgICcvbW9jay1yZXN1bHRzL2xlYWtz
LUR1bXBSZW5kZXJUcmVlLTAtMi50eHQnOiAnJywKKyAgICAgICAgfSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMobGVuKGRldGVjdG9yLmxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeSgnL21vY2st
cmVzdWx0cycpKSwgMykKKworCiBjbGFzcyBNYWNUZXN0KHBvcnRfdGVzdGNhc2UuUG9ydFRlc3RD
YXNlKToKICAgICBkZWYgcG9ydF9tYWtlcihzZWxmLCBwbGF0Zm9ybSk6CiAgICAgICAgICMgRklY
TUU6IFRoaXMgcGxhdGZvcm0gY2hlY2sgc2hvdWxkIG5vIGxvbmdlciBiZSBuZWNlc3NhcnkgYW5k
IHNob3VsZCBiZSByZW1vdmVkIGFzIHNvb24gYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5w
eQppbmRleCAwNGIwNWE5ZmM0NjMzMzIyY2Y0NWJjZWM0MjE0ZjJhNmQwMWJjNGVmLi5lNmIxNjFl
NDQwYjUzMGUwMDYxMGI5MjMyMGEwMDI1NTBmNzQwZGYzIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkK
QEAgLTU0LDEyICs1NCwxOCBAQCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogCiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHBvcnRfb2JqLCBuYW1lLCBjbWQsIGVudj1Ob25lLCBleGVjdXRpdmU9RXhlY3V0
aXZlKCkpOgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9ydF9vYmoKLSAgICAgICAgc2VsZi5fbmFt
ZSA9IG5hbWUKKyAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUgICMgU2hvdWxkIGJlIHRoZSBjb21t
YW5kIG5hbWUgKGUuZy4gRHVtcFJlbmRlclRyZWUsIEltYWdlRGlmZikKICAgICAgICAgc2VsZi5f
Y21kID0gY21kCiAgICAgICAgIHNlbGYuX2VudiA9IGVudgogICAgICAgICBzZWxmLl9yZXNldCgp
CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IGV4ZWN1dGl2ZQogCisgICAgZGVmIG5hbWUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9uYW1lCisKKyAgICBkZWYgcGlkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fcHJvYy5waWQKKwogICAgIGRlZiBfcmVzZXQoc2VsZik6CiAgICAg
ICAgIHNlbGYuX3Byb2MgPSBOb25lCiAgICAgICAgIHNlbGYuX291dHB1dCA9ICcnCkBAIC0yMTYs
OSArMjIyLDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgICAgICByZXR1cm4g
b3V0cHV0CiAKICAgICAgICAgICAgICMgTm9wZSAtIHdhaXQgZm9yIG1vcmUgZGF0YS4KLSAgICAg
ICAgICAgIChyZWFkX2Zkcywgd3JpdGVfZmRzLCBlcnJfZmRzKSA9IHNlbGVjdC5zZWxlY3Qoc2Vs
ZWN0X2ZkcywgW10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGVjdF9mZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYWRsaW5lIC0gbm93KQorICAgICAgICAg
ICAgKHJlYWRfZmRzLCB3cml0ZV9mZHMsIGVycl9mZHMpID0gc2VsZWN0LnNlbGVjdChzZWxlY3Rf
ZmRzLCBbXSwgc2VsZWN0X2ZkcywgZGVhZGxpbmUgLSBub3cpCiAgICAgICAgICAgICB0cnk6CiAg
ICAgICAgICAgICAgICAgaWYgb3V0X2ZkIGluIHJlYWRfZmRzOgogICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9vdXRwdXQgKz0gc2VsZi5fcHJvYy5zdGRvdXQucmVhZCgpCkBAIC0yMzIsNiArMjM2
LDggQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgaWYgbm90IHNlbGYuX3Byb2M6CiAg
ICAgICAgICAgICByZXR1cm4KIAorICAgICAgICBzZWxmLl9wb3J0LmNoZWNrX2Zvcl9sZWFrcyhz
ZWxmLm5hbWUoKSwgc2VsZi5waWQoKSkKKwogICAgICAgICBwaWQgPSBzZWxmLl9wcm9jLnBpZAog
ICAgICAgICBzZWxmLl9wcm9jLnN0ZGluLmNsb3NlKCkKICAgICAgICAgc2VsZi5fcHJvYy5zdGRv
dXQuY2xvc2UoKQpAQCAtMjQ4LDggKzI1NCw3IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAgICAg
ICAgICAgICB3aGlsZSBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lIGFuZCB0aW1lLnRpbWUoKSA8
IHRpbWVvdXQ6CiAgICAgICAgICAgICAgICAgdGltZS5zbGVlcCgwLjEpCiAgICAgICAgICAgICBp
ZiBzZWxmLl9wcm9jLnBvbGwoKSBpcyBOb25lOgotICAgICAgICAgICAgICAgIF9sb2cud2Fybmlu
Zygnc3RvcHBpbmcgJXMgdGltZWQgb3V0LCBraWxsaW5nIGl0JyAlCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX25hbWUpCisgICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdz
dG9wcGluZyAlcyB0aW1lZCBvdXQsIGtpbGxpbmcgaXQnICUgc2VsZi5fbmFtZSkKICAgICAgICAg
ICAgICAgICBzZWxmLl9leGVjdXRpdmUua2lsbF9wcm9jZXNzKHNlbGYuX3Byb2MucGlkKQogICAg
ICAgICAgICAgICAgIF9sb2cud2FybmluZygna2lsbGVkJykKICAgICAgICAgc2VsZi5fcmVzZXQo
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93
ZWJraXQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtp
dC5weQppbmRleCA0NWZmYjIzY2Y4NTg4OGMzZTAwNmIyZGNiMTE0ZDM5NGFkMjVhMTNmLi5jZjNj
YTQyMTZjYmFkODJiOTczZjM0OWRhOTZjZjcwNjYzMDg4OTRjIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weQpAQCAtNTUsNyArNTUs
OSBAQCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAjIEZJWE1FOiBEaXNhYmxlIHBp
eGVsIHRlc3RzIHVudGlsIHRoZXkgYXJlIHJ1biBieSBkZWZhdWx0IG9uIGJ1aWxkLndlYmtpdC5v
cmcuCiAgICAgICAgIHNlbGYuc2V0X29wdGlvbl9kZWZhdWx0KCJwaXhlbF90ZXN0cyIsIEZhbHNl
KQogICAgICAgICAjIFdlYktpdCBwb3J0cyBleHBlY3QgYSAzNXMgdGltZW91dCwgb3IgMzUwcyB0
aW1lb3V0IHdoZW4gcnVubmluZyB3aXRoIC1nLy0tZ3VhcmQtbWFsbG9jLgotICAgICAgICBzZWxm
LnNldF9vcHRpb25fZGVmYXVsdCgidGltZV9vdXRfbXMiLCAzNTAwMCkKKyAgICAgICAgIyBGSVhN
RTogLS1ndWFyZC1tYWxsb2MgaXMgb25seSBzdXBwb3J0ZWQgb24gTWFjLCBzbyB0aGlzIGxvZ2lj
IHNob3VsZCBiZSBpbiBtYWMucHkuCisgICAgICAgIGRlZmF1bHRfdGltZV9vdXRfc2Vjb25kcyA9
IDM1MCBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxvYycpIGVsc2UgMzUKKyAgICAgICAg
c2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoInRpbWVfb3V0X21zIiwgZGVmYXVsdF90aW1lX291dF9z
ZWNvbmRzICogMTAwMCkKIAogICAgIGRlZiBkcml2ZXJfbmFtZShzZWxmKToKICAgICAgICAgaWYg
c2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKQEAgLTExNSw3ICsxMTcsNyBA
QCBjbGFzcyBXZWJLaXRQb3J0KFBvcnQpOgogICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5k
LmV4dGVuZChzZWxmLl9hcmd1bWVudHNfZm9yX2NvbmZpZ3VyYXRpb24oKSkKICAgICAgICAgaWYg
YXJnczoKICAgICAgICAgICAgIHJ1bl9zY3JpcHRfY29tbWFuZC5leHRlbmQoYXJncykKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX2V4ZWN1dGl2ZS5ydW5fY29tbWFuZChydW5fc2NyaXB0X2NvbW1hbmQs
IGN3ZD1zZWxmLl9jb25maWcud2Via2l0X2Jhc2VfZGlyKCkpICAjIEl0J3MgdW5jbGVhciBpZiBz
ZXR0aW5nIGN3ZCBpcyBuZWNlc3NhcnkgZm9yIGFsbCBjYWxsZXJzLgorICAgICAgICByZXR1cm4g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYu
X2NvbmZpZy53ZWJraXRfYmFzZV9kaXIoKSkKIAogICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYp
OgogICAgICAgICB0cnk6CkBAIC00NTQsNyArNDU2LDYgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERy
aXZlcik6CiAgICAgZGVmIHJlc3RhcnQoc2VsZik6CiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9j
ZXNzLnN0b3AoKQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5zdGFydCgpCi0gICAgICAg
IHJldHVybgogCiAgICAgZGVmIGRldGVjdGVkX2NyYXNoKHNlbGYpOgogICAgICAgICAjIEZJWE1F
OiBXZSBjYW4ndCBqdXN0IGNoZWNrIHNlbGYuX3NlcnZlcl9wcm9jZXNzLmNyYXNoZWQgZm9yIHR3
byByZWFzb25zOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggODBhMTViMmNiYTQxMzgzZWQwYWYxYmUzYWIw
Yjk1ZWRmY2UxMDlkMC4uYzc0NDU1ODg2MmI1NTA2OWQ4NmU1NmYyMmIxZjU4YmQ4YWMxNzM4MyAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5f
d2Via2l0X3Rlc3RzLnB5CkBAIC0yNDEsMjIgKzI0MSwyMCBAQCBkZWYgcGFyc2VfYXJncyhhcmdz
PU5vbmUpOgogICAgICAgICAgICAgaGVscD0iRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGJldHdl
ZW4gZWFjaCB0ZXN0IiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbXBsZXgt
dGV4dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBo
ZWxwPSJVc2UgdGhlIGNvbXBsZXggdGV4dCBjb2RlIHBhdGggZm9yIGFsbCB0ZXh0IChNYWMgT1Mg
WCBhbmQgV2luZG93cyBvbmx5KSIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLWwi
LCAiLS1sZWFrcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAg
ICAgICBoZWxwPSJFbmFibGUgbGVha3MgY2hlY2tpbmcgKE1hYyBPUyBYIG9ubHkpIiksCisgICAg
ICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItZyIsICItLWd1YXJkLW1hbGxvYyIsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSJFbmFibGUgbWFs
bG9jIGd1YXJkIChNYWMgT1MgWCBvbmx5KSIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlv
bigiLS10aHJlYWRlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAg
ICAgICAgICBoZWxwPSJSdW4gYSBjb25jdXJyZW50IEphdmFTY3JpcHQgdGhyZWFkIHdpdGggZWFj
aCB0ZXN0IiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdlYmtpdC10ZXN0LXJ1
bm5lciIsICItMiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICBoZWxwPSJVc2Ug
V2ViS2l0VGVzdFJ1bm5lciByYXRoZXIgdGhhbiBEdW1wUmVuZGVyVHJlZS4iKSwKICAgICBdCiAK
LSAgICAjIE1pc3NpbmcgTWFjLXNwZWNpZmljIG9sZC1ydW4td2Via2l0LXRlc3RzIG9wdGlvbnM6
Ci0gICAgIyBGSVhNRTogTmVlZDogLWcsIC0tZ3VhcmQgZm9yIGd1YXJkIG1hbGxvYyBzdXBwb3J0
IG9uIE1hYy4KLSAgICAjIEZJWE1FOiBOZWVkOiAtbCAtLWxlYWtzICAgIEVuYWJsZSBsZWFrcyBj
aGVja2luZy4KLQogICAgIG9sZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBhdCA9IFsKICAgICAgICAg
IyBGSVhNRTogUmVtb3ZlIHRoaXMgb3B0aW9uIG9uY2UgdGhlIGJvdHMgZG9uJ3QgcmVmZXIgdG8g
aXQuCiAgICAgICAgICMgcmVzdWx0cy5odG1sIGlzIHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgdGhp
cyBvdXQgaXRzZWxmLgogICAgICAgICBfY29tcGF0X3NoaW1fb3B0aW9uKCItLXVzZS1yZW1vdGUt
bGlua3MtdG8tdGVzdHMiKSwKLSAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IGxlYWsgZGV0ZWN0
aW9uLgotICAgICAgICBfY29tcGF0X3NoaW1fb3B0aW9uKCItLWxlYWtzIiksCiAgICAgXQogCiAg
ICAgcmVzdWx0c19vcHRpb25zID0gWwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101250</attachid>
            <date>2011-07-18 18:06:20 -0700</date>
            <delta_ts>2011-07-18 18:27:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63832-20110718180619.patch</filename>
            <type>text/plain</type>
            <size>40073</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmODIxMGVjNWM1YTNiYTY5MjkzMjMzMjhlMDM2NDE2YTlh
NWM5MmUxLi43OTM5NWRiZjlhMWZkYjdkNmExNmFhZDlmYjk4MWI1ZWY0NDlmNjkyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTEtMDctMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYXkgbm90IGJlIHN1ZmZp
Y2llbnQgdG8gYWN0dWFsbHkgdHJhbnNpdGlvbiBvdmVyIHRoZSBsZWFrcyBib3QsCisgICAgICAg
IGJ1dCB0aGlzIGlzIGEgaHVnZSBzdGVwIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAgICAg
ICAgSSBoYWQgdG8gbWFrZSBwYXJzZS1tYWxsb2MtaGlzdG9yeSB1bmRlcnN0YW5kIGJlaW5nIHBh
c3NlZCBtb3JlIHRoYW4KKyAgICAgICAgb25lIGZpbGUgKHRvIGF2b2lkIHRoZSBzaWxseSBjYXQg
fCBub25zZW5zZSBpbiBvbGQtcnVuLXdlYmtpdC10ZXN0cykuCisKKyAgICAgICAgSSByZW1vdmVk
IHNvbWUgZGVhZCBjb2RlIHJlbGF0aW5nIHRvIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2Ygb3VyIGNy
YXNoIGRldGVjdGlvbi4KKworICAgICAgICBJIGNyZWF0ZWQgYSBuZXcgY2xhc3MgIkxlYWtEZXRl
Y3RvciIgdG8gZW5jYXBzdWxhdGUgYWxsIHRoaXMgbG9naWMuCisgICAgICAgIEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGNvbnNpZGVyIHB1bGxpbmcgdGhhdCBjbGFzcyBvdXQgb2YgbWFjLnB5IGFuZAor
ICAgICAgICBzaGFyaW5nIHdpdGggb3RoZXIgcG9ydHMuICBIb3dldmVyIGdpdmVuIHRoYXQgT1JX
VCBoYXMgaGFkCisgICAgICAgIC0tbGVha3Mgc3VwcG9ydCBvbiBNYWMgZm9yIGFsbW9zdCA3IHll
YXJzIGFuZCBubyBvdGhlciBwb3J0IGhhcyBhZGRlZAorICAgICAgICBpdCwgbGVhdmVzIG1lIHRv
IGJlbGlldmUgd2UncmUgaW4gbm8gcnVzaCB0byBtb3ZlIExlYWtEZXRlY3Rvci4KKworICAgICAg
ICBJJ3ZlIHRlc3RlZCAtLWxlYWtzIGxvY2FsbHkuICBJIHN1c3BlY3QgdGhlcmUgYXJlIG1vcmUg
YnVncyB0byBzaGFrZSBvdXQKKyAgICAgICAgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91
Z2ggdG8gc3RhcnQuCisKKyAgICAgICAgSSBhbHNvIGFkZGVkIHN1cHBvcnQgZm9yIC0tZ3VhcmQt
bWFsbG9jLCBidXQgaGF2ZSBub3QgdGVzdGVkIGl0IG11Y2guICBJdAorICAgICAgICBzaG91bGQg
YmUgdmlld2VkIGFzIGV4cGVyaW1lbnRhbCBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgSSBhbHNv
IGZpeGVkIHZhcmlvdXMgb3MucGF0aCB1c2VzIHRvIHNlbGYuX2ZpbGVzeXN0ZW0gYXMgSSB3YXMg
cmVhZGluZworICAgICAgICB0aHJvdWdoIHRoZSB2YXJpb3VzIGZpbGVzIHRvIHVuZGVyc3RhbmQg
aG93IGJlc3QgdG8gZml4IHRoaXMgYnVnLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKHBhcnNlTGVha3NhbmRQcmludFVuaXF1ZUxlYWtzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3dvcmtlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorCisyMDExLTA3LTE4ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVu
dCBkb2VzIG5vdCB3b3JrIHdoZW4gbm90IGNhbGxlZCBmcm9tIHRoZSByb290IG9mIHRoZSBjaGVj
a291dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3
NTEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggMDA5ZTQ2MmQ3NTAwYmFiNThm
OGI4YWJlNDg3YzQ2MjZkNTcwNzg2OC4uNzNiNzA5NGIyNzU5ZDc1ZGUzZjMxNGNiZjY5NDc4ZGEy
NDFlODI3NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC0yMjQxLDcgKzIyNDEs
NyBAQCBzdWIgZXBpbG9ndWVzQW5kUHJvbG9ndWVzKCQkKQogc3ViIHBhcnNlTGVha3NhbmRQcmlu
dFVuaXF1ZUxlYWtzKCkKIHsKICAgICByZXR1cm4gdW5sZXNzIEBsZWFrc0ZpbGVuYW1lczsKLSAg
ICAgCisKICAgICBteSAkbWVyZ2VkRmlsZW5hbWVzID0gam9pbiAiICIsIEBsZWFrc0ZpbGVuYW1l
czsKICAgICBteSAkcGFyc2VNYWxsb2NIaXN0b3J5VG9vbCA9IHNvdXJjZURpcigpIC4gIi9Ub29s
cy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5IjsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkgYi9Ub29scy9TY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5CmluZGV4IDE3N2RlMWM5MDNjZjZkMjUxMWQ4ZjQ0ZmI3YzdjODFmNDdjYTFkZTIu
LmQyNTdmOWZlMTgyMGRlYjIwZWYyYjE2ZGU1N2I3ZWNmOWQyZmEzNGYgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkKKysrIGIvVG9vbHMvU2NyaXB0cy9wYXJz
ZS1tYWxsb2MtaGlzdG9yeQpAQCAtNTcsMTggKzU3LDIwIEBAIHN1YiBtYWluKCkKICAgICAgICAg
Im1lcmdlLXJlZ2V4cDpzIiA9PiBcQG1lcmdlUmVnZXhwcywKICAgICAgICAgIm1lcmdlLWRlcHRo
OmkiID0+IFwkbWVyZ2VEZXB0aAogICAgICk7Ci0gICAgbXkgJGZpbGVOYW1lID0gJEFSR1ZbMF07
Ci0gICAgZGllICR1c2FnZSBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICEkZmlsZU5hbWUpOwor
ICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhc2NhbGFyKEBBUkdWKSk7
CiAKLSAgICBvcGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAkZmlsZU5h
bWUiOwotICAgIG15IEBmaWxlID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7CisgICAgbXkgQGxp
bmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkZmlsZU5hbWUgKEBBUkdWKSB7CisgICAgICAgIG9w
ZW4gRklMRSwgIjwkZmlsZU5hbWUiIG9yIGRpZSAiYmFkIGZpbGU6ICRmaWxlTmFtZSI7CisgICAg
ICAgIHB1c2goQGxpbmVzLCA8RklMRT4pOworICAgICAgICBjbG9zZSBGSUxFOworICAgIH0KIAog
ICAgIG15ICVjYWxsc3RhY2tzID0gKCk7CiAgICAgbXkgJGJ5dGVDb3VudFRvdGFsID0gMDsKIAot
ICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBmaWxlOyAkaSsrKSB7Ci0gICAgICAgIG15ICRsaW5l
ID0gJGZpbGVbJGldOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaW5lczsgJGkrKykgewor
ICAgICAgICBteSAkbGluZSA9ICRsaW5lc1skaV07CiAgICAgICAgIG15ICgkY2FsbENvdW50LCAk
Ynl0ZUNvdW50KTsKIAogICAgICAgICAjIEZpcnN0IHRyeSBtYWxsb2NfaGlzdG9yeSBmb3JtYXQK
QEAgLTg2LDcgKzg4LDcgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgaWYgKCRieXRlQ291bnQp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAoISgkbGluZSA9fiAiQ2FsbCBzdGFjazogIikpIHsK
ICAgICAgICAgICAgICAgICAgICAgJGkrKzsKLSAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSAk
ZmlsZVskaV07CisgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDE1ICsxMDEsMTUg
QEAgc3ViIG1haW4oKQogICAgICAgICAgICAgJGNhbGxDb3VudCA9IDE7CiAgICAgICAgICAgICAo
JGJ5dGVDb3VudCkgPSAoJGxpbmUgPX4gL0tleTogKD86XGQrKSwgKFxkKykgYnl0ZXMvKTsKICAg
ICAgICAgICAgIGlmICgkYnl0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAkZmls
ZVsrKyRpXTsKKyAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAgICAgICAg
ICAgICAgICBteSBAdGVtcFN0YWNrOwotICAgICAgICAgICAgICAgIHdoaWxlICgkZmlsZVskaSsx
XSAhfiAvXig/Oi18XGQpLykgeworICAgICAgICAgICAgICAgIHdoaWxlICgkbGluZXNbJGkrMV0g
IX4gL14oPzotfFxkKS8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9cKTog
KC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbCA9ICQxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGNhbGwgPX4gcy9cciQvLzsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2hpZnQoQHRlbXBTdGFjaywgJGNhbGwpOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGZpbGVbKyskaV07CisgICAgICAgICAgICAgICAg
ICAgICRsaW5lID0gJGxpbmVzWysrJGldOwogICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkbGluZSA9IGpvaW4oIiB8ICIsIEB0ZW1wU3RhY2spOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHkKaW5kZXggZmRjODViNzU1ZTUxOWRmNDkwYzJiMjA1N2IyODQ2OWIxZmQ2ZmU5My4u
YjlmOGFlYjllYTAyOTFiY2EyZWE1ODQ2MTE4N2E1ZjM4N2RjMGM4YyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CkBAIC0yNiwxNSAr
MjYsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiAKIAotZGVmIF9pc19jcmFzaF9yZXBvcnRlcihwcm9jZXNzX25h
bWUpOgotICAgIHJldHVybiByZS5tYXRjaChyIlJlcG9ydENyYXNoIiwgcHJvY2Vzc19uYW1lKQot
Ci0KIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtKToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KQEAgLTQ1LDEx
ICs0MCwxMSBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKIAogICAgIGRlZiBfbG9nX2RpcmVj
dG9yeV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lz
dGVtLmV4cGFuZHVzZXIoIn4iKQotICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQotICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhvcy5wYXRoLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBv
cnRzIikpOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihsb2dfZGly
ZWN0b3J5LCAiRGlhZ25vc3RpY1JlcG9ydHMiKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9n
X2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikpOgorICAgICAgICAgICAgbG9nX2RpcmVj
dG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiRGlhZ25vc3RpY1Jl
cG9ydHMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihsb2dfZGlyZWN0b3J5LCAiQ3Jhc2hSZXBvcnRlciIpCisgICAgICAgICAgICBsb2df
ZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJDcmFzaFJl
cG9ydGVyIikKICAgICAgICAgcmV0dXJuIGxvZ19kaXJlY3RvcnkKIAogICAgIGRlZiBfZmluZF9u
ZXdlc3RfbG9nX2RhcndpbihzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNTksNSArNTQsNSBAQCBj
bGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2xv
Z19kaXJlY3RvcnlfZGFyd2luKCkKICAgICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmls
ZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hfbG9nKQogICAgICAg
ICBpZiBub3QgbG9nczoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc29ydGVk
KGxvZ3MpWy0xXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDhmM2E2ZGE5YTcxMTAzY2IwNTNl
N2JhMDA5NjY1MTFiOWRiNWJlNTUuLjc2NGJjMzhiYTM4NzQwOGIwZTVhOWVmNDdkNGU4MzE1MmMz
MWY5NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDkzLDE2ICs0OTMsMTEgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2tpcF9jaHVuayA9
IHNraXBwZWQKIAotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5f
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmsp
Ci0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3Vt
bWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAg
ICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnks
Ci0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAg
ICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0g
ICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2Vs
Zi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQorICAgICAgICByZXN1bHRf
c3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBzZWxmLl90ZXN0X2Zp
bGVzIHwgc2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19v
Zl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikK
KyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1t
YXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQorICAgICAgICBzZWxmLl9w
cmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0
YXRpb25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1
bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lw
cGVkIikKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgogICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAn
CkBAIC03MTksOCArNzE0LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB0aHJl
YWRfdGltaW5ncyA9IFtdCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1No
YXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJk
cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9v
cHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5
X3BhcmFsbGVsKQorICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxm
Ll9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQogCiAgICAgICAg
ICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3Jr
ZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0
aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CkBAIC03MzgsMTUgKzczMiwxMiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKGludChz
ZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIGxlbihhbGxfc2hhcmRzKSkKICAgICAgICAg
c2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxlbihs
b2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldv
cmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLCBzZWxmLCB3b3JrZXIuV29ya2VyKQogCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVybiAoa2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAg
ICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90
aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVt
X3dvcmtlcnMpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcg
JXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCiAgICAg
ICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29y
a2VyX251bWJlcikKICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3Jr
ZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKQEAgLTc3MiwxMCArNzYzLDYgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdoaWxlIG5vdCBz
ZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFRlbXBvcmFyaWx5IGRpc2FibGVkIHRv
IHNlZSBob3cgdGhpcyBjb2RlIGVmZmVjdCBwZXJmb3JtYW5jZSBvbiB0aGUgYnVpbGRib3RzLgot
ICAgICAgICAgICAgICAgICMgaWYgc2VsZi5fcG9ydC5leGVjdXRpdmUucnVubmluZ19waWRzKHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpOgotICAgICAgICAgICAgICAgICMgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCJXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlciAuLi4iKQot
ICAgICAgICAgICAgICAgICMgICAgIHNlbGYuX3BvcnQuZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCiAgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25u
ZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCiAKICAgICAgICAgICAgICMg
TWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUp
LgpAQCAtODA4LDggKzc5NSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2Vs
Zi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KIAogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhp
cyBiZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1
cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAgICAgcmV0dXJu
IChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxm
Ll9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYp
OgogICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnkpCkBAIC05MDIsMTkgKzg4OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQogCi0gICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19z
dGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotCisgICAg
ICAgIHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwg
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJl
c3VsdF9zdW1tYXJ5KQogICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeShyZXN1bHRf
c3VtbWFyeSkKIAogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5
KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnku
dG90YWwsIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVk
KQogCiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnks
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSwgaW50ZXJydXB0
ZWQ9aW50ZXJydXB0ZWQpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9y
ZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKQEAgLTkyNSwxMCArOTA1LDkgQEAgY2xhc3MgTWFu
YWdlcihvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4g
SXQncyBqdXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAogICAgICAgICAjIGZv
ciBpdCB0byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy5yZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAg
ICAgICAgICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRl
IHRoZSBzYW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmls
ZXMKLSAgICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KKyAgICAgICAgaWYgKHNlbGYu
X29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5k
IG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6CisgICAgICAgICAgICBzZWxmLl9wb3J0LnByaW50
X2xlYWtzX3N1bW1hcnkoKQorICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzIHRvIGFwcGVuZ2luZSBzZXJ2
ZXIuCiAgICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhz
ZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1t
YXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNlLCBpbnRl
cnJ1cHRlZD1pbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVz
KHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5kZXggMmQ2NThjMGExZGQ4MDJiMWJhNzllNDA0NWQy
ZTM1MzZmOTM1NGZlNy4uNTE3ODA0MjAxMzE3MTBmYjk4MzFiZDYxMWIwZTgyMzc3YjhlMDI1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlci5weQpAQCAtMTIwLDE0ICsxMjAsNiBAQCBjbGFzcyBXb3JrZXIobWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fZG9uZSA9
IFRydWUKIAogICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMg
QmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHdlIHdhaXQgZm9yIGFueSBjcmFzaCByZXBvcnRlcnMg
dG8gZmluaXNoCi0gICAgICAgICMgcnVubmluZy4gT24gTWFjLCBSZXBvcnRDcmFzaCBjaGV3cyB1
cCBhIGJ1bmNoIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgIyBjYXVzZXMgdGhlIHRlc3RzIHRv
IGJlY29tZSB1bnN0YWJsZSwgc28gd2UgZG9uJ3Qgd2FudCB0byBydW4gaW4KLSAgICAgICAgIyBw
YXJhbGxlbCB3aXRoIFJlcG9ydENyYXNoLgotICAgICAgICAjCi0gICAgICAgICMgVGVtcG9yYXJp
bHkgZGlzYWJsZWQgdG8gc2VlIGhvdyB0aGlzIGNvZGUgZWZmZWN0IHBlcmZvcm1hbmNlIG9uIHRo
ZSBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fcG9ydC5leGVjdXRpdmUud2FpdF9uZXdlc3Qo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLQogICAgICAgICB0ZXN0X3RpbWVvdXRfc2Vj
ID0gc2VsZi50aW1lb3V0KHRlc3RfaW5wdXQpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkK
ICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rl
c3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDEzMmQxYTYwYjgyYjc2YTU4
MDRlM2ExMjBhM2Q4NmM2YmYxZTI2ZGQuLjI5MjU5MThmMjE0ZjQ4MjMyM2RhNjlhZTU5NTA3YzQ2
YTBmNDI4ODIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKQEAgLTI4OCw2ICsyODgsMTQgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
IGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAgICByZXR1
cm4gRmFsc2UKIAorICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBw
cm9jZXNzX3BpZCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcmludF9sZWFrc19zdW1tYXJ5
KHNlbGYpOgorICAgICAgICAjIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgdG8gcHJpbnQg
YSBzdW1tYXJ5IG9mIGxlYWtzIGZvdW5kCisgICAgICAgICMgd2hpbGUgcnVubmluZyB0aGUgbGF5
b3V0IHRlc3RzLgorICAgICAgICBwYXNzCisKICAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFjdHVhbCBiaW5hcnkgdGhhdCBpcyBw
ZXJmb3JtaW5nIHRoZSB0ZXN0LAogICAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSByZWZlcnJlZCB0
byBpbiBsb2cgbWVzc2FnZXMuIEluIG1vc3QgY2FzZXMgdGhpcwpAQCAtODUyLDggKzg2MCw3IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgcnVieSBmYWlsZWQgdG8gcnVu
IGZvciBzb21lIHJlYXNvbiwgbG9nIHRoZSBjb21tYW5kCiAgICAgICAgICAgICAjIG91dHB1dCBh
bmQgc3RvcCB0cnlpbmcuCiAgICAgICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxl
ID0gRmFsc2UKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBydW4gUHJldHR5UGF0
Y2ggKCVzKTpcbiVzIiAlIChjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICBlLm1lc3Nh
Z2Vfd2l0aF9vdXRwdXQoKSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gcnVu
IFByZXR0eVBhdGNoICglcyk6XG4lcyIgJSAoY29tbWFuZCwgZS5tZXNzYWdlX3dpdGhfb3V0cHV0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRjaF9lcnJvcl9odG1sCiAK
ICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQppbmRl
eCBmMzYyYTIyMWU0YTM5ODhiNThiZTI2MzZhMzFjMWJjODA1NWYzNWM1Li4zNTEyOTkxMTZkMTA2
YmQzNjFhOWMwYTAzZTZhN2Q4MmIxZDQ1YTFjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTE3LDEx
ICsxMTcsOSBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQogICAg
ICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgX2xvZy5lcnJvcignRm9yIGNvbXBsZXRl
IFdpbmRvd3MgYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJwotICAgICAgICAgICAgICAgICAg
ICAgICAnc2VlOicpCisgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgV2luZG93
cyBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJycpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICAgaHR0cDovL2Rldi5jaHJvbWl1bS5v
cmcvZGV2ZWxvcGVycy9ob3ctdG9zLycKLSAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLWlu
c3RydWN0aW9ucy13aW5kb3dzJykKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBodHRwOi8v
ZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hvdy10b3MvYnVpbGQtaW5zdHJ1Y3Rpb25zLXdp
bmRvd3MnKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgcmVsYXRpdmVfdGVzdF9m
aWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6CkBAIC0xMzMsOCArMTMxLDcgQEAgY2xhc3MgQ2hyb21p
dW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwogICAgIGRlZiBfYnVpbGRf
cGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2Rp
cmVjdG9yeScpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JyksICpjb21wcykKIAog
ICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywgKmNvbXBz
KQogICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwKToKQEAgLTE0OCwxMiArMTQ1
LDEwIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAg
ICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0aChzZWxmLCAqY29tcHMp
OgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFy
dHknLCAnbGlnaHR0cGQnLCAnd2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21p
dW1fYmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywgKmNvbXBzKQogCiAgICAg
ZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICd1c3InLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2JpbicsICdodHRwZCcpCisgICAg
ICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdj
eWd3aW4nLCAndXNyJywgJ3NiaW4nLCAnaHR0cGQnKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsICdjeWd3aW4taHR0cGQu
Y29uZicpCkBAIC0xODIsNSArMTc3LDQgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0
X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90
b193ZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jh
c2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLCAn
d2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGsucHkKaW5kZXggZGI0ZDI4NTJmYmQ0YzViMDdhOTBkNmVkMjNhOTU2NTFjY2RiNDQwMi4u
NTc0YzI5MTdlNDAzMDJiM2U2N2E1NWY3ZjI2MzQ4ZTJmNzBlY2I1NCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTQ3LDggKzQ3LDcg
QEAgY2xhc3MgR3RrRHJpdmVyKHdlYmtpdC5XZWJLaXREcml2ZXIpOgogICAgICAgICBlbnZpcm9u
bWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgIyBX
ZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9u
IF93b3JrZXJfbnVtYmVyCiAgICAgICAgIGVudmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAl
IChkaXNwbGF5X2lkKQotICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9j
ZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJp
dmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKKyAgICAgICAgc2VsZi5f
c2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQs
IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkK
IAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICB3ZWJraXQuV2ViS2l0RHJpdmVyLnN0b3Ao
c2VsZikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMu
cHkKaW5kZXggOWE1NTFjNWVkNGE3MmE2MTIxYjFlZDgzMjA0NzQxNDI0MWRjNjAzMC4uYWNiMmY2
MzJhNjI0NDJkYWMzMTUyYWEyNzYwZjA1ZTNmZTliMzQxMCAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTMyLDEyICszMiwxMTMgQEAg
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIElmIG90aGVyIHBvcnRzL3BsYXRm
b3JtcyBkZWNpZGUgdG8gc3VwcG9ydCAtLWxlYWtzLCB3ZSBzaG91bGQgc2VlIGFib3V0IHNoYXJp
bmcgYXMgbXVjaCBvZiB0aGlzIGNvZGUgYXMgcG9zc2libGUuCitjbGFzcyBMZWFrRGV0ZWN0b3Io
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCk6CisgICAgICAgICMgV2Ugc2hv
dWxkIG9wZXJhdGUgb24gYSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVyZS4KKyAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydC5fZXhlY3V0aXZl
CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisKKyAgICAjIFdl
IGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyByZXBvcnRlZCBsZWFrcyBzbyB0aGV5IGRvIG5vdCBnZXQg
aW4gb3VyIHdheSB3aGVuIGxvb2tpbmcgZm9yIFdlYktpdCBsZWFrczoKKyAgICAjIFRoaXMgYWxs
b3dzIHVzIGlnbm9yZSBrbm93biBsZWFrcyBhbmQgb25seSBiZSBhbGVydGVkIHdoZW4gbmV3IGxl
YWtzIG9jY3VyLiBTb21lIGxlYWtzIGFyZSBpbiB0aGUgb2xkCisgICAgIyB2ZXJzaW9ucyBvZiB0
aGUgc3lzdGVtIGZyYW1ld29ya3MgdGhhdCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgbGVha3MgYm90
cy4gRXZlbiB0aG91Z2ggYSBsZWFrIGhhcyBiZWVuCisgICAgIyBmaXhlZCwgaXQgd2lsbCBiZSBs
aXN0ZWQgaGVyZSB1bnRpbCB0aGUgYm90IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3ZXIg
ZnJhbWV3b3Jrcy4KKyAgICBkZWYgX3R5cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzKHNlbGYpOgor
ICAgICAgICAjIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIGFueSB0eXBlIGV4Y2x1ZGVzIGZyb20g
T1MgbGVha3MsIGJ1dCB3ZSB3aWxsIGxpa2VseSBhZ2FpbiBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICByZXR1cm4gW10KKworICAgIGRlZiBfY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3Mo
c2VsZik6CisgICAgICAgIGNhbGxzdGFja3MgPSBbCisgICAgICAgICAgICAiRmxhc2hfRW5mb3Jj
ZUxvY2FsU2VjdXJpdHkiLCAgIyBsZWFrcyBpbiBGbGFzaCBwbHVnLWluIGNvZGUsIHJkYXI6Ly9w
cm9ibGVtLzQ0NDk3NDcKKyAgICAgICAgXQorICAgICAgICBpZiBzZWxmLl9wb3J0LmlzX2xlb3Bh
cmQoKToKKyAgICAgICAgICAgIGNhbGxzdGFja3MgKz0gWworICAgICAgICAgICAgICAgICJDRkhU
VFBNZXNzYWdlQXBwZW5kQnl0ZXMiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2Js
ZW0vNTQzNTkxMgorICAgICAgICAgICAgICAgICJzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayIs
ICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDQxNjE5CisgICAgICAgICAg
ICAgICAgIl9DRkhUVFBSZWFkU3RyZWFtUmVhZE1hcmsiLCAgIyBsZWFrIGluIENGTmV0d29yaywg
cmRhcjovL3Byb2JsZW0vNTQ0MTQ2OAorICAgICAgICAgICAgICAgICJodHRwUHJvdG9jb2xTdGFy
dCIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDY4ODM3CisgICAgICAg
ICAgICAgICAgIl9DRlVSTENvbm5lY3Rpb25TZW5kQ2FsbGJhY2tzIiwgICMgbGVhayBpbiBDRk5l
dHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0NDE2MDAKKyAgICAgICAgICAgICAgICAiRGlzcGF0Y2hR
VE1zZyIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2
NzEzMgorICAgICAgICAgICAgICAgICJRVE1vdmllQ29udGVudFZpZXcgY3JlYXRlVmlzdWFsQ29u
dGV4dCIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2
NzEzMgorICAgICAgICAgICAgICAgICJfQ29weUFyY2hpdGVjdHVyZXNGb3JKVk1WZXJzaW9uIiwg
ICMgbGVhayBpbiBKYXZhLCByZGFyOi8vcHJvYmxlbS81OTEwODIzCisgICAgICAgICAgICBdCisg
ICAgICAgIGVsaWYgc2VsZi5fcG9ydC5pc19zbm93bGVvcGFyZCgpOgorICAgICAgICAgICAgY2Fs
bHN0YWNrcyArPSBbCisgICAgICAgICAgICAgICAgInJlYWRNYWtlck5vdGVQcm9wcyIsICAjIDxy
ZGFyOi8vcHJvYmxlbS83MTU2NDMyPiBsZWFrIGluIEltYWdlSU8KKyAgICAgICAgICAgICAgICAi
UVRLaXRNb3ZpZUNvbnRyb2xsZXJWaWV3IGNvbXBsZXRlVUlTZXR1cCIsICAjIDxyZGFyOi8vcHJv
YmxlbS83MTU1MTU2PiBsZWFrIGluIFFUS2l0CisgICAgICAgICAgICAgICAgImdldFZNSW5pdEFy
Z3MiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzcxNDQ0ND4gbGVhayBpbiBKYXZhCisgICAgICAgICAg
ICAgICAgIkphdmFfamF2YV9sYW5nX1N5c3RlbV9pbml0UHJvcGVydGllcyIsICAjIDxyZGFyOi8v
cHJvYmxlbS83NzE0NDY1PiBsZWFrIGluIEphdmEKKyAgICAgICAgICAgICAgICAiZ2xyQ29tcEV4
ZWN1dGVLZXJuZWwiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzgxNTM5MT4gbGVhayBpbiBncmFwaGlj
cyBkcml2ZXIgd2hpbGUgdXNpbmcgT3BlbkdMCisgICAgICAgICAgICAgICAgIk5TTnVtYmVyRm9y
bWF0dGVyIGdldE9iamVjdFZhbHVlOmZvclN0cmluZzplcnJvckRlc2NyaXB0aW9uOiIsICAjIDxy
ZGFyOi8vcHJvYmxlbS83MTQ5MzUwPiBMZWFrIGluIE5TTnVtYmVyRm9ybWF0dGVyCisgICAgICAg
ICAgICBdCisgICAgICAgIHJldHVybiBjYWxsc3RhY2tzCisKKyAgICBkZWYgX2xlYWtzX2FyZ3Mo
c2VsZiwgcGlkKToKKyAgICAgICAgbGVha3NfYXJncyA9IFtdCisgICAgICAgIGZvciBjYWxsc3Rh
Y2sgaW4gc2VsZi5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAg
ICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0YWNrPSIlcyInICUgY2FsbHN0YWNr
XSAgIyBDYWxsc3RhY2tzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtLCBzbyB3ZSBxdW90ZSB0aGUg
YXJnIHRvIHByZXZlbnQgY29uZnVzaW5nIHBlcmwncyBvcHRwYXJzZS4KKyAgICAgICAgZm9yIGV4
Y2x1ZGVkX3R5cGUgaW4gc2VsZi5fdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MoKToKKyAgICAg
ICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtdHlwZT0iJXMiJyAlIGV4Y2x1ZGVkX3R5
cGVdCisgICAgICAgIGxlYWtzX2FyZ3MuYXBwZW5kKHBpZCkKKyAgICAgICAgcmV0dXJuIGxlYWtz
X2FyZ3MKKworICAgIGRlZiBfcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCwg
cHJvY2Vzc19waWQpOgorICAgICAgICBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2gocidQcm9jZXNz
ICVzOiAoXGQrKSBsZWFrcz8gZm9yIChcZCspIHRvdGFsJyAlIHByb2Nlc3NfcGlkLCBsZWFrc19v
dXRwdXQpLmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKHInKFxk
KykgbGVha3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0cHV0KQorICAgICAgICBleGNsdWRlZCA9IGV4
Y2x1ZGVkX21hdGNoLmdyb3VwKDApIGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAorICAgICAgICBy
ZXR1cm4gaW50KGNvdW50KSwgaW50KGV4Y2x1ZGVkKSwgaW50KGJ5dGVzKQorCisgICAgZGVmIGxl
YWtzX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJs
ZWFrcy0qIikpCisKKyAgICBkZWYgbGVha3NfZmlsZV9uYW1lKHNlbGYsIHByb2Nlc3NfbmFtZSwg
cHJvY2Vzc19waWQpOgorICAgICAgICAjIFdlIGluY2x1ZGUgdGhlIG51bWJlciBvZiBmaWxlcyB0
aGlzIHdvcmtlciBoYXMgYWxyZWFkeSB3cml0dGVuIGluIHRoZSBuYW1lIHRvIHByZXZlbnQgb3Zl
cndyaXR0aW5nIHByZXZpb3VzIGxlYWsgcmVzdWx0cy4uCisgICAgICAgIHJldHVybiAibGVha3Mt
JXMtJXMudHh0IiAlIChwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKQorCisgICAgZGVmIHBhcnNl
X2xlYWtfZmlsZXMoc2VsZik6CisgICAgICAgIG1lcmdlX2RlcHRoID0gNSAgIyBPUldUIGhhZCBh
IC0tbWVyZ2UtbGVhay1kZXB0aCBhcmd1bWVudCwgYnV0IHRoYXQgc2VlbXMgb3V0IG9mIHNjb3Bl
IGZvciB0aGUgcnVuLXdlYmtpdC10ZXN0cyB0b29sLgorICAgICAgICBhcmdzID0gWworICAgICAg
ICAgICAgc2VsZi5fc2NyaXB0X3BhdGgoKSwKKyAgICAgICAgICAgICctLW1lcmdlLWRlcHRoJywK
KyAgICAgICAgICAgIG1lcmdlX2RlcHRoLAorICAgICAgICBdICsgbGVha19maWxlcworICAgICAg
ICBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQgPSBzZWxmLl9wb3J0Ll9ydW5fc2NyaXB0KCJw
YXJzZS1tYWxsb2MtaGlzdG9yeSIsIGFyZ3MsIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVu
dHM9RmFsc2UpCisKKyAgICAgICAgdW5pcXVlX2xlYWtfY291bnQgPSBsZW4ocmUuZmluZGFsbChy
J14oXGQqKVxzY2FsbHMnLCBwYXJzZV9tYWxsb2NfaGlzdG9yeV9vdXRwdXQpKQorICAgICAgICB0
b3RhbF9ieXRlcyA9IHJlLnNlYXJjaChyJ150b3RhbFw6XHMoLiopXHNcKCcsIHBhcnNlX21hbGxv
Y19oaXN0b3J5X291dHB1dCkuZ3JvdXAoMCkKKyAgICAgICAgcmV0dXJuICh0b3RhbF9ieXRlcywg
dW5pcXVlX2xlYWtfY291bnQpCisKKyAgICBkZWYgY2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nl
c3NfbmFtZSwgcHJvY2Vzc19waWQpOgorICAgICAgICBfbG9nLmluZm8oIiA/IGNoZWNraW5nIGZv
ciBsZWFrcyBpbiAlcyIgJSBwcm9jZXNzX25hbWUpCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGxlYWtzX291dHB1dCA9IHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInJ1bi1sZWFrcyIsIHNlbGYu
X2xlYWtzX2FyZ3MocHJvY2Vzc19waWQpLCBpbmNsdWRlX2NvbmZpZ3VyYXRpb25fYXJndW1lbnRz
PUZhbHNlKQorICAgICAgICBleGNlcHQgU2NyaXB0RXJyb3IsIGU6CisgICAgICAgICAgICBfbG9n
Lndhcm4oIkZhaWxlZCB0byBydW4gbGVha3MgdG9vbDogJXMiICUgZS5tZXNzYWdlX3dpdGhfb3V0
cHV0KCkpCisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBjb3VudCwgZXhjbHVkZWQsIGJ5
dGVzID0gc2VsZi5fcGFyc2VfbGVha3Nfb3V0cHV0KGxlYWtzX291dHB1dCwgcHJvY2Vzc19waWQp
CisgICAgICAgIGFkanVzdGVkX2NvdW50ID0gY291bnQgLSBleGNsdWRlZAorICAgICAgICBpZiBu
b3QgYWRqdXN0ZWRfY291bnQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBsZWFrc19m
aWxlbmFtZSA9IHNlbGYubGVha3NfZmlsZV9uYW1lKHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQp
CisgICAgICAgIGxlYWtzX291dHB1dF9wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYu
X3BvcnQucmVzdWx0c19kaXJlY3RvcnkoKSwgbGVha3NfZmlsZW5hbWUpCisgICAgICAgIHNlbGYu
X2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGxlYWtzX291dHB1dF9wYXRoLCBsZWFrc19vdXRw
dXQpCisKKyAgICAgICAgaWYgZXhjbHVkZWQ6CisgICAgICAgICAgICBfbG9nLndhcm4oIiArICVz
IGxlYWtzICglcyBieXRlcyBpbmNsdWRpbmcgJXMgZXhjbHVkZWQgbGVha3MpIHdlcmUgZm91bmQs
IGRldGFpbHMgaW4gJXMiICUgKGFkanVzdGVkX2NvdW50LCBieXRlcywgZXhjbHVkZWQsIGxlYWtz
X291dHB1dF9wYXRoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIF9sb2cud2FybigiICsg
JXMgbGVha3MgKCVzIGJ5dGVzKSB3ZXJlIGZvdW5kLCBkZXRhaWxzIGluICVzIiAlIChjb3VudCwg
Ynl0ZXMsIGxlYWtzX291dHB1dF9wYXRoKSkKKworCiBkZWYgb3NfdmVyc2lvbihvc192ZXJzaW9u
X3N0cmluZz1Ob25lLCBzdXBwb3J0ZWRfdmVyc2lvbnM9Tm9uZSk6CiAgICAgaWYgbm90IG9zX3Zl
cnNpb25fc3RyaW5nOgogICAgICAgICBpZiBoYXNhdHRyKHBsYXRmb3JtLCAnbWFjX3ZlcicpIGFu
ZCBwbGF0Zm9ybS5tYWNfdmVyKClbMF06CkBAIC05Miw2ICsxOTMsNyBAQCBjbGFzcyBNYWNQb3J0
KFdlYktpdFBvcnQpOgogICAgICAgICAgICAgc2VsZi5fdmVyc2lvbiA9IHBvcnRfbmFtZVtsZW4o
J21hYy0nKTpdCiAgICAgICAgICAgICBhc3NlcnQgc2VsZi5fdmVyc2lvbiBpbiBzZWxmLlNVUFBP
UlRFRF9WRVJTSU9OUywgIiVzIGlzIG5vdCBpbiAlcyIgJSAoc2VsZi5fdmVyc2lvbiwgc2VsZi5T
VVBQT1JURURfVkVSU0lPTlMpCiAgICAgICAgIHNlbGYuX29wZXJhdGluZ19zeXN0ZW0gPSAnbWFj
JworICAgICAgICBzZWxmLl9sZWFrX2RldGVjdG9yID0gTGVha0RldGVjdG9yKHNlbGYpCiAKICAg
ICBkZWYgYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6CiAgICAgICAgIHNlYXJjaF9wYXRocyA9
IHNlbGYuRkFMTEJBQ0tfUEFUSFNbc2VsZi5fdmVyc2lvbl0KQEAgLTk5LDE3ICsyMDEsNTIgQEAg
Y2xhc3MgTWFjUG9ydChXZWJLaXRQb3J0KToKICAgICAgICAgICAgIHNlYXJjaF9wYXRocy5pbnNl
cnQoMCwgc2VsZi5fd2syX3BvcnRfbmFtZSgpKQogICAgICAgICByZXR1cm4gbWFwKHNlbGYuX3dl
YmtpdF9iYXNlbGluZV9wYXRoLCBzZWFyY2hfcGF0aHMpCiAKKyAgICBkZWYgc2V0dXBfZW52aXJv
bl9mb3Jfc2VydmVyKHNlbGYpOgorICAgICAgICBlbnYgPSBXZWJLaXRQb3J0LnNldHVwX2Vudmly
b25fZm9yX3NlcnZlcihzZWxmKQorICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2xlYWtzJyk6
CisgICAgICAgICAgICBlbnZbJ01hbGxvY1N0YWNrTG9nZ2luZyddID0gJzEnCisgICAgICAgIGlm
IHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJyk6CisgICAgICAgICAgICBlbnZbJ0RZTERf
SU5TRVJUX0xJQlJBUklFUyddID0gJy91c3IvbGliL2xpYmdtYWxsb2MuZHlsaWInCisgICAgICAg
IHJldHVybiBlbnYKKworICAgICMgQmVsb25ncyBvbiBhIFBsYXRmb3JtIG9iamVjdC4KKyAgICBk
ZWYgaXNfbGVvcGFyZChzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX3ZlcnNpb24gPT0gImxl
b3BhcmQiCisKKyAgICAjIEJlbG9uZ3Mgb24gYSBQbGF0Zm9ybSBvYmplY3QuCisgICAgZGVmIGlz
X3Nub3dsZW9wYXJkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbiA9PSAic25v
d2xlb3BhcmQiCisKKyAgICAjIEJlbG9uZ3Mgb24gYSBQbGF0Zm9ybSBvYmplY3QuCiAgICAgZGVm
IGlzX2NyYXNoX3JlcG9ydGVyKHNlbGYsIHByb2Nlc3NfbmFtZSk6CiAgICAgICAgIHJldHVybiBy
ZS5zZWFyY2gocidSZXBvcnRDcmFzaCcsIHByb2Nlc3NfbmFtZSkKIAogICAgIGRlZiBfYnVpbGRf
amF2YV90ZXN0X3N1cHBvcnQoc2VsZik6CiAgICAgICAgIGphdmFfdGVzdHNfcGF0aCA9IHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgImphdmEiKQogICAgICAg
ICBidWlsZF9qYXZhID0gWyIvdXNyL2Jpbi9tYWtlIiwgIi1DIiwgamF2YV90ZXN0c19wYXRoXQot
ICAgICAgICBpZiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYnVpbGRfamF2YSwgcmV0dXJu
X2V4aXRfY29kZT1UcnVlKToKKyAgICAgICAgaWYgc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5k
KGJ1aWxkX2phdmEsIHJldHVybl9leGl0X2NvZGU9VHJ1ZSk6ICAjIFBhdGhzIGFyZSBhYnNvbHV0
ZSwgc28gd2UgZG9uJ3QgbmVlZCB0byBzZXQgYSBjd2QuCiAgICAgICAgICAgICBfbG9nLmVycm9y
KCJGYWlsZWQgdG8gYnVpbGQgSmF2YSBzdXBwb3J0IGZpbGVzOiAlcyIgJSBidWlsZF9qYXZhKQog
ICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyAgICBkZWYg
Y2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgorICAgICAg
ICBpZiBub3Qgc2VsZi5nZXRfb3B0aW9uKCdsZWFrcycpOgorICAgICAgICAgICAgcmV0dXJuCisg
ICAgICAgICMgV2UgY291bGQgdXNlIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9wc3V0aWwvIHRv
IGdldCB0aGUgcHJvY2Vzc19uYW1lIGZyb20gdGhlIHBpZC4KKyAgICAgICAgc2VsZi5fbGVha19k
ZXRlY3Rvci5jaGVja19mb3JfbGVha3MocHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCkKKworICAg
IGRlZiBwcmludF9sZWFrc19zdW1tYXJ5KHNlbGYpOgorICAgICAgICBpZiBub3Qgc2VsZi5nZXRf
b3B0aW9uKCdsZWFrcycpOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICMgV2UncmUgaW4g
dGhlIG1hbmFnZXIgcHJvY2Vzcywgc28gdGhlIGxlYWsgZGV0ZWN0b3Igd2lsbCBub3QgaGF2ZSBh
IHZhbGlkIGxpc3Qgb2YgbGVhayBmaWxlcy4KKyAgICAgICAgIyBGSVhNRTogVGhpcyBpcyBhIGhh
Y2ssIGJ1dCB3ZSBkb24ndCBoYXZlIGEgYmV0dGVyIHdheSB0byBnZXQgdGhpcyBpbmZvcm1hdGlv
biBmcm9tIHRoZSB3b3JrZXJzIHlldC4KKyAgICAgICAgbGVha3NfZmlsZXMgPSBzZWxmLl9sZWFr
X2RldGVjdG9yLmxlYWtzX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLnJlc3VsdHNfZGlyZWN0b3J5
KCkpCisgICAgICAgIGlmIG5vdCBsZWFrc19maWxlczoKKyAgICAgICAgICAgIHJldHVybgorICAg
ICAgICB0b3RhbF9ieXRlcywgdW5pcXVlX2xlYWtzID0gc2VsZi5wYXJzZV9sZWFrX2ZpbGVzKCkK
KyAgICAgICAgX2xvZy53YXJuKCIlcyB0b3RhbCBsZWFrcyBmb3VuZCBmb3IgYSB0b3RhbCBvZiAl
cyEiICUgKHNlbGYuX3RvdGFsX2xlYWtzLCB0b3RhbF9ieXRlcykpCisgICAgICAgIF9sb2cud2Fy
bigiJXMgdW5pcXVlIGxlYWtzIGZvdW5kISIgJSB1bmlxdWVfbGVha3MpCisKICAgICBkZWYgX2No
ZWNrX3BvcnRfYnVpbGQoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9qYXZhX3Rl
c3Rfc3VwcG9ydCgpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKaW5kZXggNzRiZDE4YzM4ZjZhNTQzNTU2ODBl
YmMwMWU0MDM3Y2ViYzdiN2M4NC4uY2U2NzU4ZTFkZTU1OWFiYTg5OWQ1ZTlhMDVhOTkwMjY2NmI2
Y2QxOCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWNfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9tYWNfdW5pdHRlc3QucHkKQEAgLTMwLDEzICszMCw3MCBAQCBpbXBvcnQgU3RyaW5n
SU8KIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5wb3J0Lm1hYyBpbXBvcnQgTWFjUG9ydAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMu
cG9ydC5tYWMgaW1wb3J0IE1hY1BvcnQsIExlYWtEZXRlY3RvcgogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmZpbGVzeXN0ZW1fbW9jayBpbXBvcnQgTW9ja0ZpbGVTeXN0ZW0KIGZyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJlCiBmcm9t
IHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zLCBNb2NrVXNlciwgTW9j
a0V4ZWN1dGl2ZQogCiAKK2NsYXNzIExlYWtEZXRlY3RvclRlc3QodW5pdHRlc3QuVGVzdENhc2Up
OgorICAgIGRlZiBfbW9ja19wb3J0KHNlbGYpOgorICAgICAgICBjbGFzcyBNb2NrUG9ydChvYmpl
Y3QpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNl
bGYuX2ZpbGVzeXN0ZW0gPSBNb2NrRmlsZVN5c3RlbSgpCisgICAgICAgICAgICAgICAgc2VsZi5f
ZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZSgpCisgICAgICAgIHJldHVybiBNb2NrUG9ydCgpCisK
KyAgICBkZWYgX21ha2VfZGV0ZWN0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBMZWFrRGV0ZWN0
b3Ioc2VsZi5fbW9ja19wb3J0KCkpCisKKyAgICBkZWYgdGVzdF9sZWFrc19hcmdzKHNlbGYpOgor
ICAgICAgICBkZXRlY3RvciA9IHNlbGYuX21ha2VfZGV0ZWN0b3IoKQorICAgICAgICBkZXRlY3Rv
ci5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MgPSBsYW1iZGE6IFsnZm9vIGJhcics
ICdCQVonXQorICAgICAgICBkZXRlY3Rvci5fdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MgPSBs
YW1iZGE6IFsnYWJjZGVmZycsICdoaSBqa2xtbm8nXQorICAgICAgICBleHBlY3RlZF9hcmdzID0g
WyctLWV4Y2x1ZGUtY2FsbHN0YWNrPSJmb28gYmFyIicsICctLWV4Y2x1ZGUtY2FsbHN0YWNrPSJC
QVoiJywgJy0tZXhjbHVkZS10eXBlPSJhYmNkZWZnIicsICctLWV4Y2x1ZGUtdHlwZT0iaGkgamts
bW5vIicsIDEyMzRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRldGVjdG9yLl9sZWFrc19h
cmdzKDEyMzQpLCBleHBlY3RlZF9hcmdzKQorCisgICAgZXhhbXBsZV9sZWFrc19vdXRwdXQgPSAi
IiJQcm9jZXNzIDUxMjI6IDY2Mzc0NCBub2RlcyBtYWxsb2NlZCBmb3IgNzg2ODMgS0IKK1Byb2Nl
c3MgNTEyMjogMzM3MzAxIGxlYWtzIGZvciA2NTI1MjE2IHRvdGFsIGxlYWtlZCBieXRlcy4KK0xl
YWs6IDB4MzhjYjYwMCAgc2l6ZT0zMDcyICB6b25lOiBEZWZhdWx0TWFsbG9jWm9uZV8weDFkOTQw
MDAgICBpbnN0YW5jZSBvZiAnTlNDRkRhdGEnLCB0eXBlIE9iakMsIGltcGxlbWVudGVkIGluIEZv
dW5kYXRpb24KKyAgICAgICAgMHhhMDMzZjBiOCAweDAxMDAxMzg0IDB4MDAwMDBiM2EgMHgwMDAw
MGIzYSAgICAgLi4zLi4uLi46Li4uOi4uLgorICAgICAgICAweDAwMDAwMDAwIDB4MDM4Y2I2MjAg
MHgwMDAwMDAwMCAweDAwMDAwMDAwICAgICAuLi4uIC4uLi4uLi4uLi4uCisgICAgICAgIDB4MDAw
MDAwMDAgMHgyMTAwMDAwMCAweDcyNmM2NDY4IDB4MDAwMDAwMDAgICAgIC4uLi4uLi4haGRsci4u
Li4KKyAgICAgICAgMHgwMDAwMDAwMCAweDcyNjk2NDZkIDB4NmM3MDcwNjEgMHgwMDAwMDAwMCAg
ICAgLi4uLm1kaXJhcHBsLi4uLgorICAgICAgICAweDAwMDAwMDAwIDB4MDQwMDAwMDAgMHg3MzZj
NjljMSAweDAwMDAwMDc0ICAgICAuLi4uLi4uLi5pbHN0Li4uCisgICAgICAgIDB4NmY3NGE5MjMg
MHgwMDAwMDA2ZiAweDc0NjE2NDFiIDB4MDAwMDAwNjEgICAgICMudG9vLi4uLmRhdGEuLi4KKyAg
ICAgICAgMHgwMDAwMDAwMSAweDc2NjE0YzAwIDB4MmUzMjM1NjYgMHgzMDJlMzIzNiAgICAgLi4u
Li5MYXZmNTIuNjIuMAorICAgICAgICAweDM3MDAwMDAwIDB4NmQ2MTZlYTkgMHgyZjAwMDAwMCAw
eDYxNzQ2MTY0ICAgICAuLi43Lm5hbS4uLi9kYXRhCisgICAgICAgIC4uLgorTGVhazogMHgyYTlj
OTYwICBzaXplPTI4OCAgem9uZTogRGVmYXVsdE1hbGxvY1pvbmVfMHgxZDk0MDAwCisgICAgICAg
IDB4MDlhMWNjNDcgMHgxYmRhODU2MCAweDNkNDcyY2QxIDB4ZmJlOWJjY2QgICAgIEcuLi5gLi4u
LixHPS4uLi4KKyAgICAgICAgMHg4YmNkYTAwOCAweDllOTcyYTkxIDB4YTg5MmNmNjMgMHgyNDQ4
YmRiMCAgICAgLi4uLi4qLi5jLi4uLi5IJAorICAgICAgICAweDQ3MzZmYzM0IDB4ZGJlMmQ5NGUg
MHgyNWY1NjY4OCAweDgzOTQwMmE0ICAgICA0LjZHTi4uLi5mLiUuLi4uCisgICAgICAgIDB4ZDEy
NDk2YjMgMHg1OWM0MGMxMiAweDhjZmNhYjJhIDB4ZDIwZWY5YzQgICAgIC4uJC4uLi5ZKi4uLi4u
Li4KKyAgICAgICAgMHhlN2M1NmIxYiAweDU4MzVhZjQ1IDB4YzY5MTE1ZGUgMHg2OTIzZTRiYiAg
ICAgLmsuLkUuNVguLi4uLi4jaQorICAgICAgICAweDg2ZjE1NTUzIDB4MTVkNDBmYTkgMHg2ODEy
ODhhNCAweGMzMzI5OGE5ICAgICBTVS4uLi4uLi4uLmguLjIuCisgICAgICAgIDB4NDM5YmI1MzUg
MHhjNGZjNzQzZCAweDdkZmFhZmY4IDB4MmNjNDlhNGEgICAgIDUuLkM9dC4uLi4ufUouLiwKKyAg
ICAgICAgMHhkZDExOWRmOCAweDdlMDg2ODIxIDB4M2Q3ZDEyOWUgMHgyZTFiMTU0NyAgICAgLi4u
LiFoLn4uLn09Ry4uLgorICAgICAgICAuLi4KK0xlYWs6IDB4MjUxMDJmZTAgIHNpemU9MTc2ICB6
b25lOiBEZWZhdWx0TWFsbG9jWm9uZV8weDFkOTQwMDAgICBzdHJpbmcgJ05TRXhjZXB0aW9uIERh
dGEnCisiIiIKKworICAgIGRlZiB0ZXN0X3BhcnNlX2xlYWtzX291dHB1dChzZWxmKToKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5fbWFrZV9kZXRlY3RvcigpLl9wYXJzZV9sZWFrc19v
dXRwdXQoc2VsZi5leGFtcGxlX2xlYWtzX291dHB1dCwgNTEyMiksICgzMzczMDEsIDAsIDY1MjUy
MTYpKQorCisgICAgZGVmIHRlc3RfbGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYpOgorICAg
ICAgICBkZXRlY3RvciA9IHNlbGYuX21ha2VfZGV0ZWN0b3IoKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhkZXRlY3Rvci5sZWFrc19maWxlc19pbl9kaXJlY3RvcnkoJy9ib2d1cy1kaXJlY3Rv
cnknKSwgW10pCisgICAgICAgIGRldGVjdG9yLl9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0o
eworICAgICAgICAgICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMC0xLnR4
dCc6ICcnLAorICAgICAgICAgICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUt
MS0xLnR4dCc6ICcnLAorICAgICAgICAgICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRl
clRyZWUtMC0yLnR4dCc6ICcnLAorICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhsZW4oZGV0ZWN0b3IubGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KCcvbW9jay1yZXN1bHRzJykp
LCAzKQorCisKIGNsYXNzIE1hY1Rlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAg
IGRlZiBwb3J0X21ha2VyKHNlbGYsIHBsYXRmb3JtKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBw
bGF0Zm9ybSBjaGVjayBzaG91bGQgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDA0
YjA1YTlmYzQ2MzMzMjJjZjQ1YmNlYzQyMTRmMmE2ZDAxYmM0ZWYuLmU2YjE2MWU0NDBiNTMwZTAw
NjEwYjkyMzIwYTAwMjU1MGY3NDBkZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNTQsMTIg
KzU0LDE4IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAg
ICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQor
ICAgICAgICBzZWxmLl9uYW1lID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAo
ZS5nLiBEdW1wUmVuZGVyVHJlZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQK
ICAgICAgICAgc2VsZi5fZW52ID0gZW52CiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBwaWQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9wcm9jLnBpZAorCiAgICAgZGVmIF9yZXNldChzZWxmKToKICAgICAgICAgc2VsZi5f
cHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gJycKQEAgLTIxNiw5ICsyMjIsNyBA
QCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQKIAog
ICAgICAgICAgICAgIyBOb3BlIC0gd2FpdCBmb3IgbW9yZSBkYXRhLgotICAgICAgICAgICAgKHJl
YWRfZmRzLCB3cml0ZV9mZHMsIGVycl9mZHMpID0gc2VsZWN0LnNlbGVjdChzZWxlY3RfZmRzLCBb
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0X2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUgLSBub3cpCisgICAgICAgICAgICAocmVhZF9m
ZHMsIHdyaXRlX2ZkcywgZXJyX2ZkcykgPSBzZWxlY3Quc2VsZWN0KHNlbGVjdF9mZHMsIFtdLCBz
ZWxlY3RfZmRzLCBkZWFkbGluZSAtIG5vdykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBpZiBvdXRfZmQgaW4gcmVhZF9mZHM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX291
dHB1dCArPSBzZWxmLl9wcm9jLnN0ZG91dC5yZWFkKCkKQEAgLTIzMiw2ICsyMzYsOCBAQCBjbGFz
cyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKICAgICAgICAgICAg
IHJldHVybgogCisgICAgICAgIHNlbGYuX3BvcnQuY2hlY2tfZm9yX2xlYWtzKHNlbGYubmFtZSgp
LCBzZWxmLnBpZCgpKQorCiAgICAgICAgIHBpZCA9IHNlbGYuX3Byb2MucGlkCiAgICAgICAgIHNl
bGYuX3Byb2Muc3RkaW4uY2xvc2UoKQogICAgICAgICBzZWxmLl9wcm9jLnN0ZG91dC5jbG9zZSgp
CkBAIC0yNDgsOCArMjU0LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHdo
aWxlIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUgYW5kIHRpbWUudGltZSgpIDwgdGltZW91dDoK
ICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgICAgIGlmIHNlbGYuX3By
b2MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdzdG9wcGlu
ZyAlcyB0aW1lZCBvdXQsIGtpbGxpbmcgaXQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0b3BwaW5nICVz
IHRpbWVkIG91dCwga2lsbGluZyBpdCcgJSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgICAgICAg
ICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CmluZGV4
IDQ1ZmZiMjNjZjg1ODg4YzNlMDA2YjJkY2IxMTRkMzk0YWQyNWExM2YuLmNmM2NhNDIxNmNiYWQ4
MmI5NzNmMzQ5ZGE5NmNmNzA2NjMwODg5NGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC01NSw3ICs1NSw5IEBAIGNsYXNz
IFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICMgRklYTUU6IERpc2FibGUgcGl4ZWwgdGVzdHMg
dW50aWwgdGhleSBhcmUgcnVuIGJ5IGRlZmF1bHQgb24gYnVpbGQud2Via2l0Lm9yZy4KICAgICAg
ICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoInBpeGVsX3Rlc3RzIiwgRmFsc2UpCiAgICAgICAg
ICMgV2ViS2l0IHBvcnRzIGV4cGVjdCBhIDM1cyB0aW1lb3V0LCBvciAzNTBzIHRpbWVvdXQgd2hl
biBydW5uaW5nIHdpdGggLWcvLS1ndWFyZC1tYWxsb2MuCi0gICAgICAgIHNlbGYuc2V0X29wdGlv
bl9kZWZhdWx0KCJ0aW1lX291dF9tcyIsIDM1MDAwKQorICAgICAgICAjIEZJWE1FOiAtLWd1YXJk
LW1hbGxvYyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMsIHNvIHRoaXMgbG9naWMgc2hvdWxkIGJl
IGluIG1hYy5weS4KKyAgICAgICAgZGVmYXVsdF90aW1lX291dF9zZWNvbmRzID0gMzUwIGlmIHNl
bGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJykgZWxzZSAzNQorICAgICAgICBzZWxmLnNldF9v
cHRpb25fZGVmYXVsdCgidGltZV9vdXRfbXMiLCBkZWZhdWx0X3RpbWVfb3V0X3NlY29uZHMgKiAx
MDAwKQogCiAgICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpAQCAtMTE1LDcgKzExNyw3IEBAIGNsYXNzIFdl
YktpdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5kKHNl
bGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpKQogICAgICAgICBpZiBhcmdzOgogICAg
ICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQotICAgICAgICByZXR1cm4g
c2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNlbGYu
X2NvbmZpZy53ZWJraXRfYmFzZV9kaXIoKSkgICMgSXQncyB1bmNsZWFyIGlmIHNldHRpbmcgY3dk
IGlzIG5lY2Vzc2FyeSBmb3IgYWxsIGNhbGxlcnMuCisgICAgICAgIHJldHVybiBzZWxmLl9leGVj
dXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmlnLndl
YmtpdF9iYXNlX2RpcigpKQogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAgICAg
IHRyeToKQEAgLTQ1NCw3ICs0NTYsNiBAQCBjbGFzcyBXZWJLaXREcml2ZXIoRHJpdmVyKToKICAg
ICBkZWYgcmVzdGFydChzZWxmKToKICAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RvcCgp
CiAgICAgICAgIHNlbGYuX3NlcnZlcl9wcm9jZXNzLnN0YXJ0KCkKLSAgICAgICAgcmV0dXJuCiAK
ICAgICBkZWYgZGV0ZWN0ZWRfY3Jhc2goc2VsZik6CiAgICAgICAgICMgRklYTUU6IFdlIGNhbid0
IGp1c3QgY2hlY2sgc2VsZi5fc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCBmb3IgdHdvIHJlYXNvbnM6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dl
YmtpdF90ZXN0cy5weQppbmRleCA4MGExNWIyY2JhNDEzODNlZDBhZjFiZTNhYjBiOTVlZGZjZTEw
OWQwLi5jNzQ0NTU4ODYyYjU1MDY5ZDg2ZTU2ZjIyYjFmNThiZDhhYzE3MzgzIDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKQEAgLTI0MSwyMiArMjQxLDIwIEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3M9Tm9uZSk6CiAg
ICAgICAgICAgICBoZWxwPSJGb3JjZSBnYXJiYWdlIGNvbGxlY3Rpb24gYmV0d2VlbiBlYWNoIHRl
c3QiKSwKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tY29tcGxleC10ZXh0IiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhlbHA9IlVzZSB0
aGUgY29tcGxleCB0ZXh0IGNvZGUgcGF0aCBmb3IgYWxsIHRleHQgKE1hYyBPUyBYIGFuZCBXaW5k
b3dzIG9ubHkpIiksCisgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItbCIsICItLWxlYWtz
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9
IkVuYWJsZSBsZWFrcyBjaGVja2luZyAoTWFjIE9TIFggb25seSkiKSwKKyAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oIi1nIiwgIi0tZ3VhcmQtbWFsbG9jIiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVmYXVsdD1GYWxzZSwKKyAgICAgICAgICAgIGhlbHA9IkVuYWJsZSBtYWxsb2MgZ3VhcmQg
KE1hYyBPUyBYIG9ubHkpIiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXRocmVh
ZGVkIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgIGhl
bHA9IlJ1biBhIGNvbmN1cnJlbnQgSmF2YVNjcmlwdCB0aHJlYWQgd2l0aCBlYWNoIHRlc3QiKSwK
ICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0td2Via2l0LXRlc3QtcnVubmVyIiwgIi0y
IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKICAgICAgICAgICAgIGhlbHA9IlVzZSBXZWJLaXRUZXN0
UnVubmVyIHJhdGhlciB0aGFuIER1bXBSZW5kZXJUcmVlLiIpLAogICAgIF0KIAotICAgICMgTWlz
c2luZyBNYWMtc3BlY2lmaWMgb2xkLXJ1bi13ZWJraXQtdGVzdHMgb3B0aW9uczoKLSAgICAjIEZJ
WE1FOiBOZWVkOiAtZywgLS1ndWFyZCBmb3IgZ3VhcmQgbWFsbG9jIHN1cHBvcnQgb24gTWFjLgot
ICAgICMgRklYTUU6IE5lZWQ6IC1sIC0tbGVha3MgICAgRW5hYmxlIGxlYWtzIGNoZWNraW5nLgot
CiAgICAgb2xkX3J1bl93ZWJraXRfdGVzdHNfY29tcGF0ID0gWwogICAgICAgICAjIEZJWE1FOiBS
ZW1vdmUgdGhpcyBvcHRpb24gb25jZSB0aGUgYm90cyBkb24ndCByZWZlciB0byBpdC4KICAgICAg
ICAgIyByZXN1bHRzLmh0bWwgaXMgc21hcnQgZW5vdWdoIHRvIGZpZ3VyZSB0aGlzIG91dCBpdHNl
bGYuCiAgICAgICAgIF9jb21wYXRfc2hpbV9vcHRpb24oIi0tdXNlLXJlbW90ZS1saW5rcy10by10
ZXN0cyIpLAotICAgICAgICAjIEZJWE1FOiBJbXBsZW1lbnQgbGVhayBkZXRlY3Rpb24uCi0gICAg
ICAgIF9jb21wYXRfc2hpbV9vcHRpb24oIi0tbGVha3MiKSwKICAgICBdCiAKICAgICByZXN1bHRz
X29wdGlvbnMgPSBbCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy92aWV3cy9wcmludGluZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3ZpZXdzL3ByaW50aW5nLnB5CmluZGV4IGEwYWEzODM2MDg1ZGI4ZDcxYzkwYWFiM2VmYzJh
NWIzY2MyZDEyY2UuLjQ0MTA2NjQ5NjVmMDNmNDU4OGZkNDdjOTIyNTRhZTRlZmFhYTQ3ZWUgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50
aW5nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3By
aW50aW5nLnB5CkBAIC0zNDMsOCArMzQzLDcgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAg
IGRlZiBfcHJpbnRfdW5leHBlY3RlZF90ZXN0X3Jlc3VsdChzZWxmLCByZXN1bHQpOgogICAgICAg
ICAiIiJQcmludHMgb25lIHVuZXhwZWN0ZWQgdGVzdCByZXN1bHQgbGluZS4iIiIKICAgICAgICAg
ZGVzYyA9IFRlc3RFeHBlY3RhdGlvbnMuRVhQRUNUQVRJT05fREVTQ1JJUFRJT05TW3Jlc3VsdC50
eXBlXVswXQotICAgICAgICBzZWxmLndyaXRlKCIgICVzIC0+IHVuZXhwZWN0ZWQgJXMiICUKLSAg
ICAgICAgICAgICAgICAgICAocmVzdWx0LnRlc3RfbmFtZSwgZGVzYyksICJ1bmV4cGVjdGVkIikK
KyAgICAgICAgc2VsZi53cml0ZSgiICAlcyAtPiB1bmV4cGVjdGVkICVzIiAlIChyZXN1bHQudGVz
dF9uYW1lLCBkZXNjKSwgInVuZXhwZWN0ZWQiKQogCiAgICAgZGVmIHByaW50X3Byb2dyZXNzKHNl
bGYsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeWluZywgdGVzdF9saXN0KToKICAgICAgICAgIiIiUHJp
bnQgcHJvZ3Jlc3MgdGhyb3VnaCB0aGUgdGVzdHMgYXMgZGV0ZXJtaW5lZCBieSAtLXByaW50LiIi
Igo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>101254</attachid>
            <date>2011-07-18 18:27:55 -0700</date>
            <delta_ts>2011-07-18 18:46:09 -0700</delta_ts>
            <desc>Fixed errors pointed out by dirk</desc>
            <filename>bug-63832-20110718182753.patch</filename>
            <type>text/plain</type>
            <size>42189</size>
            <attacher name="Eric Seidel (no email)">eric</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTEyMTYKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBmODIxMGVjNWM1YTNiYTY5MjkzMjMzMjhlMDM2NDE2YTlh
NWM5MmUxLi43OTM5NWRiZjlhMWZkYjdkNmExNmFhZDlmYjk4MWI1ZWY0NDlmNjkyIDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNTEg
QEAKIDIwMTEtMDctMTggIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCisgICAgICAg
IG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzdXBwb3J0IC0tbGVha3MKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzODMyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBtYXkgbm90IGJlIHN1ZmZp
Y2llbnQgdG8gYWN0dWFsbHkgdHJhbnNpdGlvbiBvdmVyIHRoZSBsZWFrcyBib3QsCisgICAgICAg
IGJ1dCB0aGlzIGlzIGEgaHVnZSBzdGVwIGluIHRoZSByaWdodCBkaXJlY3Rpb24uCisKKyAgICAg
ICAgSSBoYWQgdG8gbWFrZSBwYXJzZS1tYWxsb2MtaGlzdG9yeSB1bmRlcnN0YW5kIGJlaW5nIHBh
c3NlZCBtb3JlIHRoYW4KKyAgICAgICAgb25lIGZpbGUgKHRvIGF2b2lkIHRoZSBzaWxseSBjYXQg
fCBub25zZW5zZSBpbiBvbGQtcnVuLXdlYmtpdC10ZXN0cykuCisKKyAgICAgICAgSSByZW1vdmVk
IHNvbWUgZGVhZCBjb2RlIHJlbGF0aW5nIHRvIHByZXZpb3VzIGl0ZXJhdGlvbnMgb2Ygb3VyIGNy
YXNoIGRldGVjdGlvbi4KKworICAgICAgICBJIGNyZWF0ZWQgYSBuZXcgY2xhc3MgIkxlYWtEZXRl
Y3RvciIgdG8gZW5jYXBzdWxhdGUgYWxsIHRoaXMgbG9naWMuCisgICAgICAgIEV2ZW50dWFsbHkg
d2Ugc2hvdWxkIGNvbnNpZGVyIHB1bGxpbmcgdGhhdCBjbGFzcyBvdXQgb2YgbWFjLnB5IGFuZAor
ICAgICAgICBzaGFyaW5nIHdpdGggb3RoZXIgcG9ydHMuICBIb3dldmVyIGdpdmVuIHRoYXQgT1JX
VCBoYXMgaGFkCisgICAgICAgIC0tbGVha3Mgc3VwcG9ydCBvbiBNYWMgZm9yIGFsbW9zdCA3IHll
YXJzIGFuZCBubyBvdGhlciBwb3J0IGhhcyBhZGRlZAorICAgICAgICBpdCwgbGVhdmVzIG1lIHRv
IGJlbGlldmUgd2UncmUgaW4gbm8gcnVzaCB0byBtb3ZlIExlYWtEZXRlY3Rvci4KKworICAgICAg
ICBJJ3ZlIHRlc3RlZCAtLWxlYWtzIGxvY2FsbHkuICBJIHN1c3BlY3QgdGhlcmUgYXJlIG1vcmUg
YnVncyB0byBzaGFrZSBvdXQKKyAgICAgICAgYnV0IGl0IHNlZW1zIHRvIHdvcmsgd2VsbCBlbm91
Z2ggdG8gc3RhcnQuCisKKyAgICAgICAgSSBhbHNvIGFkZGVkIHN1cHBvcnQgZm9yIC0tZ3VhcmQt
bWFsbG9jLCBidXQgaGF2ZSBub3QgdGVzdGVkIGl0IG11Y2guICBJdAorICAgICAgICBzaG91bGQg
YmUgdmlld2VkIGFzIGV4cGVyaW1lbnRhbCBhdCB0aGlzIHRpbWUuCisKKyAgICAgICAgSSBhbHNv
IGZpeGVkIHZhcmlvdXMgb3MucGF0aCB1c2VzIHRvIHNlbGYuX2ZpbGVzeXN0ZW0gYXMgSSB3YXMg
cmVhZGluZworICAgICAgICB0aHJvdWdoIHRoZSB2YXJpb3VzIGZpbGVzIHRvIHVuZGVyc3RhbmQg
aG93IGJlc3QgdG8gZml4IHRoaXMgYnVnLgorCisgICAgICAgICogU2NyaXB0cy9vbGQtcnVuLXdl
YmtpdC10ZXN0czoKKyAgICAgICAgKHBhcnNlTGVha3NhbmRQcmludFVuaXF1ZUxlYWtzKToKKyAg
ICAgICAgKiBTY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5OgorICAgICAgICAobWFpbik6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weToKKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2Vy
LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L3dvcmtlci5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Jhc2UucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9j
aHJvbWl1bV93aW4ucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9ndGsucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9tYWMucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9t
YWNfdW5pdHRlc3QucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9wb3J0L3dlYmtpdC5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorCisyMDExLTA3LTE4ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KKwogICAgICAgICB3ZWJraXQtcGF0Y2ggYXBwbHktYXR0YWNobWVu
dCBkb2VzIG5vdCB3b3JrIHdoZW4gbm90IGNhbGxlZCBmcm9tIHRoZSByb290IG9mIHRoZSBjaGVj
a291dAogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjQ3
NTEKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cyBiL1Rv
b2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKaW5kZXggMDA5ZTQ2MmQ3NTAwYmFiNThm
OGI4YWJlNDg3YzQ2MjZkNTcwNzg2OC4uNzNiNzA5NGIyNzU5ZDc1ZGUzZjMxNGNiZjY5NDc4ZGEy
NDFlODI3NiAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwor
KysgYi9Ub29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0LXRlc3RzCkBAIC0yMjQxLDcgKzIyNDEs
NyBAQCBzdWIgZXBpbG9ndWVzQW5kUHJvbG9ndWVzKCQkKQogc3ViIHBhcnNlTGVha3NhbmRQcmlu
dFVuaXF1ZUxlYWtzKCkKIHsKICAgICByZXR1cm4gdW5sZXNzIEBsZWFrc0ZpbGVuYW1lczsKLSAg
ICAgCisKICAgICBteSAkbWVyZ2VkRmlsZW5hbWVzID0gam9pbiAiICIsIEBsZWFrc0ZpbGVuYW1l
czsKICAgICBteSAkcGFyc2VNYWxsb2NIaXN0b3J5VG9vbCA9IHNvdXJjZURpcigpIC4gIi9Ub29s
cy9TY3JpcHRzL3BhcnNlLW1hbGxvYy1oaXN0b3J5IjsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkgYi9Ub29scy9TY3JpcHRzL3BhcnNlLW1hbGxv
Yy1oaXN0b3J5CmluZGV4IDE3N2RlMWM5MDNjZjZkMjUxMWQ4ZjQ0ZmI3YzdjODFmNDdjYTFkZTIu
LmQyNTdmOWZlMTgyMGRlYjIwZWYyYjE2ZGU1N2I3ZWNmOWQyZmEzNGYgMTAwNzU1Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvcGFyc2UtbWFsbG9jLWhpc3RvcnkKKysrIGIvVG9vbHMvU2NyaXB0cy9wYXJz
ZS1tYWxsb2MtaGlzdG9yeQpAQCAtNTcsMTggKzU3LDIwIEBAIHN1YiBtYWluKCkKICAgICAgICAg
Im1lcmdlLXJlZ2V4cDpzIiA9PiBcQG1lcmdlUmVnZXhwcywKICAgICAgICAgIm1lcmdlLWRlcHRo
OmkiID0+IFwkbWVyZ2VEZXB0aAogICAgICk7Ci0gICAgbXkgJGZpbGVOYW1lID0gJEFSR1ZbMF07
Ci0gICAgZGllICR1c2FnZSBpZiAoISRnZXRPcHRpb25zUmVzdWx0IHx8ICEkZmlsZU5hbWUpOwor
ICAgIGRpZSAkdXNhZ2UgaWYgKCEkZ2V0T3B0aW9uc1Jlc3VsdCB8fCAhc2NhbGFyKEBBUkdWKSk7
CiAKLSAgICBvcGVuIEZJTEUsICI8JGZpbGVOYW1lIiBvciBkaWUgImJhZCBmaWxlOiAkZmlsZU5h
bWUiOwotICAgIG15IEBmaWxlID0gPEZJTEU+OwotICAgIGNsb3NlIEZJTEU7CisgICAgbXkgQGxp
bmVzID0gKCk7CisgICAgZm9yZWFjaCBteSAkZmlsZU5hbWUgKEBBUkdWKSB7CisgICAgICAgIG9w
ZW4gRklMRSwgIjwkZmlsZU5hbWUiIG9yIGRpZSAiYmFkIGZpbGU6ICRmaWxlTmFtZSI7CisgICAg
ICAgIHB1c2goQGxpbmVzLCA8RklMRT4pOworICAgICAgICBjbG9zZSBGSUxFOworICAgIH0KIAog
ICAgIG15ICVjYWxsc3RhY2tzID0gKCk7CiAgICAgbXkgJGJ5dGVDb3VudFRvdGFsID0gMDsKIAot
ICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBmaWxlOyAkaSsrKSB7Ci0gICAgICAgIG15ICRsaW5l
ID0gJGZpbGVbJGldOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBsaW5lczsgJGkrKykgewor
ICAgICAgICBteSAkbGluZSA9ICRsaW5lc1skaV07CiAgICAgICAgIG15ICgkY2FsbENvdW50LCAk
Ynl0ZUNvdW50KTsKIAogICAgICAgICAjIEZpcnN0IHRyeSBtYWxsb2NfaGlzdG9yeSBmb3JtYXQK
QEAgLTg2LDcgKzg4LDcgQEAgc3ViIG1haW4oKQogICAgICAgICAgICAgaWYgKCRieXRlQ291bnQp
IHsKICAgICAgICAgICAgICAgICB3aGlsZSAoISgkbGluZSA9fiAiQ2FsbCBzdGFjazogIikpIHsK
ICAgICAgICAgICAgICAgICAgICAgJGkrKzsKLSAgICAgICAgICAgICAgICAgICAgJGxpbmUgPSAk
ZmlsZVskaV07CisgICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGxpbmVzWyRpXTsKICAgICAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTk5LDE1ICsxMDEsMTUg
QEAgc3ViIG1haW4oKQogICAgICAgICAgICAgJGNhbGxDb3VudCA9IDE7CiAgICAgICAgICAgICAo
JGJ5dGVDb3VudCkgPSAoJGxpbmUgPX4gL0tleTogKD86XGQrKSwgKFxkKykgYnl0ZXMvKTsKICAg
ICAgICAgICAgIGlmICgkYnl0ZUNvdW50KSB7Ci0gICAgICAgICAgICAgICAgJGxpbmUgPSAkZmls
ZVsrKyRpXTsKKyAgICAgICAgICAgICAgICAkbGluZSA9ICRsaW5lc1srKyRpXTsKICAgICAgICAg
ICAgICAgICBteSBAdGVtcFN0YWNrOwotICAgICAgICAgICAgICAgIHdoaWxlICgkZmlsZVskaSsx
XSAhfiAvXig/Oi18XGQpLykgeworICAgICAgICAgICAgICAgIHdoaWxlICgkbGluZXNbJGkrMV0g
IX4gL14oPzotfFxkKS8pIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCRsaW5lID1+IC9cKTog
KC4qKSQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBteSAkY2FsbCA9ICQxOwogICAgICAg
ICAgICAgICAgICAgICAgICAgJGNhbGwgPX4gcy9cciQvLzsKICAgICAgICAgICAgICAgICAgICAg
ICAgIHVuc2hpZnQoQHRlbXBTdGFjaywgJGNhbGwpOwogICAgICAgICAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICAgICAgICAgICRsaW5lID0gJGZpbGVbKyskaV07CisgICAgICAgICAgICAgICAg
ICAgICRsaW5lID0gJGxpbmVzWysrJGldOwogICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAK
ICAgICAgICAgICAgICAgICAkbGluZSA9IGpvaW4oIiB8ICIsIEB0ZW1wU3RhY2spOwogICAgICAg
ICAgICAgfQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVt
L2NyYXNobG9ncy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9jcmFz
aGxvZ3MucHkKaW5kZXggZmRjODViNzU1ZTUxOWRmNDkwYzJiMjA1N2IyODQ2OWIxZmQ2ZmU5My4u
YjlmOGFlYjllYTAyOTFiY2EyZWE1ODQ2MTE4N2E1ZjM4N2RjMGM4YyAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2NyYXNobG9ncy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vY3Jhc2hsb2dzLnB5CkBAIC0yNiwxNSAr
MjYsMTAgQEAKICMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKLWltcG9ydCBvcwogaW1w
b3J0IHJlCiBpbXBvcnQgc3lzCiAKIAotZGVmIF9pc19jcmFzaF9yZXBvcnRlcihwcm9jZXNzX25h
bWUpOgotICAgIHJldHVybiByZS5tYXRjaChyIlJlcG9ydENyYXNoIiwgcHJvY2Vzc19uYW1lKQot
Ci0KIGNsYXNzIENyYXNoTG9ncyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxl
c3lzdGVtKToKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IGZpbGVzeXN0ZW0KQEAgLTQ1LDEx
ICs0MCwxMSBAQCBjbGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKIAogICAgIGRlZiBfbG9nX2RpcmVj
dG9yeV9kYXJ3aW4oc2VsZik6CiAgICAgICAgIGxvZ19kaXJlY3RvcnkgPSBzZWxmLl9maWxlc3lz
dGVtLmV4cGFuZHVzZXIoIn4iKQotICAgICAgICBsb2dfZGlyZWN0b3J5ID0gb3MucGF0aC5qb2lu
KGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQotICAgICAgICBpZiBzZWxmLl9maWxl
c3lzdGVtLmV4aXN0cyhvcy5wYXRoLmpvaW4obG9nX2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBv
cnRzIikpOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBhdGguam9pbihsb2dfZGly
ZWN0b3J5LCAiRGlhZ25vc3RpY1JlcG9ydHMiKQorICAgICAgICBsb2dfZGlyZWN0b3J5ID0gc2Vs
Zi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJMaWJyYXJ5IiwgIkxvZ3MiKQorICAg
ICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhzZWxmLl9maWxlc3lzdGVtLmpvaW4obG9n
X2RpcmVjdG9yeSwgIkRpYWdub3N0aWNSZXBvcnRzIikpOgorICAgICAgICAgICAgbG9nX2RpcmVj
dG9yeSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihsb2dfZGlyZWN0b3J5LCAiRGlhZ25vc3RpY1Jl
cG9ydHMiKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IG9zLnBh
dGguam9pbihsb2dfZGlyZWN0b3J5LCAiQ3Jhc2hSZXBvcnRlciIpCisgICAgICAgICAgICBsb2df
ZGlyZWN0b3J5ID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKGxvZ19kaXJlY3RvcnksICJDcmFzaFJl
cG9ydGVyIikKICAgICAgICAgcmV0dXJuIGxvZ19kaXJlY3RvcnkKIAogICAgIGRlZiBfZmluZF9u
ZXdlc3RfbG9nX2RhcndpbihzZWxmLCBwcm9jZXNzX25hbWUpOgpAQCAtNTksNSArNTQsNSBAQCBj
bGFzcyBDcmFzaExvZ3Mob2JqZWN0KToKICAgICAgICAgbG9nX2RpcmVjdG9yeSA9IHNlbGYuX2xv
Z19kaXJlY3RvcnlfZGFyd2luKCkKICAgICAgICAgbG9ncyA9IHNlbGYuX2ZpbGVzeXN0ZW0uZmls
ZXNfdW5kZXIobG9nX2RpcmVjdG9yeSwgZmlsZV9maWx0ZXI9aXNfY3Jhc2hfbG9nKQogICAgICAg
ICBpZiBub3QgbG9nczoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0ucmVhZF90ZXh0X2ZpbGUoc29ydGVk
KGxvZ3MpWy0xXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CmluZGV4IDhmM2E2ZGE5YTcxMTAzY2IwNTNl
N2JhMDA5NjY1MTFiOWRiNWJlNTUuLjc2NGJjMzhiYTM4NzQwOGIwZTVhOWVmNDdkNGU4MzE1MmMz
MWY5NzIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL21hbmFnZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQpAQCAtNDkzLDE2ICs0OTMsMTEgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2tpcF9jaHVuayA9
IHNraXBwZWQKIAotICAgICAgICByZXN1bHRfc3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5f
ZXhwZWN0YXRpb25zLAotICAgICAgICAgICAgc2VsZi5fdGVzdF9maWxlcyB8IHNraXBfY2h1bmsp
Ci0gICAgICAgIHNlbGYuX3ByaW50X2V4cGVjdGVkX3Jlc3VsdHNfb2ZfdHlwZShyZXN1bHRfc3Vt
bWFyeSwKLSAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlBBU1MsICJwYXNzZXMiKQotICAg
ICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnks
Ci0gICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQotICAgICAg
ICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksCi0g
ICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GTEFLWSwgImZsYWt5IikKLSAgICAgICAgc2Vs
Zi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1tYXJ5LAotICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuU0tJUCwgInNraXBwZWQiKQorICAgICAgICByZXN1bHRf
c3VtbWFyeSA9IFJlc3VsdFN1bW1hcnkoc2VsZi5fZXhwZWN0YXRpb25zLCBzZWxmLl90ZXN0X2Zp
bGVzIHwgc2tpcF9jaHVuaykKKyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19v
Zl90eXBlKHJlc3VsdF9zdW1tYXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5QQVNTLCAicGFzc2VzIikK
KyAgICAgICAgc2VsZi5fcHJpbnRfZXhwZWN0ZWRfcmVzdWx0c19vZl90eXBlKHJlc3VsdF9zdW1t
YXJ5LCB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMLCAiZmFpbHVyZXMiKQorICAgICAgICBzZWxmLl9w
cmludF9leHBlY3RlZF9yZXN1bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0
YXRpb25zLkZMQUtZLCAiZmxha3kiKQorICAgICAgICBzZWxmLl9wcmludF9leHBlY3RlZF9yZXN1
bHRzX29mX3R5cGUocmVzdWx0X3N1bW1hcnksIHRlc3RfZXhwZWN0YXRpb25zLlNLSVAsICJza2lw
cGVkIikKIAogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmZvcmNlOgogICAgICAgICAgICAgc2Vs
Zi5fcHJpbnRlci5wcmludF9leHBlY3RlZCgnUnVubmluZyBhbGwgdGVzdHMsIGluY2x1ZGluZyAn
CkBAIC03MTksOCArNzE0LDcgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICB0aHJl
YWRfdGltaW5ncyA9IFtdCiAKICAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1No
YXJkaW5nIHRlc3RzIC4uLicpCi0gICAgICAgIGxvY2tlZF9zaGFyZHMsIHVubG9ja2VkX3NoYXJk
cyA9IHNlbGYuX3NoYXJkX3Rlc3RzKGZpbGVfbGlzdCwKLSAgICAgICAgICAgIGludChzZWxmLl9v
cHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5
X3BhcmFsbGVsKQorICAgICAgICBsb2NrZWRfc2hhcmRzLCB1bmxvY2tlZF9zaGFyZHMgPSBzZWxm
Ll9zaGFyZF90ZXN0cyhmaWxlX2xpc3QsIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3Nl
cyksIHNlbGYuX29wdGlvbnMuZXhwZXJpbWVudGFsX2Z1bGx5X3BhcmFsbGVsKQogCiAgICAgICAg
ICMgRklYTUU6IFdlIGRvbid0IGhhdmUgYSBnb29kIHdheSB0byBjb29yZGluYXRlIHRoZSB3b3Jr
ZXJzIHNvIHRoYXQKICAgICAgICAgIyB0aGV5IGRvbid0IHRyeSB0byBydW4gdGhlIHNoYXJkcyB0
aGF0IG5lZWQgYSBsb2NrIGlmIHdlIGRvbid0IGFjdHVhbGx5CkBAIC03MzgsMTUgKzczMiwxMiBA
QCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKGludChz
ZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIGxlbihhbGxfc2hhcmRzKSkKICAgICAgICAg
c2VsZi5fbG9nX251bV93b3JrZXJzKG51bV93b3JrZXJzLCBsZW4oYWxsX3NoYXJkcyksIGxlbihs
b2NrZWRfc2hhcmRzKSkKIAotICAgICAgICBtYW5hZ2VyX2Nvbm5lY3Rpb24gPSBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIuZ2V0KHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZiwgd29ya2VyLldv
cmtlcikKKyAgICAgICAgbWFuYWdlcl9jb25uZWN0aW9uID0gbWFuYWdlcl93b3JrZXJfYnJva2Vy
LmdldChzZWxmLl9wb3J0LCBzZWxmLl9vcHRpb25zLCBzZWxmLCB3b3JrZXIuV29ya2VyKQogCiAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZHJ5X3J1bjoKLSAgICAgICAgICAgIHJldHVybiAoa2V5
Ym9hcmRfaW50ZXJydXB0ZWQsIGludGVycnVwdGVkLCB0aHJlYWRfdGltaW5ncywKLSAgICAgICAg
ICAgICAgICAgICAgc2VsZi5fZ3JvdXBfc3RhdHMsIHNlbGYuX2FsbF9yZXN1bHRzKQorICAgICAg
ICAgICAgcmV0dXJuIChrZXlib2FyZF9pbnRlcnJ1cHRlZCwgaW50ZXJydXB0ZWQsIHRocmVhZF90
aW1pbmdzLCBzZWxmLl9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKLSAgICAgICAg
c2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nICVzIC4uLicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBncmFtbWFyLnBsdXJhbGl6ZSgnd29ya2VyJywgbnVt
X3dvcmtlcnMpKQorICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcg
JXMgLi4uJyAlIGdyYW1tYXIucGx1cmFsaXplKCd3b3JrZXInLCBudW1fd29ya2VycykpCiAgICAg
ICAgIGZvciB3b3JrZXJfbnVtYmVyIGluIHhyYW5nZShudW1fd29ya2Vycyk6CiAgICAgICAgICAg
ICB3b3JrZXJfY29ubmVjdGlvbiA9IG1hbmFnZXJfY29ubmVjdGlvbi5zdGFydF93b3JrZXIod29y
a2VyX251bWJlcikKICAgICAgICAgICAgIHdvcmtlcl9zdGF0ZSA9IF9Xb3JrZXJTdGF0ZSh3b3Jr
ZXJfbnVtYmVyLCB3b3JrZXJfY29ubmVjdGlvbikKQEAgLTc3MiwxMCArNzYzLDYgQEAgY2xhc3Mg
TWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdoaWxlIG5vdCBz
ZWxmLmlzX2RvbmUoKToKLSAgICAgICAgICAgICAgICAjIFRlbXBvcmFyaWx5IGRpc2FibGVkIHRv
IHNlZSBob3cgdGhpcyBjb2RlIGVmZmVjdCBwZXJmb3JtYW5jZSBvbiB0aGUgYnVpbGRib3RzLgot
ICAgICAgICAgICAgICAgICMgaWYgc2VsZi5fcG9ydC5leGVjdXRpdmUucnVubmluZ19waWRzKHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpOgotICAgICAgICAgICAgICAgICMgICAgIHNlbGYu
X3ByaW50ZXIucHJpbnRfdXBkYXRlKCJXYWl0aW5nIGZvciBjcmFzaCByZXBvcnRlciAuLi4iKQot
ICAgICAgICAgICAgICAgICMgICAgIHNlbGYuX3BvcnQuZXhlY3V0aXZlLndhaXRfbmV3ZXN0KHNl
bGYuX3BvcnQuaXNfY3Jhc2hfcmVwb3J0ZXIpCiAgICAgICAgICAgICAgICAgbWFuYWdlcl9jb25u
ZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoZGVsYXlfc2Vjcz0xLjApCiAKICAgICAgICAgICAgICMg
TWFrZSBzdXJlIGFsbCBvZiB0aGUgd29ya2VycyBoYXZlIHNodXQgZG93biAoaWYgcG9zc2libGUp
LgpAQCAtODA4LDggKzc5NSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgdGhy
ZWFkX3RpbWluZ3MgPSBbd29ya2VyX3N0YXRlLnN0YXRzIGZvciB3b3JrZXJfc3RhdGUgaW4gc2Vs
Zi5fd29ya2VyX3N0YXRlcy52YWx1ZXMoKV0KIAogICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhp
cyBiZSBhIGNsYXNzIGluc3RlYWQgb2YgYSB0dXBsZT8KLSAgICAgICAgcmV0dXJuIChpbnRlcnJ1
cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLAotICAgICAgICAgICAg
ICAgIHNlbGYuX2dyb3VwX3N0YXRzLCBzZWxmLl9hbGxfcmVzdWx0cykKKyAgICAgICAgcmV0dXJu
IChpbnRlcnJ1cHRlZCwga2V5Ym9hcmRfaW50ZXJydXB0ZWQsIHRocmVhZF90aW1pbmdzLCBzZWxm
Ll9ncm91cF9zdGF0cywgc2VsZi5fYWxsX3Jlc3VsdHMpCiAKICAgICBkZWYgdXBkYXRlKHNlbGYp
OgogICAgICAgICBzZWxmLnVwZGF0ZV9zdW1tYXJ5KHNlbGYuX2N1cnJlbnRfcmVzdWx0X3N1bW1h
cnkpCkBAIC05MDIsMTkgKzg4OCwxMyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAg
ICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQogCi0gICAgICAgIHNlbGYuX3ByaW50X3RpbWluZ19z
dGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5KQotCisgICAg
ICAgIHNlbGYuX3ByaW50X3RpbWluZ19zdGF0aXN0aWNzKGVuZF90aW1lIC0gc3RhcnRfdGltZSwg
dGhyZWFkX3RpbWluZ3MsIHRlc3RfdGltaW5ncywgaW5kaXZpZHVhbF90ZXN0X3RpbWluZ3MsIHJl
c3VsdF9zdW1tYXJ5KQogICAgICAgICBzZWxmLl9wcmludF9yZXN1bHRfc3VtbWFyeShyZXN1bHRf
c3VtbWFyeSkKIAogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKICAgICAgICAgc3lzLnN0ZGVy
ci5mbHVzaCgpCiAKLSAgICAgICAgc2VsZi5fcHJpbnRlci5wcmludF9vbmVfbGluZV9zdW1tYXJ5
KHJlc3VsdF9zdW1tYXJ5LnRvdGFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQorICAg
ICAgICBzZWxmLl9wcmludGVyLnByaW50X29uZV9saW5lX3N1bW1hcnkocmVzdWx0X3N1bW1hcnku
dG90YWwsIHJlc3VsdF9zdW1tYXJ5LmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVk
KQogCiAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYu
X3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnks
IGluZGl2aWR1YWxfdGVzdF90aW1pbmdzLCBvbmx5X3VuZXhwZWN0ZWQ9VHJ1ZSwgaW50ZXJydXB0
ZWQ9aW50ZXJydXB0ZWQpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9y
ZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKQEAgLTkyNSwxMCArOTA1LDkgQEAgY2xhc3MgTWFu
YWdlcihvYmplY3QpOgogCiAgICAgICAgICMgRklYTUU6IHJlbW92ZSByZWNvcmRfcmVzdWx0cy4g
SXQncyBqdXN0IHVzZWQgZm9yIHRlc3RpbmcuIFRoZXJlJ3Mgbm8gbmVlZAogICAgICAgICAjIGZv
ciBpdCB0byBiZSBhIGNvbW1hbmRsaW5lIGFyZ3VtZW50LgotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy5yZWNvcmRfcmVzdWx0cyBhbmQgbm90IHNlbGYuX29wdGlvbnMuZHJ5X3J1biBhbmQKLSAg
ICAgICAgICAgIG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6Ci0gICAgICAgICAgICAjIFdyaXRl
IHRoZSBzYW1lIGRhdGEgdG8gbG9nIGZpbGVzIGFuZCB1cGxvYWQgZ2VuZXJhdGVkIEpTT04gZmls
ZXMKLSAgICAgICAgICAgICMgdG8gYXBwZW5naW5lIHNlcnZlci4KKyAgICAgICAgaWYgKHNlbGYu
X29wdGlvbnMucmVjb3JkX3Jlc3VsdHMgYW5kIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW4gYW5k
IG5vdCBrZXlib2FyZF9pbnRlcnJ1cHRlZCk6CisgICAgICAgICAgICBzZWxmLl9wb3J0LnByaW50
X2xlYWtzX3N1bW1hcnkoKQorICAgICAgICAgICAgIyBXcml0ZSB0aGUgc2FtZSBkYXRhIHRvIGxv
ZyBmaWxlcyBhbmQgdXBsb2FkIGdlbmVyYXRlZCBKU09OIGZpbGVzIHRvIGFwcGVuZ2luZSBzZXJ2
ZXIuCiAgICAgICAgICAgICBzdW1tYXJpemVkX3Jlc3VsdHMgPSBzdW1tYXJpemVfcmVzdWx0cyhz
ZWxmLl9wb3J0LCBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LCByZXRyeV9zdW1t
YXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVjdGVkPUZhbHNlLCBpbnRl
cnJ1cHRlZD1pbnRlcnJ1cHRlZCkKICAgICAgICAgICAgIHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVz
KHN1bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksIGluZGl2aWR1YWxfdGVzdF90aW1p
bmdzKQogCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5kZXggMmQ2NThjMGExZGQ4MDJiMWJhNzllNDA0NWQy
ZTM1MzZmOTM1NGZlNy4uNTE3ODA0MjAxMzE3MTBmYjk4MzFiZDYxMWIwZTgyMzc3YjhlMDI1NyAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlci5weQpAQCAtMTIwLDE0ICsxMjAsNiBAQCBjbGFzcyBXb3JrZXIobWFu
YWdlcl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgc2VsZi5fZG9uZSA9
IFRydWUKIAogICAgIGRlZiBfcnVuX3Rlc3Qoc2VsZiwgdGVzdF9pbnB1dCk6Ci0gICAgICAgICMg
QmVmb3JlIHJ1bm5pbmcgdGhlIHRlc3QsIHdlIHdhaXQgZm9yIGFueSBjcmFzaCByZXBvcnRlcnMg
dG8gZmluaXNoCi0gICAgICAgICMgcnVubmluZy4gT24gTWFjLCBSZXBvcnRDcmFzaCBjaGV3cyB1
cCBhIGJ1bmNoIG9mIHJlc291cmNlcyBhbmQKLSAgICAgICAgIyBjYXVzZXMgdGhlIHRlc3RzIHRv
IGJlY29tZSB1bnN0YWJsZSwgc28gd2UgZG9uJ3Qgd2FudCB0byBydW4gaW4KLSAgICAgICAgIyBw
YXJhbGxlbCB3aXRoIFJlcG9ydENyYXNoLgotICAgICAgICAjCi0gICAgICAgICMgVGVtcG9yYXJp
bHkgZGlzYWJsZWQgdG8gc2VlIGhvdyB0aGlzIGNvZGUgZWZmZWN0IHBlcmZvcm1hbmNlIG9uIHRo
ZSBidWlsZGJvdHMuCi0gICAgICAgICMgc2VsZi5fcG9ydC5leGVjdXRpdmUud2FpdF9uZXdlc3Qo
c2VsZi5fcG9ydC5pc19jcmFzaF9yZXBvcnRlcikKLQogICAgICAgICB0ZXN0X3RpbWVvdXRfc2Vj
ID0gc2VsZi50aW1lb3V0KHRlc3RfaW5wdXQpCiAgICAgICAgIHN0YXJ0ID0gdGltZS50aW1lKCkK
ICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucG9zdF9tZXNzYWdlKCdzdGFydGVkX3Rl
c3QnLCB0ZXN0X2lucHV0LCB0ZXN0X3RpbWVvdXRfc2VjKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDEzMmQxYTYwYjgyYjc2YTU4
MDRlM2ExMjBhM2Q4NmM2YmYxZTI2ZGQuLjI5MjU5MThmMjE0ZjQ4MjMyM2RhNjlhZTU5NTA3YzQ2
YTBmNDI4ODIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Jhc2UucHkKQEAgLTI4OCw2ICsyODgsMTQgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAg
IGRlZiBpc19jcmFzaF9yZXBvcnRlcihzZWxmLCBwcm9jZXNzX25hbWUpOgogICAgICAgICByZXR1
cm4gRmFsc2UKIAorICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJvY2Vzc19uYW1lLCBw
cm9jZXNzX3BpZCk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiBwcmludF9sZWFrc19zdW1tYXJ5
KHNlbGYpOgorICAgICAgICAjIFN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHRoaXMgdG8gcHJpbnQg
YSBzdW1tYXJ5IG9mIGxlYWtzIGZvdW5kCisgICAgICAgICMgd2hpbGUgcnVubmluZyB0aGUgbGF5
b3V0IHRlc3RzLgorICAgICAgICBwYXNzCisKICAgICBkZWYgZHJpdmVyX25hbWUoc2VsZik6CiAg
ICAgICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgdGhlIGFjdHVhbCBiaW5hcnkgdGhhdCBpcyBw
ZXJmb3JtaW5nIHRoZSB0ZXN0LAogICAgICAgICBzbyB0aGF0IGl0IGNhbiBiZSByZWZlcnJlZCB0
byBpbiBsb2cgbWVzc2FnZXMuIEluIG1vc3QgY2FzZXMgdGhpcwpAQCAtODUyLDggKzg2MCw3IEBA
IGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgcnVieSBmYWlsZWQgdG8gcnVu
IGZvciBzb21lIHJlYXNvbiwgbG9nIHRoZSBjb21tYW5kCiAgICAgICAgICAgICAjIG91dHB1dCBh
bmQgc3RvcCB0cnlpbmcuCiAgICAgICAgICAgICBzZWxmLl9wcmV0dHlfcGF0Y2hfYXZhaWxhYmxl
ID0gRmFsc2UKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBydW4gUHJldHR5UGF0
Y2ggKCVzKTpcbiVzIiAlIChjb21tYW5kLAotICAgICAgICAgICAgICAgICAgICAgICBlLm1lc3Nh
Z2Vfd2l0aF9vdXRwdXQoKSkpCisgICAgICAgICAgICBfbG9nLmVycm9yKCJGYWlsZWQgdG8gcnVu
IFByZXR0eVBhdGNoICglcyk6XG4lcyIgJSAoY29tbWFuZCwgZS5tZXNzYWdlX3dpdGhfb3V0cHV0
KCkpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3ByZXR0eV9wYXRjaF9lcnJvcl9odG1sCiAK
ICAgICBkZWYgZGVmYXVsdF9jb25maWd1cmF0aW9uKHNlbGYpOgpkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV93aW4ucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQppbmRl
eCBmMzYyYTIyMWU0YTM5ODhiNThiZTI2MzZhMzFjMWJjODA1NWYzNWM1Li4zNTEyOTkxMTZkMTA2
YmQzNjFhOWMwYTAzZTZhN2Q4MmIxZDQ1YTFjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX3dpbi5weQpAQCAtMTE3LDEx
ICsxMTcsOSBAQCBjbGFzcyBDaHJvbWl1bVdpblBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToK
ICAgICBkZWYgY2hlY2tfYnVpbGQoc2VsZiwgbmVlZHNfaHR0cCk6CiAgICAgICAgIHJlc3VsdCA9
IGNocm9taXVtLkNocm9taXVtUG9ydC5jaGVja19idWlsZChzZWxmLCBuZWVkc19odHRwKQogICAg
ICAgICBpZiBub3QgcmVzdWx0OgotICAgICAgICAgICAgX2xvZy5lcnJvcignRm9yIGNvbXBsZXRl
IFdpbmRvd3MgYnVpbGQgcmVxdWlyZW1lbnRzLCBwbGVhc2UgJwotICAgICAgICAgICAgICAgICAg
ICAgICAnc2VlOicpCisgICAgICAgICAgICBfbG9nLmVycm9yKCdGb3IgY29tcGxldGUgV2luZG93
cyBidWlsZCByZXF1aXJlbWVudHMsIHBsZWFzZSBzZWU6JykKICAgICAgICAgICAgIF9sb2cuZXJy
b3IoJycpCi0gICAgICAgICAgICBfbG9nLmVycm9yKCcgICAgaHR0cDovL2Rldi5jaHJvbWl1bS5v
cmcvZGV2ZWxvcGVycy9ob3ctdG9zLycKLSAgICAgICAgICAgICAgICAgICAgICAgJ2J1aWxkLWlu
c3RydWN0aW9ucy13aW5kb3dzJykKKyAgICAgICAgICAgIF9sb2cuZXJyb3IoJyAgICBodHRwOi8v
ZGV2LmNocm9taXVtLm9yZy9kZXZlbG9wZXJzL2hvdy10b3MvYnVpbGQtaW5zdHJ1Y3Rpb25zLXdp
bmRvd3MnKQogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgcmVsYXRpdmVfdGVzdF9m
aWxlbmFtZShzZWxmLCBmaWxlbmFtZSk6CkBAIC0xMzMsOCArMTMxLDcgQEAgY2xhc3MgQ2hyb21p
dW1XaW5Qb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6CiAgICAgIwogICAgIGRlZiBfYnVpbGRf
cGF0aChzZWxmLCAqY29tcHMpOgogICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ2J1aWxkX2Rp
cmVjdG9yeScpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
LmdldF9vcHRpb24oJ2J1aWxkX2RpcmVjdG9yeScpLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAqY29tcHMpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXN5
c3RlbS5qb2luKHNlbGYuZ2V0X29wdGlvbignYnVpbGRfZGlyZWN0b3J5JyksICpjb21wcykKIAog
ICAgICAgICBwID0gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgnd2Via2l0JywgKmNvbXBz
KQogICAgICAgICBpZiBzZWxmLl9maWxlc3lzdGVtLmV4aXN0cyhwKToKQEAgLTE0OCwxMiArMTQ1
LDEwIEBAIGNsYXNzIENocm9taXVtV2luUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAg
ICAgICByZXR1cm4gRmFsc2UKIAogICAgIGRlZiBfbGlnaHR0cGRfcGF0aChzZWxmLCAqY29tcHMp
OgotICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21pdW1fYmFzZSgndGhpcmRfcGFy
dHknLCAnbGlnaHR0cGQnLCAnd2luJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKmNvbXBzKQorICAgICAgICByZXR1cm4gc2VsZi5wYXRoX2Zyb21fY2hyb21p
dW1fYmFzZSgndGhpcmRfcGFydHknLCAnbGlnaHR0cGQnLCAnd2luJywgKmNvbXBzKQogCiAgICAg
ZGVmIF9wYXRoX3RvX2FwYWNoZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9t
X2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICd1c3InLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2JpbicsICdodHRwZCcpCisgICAg
ICAgIHJldHVybiBzZWxmLnBhdGhfZnJvbV9jaHJvbWl1bV9iYXNlKCd0aGlyZF9wYXJ0eScsICdj
eWd3aW4nLCAndXNyJywgJ3NiaW4nLCAnaHR0cGQnKQogCiAgICAgZGVmIF9wYXRoX3RvX2FwYWNo
ZV9jb25maWdfZmlsZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbGVzeXN0ZW0uam9p
bihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZicsICdjeWd3aW4taHR0cGQu
Y29uZicpCkBAIC0xODIsNSArMTc3LDQgQEAgY2xhc3MgQ2hyb21pdW1XaW5Qb3J0KGNocm9taXVt
LkNocm9taXVtUG9ydCk6CiAgICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKHNlbGYuZ2V0
X29wdGlvbignY29uZmlndXJhdGlvbicpLCBiaW5hcnlfbmFtZSkKIAogICAgIGRlZiBfcGF0aF90
b193ZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucGF0aF9mcm9tX2Nocm9taXVtX2Jh
c2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnd2RpZmYuZXhlJykKKyAgICAgICAgcmV0dXJuIHNlbGYu
cGF0aF9mcm9tX2Nocm9taXVtX2Jhc2UoJ3RoaXJkX3BhcnR5JywgJ2N5Z3dpbicsICdiaW4nLCAn
d2RpZmYuZXhlJykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvZ3RrLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9ndGsucHkKaW5kZXggZGI0ZDI4NTJmYmQ0YzViMDdhOTBkNmVkMjNhOTU2NTFjY2RiNDQwMi4u
NTc0YzI5MTdlNDAzMDJiM2U2N2E1NWY3ZjI2MzQ4ZTJmNzBlY2I1NCAxMDA2NDQKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKKysrIGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9ndGsucHkKQEAgLTQ3LDggKzQ3LDcg
QEAgY2xhc3MgR3RrRHJpdmVyKHdlYmtpdC5XZWJLaXREcml2ZXIpOgogICAgICAgICBlbnZpcm9u
bWVudCA9IHNlbGYuX3BvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKCkKICAgICAgICAgIyBX
ZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIHRoZSBESVNQTEFZIG51bWJlciBkZXBlbmRzIG9u
IF93b3JrZXJfbnVtYmVyCiAgICAgICAgIGVudmlyb25tZW50WydESVNQTEFZJ10gPSAiOiVkIiAl
IChkaXNwbGF5X2lkKQotICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2VzcyA9IHNlcnZlcl9wcm9j
ZXNzLlNlcnZlclByb2Nlc3Moc2VsZi5fcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX3BvcnQuZHJp
dmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkKKyAgICAgICAgc2VsZi5f
c2VydmVyX3Byb2Nlc3MgPSBzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKHNlbGYuX3BvcnQs
IHNlbGYuX3BvcnQuZHJpdmVyX25hbWUoKSwgc2VsZi5jbWRfbGluZSgpLCBlbnZpcm9ubWVudCkK
IAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICB3ZWJraXQuV2ViS2l0RHJpdmVyLnN0b3Ao
c2VsZikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvbWFjLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMu
cHkKaW5kZXggOWE1NTFjNWVkNGE3MmE2MTIxYjFlZDgzMjA0NzQxNDI0MWRjNjAzMC4uY2U4MjRi
MjkxY2E1NTdiZDJmNTk3ZTAwZWYwYjZjMjIyMDliOGU2YyAxMDA2NDQKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9tYWMucHkKQEAgLTMyLDEyICszMiwxMTIgQEAg
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHJlCiAKK2Zyb20gd2Via2l0
cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNjcmlwdEVycm9yCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5wb3J0LndlYmtpdCBpbXBvcnQgV2ViS2l0UG9ydAogCiAKIF9sb2cg
PSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCisjIElmIG90aGVyIHBvcnRzL3BsYXRm
b3JtcyBkZWNpZGUgdG8gc3VwcG9ydCAtLWxlYWtzLCB3ZSBzaG91bGQgc2VlIGFib3V0IHNoYXJp
bmcgYXMgbXVjaCBvZiB0aGlzIGNvZGUgYXMgcG9zc2libGUuCitjbGFzcyBMZWFrRGV0ZWN0b3Io
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydCk6CisgICAgICAgICMgV2Ugc2hv
dWxkIG9wZXJhdGUgb24gYSAicGxhdGZvcm0iIG5vdCBhIHBvcnQgaGVyZS4KKyAgICAgICAgc2Vs
Zi5fcG9ydCA9IHBvcnQKKyAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydC5fZXhlY3V0aXZl
CisgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0Ll9maWxlc3lzdGVtCisKKyAgICAjIFdl
IGV4Y2x1ZGUgdGhlIGZvbGxvd2luZyByZXBvcnRlZCBsZWFrcyBzbyB0aGV5IGRvIG5vdCBnZXQg
aW4gb3VyIHdheSB3aGVuIGxvb2tpbmcgZm9yIFdlYktpdCBsZWFrczoKKyAgICAjIFRoaXMgYWxs
b3dzIHVzIGlnbm9yZSBrbm93biBsZWFrcyBhbmQgb25seSBiZSBhbGVydGVkIHdoZW4gbmV3IGxl
YWtzIG9jY3VyLiBTb21lIGxlYWtzIGFyZSBpbiB0aGUgb2xkCisgICAgIyB2ZXJzaW9ucyBvZiB0
aGUgc3lzdGVtIGZyYW1ld29ya3MgdGhhdCBhcmUgYmVpbmcgdXNlZCBieSB0aGUgbGVha3MgYm90
cy4gRXZlbiB0aG91Z2ggYSBsZWFrIGhhcyBiZWVuCisgICAgIyBmaXhlZCwgaXQgd2lsbCBiZSBs
aXN0ZWQgaGVyZSB1bnRpbCB0aGUgYm90IGhhcyBiZWVuIHVwZGF0ZWQgd2l0aCB0aGUgbmV3ZXIg
ZnJhbWV3b3Jrcy4KKyAgICBkZWYgX3R5cGVzX3RvX2V4bHVkZV9mcm9tX2xlYWtzKHNlbGYpOgor
ICAgICAgICAjIEN1cnJlbnRseSB3ZSBkb24ndCBoYXZlIGFueSB0eXBlIGV4Y2x1ZGVzIGZyb20g
T1MgbGVha3MsIGJ1dCB3ZSB3aWxsIGxpa2VseSBhZ2FpbiBpbiB0aGUgZnV0dXJlLgorICAgICAg
ICByZXR1cm4gW10KKworICAgIGRlZiBfY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3Mo
c2VsZik6CisgICAgICAgIGNhbGxzdGFja3MgPSBbCisgICAgICAgICAgICAiRmxhc2hfRW5mb3Jj
ZUxvY2FsU2VjdXJpdHkiLCAgIyBsZWFrcyBpbiBGbGFzaCBwbHVnLWluIGNvZGUsIHJkYXI6Ly9w
cm9ibGVtLzQ0NDk3NDcKKyAgICAgICAgXQorICAgICAgICBpZiBzZWxmLl9wb3J0LmlzX2xlb3Bh
cmQoKToKKyAgICAgICAgICAgIGNhbGxzdGFja3MgKz0gWworICAgICAgICAgICAgICAgICJDRkhU
VFBNZXNzYWdlQXBwZW5kQnl0ZXMiLCAgIyBsZWFrIGluIENGTmV0d29yaywgcmRhcjovL3Byb2Js
ZW0vNTQzNTkxMgorICAgICAgICAgICAgICAgICJzZW5kRGlkUmVjZWl2ZURhdGFDYWxsYmFjayIs
ICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDQxNjE5CisgICAgICAgICAg
ICAgICAgIl9DRkhUVFBSZWFkU3RyZWFtUmVhZE1hcmsiLCAgIyBsZWFrIGluIENGTmV0d29yaywg
cmRhcjovL3Byb2JsZW0vNTQ0MTQ2OAorICAgICAgICAgICAgICAgICJodHRwUHJvdG9jb2xTdGFy
dCIsICAjIGxlYWsgaW4gQ0ZOZXR3b3JrLCByZGFyOi8vcHJvYmxlbS81NDY4ODM3CisgICAgICAg
ICAgICAgICAgIl9DRlVSTENvbm5lY3Rpb25TZW5kQ2FsbGJhY2tzIiwgICMgbGVhayBpbiBDRk5l
dHdvcmssIHJkYXI6Ly9wcm9ibGVtLzU0NDE2MDAKKyAgICAgICAgICAgICAgICAiRGlzcGF0Y2hR
VE1zZyIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2
NzEzMgorICAgICAgICAgICAgICAgICJRVE1vdmllQ29udGVudFZpZXcgY3JlYXRlVmlzdWFsQ29u
dGV4dCIsICAjIGxlYWsgaW4gUXVpY2tUaW1lLCBQUEMgb25seSwgcmRhcjovL3Byb2JsZW0vNTY2
NzEzMgorICAgICAgICAgICAgICAgICJfQ29weUFyY2hpdGVjdHVyZXNGb3JKVk1WZXJzaW9uIiwg
ICMgbGVhayBpbiBKYXZhLCByZGFyOi8vcHJvYmxlbS81OTEwODIzCisgICAgICAgICAgICBdCisg
ICAgICAgIGVsaWYgc2VsZi5fcG9ydC5pc19zbm93bGVvcGFyZCgpOgorICAgICAgICAgICAgY2Fs
bHN0YWNrcyArPSBbCisgICAgICAgICAgICAgICAgInJlYWRNYWtlck5vdGVQcm9wcyIsICAjIDxy
ZGFyOi8vcHJvYmxlbS83MTU2NDMyPiBsZWFrIGluIEltYWdlSU8KKyAgICAgICAgICAgICAgICAi
UVRLaXRNb3ZpZUNvbnRyb2xsZXJWaWV3IGNvbXBsZXRlVUlTZXR1cCIsICAjIDxyZGFyOi8vcHJv
YmxlbS83MTU1MTU2PiBsZWFrIGluIFFUS2l0CisgICAgICAgICAgICAgICAgImdldFZNSW5pdEFy
Z3MiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzcxNDQ0ND4gbGVhayBpbiBKYXZhCisgICAgICAgICAg
ICAgICAgIkphdmFfamF2YV9sYW5nX1N5c3RlbV9pbml0UHJvcGVydGllcyIsICAjIDxyZGFyOi8v
cHJvYmxlbS83NzE0NDY1PiBsZWFrIGluIEphdmEKKyAgICAgICAgICAgICAgICAiZ2xyQ29tcEV4
ZWN1dGVLZXJuZWwiLCAgIyA8cmRhcjovL3Byb2JsZW0vNzgxNTM5MT4gbGVhayBpbiBncmFwaGlj
cyBkcml2ZXIgd2hpbGUgdXNpbmcgT3BlbkdMCisgICAgICAgICAgICAgICAgIk5TTnVtYmVyRm9y
bWF0dGVyIGdldE9iamVjdFZhbHVlOmZvclN0cmluZzplcnJvckRlc2NyaXB0aW9uOiIsICAjIDxy
ZGFyOi8vcHJvYmxlbS83MTQ5MzUwPiBMZWFrIGluIE5TTnVtYmVyRm9ybWF0dGVyCisgICAgICAg
ICAgICBdCisgICAgICAgIHJldHVybiBjYWxsc3RhY2tzCisKKyAgICBkZWYgX2xlYWtzX2FyZ3Mo
c2VsZiwgcGlkKToKKyAgICAgICAgbGVha3NfYXJncyA9IFtdCisgICAgICAgIGZvciBjYWxsc3Rh
Y2sgaW4gc2VsZi5fY2FsbHN0YWNrc190b19leGNsdWRlX2Zyb21fbGVha3MoKToKKyAgICAgICAg
ICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtY2FsbHN0YWNrPSIlcyInICUgY2FsbHN0YWNr
XSAgIyBDYWxsc3RhY2tzIGNhbiBoYXZlIHNwYWNlcyBpbiB0aGVtLCBzbyB3ZSBxdW90ZSB0aGUg
YXJnIHRvIHByZXZlbnQgY29uZnVzaW5nIHBlcmwncyBvcHRwYXJzZS4KKyAgICAgICAgZm9yIGV4
Y2x1ZGVkX3R5cGUgaW4gc2VsZi5fdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MoKToKKyAgICAg
ICAgICAgIGxlYWtzX2FyZ3MgKz0gWyctLWV4Y2x1ZGUtdHlwZT0iJXMiJyAlIGV4Y2x1ZGVkX3R5
cGVdCisgICAgICAgIGxlYWtzX2FyZ3MuYXBwZW5kKHBpZCkKKyAgICAgICAgcmV0dXJuIGxlYWtz
X2FyZ3MKKworICAgIGRlZiBfcGFyc2VfbGVha3Nfb3V0cHV0KHNlbGYsIGxlYWtzX291dHB1dCwg
cHJvY2Vzc19waWQpOgorICAgICAgICBjb3VudCwgYnl0ZXMgPSByZS5zZWFyY2gocidQcm9jZXNz
ICVzOiAoXGQrKSBsZWFrcz8gZm9yIChcZCspIHRvdGFsJyAlIHByb2Nlc3NfcGlkLCBsZWFrc19v
dXRwdXQpLmdyb3VwcygpCisgICAgICAgIGV4Y2x1ZGVkX21hdGNoID0gcmUuc2VhcmNoKHInKFxk
KykgbGVha3M/IGV4Y2x1ZGVkJywgbGVha3Nfb3V0cHV0KQorICAgICAgICBleGNsdWRlZCA9IGV4
Y2x1ZGVkX21hdGNoLmdyb3VwKDApIGlmIGV4Y2x1ZGVkX21hdGNoIGVsc2UgMAorICAgICAgICBy
ZXR1cm4gaW50KGNvdW50KSwgaW50KGV4Y2x1ZGVkKSwgaW50KGJ5dGVzKQorCisgICAgZGVmIGxl
YWtzX2ZpbGVzX2luX2RpcmVjdG9yeShzZWxmLCBkaXJlY3RvcnkpOgorICAgICAgICByZXR1cm4g
c2VsZi5fZmlsZXN5c3RlbS5nbG9iKHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihkaXJlY3RvcnksICJs
ZWFrcy0qIikpCisKKyAgICBkZWYgbGVha3NfZmlsZV9uYW1lKHNlbGYsIHByb2Nlc3NfbmFtZSwg
cHJvY2Vzc19waWQpOgorICAgICAgICAjIFdlIGluY2x1ZGUgdGhlIG51bWJlciBvZiBmaWxlcyB0
aGlzIHdvcmtlciBoYXMgYWxyZWFkeSB3cml0dGVuIGluIHRoZSBuYW1lIHRvIHByZXZlbnQgb3Zl
cndyaXR0aW5nIHByZXZpb3VzIGxlYWsgcmVzdWx0cy4uCisgICAgICAgIHJldHVybiAibGVha3Mt
JXMtJXMudHh0IiAlIChwcm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKQorCisgICAgZGVmIHBhcnNl
X2xlYWtfZmlsZXMoc2VsZiwgbGVha19maWxlcyk6CisgICAgICAgIG1lcmdlX2RlcHRoID0gNSAg
IyBPUldUIGhhZCBhIC0tbWVyZ2UtbGVhay1kZXB0aCBhcmd1bWVudCwgYnV0IHRoYXQgc2VlbXMg
b3V0IG9mIHNjb3BlIGZvciB0aGUgcnVuLXdlYmtpdC10ZXN0cyB0b29sLgorICAgICAgICBhcmdz
ID0gWworICAgICAgICAgICAgJy0tbWVyZ2UtZGVwdGgnLAorICAgICAgICAgICAgbWVyZ2VfZGVw
dGgsCisgICAgICAgIF0gKyBsZWFrX2ZpbGVzCisgICAgICAgIHBhcnNlX21hbGxvY19oaXN0b3J5
X291dHB1dCA9IHNlbGYuX3BvcnQuX3J1bl9zY3JpcHQoInBhcnNlLW1hbGxvYy1oaXN0b3J5Iiwg
YXJncywgaW5jbHVkZV9jb25maWd1cmF0aW9uX2FyZ3VtZW50cz1GYWxzZSkKKworICAgICAgICB1
bmlxdWVfbGVha19jb3VudCA9IGxlbihyZS5maW5kYWxsKHInXihcZCopXHNjYWxscycsIHBhcnNl
X21hbGxvY19oaXN0b3J5X291dHB1dCkpCisgICAgICAgIHRvdGFsX2J5dGVzID0gaW50KHJlLnNl
YXJjaChyJ150b3RhbFw6XHMoLiopXHNcKCcsIHBhcnNlX21hbGxvY19oaXN0b3J5X291dHB1dCku
Z3JvdXAoMSkpCisgICAgICAgIHJldHVybiAodG90YWxfYnl0ZXMsIHVuaXF1ZV9sZWFrX2NvdW50
KQorCisgICAgZGVmIGNoZWNrX2Zvcl9sZWFrcyhzZWxmLCBwcm9jZXNzX25hbWUsIHByb2Nlc3Nf
cGlkKToKKyAgICAgICAgX2xvZy5kZWJ1ZygiQ2hlY2tpbmcgZm9yIGxlYWtzIGluICVzIiAlIHBy
b2Nlc3NfbmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgbGVha3Nfb3V0cHV0ID0gc2Vs
Zi5fcG9ydC5fcnVuX3NjcmlwdCgicnVuLWxlYWtzIiwgc2VsZi5fbGVha3NfYXJncyhwcm9jZXNz
X3BpZCksIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM9RmFsc2UpCisgICAgICAgIGV4
Y2VwdCBTY3JpcHRFcnJvciwgZToKKyAgICAgICAgICAgIF9sb2cud2FybigiRmFpbGVkIHRvIHJ1
biBsZWFrcyB0b29sOiAlcyIgJSBlLm1lc3NhZ2Vfd2l0aF9vdXRwdXQoKSkKKyAgICAgICAgICAg
IHJldHVybgorCisgICAgICAgIGNvdW50LCBleGNsdWRlZCwgYnl0ZXMgPSBzZWxmLl9wYXJzZV9s
ZWFrc19vdXRwdXQobGVha3Nfb3V0cHV0LCBwcm9jZXNzX3BpZCkKKyAgICAgICAgYWRqdXN0ZWRf
Y291bnQgPSBjb3VudCAtIGV4Y2x1ZGVkCisgICAgICAgIGlmIG5vdCBhZGp1c3RlZF9jb3VudDoK
KyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGxlYWtzX2ZpbGVuYW1lID0gc2VsZi5sZWFr
c19maWxlX25hbWUocHJvY2Vzc19uYW1lLCBwcm9jZXNzX3BpZCkKKyAgICAgICAgbGVha3Nfb3V0
cHV0X3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcG9ydC5yZXN1bHRzX2RpcmVj
dG9yeSgpLCBsZWFrc19maWxlbmFtZSkKKyAgICAgICAgc2VsZi5fZmlsZXN5c3RlbS53cml0ZV90
ZXh0X2ZpbGUobGVha3Nfb3V0cHV0X3BhdGgsIGxlYWtzX291dHB1dCkKKworICAgICAgICBpZiBl
eGNsdWRlZDoKKyAgICAgICAgICAgIF9sb2cuaW5mbygiJXMgbGVha3MgKCVzIGJ5dGVzIGluY2x1
ZGluZyAlcyBleGNsdWRlZCBsZWFrcykgd2VyZSBmb3VuZCwgZGV0YWlscyBpbiAlcyIgJSAoYWRq
dXN0ZWRfY291bnQsIGJ5dGVzLCBleGNsdWRlZCwgbGVha3Nfb3V0cHV0X3BhdGgpKQorICAgICAg
ICBlbHNlOgorICAgICAgICAgICAgX2xvZy5pbmZvKCIlcyBsZWFrcyAoJXMgYnl0ZXMpIHdlcmUg
Zm91bmQsIGRldGFpbHMgaW4gJXMiICUgKGNvdW50LCBieXRlcywgbGVha3Nfb3V0cHV0X3BhdGgp
KQorCisKIGRlZiBvc192ZXJzaW9uKG9zX3ZlcnNpb25fc3RyaW5nPU5vbmUsIHN1cHBvcnRlZF92
ZXJzaW9ucz1Ob25lKToKICAgICBpZiBub3Qgb3NfdmVyc2lvbl9zdHJpbmc6CiAgICAgICAgIGlm
IGhhc2F0dHIocGxhdGZvcm0sICdtYWNfdmVyJykgYW5kIHBsYXRmb3JtLm1hY192ZXIoKVswXToK
QEAgLTkyLDYgKzE5Miw3IEBAIGNsYXNzIE1hY1BvcnQoV2ViS2l0UG9ydCk6CiAgICAgICAgICAg
ICBzZWxmLl92ZXJzaW9uID0gcG9ydF9uYW1lW2xlbignbWFjLScpOl0KICAgICAgICAgICAgIGFz
c2VydCBzZWxmLl92ZXJzaW9uIGluIHNlbGYuU1VQUE9SVEVEX1ZFUlNJT05TLCAiJXMgaXMgbm90
IGluICVzIiAlIChzZWxmLl92ZXJzaW9uLCBzZWxmLlNVUFBPUlRFRF9WRVJTSU9OUykKICAgICAg
ICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9ICdtYWMnCisgICAgICAgIHNlbGYuX2xlYWtfZGV0
ZWN0b3IgPSBMZWFrRGV0ZWN0b3Ioc2VsZikKIAogICAgIGRlZiBiYXNlbGluZV9zZWFyY2hfcGF0
aChzZWxmKToKICAgICAgICAgc2VhcmNoX3BhdGhzID0gc2VsZi5GQUxMQkFDS19QQVRIU1tzZWxm
Ll92ZXJzaW9uXQpAQCAtOTksMTcgKzIwMCw1MiBAQCBjbGFzcyBNYWNQb3J0KFdlYktpdFBvcnQp
OgogICAgICAgICAgICAgc2VhcmNoX3BhdGhzLmluc2VydCgwLCBzZWxmLl93azJfcG9ydF9uYW1l
KCkpCiAgICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJj
aF9wYXRocykKIAorICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZik6CisgICAg
ICAgIGVudiA9IFdlYktpdFBvcnQuc2V0dXBfZW52aXJvbl9mb3Jfc2VydmVyKHNlbGYpCisgICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbignbGVha3MnKToKKyAgICAgICAgICAgIGVudlsnTWFsbG9j
U3RhY2tMb2dnaW5nJ10gPSAnMScKKyAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCdndWFyZF9t
YWxsb2MnKToKKyAgICAgICAgICAgIGVudlsnRFlMRF9JTlNFUlRfTElCUkFSSUVTJ10gPSAnL3Vz
ci9saWIvbGliZ21hbGxvYy5keWxpYicKKyAgICAgICAgcmV0dXJuIGVudgorCisgICAgIyBCZWxv
bmdzIG9uIGEgUGxhdGZvcm0gb2JqZWN0LgorICAgIGRlZiBpc19sZW9wYXJkKHNlbGYpOgorICAg
ICAgICByZXR1cm4gc2VsZi5fdmVyc2lvbiA9PSAibGVvcGFyZCIKKworICAgICMgQmVsb25ncyBv
biBhIFBsYXRmb3JtIG9iamVjdC4KKyAgICBkZWYgaXNfc25vd2xlb3BhcmQoc2VsZik6CisgICAg
ICAgIHJldHVybiBzZWxmLl92ZXJzaW9uID09ICJzbm93bGVvcGFyZCIKKworICAgICMgQmVsb25n
cyBvbiBhIFBsYXRmb3JtIG9iamVjdC4KICAgICBkZWYgaXNfY3Jhc2hfcmVwb3J0ZXIoc2VsZiwg
cHJvY2Vzc19uYW1lKToKICAgICAgICAgcmV0dXJuIHJlLnNlYXJjaChyJ1JlcG9ydENyYXNoJywg
cHJvY2Vzc19uYW1lKQogCiAgICAgZGVmIF9idWlsZF9qYXZhX3Rlc3Rfc3VwcG9ydChzZWxmKToK
ICAgICAgICAgamF2YV90ZXN0c19wYXRoID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYubGF5
b3V0X3Rlc3RzX2RpcigpLCAiamF2YSIpCiAgICAgICAgIGJ1aWxkX2phdmEgPSBbIi91c3IvYmlu
L21ha2UiLCAiLUMiLCBqYXZhX3Rlc3RzX3BhdGhdCi0gICAgICAgIGlmIHNlbGYuX2V4ZWN1dGl2
ZS5ydW5fY29tbWFuZChidWlsZF9qYXZhLCByZXR1cm5fZXhpdF9jb2RlPVRydWUpOgorICAgICAg
ICBpZiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoYnVpbGRfamF2YSwgcmV0dXJuX2V4aXRf
Y29kZT1UcnVlKTogICMgUGF0aHMgYXJlIGFic29sdXRlLCBzbyB3ZSBkb24ndCBuZWVkIHRvIHNl
dCBhIGN3ZC4KICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkZhaWxlZCB0byBidWlsZCBKYXZhIHN1
cHBvcnQgZmlsZXM6ICVzIiAlIGJ1aWxkX2phdmEpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UK
ICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiBjaGVja19mb3JfbGVha3Moc2VsZiwgcHJv
Y2Vzc19uYW1lLCBwcm9jZXNzX3BpZCk6CisgICAgICAgIGlmIG5vdCBzZWxmLmdldF9vcHRpb24o
J2xlYWtzJyk6CisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIyBXZSBjb3VsZCB1c2UgaHR0
cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3BzdXRpbC8gdG8gZ2V0IHRoZSBwcm9jZXNzX25hbWUgZnJv
bSB0aGUgcGlkLgorICAgICAgICBzZWxmLl9sZWFrX2RldGVjdG9yLmNoZWNrX2Zvcl9sZWFrcyhw
cm9jZXNzX25hbWUsIHByb2Nlc3NfcGlkKQorCisgICAgZGVmIHByaW50X2xlYWtzX3N1bW1hcnko
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmdldF9vcHRpb24oJ2xlYWtzJyk6CisgICAgICAg
ICAgICByZXR1cm4KKyAgICAgICAgIyBXZSdyZSBpbiB0aGUgbWFuYWdlciBwcm9jZXNzLCBzbyB0
aGUgbGVhayBkZXRlY3RvciB3aWxsIG5vdCBoYXZlIGEgdmFsaWQgbGlzdCBvZiBsZWFrIGZpbGVz
LgorICAgICAgICAjIEZJWE1FOiBUaGlzIGlzIGEgaGFjaywgYnV0IHdlIGRvbid0IGhhdmUgYSBi
ZXR0ZXIgd2F5IHRvIGdldCB0aGlzIGluZm9ybWF0aW9uIGZyb20gdGhlIHdvcmtlcnMgeWV0Lgor
ICAgICAgICBsZWFrc19maWxlcyA9IHNlbGYuX2xlYWtfZGV0ZWN0b3IubGVha3NfZmlsZXNfaW5f
ZGlyZWN0b3J5KHNlbGYucmVzdWx0c19kaXJlY3RvcnkoKSkKKyAgICAgICAgaWYgbm90IGxlYWtz
X2ZpbGVzOgorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHRvdGFsX2J5dGVzLCB1bmlxdWVf
bGVha3MgPSBzZWxmLnBhcnNlX2xlYWtfZmlsZXMobGVha3NfZmlsZXMpCisgICAgICAgIF9sb2cu
aW5mbygiJXMgdG90YWwgbGVha3MgZm91bmQgZm9yIGEgdG90YWwgb2YgJXMhIiAlIChzZWxmLl90
b3RhbF9sZWFrcywgdG90YWxfYnl0ZXMpKQorICAgICAgICBfbG9nLmluZm8oIiVzIHVuaXF1ZSBs
ZWFrcyBmb3VuZCEiICUgdW5pcXVlX2xlYWtzKQorCiAgICAgZGVmIF9jaGVja19wb3J0X2J1aWxk
KHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfamF2YV90ZXN0X3N1cHBvcnQoKQog
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L21h
Y191bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
bWFjX3VuaXR0ZXN0LnB5CmluZGV4IDc0YmQxOGMzOGY2YTU0MzU1NjgwZWJjMDFlNDAzN2NlYmM3
YjdjODQuLjk0YjE2OTRmNzc1ZTkzYjhjZmJjMWIwNzg4YWE2NDc5YzY2ZmI2ODcgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvbWFjX3Vu
aXR0ZXN0LnB5CkBAIC0zMCwxMyArMzAsODQgQEAgaW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgc3lz
CiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMucG9ydC5tYWMg
aW1wb3J0IE1hY1BvcnQKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQubWFjIGltcG9y
dCBNYWNQb3J0LCBMZWFrRGV0ZWN0b3IKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnBvcnQg
aW1wb3J0IHBvcnRfdGVzdGNhc2UKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5maWxlc3lz
dGVtX21vY2sgaW1wb3J0IE1vY2tGaWxlU3lzdGVtCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0
ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQogZnJvbSB3ZWJraXRweS50b29s
Lm1vY2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucywgTW9ja1VzZXIsIE1vY2tFeGVjdXRpdmUKIAog
CitjbGFzcyBMZWFrRGV0ZWN0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgX21v
Y2tfcG9ydChzZWxmKToKKyAgICAgICAgY2xhc3MgTW9ja1BvcnQob2JqZWN0KToKKyAgICAgICAg
ICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9maWxlc3lzdGVt
ID0gTW9ja0ZpbGVTeXN0ZW0oKQorICAgICAgICAgICAgICAgIHNlbGYuX2V4ZWN1dGl2ZSA9IE1v
Y2tFeGVjdXRpdmUoKQorCisgICAgICAgIHJldHVybiBNb2NrUG9ydCgpCisKKyAgICBkZWYgX21h
a2VfZGV0ZWN0b3Ioc2VsZik6CisgICAgICAgIHJldHVybiBMZWFrRGV0ZWN0b3Ioc2VsZi5fbW9j
a19wb3J0KCkpCisKKyAgICBkZWYgdGVzdF9sZWFrc19hcmdzKHNlbGYpOgorICAgICAgICBkZXRl
Y3RvciA9IHNlbGYuX21ha2VfZGV0ZWN0b3IoKQorICAgICAgICBkZXRlY3Rvci5fY2FsbHN0YWNr
c190b19leGNsdWRlX2Zyb21fbGVha3MgPSBsYW1iZGE6IFsnZm9vIGJhcicsICdCQVonXQorICAg
ICAgICBkZXRlY3Rvci5fdHlwZXNfdG9fZXhsdWRlX2Zyb21fbGVha3MgPSBsYW1iZGE6IFsnYWJj
ZGVmZycsICdoaSBqa2xtbm8nXQorICAgICAgICBleHBlY3RlZF9hcmdzID0gWyctLWV4Y2x1ZGUt
Y2FsbHN0YWNrPSJmb28gYmFyIicsICctLWV4Y2x1ZGUtY2FsbHN0YWNrPSJCQVoiJywgJy0tZXhj
bHVkZS10eXBlPSJhYmNkZWZnIicsICctLWV4Y2x1ZGUtdHlwZT0iaGkgamtsbW5vIicsIDEyMzRd
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGRldGVjdG9yLl9sZWFrc19hcmdzKDEyMzQpLCBl
eHBlY3RlZF9hcmdzKQorCisgICAgZXhhbXBsZV9sZWFrc19vdXRwdXQgPSAiIiJQcm9jZXNzIDUx
MjI6IDY2Mzc0NCBub2RlcyBtYWxsb2NlZCBmb3IgNzg2ODMgS0IKK1Byb2Nlc3MgNTEyMjogMzM3
MzAxIGxlYWtzIGZvciA2NTI1MjE2IHRvdGFsIGxlYWtlZCBieXRlcy4KK0xlYWs6IDB4MzhjYjYw
MCAgc2l6ZT0zMDcyICB6b25lOiBEZWZhdWx0TWFsbG9jWm9uZV8weDFkOTQwMDAgICBpbnN0YW5j
ZSBvZiAnTlNDRkRhdGEnLCB0eXBlIE9iakMsIGltcGxlbWVudGVkIGluIEZvdW5kYXRpb24KKyAg
ICAgICAgMHhhMDMzZjBiOCAweDAxMDAxMzg0IDB4MDAwMDBiM2EgMHgwMDAwMGIzYSAgICAgLi4z
Li4uLi46Li4uOi4uLgorICAgICAgICAweDAwMDAwMDAwIDB4MDM4Y2I2MjAgMHgwMDAwMDAwMCAw
eDAwMDAwMDAwICAgICAuLi4uIC4uLi4uLi4uLi4uCisgICAgICAgIDB4MDAwMDAwMDAgMHgyMTAw
MDAwMCAweDcyNmM2NDY4IDB4MDAwMDAwMDAgICAgIC4uLi4uLi4haGRsci4uLi4KKyAgICAgICAg
MHgwMDAwMDAwMCAweDcyNjk2NDZkIDB4NmM3MDcwNjEgMHgwMDAwMDAwMCAgICAgLi4uLm1kaXJh
cHBsLi4uLgorICAgICAgICAweDAwMDAwMDAwIDB4MDQwMDAwMDAgMHg3MzZjNjljMSAweDAwMDAw
MDc0ICAgICAuLi4uLi4uLi5pbHN0Li4uCisgICAgICAgIDB4NmY3NGE5MjMgMHgwMDAwMDA2ZiAw
eDc0NjE2NDFiIDB4MDAwMDAwNjEgICAgICMudG9vLi4uLmRhdGEuLi4KKyAgICAgICAgMHgwMDAw
MDAwMSAweDc2NjE0YzAwIDB4MmUzMjM1NjYgMHgzMDJlMzIzNiAgICAgLi4uLi5MYXZmNTIuNjIu
MAorICAgICAgICAweDM3MDAwMDAwIDB4NmQ2MTZlYTkgMHgyZjAwMDAwMCAweDYxNzQ2MTY0ICAg
ICAuLi43Lm5hbS4uLi9kYXRhCisgICAgICAgIC4uLgorTGVhazogMHgyYTljOTYwICBzaXplPTI4
OCAgem9uZTogRGVmYXVsdE1hbGxvY1pvbmVfMHgxZDk0MDAwCisgICAgICAgIDB4MDlhMWNjNDcg
MHgxYmRhODU2MCAweDNkNDcyY2QxIDB4ZmJlOWJjY2QgICAgIEcuLi5gLi4uLixHPS4uLi4KKyAg
ICAgICAgMHg4YmNkYTAwOCAweDllOTcyYTkxIDB4YTg5MmNmNjMgMHgyNDQ4YmRiMCAgICAgLi4u
Li4qLi5jLi4uLi5IJAorICAgICAgICAweDQ3MzZmYzM0IDB4ZGJlMmQ5NGUgMHgyNWY1NjY4OCAw
eDgzOTQwMmE0ICAgICA0LjZHTi4uLi5mLiUuLi4uCisgICAgICAgIDB4ZDEyNDk2YjMgMHg1OWM0
MGMxMiAweDhjZmNhYjJhIDB4ZDIwZWY5YzQgICAgIC4uJC4uLi5ZKi4uLi4uLi4KKyAgICAgICAg
MHhlN2M1NmIxYiAweDU4MzVhZjQ1IDB4YzY5MTE1ZGUgMHg2OTIzZTRiYiAgICAgLmsuLkUuNVgu
Li4uLi4jaQorICAgICAgICAweDg2ZjE1NTUzIDB4MTVkNDBmYTkgMHg2ODEyODhhNCAweGMzMzI5
OGE5ICAgICBTVS4uLi4uLi4uLmguLjIuCisgICAgICAgIDB4NDM5YmI1MzUgMHhjNGZjNzQzZCAw
eDdkZmFhZmY4IDB4MmNjNDlhNGEgICAgIDUuLkM9dC4uLi4ufUouLiwKKyAgICAgICAgMHhkZDEx
OWRmOCAweDdlMDg2ODIxIDB4M2Q3ZDEyOWUgMHgyZTFiMTU0NyAgICAgLi4uLiFoLn4uLn09Ry4u
LgorICAgICAgICAuLi4KK0xlYWs6IDB4MjUxMDJmZTAgIHNpemU9MTc2ICB6b25lOiBEZWZhdWx0
TWFsbG9jWm9uZV8weDFkOTQwMDAgICBzdHJpbmcgJ05TRXhjZXB0aW9uIERhdGEnCisiIiIKKwor
ICAgIGRlZiB0ZXN0X3BhcnNlX2xlYWtzX291dHB1dChzZWxmKToKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi5fbWFrZV9kZXRlY3RvcigpLl9wYXJzZV9sZWFrc19vdXRwdXQoc2VsZi5l
eGFtcGxlX2xlYWtzX291dHB1dCwgNTEyMiksICgzMzczMDEsIDAsIDY1MjUyMTYpKQorCisgICAg
ZGVmIHRlc3RfbGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KHNlbGYpOgorICAgICAgICBkZXRlY3Rv
ciA9IHNlbGYuX21ha2VfZGV0ZWN0b3IoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhkZXRl
Y3Rvci5sZWFrc19maWxlc19pbl9kaXJlY3RvcnkoJy9ib2d1cy1kaXJlY3RvcnknKSwgW10pCisg
ICAgICAgIGRldGVjdG9yLl9maWxlc3lzdGVtID0gTW9ja0ZpbGVTeXN0ZW0oeworICAgICAgICAg
ICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMC0xLnR4dCc6ICcnLAorICAg
ICAgICAgICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMS0xLnR4dCc6ICcn
LAorICAgICAgICAgICAgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMC0yLnR4
dCc6ICcnLAorICAgICAgICB9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oZGV0ZWN0
b3IubGVha3NfZmlsZXNfaW5fZGlyZWN0b3J5KCcvbW9jay1yZXN1bHRzJykpLCAzKQorCisgICAg
ZGVmIHRlc3RfcGFyc2VfbGVha19maWxlcyhzZWxmKToKKyAgICAgICAgZGV0ZWN0b3IgPSBzZWxm
Ll9tYWtlX2RldGVjdG9yKCkKKworICAgICAgICBkZWYgbW9ja19ydW5fc2NyaXB0KG5hbWUsIGFy
Z3MsIGluY2x1ZGVfY29uZmlndXJhdGlvbl9hcmd1bWVudHM9RmFsc2UpOgorICAgICAgICAgICAg
cHJpbnQgIk1PQ0sgX3J1bl9zY3JpcHQ6ICVzICVzIiAlIChuYW1lLCBhcmdzKQorICAgICAgICAg
ICAgcmV0dXJuICJ0b3RhbDogMTIzNDUgKCIKKyAgICAgICAgZGV0ZWN0b3IuX3BvcnQuX3J1bl9z
Y3JpcHQgPSBtb2NrX3J1bl9zY3JpcHQKKworICAgICAgICBsZWFrX2ZpbGVzID0gWycvbW9jay1y
ZXN1bHRzL2xlYWtzLUR1bXBSZW5kZXJUcmVlLTEyMzQudHh0JywgJy9tb2NrLXJlc3VsdHMvbGVh
a3MtRHVtcFJlbmRlclRyZWUtMTIzNS50eHQnXQorICAgICAgICBleHBlY3RlZF9zdGRvdXQgPSAi
TU9DSyBfcnVuX3NjcmlwdDogcGFyc2UtbWFsbG9jLWhpc3RvcnkgWyctLW1lcmdlLWRlcHRoJywg
NSwgJy9tb2NrLXJlc3VsdHMvbGVha3MtRHVtcFJlbmRlclRyZWUtMTIzNC50eHQnLCAnL21vY2st
cmVzdWx0cy9sZWFrcy1EdW1wUmVuZGVyVHJlZS0xMjM1LnR4dCddXG4iCisgICAgICAgIHJlc3Vs
dHNfdHVwbGUgPSBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgZGV0ZWN0b3Iu
cGFyc2VfbGVha19maWxlcywgW2xlYWtfZmlsZXNdLCBleHBlY3RlZF9zdGRvdXQ9ZXhwZWN0ZWRf
c3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHRzX3R1cGxlLCAoMTIzNDUs
IDApKQorCisKIGNsYXNzIE1hY1Rlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVzdENhc2UpOgogICAg
IGRlZiBwb3J0X21ha2VyKHNlbGYsIHBsYXRmb3JtKToKICAgICAgICAgIyBGSVhNRTogVGhpcyBw
bGF0Zm9ybSBjaGVjayBzaG91bGQgbm8gbG9uZ2VyIGJlIG5lY2Vzc2FyeSBhbmQgc2hvdWxkIGJl
IHJlbW92ZWQgYXMgc29vbiBhcyBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9jZXNzLnB5CmluZGV4IDA0
YjA1YTlmYzQ2MzMzMjJjZjQ1YmNlYzQyMTRmMmE2ZDAxYmM0ZWYuLmU2YjE2MWU0NDBiNTMwZTAw
NjEwYjkyMzIwYTAwMjU1MGY3NDBkZjMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3MucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9zZXJ2ZXJfcHJvY2Vzcy5weQpAQCAtNTQsMTIg
KzU0LDE4IEBAIGNsYXNzIFNlcnZlclByb2Nlc3M6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydF9vYmosIG5hbWUsIGNtZCwgZW52PU5vbmUsIGV4ZWN1dGl2ZT1FeGVjdXRpdmUoKSk6CiAg
ICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0X29iagotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQor
ICAgICAgICBzZWxmLl9uYW1lID0gbmFtZSAgIyBTaG91bGQgYmUgdGhlIGNvbW1hbmQgbmFtZSAo
ZS5nLiBEdW1wUmVuZGVyVHJlZSwgSW1hZ2VEaWZmKQogICAgICAgICBzZWxmLl9jbWQgPSBjbWQK
ICAgICAgICAgc2VsZi5fZW52ID0gZW52CiAgICAgICAgIHNlbGYuX3Jlc2V0KCkKICAgICAgICAg
c2VsZi5fZXhlY3V0aXZlID0gZXhlY3V0aXZlCiAKKyAgICBkZWYgbmFtZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX25hbWUKKworICAgIGRlZiBwaWQoc2VsZik6CisgICAgICAgIHJldHVy
biBzZWxmLl9wcm9jLnBpZAorCiAgICAgZGVmIF9yZXNldChzZWxmKToKICAgICAgICAgc2VsZi5f
cHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gJycKQEAgLTIxNiw5ICsyMjIsNyBA
QCBjbGFzcyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICAgICAgICAgIHJldHVybiBvdXRwdXQKIAog
ICAgICAgICAgICAgIyBOb3BlIC0gd2FpdCBmb3IgbW9yZSBkYXRhLgotICAgICAgICAgICAgKHJl
YWRfZmRzLCB3cml0ZV9mZHMsIGVycl9mZHMpID0gc2VsZWN0LnNlbGVjdChzZWxlY3RfZmRzLCBb
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZWN0X2ZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZGVhZGxpbmUgLSBub3cpCisgICAgICAgICAgICAocmVhZF9m
ZHMsIHdyaXRlX2ZkcywgZXJyX2ZkcykgPSBzZWxlY3Quc2VsZWN0KHNlbGVjdF9mZHMsIFtdLCBz
ZWxlY3RfZmRzLCBkZWFkbGluZSAtIG5vdykKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAg
ICAgICBpZiBvdXRfZmQgaW4gcmVhZF9mZHM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX291
dHB1dCArPSBzZWxmLl9wcm9jLnN0ZG91dC5yZWFkKCkKQEAgLTIzMiw2ICsyMzYsOCBAQCBjbGFz
cyBTZXJ2ZXJQcm9jZXNzOgogICAgICAgICBpZiBub3Qgc2VsZi5fcHJvYzoKICAgICAgICAgICAg
IHJldHVybgogCisgICAgICAgIHNlbGYuX3BvcnQuY2hlY2tfZm9yX2xlYWtzKHNlbGYubmFtZSgp
LCBzZWxmLnBpZCgpKQorCiAgICAgICAgIHBpZCA9IHNlbGYuX3Byb2MucGlkCiAgICAgICAgIHNl
bGYuX3Byb2Muc3RkaW4uY2xvc2UoKQogICAgICAgICBzZWxmLl9wcm9jLnN0ZG91dC5jbG9zZSgp
CkBAIC0yNDgsOCArMjU0LDcgQEAgY2xhc3MgU2VydmVyUHJvY2VzczoKICAgICAgICAgICAgIHdo
aWxlIHNlbGYuX3Byb2MucG9sbCgpIGlzIE5vbmUgYW5kIHRpbWUudGltZSgpIDwgdGltZW91dDoK
ICAgICAgICAgICAgICAgICB0aW1lLnNsZWVwKDAuMSkKICAgICAgICAgICAgIGlmIHNlbGYuX3By
b2MucG9sbCgpIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX2xvZy53YXJuaW5nKCdzdG9wcGlu
ZyAlcyB0aW1lZCBvdXQsIGtpbGxpbmcgaXQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgICAgICBfbG9nLndhcm5pbmcoJ3N0b3BwaW5nICVz
IHRpbWVkIG91dCwga2lsbGluZyBpdCcgJSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgICAgIHNl
bGYuX2V4ZWN1dGl2ZS5raWxsX3Byb2Nlc3Moc2VsZi5fcHJvYy5waWQpCiAgICAgICAgICAgICAg
ICAgX2xvZy53YXJuaW5nKCdraWxsZWQnKQogICAgICAgICBzZWxmLl9yZXNldCgpCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3NlcnZlcl9wcm9j
ZXNzX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9zZXJ2ZXJfcHJvY2Vzc191bml0dGVzdC5weQppbmRleCAxYWViNWE1MDZkNGI1MDVjODNiYTBj
YzE5OTBjMmMwNzI1ZWNlMmZkLi4wMmIxNzAyYjI1N2QzMjkzNTUwODM0ODU5ZWQyY2MzOTRiN2U5
NzRkIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L3NlcnZlcl9wcm9jZXNzX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvc2VydmVyX3Byb2Nlc3NfdW5pdHRlc3QucHkKQEAgLTQ3LDYgKzQ3
LDkgQEAgY2xhc3MgVHJpdmlhbE1vY2tQb3J0KG9iamVjdCk6CiAgICAgZGVmIHJlc3VsdHNfZGly
ZWN0b3J5KHNlbGYpOgogICAgICAgICByZXR1cm4gIi9tb2NrLXJlc3VsdHMiCiAKKyAgICBkZWYg
Y2hlY2tfZm9yX2xlYWtzKHNlbGYsIHByb2Nlc3NfbmFtZSwgcHJvY2Vzc19waWQpOgorICAgICAg
ICBwYXNzCisKIAogY2xhc3MgTW9ja0ZpbGUob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2Vs
Ziwgc2VydmVyX3Byb2Nlc3MpOgpAQCAtODMsNyArODYsNyBAQCBjbGFzcyBGYWtlU2VydmVyUHJv
Y2VzcyhzZXJ2ZXJfcHJvY2Vzcy5TZXJ2ZXJQcm9jZXNzKToKIAogY2xhc3MgVGVzdFNlcnZlclBy
b2Nlc3ModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Jyb2tlbl9waXBlKHNlbGYp
OgotICAgICAgICBzZXJ2ZXJfcHJvY2VzcyA9IEZha2VTZXJ2ZXJQcm9jZXNzKHBvcnRfb2JqPU5v
bmUsIG5hbWU9InRlc3QiLCBjbWQ9WyJ0ZXN0Il0pCisgICAgICAgIHNlcnZlcl9wcm9jZXNzID0g
RmFrZVNlcnZlclByb2Nlc3MocG9ydF9vYmo9VHJpdmlhbE1vY2tQb3J0KCksIG5hbWU9InRlc3Qi
LCBjbWQ9WyJ0ZXN0Il0pCiAgICAgICAgIHNlcnZlcl9wcm9jZXNzLndyaXRlKCJzaG91bGQgYnJl
YWsiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyX3Byb2Nlc3MuY3Jhc2hlZCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VydmVyX3Byb2Nlc3MuX3Byb2MsIE5vbmUpCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYmtpdC5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5Cmlu
ZGV4IDQ1ZmZiMjNjZjg1ODg4YzNlMDA2YjJkY2IxMTRkMzk0YWQyNWExM2YuLjFjNDdjNjQzYmYy
MjUwNzZiYzJlMTdkMWExY2FkNGYzMTI5YzU1ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Via2l0LnB5CkBAIC01NSw3ICs1NSw5IEBAIGNs
YXNzIFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICMgRklYTUU6IERpc2FibGUgcGl4ZWwgdGVz
dHMgdW50aWwgdGhleSBhcmUgcnVuIGJ5IGRlZmF1bHQgb24gYnVpbGQud2Via2l0Lm9yZy4KICAg
ICAgICAgc2VsZi5zZXRfb3B0aW9uX2RlZmF1bHQoInBpeGVsX3Rlc3RzIiwgRmFsc2UpCiAgICAg
ICAgICMgV2ViS2l0IHBvcnRzIGV4cGVjdCBhIDM1cyB0aW1lb3V0LCBvciAzNTBzIHRpbWVvdXQg
d2hlbiBydW5uaW5nIHdpdGggLWcvLS1ndWFyZC1tYWxsb2MuCi0gICAgICAgIHNlbGYuc2V0X29w
dGlvbl9kZWZhdWx0KCJ0aW1lX291dF9tcyIsIDM1MDAwKQorICAgICAgICAjIEZJWE1FOiAtLWd1
YXJkLW1hbGxvYyBpcyBvbmx5IHN1cHBvcnRlZCBvbiBNYWMsIHNvIHRoaXMgbG9naWMgc2hvdWxk
IGJlIGluIG1hYy5weS4KKyAgICAgICAgZGVmYXVsdF90aW1lX291dF9zZWNvbmRzID0gMzUwIGlm
IHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJykgZWxzZSAzNQorICAgICAgICBzZWxmLnNl
dF9vcHRpb25fZGVmYXVsdCgidGltZV9vdXRfbXMiLCBkZWZhdWx0X3RpbWVfb3V0X3NlY29uZHMg
KiAxMDAwKQogCiAgICAgZGVmIGRyaXZlcl9uYW1lKHNlbGYpOgogICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgpAQCAtMTE1LDcgKzExNyw3IEBAIGNsYXNz
IFdlYktpdFBvcnQoUG9ydCk6CiAgICAgICAgICAgICBydW5fc2NyaXB0X2NvbW1hbmQuZXh0ZW5k
KHNlbGYuX2FyZ3VtZW50c19mb3JfY29uZmlndXJhdGlvbigpKQogICAgICAgICBpZiBhcmdzOgog
ICAgICAgICAgICAgcnVuX3NjcmlwdF9jb21tYW5kLmV4dGVuZChhcmdzKQotICAgICAgICByZXR1
cm4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21tYW5kKHJ1bl9zY3JpcHRfY29tbWFuZCwgY3dkPXNl
bGYuX2NvbmZpZy53ZWJraXRfYmFzZV9kaXIoKSkgICMgSXQncyB1bmNsZWFyIGlmIHNldHRpbmcg
Y3dkIGlzIG5lY2Vzc2FyeSBmb3IgYWxsIGNhbGxlcnMuCisgICAgICAgIHJldHVybiBzZWxmLl9l
eGVjdXRpdmUucnVuX2NvbW1hbmQocnVuX3NjcmlwdF9jb21tYW5kLCBjd2Q9c2VsZi5fY29uZmln
LndlYmtpdF9iYXNlX2RpcigpKQogCiAgICAgZGVmIF9idWlsZF9kcml2ZXIoc2VsZik6CiAgICAg
ICAgIHRyeToKQEAgLTQ1MSwxMSArNDUzLDYgQEAgY2xhc3MgV2ViS2l0RHJpdmVyKERyaXZlcik6
CiAgICAgZGVmIHBvbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9zZXJ2ZXJfcHJvY2Vz
cy5wb2xsKCkKIAotICAgIGRlZiByZXN0YXJ0KHNlbGYpOgotICAgICAgICBzZWxmLl9zZXJ2ZXJf
cHJvY2Vzcy5zdG9wKCkKLSAgICAgICAgc2VsZi5fc2VydmVyX3Byb2Nlc3Muc3RhcnQoKQotICAg
ICAgICByZXR1cm4KLQogICAgIGRlZiBkZXRlY3RlZF9jcmFzaChzZWxmKToKICAgICAgICAgIyBG
SVhNRTogV2UgY2FuJ3QganVzdCBjaGVjayBzZWxmLl9zZXJ2ZXJfcHJvY2Vzcy5jcmFzaGVkIGZv
ciB0d28gcmVhc29uczoKICAgICAgICAgIyAxLiBXZWJLaXRUZXN0UnVubmVyIHdpbGwgcHJpbnQg
IiNDUkFTSEVEIC0gV2ViUHJvY2VzcyIgYW5kIHRoZW4gZXhpdCBpZiB0aGUgV2ViUHJvY2VzcyBj
cmFzaGVzLgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
cnVuX3dlYmtpdF90ZXN0cy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHMucHkKaW5kZXggODBhMTViMmNiYTQxMzgzZWQwYWYxYmUzYWIwYjk1
ZWRmY2UxMDlkMC4uYzc0NDU1ODg2MmI1NTA2OWQ4NmU1NmYyMmIxZjU4YmQ4YWMxNzM4MyAxMDA3
NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0cy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzLnB5CkBAIC0yNDEsMjIgKzI0MSwyMCBAQCBkZWYgcGFyc2VfYXJncyhhcmdzPU5v
bmUpOgogICAgICAgICAgICAgaGVscD0iRm9yY2UgZ2FyYmFnZSBjb2xsZWN0aW9uIGJldHdlZW4g
ZWFjaCB0ZXN0IiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNvbXBsZXgtdGV4
dCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICBoZWxw
PSJVc2UgdGhlIGNvbXBsZXggdGV4dCBjb2RlIHBhdGggZm9yIGFsbCB0ZXh0IChNYWMgT1MgWCBh
bmQgV2luZG93cyBvbmx5KSIpLAorICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLWwiLCAi
LS1sZWFrcyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAg
ICBoZWxwPSJFbmFibGUgbGVha3MgY2hlY2tpbmcgKE1hYyBPUyBYIG9ubHkpIiksCisgICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItZyIsICItLWd1YXJkLW1hbGxvYyIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICBoZWxwPSJFbmFibGUgbWFsbG9j
IGd1YXJkIChNYWMgT1MgWCBvbmx5KSIpLAogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigi
LS10aHJlYWRlZCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAg
ICAgICBoZWxwPSJSdW4gYSBjb25jdXJyZW50IEphdmFTY3JpcHQgdGhyZWFkIHdpdGggZWFjaCB0
ZXN0IiksCiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLXdlYmtpdC10ZXN0LXJ1bm5l
ciIsICItMiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCiAgICAgICAgICAgICBoZWxwPSJVc2UgV2Vi
S2l0VGVzdFJ1bm5lciByYXRoZXIgdGhhbiBEdW1wUmVuZGVyVHJlZS4iKSwKICAgICBdCiAKLSAg
ICAjIE1pc3NpbmcgTWFjLXNwZWNpZmljIG9sZC1ydW4td2Via2l0LXRlc3RzIG9wdGlvbnM6Ci0g
ICAgIyBGSVhNRTogTmVlZDogLWcsIC0tZ3VhcmQgZm9yIGd1YXJkIG1hbGxvYyBzdXBwb3J0IG9u
IE1hYy4KLSAgICAjIEZJWE1FOiBOZWVkOiAtbCAtLWxlYWtzICAgIEVuYWJsZSBsZWFrcyBjaGVj
a2luZy4KLQogICAgIG9sZF9ydW5fd2Via2l0X3Rlc3RzX2NvbXBhdCA9IFsKICAgICAgICAgIyBG
SVhNRTogUmVtb3ZlIHRoaXMgb3B0aW9uIG9uY2UgdGhlIGJvdHMgZG9uJ3QgcmVmZXIgdG8gaXQu
CiAgICAgICAgICMgcmVzdWx0cy5odG1sIGlzIHNtYXJ0IGVub3VnaCB0byBmaWd1cmUgdGhpcyBv
dXQgaXRzZWxmLgogICAgICAgICBfY29tcGF0X3NoaW1fb3B0aW9uKCItLXVzZS1yZW1vdGUtbGlu
a3MtdG8tdGVzdHMiKSwKLSAgICAgICAgIyBGSVhNRTogSW1wbGVtZW50IGxlYWsgZGV0ZWN0aW9u
LgotICAgICAgICBfY29tcGF0X3NoaW1fb3B0aW9uKCItLWxlYWtzIiksCiAgICAgXQogCiAgICAg
cmVzdWx0c19vcHRpb25zID0gWwpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weQppbmRleCBhMGFhMzgzNjA4NWRiOGQ3MWM5MGFh
YjNlZmMyYTViM2NjMmQxMmNlLi40NDEwNjY0OTY1ZjAzZjQ1ODhmZDQ3YzkyMjU0YWU0ZWZhYWE0
N2VlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3
cy9wcmludGluZy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9wcmludGluZy5weQpAQCAtMzQzLDggKzM0Myw3IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0
KToKICAgICBkZWYgX3ByaW50X3VuZXhwZWN0ZWRfdGVzdF9yZXN1bHQoc2VsZiwgcmVzdWx0KToK
ICAgICAgICAgIiIiUHJpbnRzIG9uZSB1bmV4cGVjdGVkIHRlc3QgcmVzdWx0IGxpbmUuIiIiCiAg
ICAgICAgIGRlc2MgPSBUZXN0RXhwZWN0YXRpb25zLkVYUEVDVEFUSU9OX0RFU0NSSVBUSU9OU1ty
ZXN1bHQudHlwZV1bMF0KLSAgICAgICAgc2VsZi53cml0ZSgiICAlcyAtPiB1bmV4cGVjdGVkICVz
IiAlCi0gICAgICAgICAgICAgICAgICAgKHJlc3VsdC50ZXN0X25hbWUsIGRlc2MpLCAidW5leHBl
Y3RlZCIpCisgICAgICAgIHNlbGYud3JpdGUoIiAgJXMgLT4gdW5leHBlY3RlZCAlcyIgJSAocmVz
dWx0LnRlc3RfbmFtZSwgZGVzYyksICJ1bmV4cGVjdGVkIikKIAogICAgIGRlZiBwcmludF9wcm9n
cmVzcyhzZWxmLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlpbmcsIHRlc3RfbGlzdCk6CiAgICAgICAg
ICIiIlByaW50IHByb2dyZXNzIHRocm91Z2ggdGhlIHRlc3RzIGFzIGRldGVybWluZWQgYnkgLS1w
cmludC4iIiIK
</data>
<flag name="review"
          id="96109"
          type_id="1"
          status="+"
          setter="dpranke"
    />
    <flag name="commit-queue"
          id="96110"
          type_id="3"
          status="-"
          setter="dpranke"
    />
          </attachment>
      

    </bug>

</bugzilla>