<?xml version="1.0" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "http://bugzilla.globus.org/bugzilla/bugzilla.dtd">

<bugzilla version="3.2.3"
          urlbase="http://bugzilla.globus.org/bugzilla/"
          maintainer="bacon@mcs.anl.gov"
>

    <bug>
          <bug_id>802</bug_id>
          
          <creation_ts>2003-03-07 18:08</creation_ts>
          <short_desc>gatekeeper machine with many jobs heavily loaded</short_desc>
          <delta_ts>2004-02-26 12:23:53</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>GRAM</product>
          <component>gt2 Gatekeeper/Jobmanager</component>
          <version>1.6</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          
          
          <priority>P2</priority>
          <bug_severity>critical</bug_severity>
          <target_milestone>3.2</target_milestone>
          
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alan De Smet">adesmet@cs.wisc.edu</reporter>
          <assigned_to name="Joe Bester">bester@mcs.anl.gov</assigned_to>
          <cc>bester@mcs.anl.gov</cc>
    
    <cc>jfrey@cs.wisc.edu</cc>
    
    <cc>pfc@cs.wisc.edu</cc>
    
    <cc>roy@cs.wisc.edu</cc>
    
    <cc>rynge@isi.edu</cc>
    
    <cc>tannenba@cs.wisc.edu</cc>
    
    <cc>voeckler@cs.uchicago.edu</cc>

      

      
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-07 18:08:21</bug_when>
            <thetext>Problem:

When a large number of jobs have been submitted to a Globus head
node, the head node becomes overwhelmed with running processes.


How to reproduce:

Running the following simple script against a Globus 2.2.4 head
node will quickly reproduce the problem:

#! /bin/sh
i=0
while [ $i -lt 300 ]; do
	i=`expr $i + 1`
	echo $i
	globus-job-run MACHINE_TO_TEST/jobmanager-fork \
		/bin/sleep 600 &amp;
done

Once running, monitor the load on MACHINE_TO_TEST.  The load will
likely rise and fall in cycles.  On our particular configuration
the load shoots up to 190.  Use &quot;time globusrun -a -r
MACHINE_TO_TEST&quot; to monitor responsiveness.

While an initial spike in usage can be expected as the jobs begin
running, once the jobs are all running, the load remains
extremely high and the machine is less usable.  The slowdown can
cause globus-job-managers to become slow to respond to queries,
making it difficult for any process monitoring things (like
Condor-G) to determine what is going on.  During the peak, a
&quot;globusrun -a -r MACHINE_TO_TEST&quot; might take five minutes.  The
machine is so badly loaded that commands like ps become too slow
to capture the state of the machine. 

This behavior also occurs when using the Condor jobmanager, I&apos;ve
used fork here because it&apos;s simple.  When running real work
against the Condor jobmanager, the load has been even higher,
possibly because the work to query Condor is more than to query a
fork job.

Some testing suggests that the problem is in part
globus-job-managers and the repeated polls of
globus-job-manager-script.  Death by a thousand cuts.

This is a problem because if a head node is fronting for a batch
system with 150 nodes, it&apos;s quite reasonable to submit 300 jobs
(to ensure that the system has work to do when the first 150
finish).  For some work we&apos;re doing, we expect to submit even
larger numbers of jobs to an even larger pool.  1,000 or 10,000
jobs simultaneously submitted to the head node are real
possibilities.  This sort of load will crush the head node.

This poses a real scalability problem for our use. This appears to
represent a regression.  Under Globus 2.0.x, while lots of submitted
jobs did load the machine, the load was much lower (perhaps one tenth
as bad).</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-10 19:17:24</bug_when>
            <thetext>Some testing suggests that globus-job-manager-script.pl may be a significant
part of the problem.  It&apos;s not clear if it&apos;s the core.

I replaced globus-job-manager-script.pl with a simple shell script that handled
poll requests directly and handed all other requests to the real script.  (I&apos;ll
attach the shell script to this bug.)  This cut down on the load:

Before: Peak Load: 298, Run length: 32 minutes
After:  Peak Load: 194, Run length: 17 minutes

Before, the machine became marginally responsive during the core of the.  Simple
commands would take thirty seconds or more to respond.  A globusrun -a -r could
take over five minutes.  After, while the machine was slightly slow, it remained
generally responsive.  A globusrun -a -r might take one minute.

The shell script is not perfectly efficient (it invokes kill, grep, and awk
every time it processes a poll request), perhaps a more efficient implementation
would improve the results even further.  

That said, while this does improve the situation, it doesn&apos;t completely resolve
it.  I suspect this just represents a minor scalability improvement, not a real
fix.  In all likelyhood a larger run (perhaps 1,000 jobs, perhaps 10,000) will
return us to the same situation.

I&apos;m not sure if this information really points to any sort of answer, but
hopefully it provides some insight into the problem.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-10 19:19:31</bug_when>
            <thetext>Created an attachment (id=82)
Optimized shell wrapper to globus-job-manager-script.pl

Replaces globus-job-manager-script.pl.	The original
globus-job-manager-script.pl should be moved to
globus-job-manager-script.pl.real.  To use you&apos;ll need to change the hard coded
path to globus-job-manager-script.pl.real in the script.  Optimizes poll
commands against fork jobs, hands off all other commands to the original
script.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-10 21:48:40</bug_when>
            <thetext>Just to give it a quick and dirty try, I modified by test script to sends 3000
jobs out.  This is using my shell wrapper optimization.  Early on (presumably
while still starting the jobs) the load peaked at 598.  The system heavily
bogged down, a simple uptime took 15 minutes to respond at one point.  Once the
initial setup finished, the load dropped to about 300 and remained extremely
slow, but marginally useful (taking about 1 minute to respond to uptime).

Given that the initial setup took longer than the ten minutes and jobs were
finishing before all of the jobs were started, I&apos;ll increase the run time of my
sleep job to 3600 (one hour) and try again.  If the machine remains minimally
useful until the running load, making globus-job-manager-script.pl faster may be
enough to solve the problem.  Of course, most sites doing heavy duty work will
be using a batch system instead of the fork jobmanager, so a simple workaround
like my shell script won&apos;t be good enough.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-11 15:41:14</bug_when>
            <thetext>I was away from the machine I submitted by 3000 job run from when I remotely
logged in to collect the results.  As a result, I didn&apos;t see the stream of error
messages alerting me that I had hit a number of limits (processes per user and
the like).  It looks like only about 1,000 of the 3,000 jobs were submitted.

Retrying with 1,000 jobs and a 60 minute job length returned similar results. 
The peak load was about 700 and was regularly over 500.  For the entire duration
of the run there were periods in which the machine became unresponsive for
several minutes at a stretch.  Long after all of the jobs had started globusrun
-a -r&apos;s would still sometimes taking over 5 minutes to respond.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-03-31 12:56:38</bug_when>
            <thetext>Created an attachment (id=102)
globus-job-manager scalability improvements

This patch contains a number of changes toward improving the scalability of
Globus on gatekeeper machines.	These changes are necessary for the EDG work.

- If a cache file of job status is being maintained on the machine, that is
used to extract the status instead of calling the Perl script.	The script
providing this cache is submitted by submit sites desiring to use it.

- To support this cache file it is necessary to know when the status was last
updated.  Added code to manage the last update time.

- Added some logging for STDIO_SIZE requests.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-04-08 17:15:22</bug_when>
            <thetext>Is there any news on getting the patch I offered applied?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Stuart Martin">smartin@mcs.anl.gov</who>
            <bug_when>2003-04-09 11:16:09</bug_when>
            <thetext>Alan,

We were not able to review,test,commit this patch before our final batch of 
commits to the 2.2 branch which was then tagged for use in a VDT version.  Nor 
did it make it into the 2.4 branch.

I am wondering about the severity.  Since you are working from a tag from the 
2.2 branch, I assume that you have applied it to the 2.2 tag checkout in the 
condor-globus repository.

Does it make sense to apply it to the 2.2 branch, or should it be applied to 
2.4?  I guess it all depend on what the next version of globus will be used in 
VDT.  Will it be from GT 2.4?

-Stu</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-05-02 16:22:51</bug_when>
            <thetext>VDT 1.1.8 is going to be based on Globus 2.2.x.  Checking it into the 2.2 line
would be ideal.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-05-12 16:49:45</bug_when>
            <thetext>It turns out that the patch I previously offered has some weaknesses.

1. If the job manager is restarted it will may be unable to locate its own entry
in the cache file of job status&apos;s (if available).  As a result it will call the
Perl status scripts directly instead of using the cache.

2. If the job manager is restarted it will refuse to look at the cache file at
all until the file has been updated at least once.

I&apos;ve making the necessary changes to fix these.

Do you want a new complete patch to replace the one above (attachment 102), or
just a patch that assumes the patch above?</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Jens-S. Vöckler">voeckler@cs.uchicago.edu</who>
            <bug_when>2003-05-12 17:48:01</bug_when>
            <thetext>Can you check the correlation to bug/patches #931? The use of JobManager.pm
supplied methods fork_and_exec_cmd and pipe_out_cmd should have positive impact
on your performance, too. Beyond that, I&apos;d appreciate a diff against the
original source. </thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-05-13 16:00:40</bug_when>
            <thetext>Jens, the changes in bug #931 appear to just be (to quickly summarize)
optimizations to the job-manager scripts.  This change optimizes the job-manager
itself to avoid calling the scripts when possible.  Both are good changes aimed
at reducing load on the gatekeeper.  I expect that used together that will
provide an even bigger benefit, but I don&apos;t see any direct I correlation between
them.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-05-13 16:47:55</bug_when>
            <thetext>Just to note it for future reference, bug #868 might also need to be fixed.  My
current fix for point two from comment #9 doesn&apos;t solve all cases, the delay
before doing doing a status query seems to provide an opportunity for problems.
 During the delay there are some cases where the job-manager will decide to
change the job&apos;s state.  Under my current patch (attachment 102), this causes
the job-manager to decide that its information is more correct than the cache of
job status information.  Fixing bug #868 might fix this, I&apos;m looking into it.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2003-05-14 17:21:14</bug_when>
            <thetext>Created an attachment (id=126)
Corrections to scalability improvements

The previous patch had two weaknesses (designed in previous comments) that
would cause the optimizations to not function in some cases.  This patch
corrects most of those weaknesses and should replace the prior patch.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alain Roy">roy@cs.wisc.edu</who>
            <bug_when>2003-11-25 17:07:01</bug_when>
            <thetext>We are wondering if this patch has been applied to any version of Globus? 

It has been part of the VDT for quite some time and has proven its use. We 
would have thought it would make it into an advisory. We would rather not fork 
Globus to have a VDT Globus and a Globus Globus. 

Thoughts?

Thanks,
-alain</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Keith Thompson">kst@sdsc.edu</who>
            <bug_when>2003-12-23 21:18:48</bug_when>
            <thetext>Bug #1142 seems to be a duplicate of this bug.  It&apos;s odd that nobody
seems to have noticed that before now.  It&apos;s also odd that #1142 was
rejected, originally as &quot;NOTABUG&quot; and finally as &quot;WONTFIX&quot;.

Anyway, I&apos;ve implemented a Linux-specific workaround for this, a
script called &quot;throttle-job-manager&quot; that uses STOP and CONT signals
to limit the number of globus-job-manager processes that can be active
simultaneously.  It&apos;s a fairly crude solution, almost brute-force,
and it can cause significant delays in commands that attempt to 
communicate with a globus-job-manager process (globus-job-status,
globus-job-get-output, etc.)

See &lt;http://www.sdsc.edu/~kst/throttle-job-manager/&gt;.
</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Stuart Martin">smartin@mcs.anl.gov</who>
            <bug_when>2004-01-16 16:34:30</bug_when>
            <thetext>Alan, Alain,

We have not applied this patch yet.  Is the one here the latest version of it?  
We have a release coming up and would like to apply this patch if possible.

-Stu</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Alan De Smet">adesmet@cs.wisc.edu</who>
            <bug_when>2004-01-16 17:53:06</bug_when>
            <thetext>Patch 126 (the one previously attached) remains the most recent.</thetext>
          </long_desc>
          <long_desc isprivate="0">
            <who name="Joe Bester">bester@mcs.anl.gov</who>
            <bug_when>2004-02-26 12:23:53</bug_when>
            <thetext>the scalability improvements patch has been applied to the 3.2 branch and cvs 
trunk. 
 
joe </thetext>
          </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>82</attachid>
            <date>2003-03-10 19:19</date>
            <desc>Optimized shell wrapper to globus-job-manager-script.pl</desc>
            <filename>globus-job-manager-script.pl</filename>
            <type>text/plain</type>
            <size>2164</size>
            <attacher>adesmet@cs.wisc.edu</attacher>
            <data encoding="base64">IyEgL2Jpbi9zaAoKIyMgTG9nIGFsbCByZXF1ZXN0cy4KI2VjaG8gYGRhdGVgIjogUmVxdWVzdDog
JEAiID4+IC90bXAvZ2xvYnVzLWpvYi1tYW5hZ2VyLXNjcmlwdC5wbC5sb2cKCiMjIHJlcG9ydCB2
YXJpb3VzIHRlc3RzCiNpZiBbIC1yICQ0IF0gOyB0aGVuCiMJZWNobyBgZGF0ZWAiOiAgICAgJDQg
cmVhZGFibGUiID4+IC90bXAvZ2xvYnVzLWpvYi1tYW5hZ2VyLXNjcmlwdC5wbC5sb2cKI2Vsc2UK
IwllY2hvIGBkYXRlYCI6ICAgICAkNCBOT1QgcmVhZGFibGUiID4+IC90bXAvZ2xvYnVzLWpvYi1t
YW5hZ2VyLXNjcmlwdC5wbC5sb2cKI2ZpCiNpZiBbICIkMSIgPSAiLW0iIF0gOyB0aGVuIGVjaG8g
YGRhdGVgIjogICAgICIiMSBva2F5IiA+PiAvdG1wL2dsb2J1cy1qb2ItbWFuYWdlci1zY3JpcHQu
cGwubG9nOyBlbHNlIGVjaG8gYGRhdGVgIjogICAgICIiMSBiYWQiID4+IC90bXAvZ2xvYnVzLWpv
Yi1tYW5hZ2VyLXNjcmlwdC5wbC5sb2c7IGZpOwojaWYgWyAiJDIiID0gImZvcmsiIF0gOyB0aGVu
IGVjaG8gYGRhdGVgIjogICAgICIiMiBva2F5IiA+PiAvdG1wL2dsb2J1cy1qb2ItbWFuYWdlci1z
Y3JpcHQucGwubG9nOyBlbHNlIGVjaG8gYGRhdGVgIjogICAgICIiMiBiYWQiID4+IC90bXAvZ2xv
YnVzLWpvYi1tYW5hZ2VyLXNjcmlwdC5wbC5sb2c7IGZpOwojaWYgWyAiJDMiID0gIi1mIiBdIDsg
dGhlbiBlY2hvIGBkYXRlYCI6ICAgICAiIjMgb2theSIgPj4gL3RtcC9nbG9idXMtam9iLW1hbmFn
ZXItc2NyaXB0LnBsLmxvZzsgZWxzZSBlY2hvIGBkYXRlYCI6ICAgICAiIjMgYmFkIiA+PiAvdG1w
L2dsb2J1cy1qb2ItbWFuYWdlci1zY3JpcHQucGwubG9nOyBmaTsKI2lmIFsgIiQ1IiA9ICItYyIg
XSA7IHRoZW4gZWNobyBgZGF0ZWAiOiAgICAgIiI1IG9rYXkiID4+IC90bXAvZ2xvYnVzLWpvYi1t
YW5hZ2VyLXNjcmlwdC5wbC5sb2c7IGVsc2UgZWNobyBgZGF0ZWAiOiAgICAgIiI1IGJhZCIgPj4g
L3RtcC9nbG9idXMtam9iLW1hbmFnZXItc2NyaXB0LnBsLmxvZzsgZmk7CiNpZiBbICIkNiIgPSAi
cG9sbCIgXSA7IHRoZW4gZWNobyBgZGF0ZWAiOiAgICAgIiI2IG9rYXkiID4+IC90bXAvZ2xvYnVz
LWpvYi1tYW5hZ2VyLXNjcmlwdC5wbC5sb2c7IGVsc2UgZWNobyBgZGF0ZWAiOiAgICAgIiI2IGJh
ZCIgPj4gL3RtcC9nbG9idXMtam9iLW1hbmFnZXItc2NyaXB0LnBsLmxvZzsgZmk7CgppZiBbICIk
MSIgPSAiLW0iIC1hICIkMiIgPSAiZm9yayIgLWEgIiQzIiA9ICItZiIgLWEgIiQ1IiA9ICItYyIg
LWEgIiQ2IiA9ICJwb2xsIiAtYSAtciAkNCBdIDsgdGhlbgoJI2VjaG8gYGRhdGVgIjogICAgIFRy
eWluZyBpbnRlcm5hbCIgPj4gL3RtcC9nbG9idXMtam9iLW1hbmFnZXItc2NyaXB0LnBsLmxvZwoJ
cGlkPWBncmVwIGpvYmlkICQ0fGF3ayAtRiAiJyIgJ3twcmludCBcJDR9J2AKCSNlY2hvIGBkYXRl
YCI6ICAgICBwaWQ6ICRwaWQiID4+IC90bXAvZ2xvYnVzLWpvYi1tYW5hZ2VyLXNjcmlwdC5wbC5s
b2cKCWlmIFsgIiRwaWQiICE9ICIiIF0gOyB0aGVuCgkJaWYga2lsbCAtMCAkcGlkIDI+IC9kZXYv
bnVsbCA7IHRoZW4KCQkJZWNobyAiR1JBTV9TQ1JJUFRfSk9CX1NUQVRFOjIiCgkJCSNlY2hvIGBk
YXRlYCIgICAgSW50ZXJuYWw6IEdSQU1fU0NSSVBUX0pPQl9TVEFURToyIChBQ1RJVkUpIiA+PiAv
dG1wL2dsb2J1cy1qb2ItbWFuYWdlci1zY3JpcHQucGwubG9nCgkJZWxzZQoJCQllY2hvICJHUkFN
X1NDUklQVF9KT0JfU1RBVEU6OCIKCQkJI2VjaG8gYGRhdGVgIiAgICBJbnRlcm5hbDogR1JBTV9T
Q1JJUFRfSk9CX1NUQVRFOjggKERPTkUpIiA+PiAvdG1wL2dsb2J1cy1qb2ItbWFuYWdlci1zY3Jp
cHQucGwubG9nCgkJZmkKCQlleGl0OwoJI2Vsc2UKCQkjZWNobyBgZGF0ZWAiOiAgICAgVW5hYmxl
IHRvIGZpbmQgcGlkIGluICQ0ISIgPj4gL3RtcC9nbG9idXMtam9iLW1hbmFnZXItc2NyaXB0LnBs
LmxvZwoJCSNjYXQgJDQgPj4gL3RtcC9nbG9idXMtam9iLW1hbmFnZXItc2NyaXB0LnBsLmxvZwoJ
ZmkKZmkKCiNlY2hvIGBkYXRlYCI6ICAgICBIYW5kaW5nIHRvIHJlYWwgc2NyaXB0IiA+PiAvdG1w
L2dsb2J1cy1qb2ItbWFuYWdlci1zY3JpcHQucGwubG9nCmV4ZWMgL24vdXNjbXNfc2hhcmUvZ2xv
YnVzXzIyNC9saWJleGVjL2dsb2J1cy1qb2ItbWFuYWdlci1zY3JpcHQucGwucmVhbCAiJEAiCg==
</data>        

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102</attachid>
            <date>2003-03-31 12:56</date>
            <desc>globus-job-manager scalability improvements</desc>
            <filename>job_manager_fast.diff</filename>
            <type>text/plain</type>
            <size>35881</size>
            <attacher>adesmet@cs.wisc.edu</attacher>
            <data encoding="base64">ZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1fam9i
X21hbmFnZXIuaCBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXIuaAotLS0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1f
am9iX21hbmFnZXIuaAlTYXQgTWFyIDI5IDIyOjMwOjExIDIwMDMKKysrIGdsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlci5oCU1vbiBNYXIgMzEgMTE6NDY6
MzYgMjAwMwpAQCAtMTU4LDExICsxNTgsMjEgQEAKICAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGpv
Yi4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgam9iIHN0YXRlIG1hY2hpbmUKICAgICAgKiBkZXNj
cmliZWQgaW4gdGhlIEdSQU0gZG9jdW1lbnRhdGlvbi4KICAgICAgKgorICAgICAqIFVzZSBnbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMoKSB0byBjaGFuZ2UuCisgICAg
ICoKICAgICAgKiBAdG9kbyBhZGQgbGluayAKICAgICAgKi8gCiAgICAgZ2xvYnVzX2dyYW1fcHJv
dG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzOwogCiAgICAgLyoqCisgICAgICogTGFzdCB0aW1lIHN0
YXR1cyB3YXMgY2hhbmdlZAorICAgICAqCisgICAgICogVGhlIHRpbWUgdGhhdCB0aGUgc3RhdHVz
IG1lbWJlciB3YXMgbGFzdCBjaGFuZ2VkLgorICAgICAqIEF1dG9tYXRpY2FsbHkgc2V0IGJ5IGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cygpLgorICAgICAqLworICAg
IHRpbWVfdCAJCQkJc3RhdHVzX3VwZGF0ZV90aW1lOworCisgICAgLyoqCiAgICAgICogSm9iIEZh
aWx1cmUgUmVhc29uCiAgICAgICoKICAgICAgKiBJZiB0aGUgc3RhdGUgaXMgR0xPQlVTX0dSQU1f
U1RBVEVfRkFJTEVELCB0aGVuIHRoaXMKQEAgLTM5NCw2ICs0MDQsMTEgQEAKIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3JlcXVlc3RfZGVzdHJveSgKICAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2Vy
X3JlcXVlc3RfdCAqCXJlcXVlc3QpOwogCitpbnQKK2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3Jl
cXVlc3Rfc2V0X3N0YXR1cygKKyAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2VyX3JlcXVlc3RfdCAq
CXJlcXVlc3QsCisgICAgZ2xvYnVzX2dyYW1fcHJvdG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzKTsK
Kwogdm9pZAogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9vcGVuX2xvZ2ZpbGUoCiAg
ICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LApAQCAtNTE4LDYg
KzUzMywxMyBAQAogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X3JlYWRfc3RhdGUoCiAg
ICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LAogICAgIEZJTEUg
KgkJCQlmcCk7CisKK2ludAorZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9zaXpl
KAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICoJcmVxdWVzdCwKKyAgICBj
b25zdCBjaGFyICoJCQl0eXBlLAorICAgIGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAgICAg
ICAgIHNpemUKKyAgICApOwogCiBpbnQKIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1dF9j
aGVja19zaXplKApkaWZmIC1ydSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkub3JpZy9nbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9nc2kuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xv
YnVzX2dyYW1fam9iX21hbmFnZXJfZ3NpLmMKLS0tIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMu
OS5vcmlnL2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX2dzaS5jCVNhdCBNYXIgMjkgMjI6MzA6MTEg
MjAwMworKysgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45L2dsb2J1c19ncmFtX2pvYl9tYW5h
Z2VyX2dzaS5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAtMTg5LDcgKzE4OSw4IEBACiAg
ICAgewogCWlmICgoaW50KSBsaWZldGltZSAtIHJlcXVlc3QtPnByb3h5X3RpbWVvdXQgPD0gMCkK
IAl7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFU
RV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3Nl
dF9zdGF0dXMocmVxdWVzdCwgCisgICAgICAgICAgICAgICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xf
Sk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCUdMT0JV
U19HUkFNX1BST1RPQ09MX0VSUk9SX1VTRVJfUFJPWFlfRVhQSVJFRDsKIAkgICAgcmMgPSBHTE9C
VVNfRkFJTFVSRTsKZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xv
YnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0LmMgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45
L2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1dC5jCi0tLSBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXQuYwlTYXQgTWFyIDI5
IDIyOjMwOjExIDIwMDMKKysrIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3Jh
bV9qb2JfbWFuYWdlcl9vdXRwdXQuYwlNb24gTWFyIDMxIDExOjQ2OjM2IDIwMDMKQEAgLTc2NSw2
ICs3NjUsNDQgQEAKIC8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1dF9nZXRfY2FjaGVf
bmFtZSgpICovIAogCiAvKioKKyAqIEdldCBzaXplIG9mIHN0YW5kYXJkIG91dAorICoKKyAqIEBw
YXJhbSByZXF1ZXN0CisgKiAgICAgICAgUmVxdWVzdCB0aGF0IHdlIGFyZSBjaGVja2luZyB0aGUg
c2l6ZSBvZiB0aGUgb3V0cHV0IGZpbGUgb2YuCisgKiBAcGFyYW0gdHlwZQorICogICAgICAgIE11
c3QgYmUgZWl0aGVyICJzdGRvdXQiIG9yICJzdGRlcnIiLgorICogQHBhcmFtIHNpemUKKyAqICAg
ICAgICBQb2ludGVyIHRvIG1lbW9yeSB0byBob2xkIHJlc3VsdC4KKyAqCisgKiBAcmV0dmFsIEdM
T0JVU19TVUNDRVNTIChvciBHTE9CVVNfRkFJTFVSRSBpZiB5b3UgcGFzcyBpbiBib2d1cyBhcmd1
bWVudHMpCisgKi8KK2ludAorZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9zaXpl
KAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICoJcmVxdWVzdCwKKyAgICBj
b25zdCBjaGFyICoJCQl0eXBlLAorICAgIGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAgICAg
ICAgIHNpemUKKyAgICApCit7CisgICAgaWYoIXNpemUgfHwgIXJlcXVlc3QgfHwgIXJlcXVlc3Qt
Pm91dHB1dCkgeworICAgICAgICByZXR1cm4gR0xPQlVTX0ZBSUxVUkU7CisgICAgfQorCisgICAg
aWYoc3RyY21wKHR5cGUsICJzdGRvdXQiKSA9PSAwKQorICAgIHsKKyAgICAgICAgKnNpemUgPSBy
ZXF1ZXN0LT5vdXRwdXQtPnN0ZG91dF9zaXplOworICAgICAgICByZXR1cm4gR0xPQlVTX1NVQ0NF
U1M7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKHR5cGUsICJzdGRlcnIiKSA9PSAwKQorICAg
IHsKKyAgICAgICAgKnNpemUgPSByZXF1ZXN0LT5vdXRwdXQtPnN0ZGVycl9zaXplOworICAgICAg
ICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgICAgfQorCisgICAgcmV0dXJuIEdMT0JVU19GQUlM
VVJFOworfQorLyogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9zaXplKCkgKi8K
KworLyoqCiAgKiBDaGVjayBzaXplIG9mIG91dHB1dCBmaWxlcwogICoKICAqIFZlcmlmaWVzIHRo
YXQgdGhlIHNpemUgb2YgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBpcyBleGFjdGx5IEBhIHNp
emUKZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1f
am9iX21hbmFnZXJfcXVlcnkuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXJfcXVlcnkuYwotLS0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9y
aWcvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcXVlcnkuYwlTYXQgTWFyIDI5IDIyOjMwOjExIDIw
MDMKKysrIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdl
cl9xdWVyeS5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAtMzE5LDcgKzMxOSw3IEBACiAg
ICAgICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX1BST1hZX1JFTE9DQVRFOgog
ICAgICAgICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUKICAgICAgICAgICAgICAgICAgID0g
R0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwotICAgICAgICAgIHJl
cXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7Cisg
ICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVl
c3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogICAgICAgICAgIHJl
cXVlc3QtPmZhaWx1cmVfY29kZSA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX1VTRVJfQ0FO
Q0VMTEVEOwogCiAgICAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOwpAQCAtMzI3LDcgKzMy
Nyw3IEBACiAgICAgICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX1RXT19QSEFT
RToKICAgICAgICAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlCiAgICAgICAgICAgICAgICAg
ICA9IEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRDsKLSAgICAgICAgICByZXF1
ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAg
ICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0
LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKICAgICAgICAgICByZXF1
ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9VU0VSX0NBTkNF
TExFRDsKICAgICAgICAgICByZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19U
UlVFOwogICAgICAgICAgIGlmKHJlcXVlc3QtPnBvbGxfdGltZXIgIT0gR0xPQlVTX0hBTkRMRV9U
QUJMRV9OT19IQU5ETEUpCkBAIC0zNTQsNyArMzU0LDcgQEAKICAgICAgIGNhc2UgR0xPQlVTX0dS
QU1fSk9CX01BTkFHRVJfU1RBVEVfU1RBR0VfSU46CiAgICAgICAgICAgcmVxdWVzdC0+am9ibWFu
YWdlcl9zdGF0ZQogICAgICAgICAgICAgICAgICAgPSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9T
VEFURV9GQUlMRUQ7Ci0gICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJP
VE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
cl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NU
QVRFX0ZBSUxFRCk7CiAgICAgICAgICAgcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0gR0xPQlVTX0dS
QU1fUFJPVE9DT0xfRVJST1JfVVNFUl9DQU5DRUxMRUQ7CiAgICAgICAgICAgcmVxdWVzdC0+dW5z
ZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsKIApAQCAtNzEwLDYgKzcxMCwzMyBAQAog
CQkgICAgICAgIiUiR0xPQlVTX09GRl9UX0ZPUk1BVCIgJSJHTE9CVVNfT0ZGX1RfRk9STUFULAog
CQkgICAgICAgJm91dF9zaXplLCAmZXJyX3NpemUpID4gMCkKIAl7CisJICAgIGlmKCAhIHJlcXVl
c3QgfHwgIShyZXF1ZXN0LT5vdXRwdXQpICkgeworICAgICAgICAgICAgICAgIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LAor
ICAgICAgICAgICAgICAgICAgICAiSk06ICoqKioqIFNURElPX1NJWkUgcmVxdWVzdC4gIgorICAg
ICAgICAgICAgICAgICAgICAiQk9HVVMgUkVRVUVTVCBPQkpFQ1QhXG4iKTsKKwkgICAgfQorCSAg
ICBlbHNlIAorCSAgICB7CisgICAgICAgICAgICAgICAgZ2xvYnVzX29mZl90IGxvY2FsX3NpemVf
c3Rkb3V0ID0gMDsKKyAgICAgICAgICAgICAgICBnbG9idXNfb2ZmX3QgbG9jYWxfc2l6ZV9zdGRl
cnIgPSAwOworICAgICAgICAgICAgICAgIGludCByY19vdXQsIHJjX2VycjsKKyAgICAgICAgICAg
ICAgICByY19vdXQgPSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXRfZ2V0X3NpemUocmVx
dWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGRvdXQiLCAmbG9jYWxfc2l6ZV9zdGRv
dXQpOworICAgICAgICAgICAgICAgIHJjX2VyciA9IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291
dHB1dF9nZXRfc2l6ZShyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVyciIs
ICZsb2NhbF9zaXplX3N0ZGVycik7CisgICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfcmVxdWVzdF9sb2coCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgICAgICJKTTogU1RESU9fU0laRSByZXF1ZXN0LiAiCisgICAgICAgICAgICAgICAg
ICAgICJzdGRvdXQ6IHJlbW90ZSAlZCwgbG9jYWwgJWQlcywgJXMuIgorICAgICAgICAgICAgICAg
ICAgICAic3RkZXJyOiByZW1vdGUgJWQsIGxvY2FsICVkJXMsICVzLlxuIiwKKyAgICAgICAgICAg
ICAgICAgICAgKGludCkob3V0X3NpemUpLCAoaW50KWxvY2FsX3NpemVfc3Rkb3V0LAorICAgICAg
ICAgICAgICAgICAgICAocmNfb3V0ID09IEdMT0JVU19TVUNDRVNTKSA/ICIiIDogIiBlcnJvciBx
dWVyeWluZyBsb2NhbCB2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgIChvdXRfc2l6ZSA9PSBs
b2NhbF9zaXplX3N0ZG91dCk/Im9rIjoiRVJST1IiLAorICAgICAgICAgICAgICAgICAgICAoaW50
KShlcnJfc2l6ZSksIChpbnQpbG9jYWxfc2l6ZV9zdGRlcnIsCisgICAgICAgICAgICAgICAgICAg
IChyY19lcnIgPT0gR0xPQlVTX1NVQ0NFU1MpID8gIiIgOiAiIGVycm9yIHF1ZXJ5aW5nIGxvY2Fs
IHZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgKGVycl9zaXplID09IGxvY2FsX3NpemVfc3Rk
ZXJyKT8ib2siOiJFUlJPUiIpOworCSAgICB9CiAJICAgIGlmKG91dF9zaXplID49IDApCiAJICAg
IHsKIAkJcmMgPSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXRfY2hlY2tfc2l6ZSgKQEAg
LTgwNCw3ICs4MzEsNyBAQAogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RE
SU9fVVBEQVRFX0NMT1NFOgogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RE
SU9fVVBEQVRFX09QRU46CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9TVE9Q
OgotCSAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZB
SUxFRDsKKyAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0
dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICBy
ZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCSAgcmVxdWVzdC0+
ZmFpbHVyZV9jb2RlID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfSk1fU1RPUFBFRDsKIAkg
IHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFU
RV9TVE9QOwpAQCAtODEyLDE0ICs4MzksMTQgQEAKIAljYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5B
R0VSX1NUQVRFX1BSRV9DTE9TRV9PVVRQVVQ6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdF
Ul9TVEFURV9DTE9TRV9PVVRQVVQ6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFU
RV9TVE9QX0NMT1NFX09VVFBVVDoKLQkgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9GQUlMRUQpOwogCSAgcmVxdWVzdC0+dW5zZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNf
VFJVRTsKIAkgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0VS
Uk9SX0pNX1NUT1BQRUQ7CiAJICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkgICAgICBH
TE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9TVE9QX0NMT1NFX09VVFBVVDsKIAkgIGJyZWFr
OwogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RBR0VfT1VUOgotCSAgcmVx
dWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAg
ICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVz
dCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICByZXF1ZXN0LT51
bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCSAgcmVxdWVzdC0+ZmFpbHVyZV9j
b2RlID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfSk1fU1RPUFBFRDsKIAkgIHJlcXVlc3Qt
PmpvYm1hbmFnZXJfc3RhdGUgPQpAQCAtODMwLDcgKzg1Nyw3IEBACiAJY2FzZSBHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9TVE9QX0RPTkU6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFO
QUdFUl9TVEFURV9GQUlMRURfVFdPX1BIQVNFOgogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFH
RVJfU1RBVEVfRkFJTEVEX1RXT19QSEFTRV9DT01NSVRURUQ6Ci0JICByZXF1ZXN0LT5zdGF0dXMg
PSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JB
TV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgIHJlcXVlc3QtPnVuc2VudF9zdGF0dXNf
Y2hhbmdlID0gR0xPQlVTX1RSVUU7CiAJICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9FUlJPUl9KTV9TVE9QUEVEOwogCSAgcmVxdWVzdC0+am9ibWFuYWdlcl9z
dGF0ZSA9CmRpZmYgLXJ1IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1c19n
cmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3QuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xv
YnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdC5jCi0tLSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
ci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0LmMJU2F0IE1hciAyOSAy
MjozMDoxMSAyMDAzCisrKyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dyYW1f
am9iX21hbmFnZXJfcmVxdWVzdC5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAtNTUsNiAr
NTUsNyBAQAogICAgIHItPmNvbmRvcl9vcyA9IE5VTEw7CiAgICAgci0+Y29uZG9yX2FyY2ggPSBO
VUxMOwogICAgIHItPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9VTlNV
Qk1JVFRFRDsKKwlyLT5zdGF0dXNfdXBkYXRlX3RpbWUgPSAwOwogICAgIHItPnVybF9iYXNlID0g
R0xPQlVTX05VTEw7CiAgICAgci0+am9iX2NvbnRhY3QgPSBHTE9CVVNfTlVMTDsKICAgICByLT5q
b2JfY29udGFjdF9wYXRoID0gR0xPQlVTX05VTEw7CkBAIC0xNDEsNiArMTQyLDM2IEBACiAKIH0K
IC8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfZGVzdHJveSgpICovCisKKy8qKgor
ICogQ2hhbmdlIHRoZSBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIGEgam9iIHJlcXVlc3QKKyAqCisg
KiBDaGFuZ2VzIHRoZSBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIGEgam9iIHJlcXVlc3QuCisgKiBU
aGVyZSBpcyBub3cgYWRkaXRpb25hbCB0cmFja2luZyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUK
KyAqIHN0YXR1cyB0aGF0IG11c3QgYmUgdXBkYXRlZCB3aGVuIHRoZSBzdGF0dXMgaXMuICBUaGlz
IGZ1bmN0aW9uCisgKiBoYW5kbGVzIG1hbmFnaW5nIGl0LiAgSXQgaXMgTk9UIHJlY29tbWVuZGVk
IHRoYXQgeW91IGRpcmVjdGx5CisgKiBjaGFuZ2UgdGhlIHN0YXR1cy4KKyAqCisgKiBAcGFyYW0g
cmVxdWVzdAorICogICAgICAgIEpvYiByZXF1ZXN0IHRvIGNoYW5nZSBzdGF0dXMgb2YuCisgKiBA
cGFyYW0gc3RhdHVzCisgKiAgICAgICAgU3RhdHVzIHRvIHNldCB0aGUgam9iIHJlcXVlc3QgdG8u
CisgKgorICogQHJldHVybiBHTE9CVVNfU1VDQ0VTUyBhc3N1bWluZyB2YWxpZCBpbnB1dC4KKyAq
ICAgICAgICAgSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgcmV0dXJucyBHTE9CVVNfRkFJTFVSRS4K
KyAqLworaW50CitnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMoCisg
ICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LAorICAgIGdsb2J1
c19ncmFtX3Byb3RvY29sX2pvYl9zdGF0ZV90CXN0YXR1cykKK3sKKyAgICBpZiggISByZXF1ZXN0
ICkKKwlyZXR1cm4gR0xPQlVTX0ZBSUxVUkU7CisgICAgcmVxdWVzdC0+c3RhdHVzID0gc3RhdHVz
OworICAgIHJlcXVlc3QtPnN0YXR1c191cGRhdGVfdGltZSA9IHRpbWUoMCk7CisgICAgcmV0dXJu
IEdMT0JVU19TVUNDRVNTOworfQorLyogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9z
ZXRfc3RhdHVzKCkgKi8KIAogZXh0ZXJuCiB2b2lkCmRpZmYgLXJ1IGdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyLTMuOS5vcmlnL2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3NjcmlwdC5jIGdsb2J1c19n
cmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zY3JpcHQuYwotLS0g
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJf
c2NyaXB0LmMJU2F0IE1hciAyOSAyMjozMDoxMSAyMDAzCisrKyBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlci0zLjkvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2NyaXB0LmMJTW9uIE1hciAzMSAxMTo0
NjozNiAyMDAzCkBAIC00NTcsNiArNDU3LDI0NSBAQAogfQogLyogZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfc2NyaXB0X3N1Ym1pdCgpICovCiAKKworCisvKioKKyAqIFNldCBqb2IgcmVxdWVzdCBz
dGF0dXMgYW5kIGZpcmUgY2FsbGJhY2sgc28gaXQgcmVnaXN0ZXJzCisgKgorICogQXZvaWRzIGFj
dHVhbGx5IGxvY2tpbmcgcmVxdWVzdCBpZiBwb3NzaWJsZS4KKyAqLworc3RhdGljCitpbnQKK2xv
Y2FsX2dsb2J1c19zZXRfc3RhdHVzKAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVz
dF90ICogICAgcmVxdWVzdCwKKyAgICBnbG9idXNfZ3JhbV9wcm90b2NvbF9qb2Jfc3RhdGVfdCAg
ICAgIHN0YXR1cykKK3sKKyAgICBpZiggISByZXF1ZXN0ICkKKyAgICAgICAgcmV0dXJuIEdMT0JV
U19GQUlMVVJFOworCisgICAgaWYocmVxdWVzdC0+c3RhdHVzICE9IHN0YXR1cykKKyAgICB7Cisg
ICAgICAgIGdsb2J1c19tdXRleF9sb2NrKCZyZXF1ZXN0LT5tdXRleCk7CisgICAgICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBzdGF0dXMpOwor
ICAgICAgICByZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOworICAg
ICAgICBnbG9idXNfbXV0ZXhfdW5sb2NrKCZyZXF1ZXN0LT5tdXRleCk7CisgICAgfQorCisgICAg
eworICAgIC8qIEdsb2J1cyBleHBlY3RzIHRoZSBjYWxsYmFjayB0byBmaXJlLiBGb3JjZSBpdCB0
bworICAgICAqIHJ1biBpbnN0YW50bHkuICovCisgICAgICAgIGdsb2J1c19yZWx0aW1lX3QgZGVs
YXk7CisgICAgICAgIEdsb2J1c1RpbWVSZWx0aW1lU2V0KGRlbGF5LCAwLCAwKTsKKyAgICAgICAg
Z2xvYnVzX2NhbGxiYWNrX3JlZ2lzdGVyX29uZXNob3QoCisgICAgICAgICAgICAmcmVxdWVzdC0+
cG9sbF90aW1lciwKKyAgICAgICAgICAgICZkZWxheSwKKyAgICAgICAgICAgIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3N0YXRlX21hY2hpbmVfY2FsbGJhY2ssCisgICAgICAgICAgICByZXF1ZXN0
KTsKKyAgICB9CisgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworfQorLyogbG9jYWxfZ2xvYnVz
X3NldF9zdGF0dXMoKSAqLworCisKKy8qKgorICogVHJ5IHRvIHBvbGwgc3RhdHVzIG9mIGpvYiBy
ZXF1ZXN0IHVzaW5nIENvbmRvciBncmlkX21hbmFnZXJfbW9uaXRvcl9hZ2VudAorICoKKyAqIElm
IHRoZSBDb25kb3IgZ3JpZF9tYW5hZ2VyX21vbml0b3JfYWdlbnQgaXMgcnVubmluZyBvbiB0aGUg
bWFjaGluZSwgdGhpcworICogZnVuY3Rpb24gcmV0cmlldmUgam9iIHJlcXVlc3Qgc3RhdHVzIHVz
aW5nIHRoYXQsIG90aGVyd2lzZSBpdCBmYWlscy4gCisgKiBFeHBlY3RlZCB0byBiZSBjYWxsZWQg
ZXhjbHVzaXZlbHkgZnJvbSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zY3JpcHRfcG9sbC4KKyAq
LworaW50CitnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zY3JpcHRfcG9sbF9mYXN0KAorICAgIGds
b2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICogICAgcmVxdWVzdCkKK3sKKyAgICBjaGFy
ICogZ3JpZF9tb25pdG9yX291dHB1dCA9IDA7CisgICAgICAgICAgICAgICAgLyogUGF0aCBpcyAk
R0xPQlVTX0xPQ0FUSU9OL0dSSURfTU9OSVRPUl9MT0NBVElPTiRVSUQgKi8KKyAgICBjaGFyICog
R1JJRF9NT05JVE9SX0xPQ0FUSU9OID0gIi90bXAvZ3JpZF9tYW5hZ2VyX21vbml0b3JfYWdlbnRf
bG9nLiI7IAorICAgIHVpZF90IHRoaXNfdWlkID0gZ2V0ZXVpZCgpOworICAgIHN0cnVjdCBzdGF0
IHN0YXRfcmVzdWx0czsKKyAgICBGSUxFICogZ3JpZF9tb25pdG9yX2ZpbGUgPSAwOworICAgIGlu
dCByYzsKKyAgICB0aW1lX3QgTUFYX01PTklUT1JfRklMRV9BR0UgPSAoNjAqNSk7IC8qIHNlY29u
ZHMgKi8KKyAgICBjaGFyIGxpbmVbMTAyNF07CisgICAgaW50IHJldHVybl92YWwgPSBHTE9CVVNf
RkFJTFVSRTsKKyAgICB0aW1lX3Qgc3RhdHVzX2ZpbGVfbGFzdF91cGRhdGUgPSAwOworCisgICAg
aWYoICEgcmVxdWVzdCB8fCAhIHJlcXVlc3QtPmdsb2J1c19sb2NhdGlvbiB8fCAhIHJlcXVlc3Qt
PmpvYl9jb250YWN0KQorICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUX0ZBSUxVUkU7CisKKyAg
ICBpZih0aGlzX3VpZCA+IDk5OTk5OSkKKyAgICB7CisgICAgLyogVUlEcyB0aGlzIGxhcmdlIGFy
ZSB1bmxpa2VseSwgYnV0IGlmIHRoZXkgb2NjdXIgdGhlIGJ1ZmZlcgorICAgICAqIGlzbid0IGxh
cmdlIGVub3VnaCB0byBoYW5kbGUgaXQKKyAgICAgKi8KKyAgICAgICAgZ290byBGQVNUX1BPTExf
RVhJVF9GQUlMVVJFOworICAgIH0KKworICAgIGdyaWRfbW9uaXRvcl9vdXRwdXQgPSBnbG9idXNf
bGliY19tYWxsb2MoCisgICAgICAgIHN0cmxlbihyZXF1ZXN0LT5nbG9idXNfbG9jYXRpb24pICsg
CisgICAgICAgIHN0cmxlbihHUklEX01PTklUT1JfTE9DQVRJT04pICsgMTApOworICAgIGlmKCAh
IGdyaWRfbW9uaXRvcl9vdXRwdXQpCisgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVS
RTsKKworICAgIHNwcmludGYoZ3JpZF9tb25pdG9yX291dHB1dCwgIiVzJXMlZCIsCisgICAgICAg
IHJlcXVlc3QtPmdsb2J1c19sb2NhdGlvbiwKKyAgICAgICAgR1JJRF9NT05JVE9SX0xPQ0FUSU9O
LAorICAgICAgICAoaW50KXRoaXNfdWlkKTsKKworICAgIGdyaWRfbW9uaXRvcl9maWxlID0gZm9w
ZW4oZ3JpZF9tb25pdG9yX291dHB1dCwgInIiKTsKKworICAgIGlmKCAhIGdyaWRfbW9uaXRvcl9m
aWxlICkKKyAgICB7CisgICAgLyogTm8gbW9uaXRvciBmaWxlPyAgVGhhdCdzIGFjY2VwdGFibGUs
IHNpbGVudGx5IGZhaWwgKi8KKyAgICAgICAgZ290byBGQVNUX1BPTExfRVhJVF9GQUlMVVJFOwor
ICAgIH0KKworICAgIHJjID0gc3RhdChncmlkX21vbml0b3Jfb3V0cHV0LCAmc3RhdF9yZXN1bHRz
KTsKKworICAgIAorICAgIGlmKCByYyAhPSAwICkKKyAgICAgICAgZ290byBGQVNUX1BPTExfRVhJ
VF9GQUlMVVJFOworCisgICAgaWYoc3RhdF9yZXN1bHRzLnN0X3VpZCAhPSB0aGlzX3VpZCB8fAor
ICAgICFTX0lTUkVHKHN0YXRfcmVzdWx0cy5zdF9tb2RlKQorICAgIC8qIFRPRE86IHRlc3QgZm9y
IHdvcmxkIHdyaXRhYmxlIChiYWQpPyAgSXMgc3VjaCBhIHRlc3QgbG9naWNhbCBvbiBBRlM/ICov
CisgICAgKQorICAgIHsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9s
b2cocmVxdWVzdCwKKyAgICAgICAgICAgICJKTUk6IHBvbGxfZmFzdDogTW9uaXRvcmluZyBmaWxl
IGxvb2tzIHVudHJ1c3R3b3J0aHkuICAiCisgICAgICAgICAgICAiUmV2ZXJ0aW5nIHRvIG5vcm1h
bCBwb2xsaW5nXG4iKTsKKyAgICAgICAgZ290byBGQVNUX1BPTExfRVhJVF9GQUlMVVJFOworICAg
IH0KKworICAgIGlmKCAoc3RhdF9yZXN1bHRzLnN0X210aW1lICsgTUFYX01PTklUT1JfRklMRV9B
R0UpIDwgdGltZShOVUxMKSApCisgICAgeworICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
cl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAgIkpNSTogcG9sbF9mYXN0OiBNb25p
dG9yaW5nIGZpbGUgbG9va3Mgb3V0IG9mIGRhdGUuICAiCisgICAgICAgICAgICAiUmV2ZXJ0aW5n
IHRvIG5vcm1hbCBwb2xsaW5nXG4iKTsKKyAgICAgICAgZ290byBGQVNUX1BPTExfRVhJVF9GQUlM
VVJFOworICAgIH0KKworICAgIC8qIElmIHdlIGdvdCB0aGlzIGZhciwgd2UndmUgZGVjaWRlZCB3
ZSB0cnVzdCB0aGUgZmlsZSAqLworCisgICAgLyogUmVhZCB0aGUgZmlyc3QgbGluZSwgd2hpY2gg
aXMgdHdvIHRpbWVzdGFtcHMgYXMgc2Vjb25kcyBzaW5jZSBlcG9jaC4KKyAgICAgKiBUaGUgZmly
c3Qgb25lIGlzIHN0YXJ0IHRpbWUgb2YgbGFzdCBxdWVyeSBwYXNzLCB0aGUgc2Vjb25kIGlzIGZp
bmlzaC4gKi8KKyAgICBpZiggISBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGdyaWRfbW9uaXRv
cl9maWxlKSApCisgICAgeworICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAgIkpNSTogcG9sbF9mYXN0OiBKb2Igc3RhdGUgZmls
ZSAlcyBtYWxmb3JtZWQsIG1pc3NpbmcgZmlyc3QgbGluZVxuIiwKKyAgICAgICAgICAgIGdyaWRf
bW9uaXRvcl9vdXRwdXQpOworICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUX0ZBSUxVUkU7Cisg
ICAgfQorICAgIGlmKCAhIGZlb2YoZ3JpZF9tb25pdG9yX2ZpbGUpICYmIGxpbmVbc3RybGVuKGxp
bmUpIC0gMV0gIT0gJ1xuJykKKyAgICB7CisgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2Vy
X3JlcXVlc3RfbG9nKHJlcXVlc3QsCisgICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6IEpvYiBz
dGF0ZSBmaWxlICVzIG1hbGZvcm1lZCwgZmlyc3QgbGluZSB0b28gbG9uZ1xuIiwKKyAgICAgICAg
ICAgIGdyaWRfbW9uaXRvcl9vdXRwdXQpOworICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUX0ZB
SUxVUkU7CisgICAgfQorCisgICAgc3RhdHVzX2ZpbGVfbGFzdF91cGRhdGUgPSBhdG9pKGxpbmUp
OworICAgIGlmKHN0YXR1c19maWxlX2xhc3RfdXBkYXRlIDwgcmVxdWVzdC0+c3RhdHVzX3VwZGF0
ZV90aW1lKSB7CisgICAgICAgIC8qIFdlIHNvbWVob3cgZ290IGEgc3RhdHVzIHVwZGF0ZSBtb3Jl
IHJlY2VudCB0aGFuIHRoZSBzdGF0dXMgZmlsZS4KKyAgICAgICAgICogTW9zdCBsaWtlbHkgd2Ug
c3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIGEgdHJhZGl0aW9uYWwgcG9sbCBmYXN0ZXIgdGhhbgorICAg
ICAgICAgKiB0aGUgc3RhdHVzIHNjcmlwdCBwcm9jZXNzZWQgdGhpbmdzLiAgVGhpcyBzdGF0dXMg
ZmlsZSBpcyBmcmVzaAorICAgICAgICAgKiBlbm91Z2gsIHNvIHdlIHNob3VsZCBzd2l0Y2ggb3Zl
ciB0byB1c2luZyB0aGF0LCB3ZSB3YW50IHRvIGF2b2lkCisgICAgICAgICAqIGZpcmluZyBvZmYg
YSB0cmFkaXRpb25hbCBwb2xsLiAgU28sIGxlYXZlIHRoZSBleGlzdGluZyBzdGF0dXMgaW4KKyAg
ICAgICAgICogcGxhY2UgYW5kIHJlcG9ydCBhIHN1Y2Nlc3NmdWwgcG9sbC4gKi8KKyAgICAgICAg
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwKKwkgICAgIkpNSTog
cG9sbF9mYXN0OiAqKioqSm9iIHN0YXRlIGZpbGUgJXMgb2xkZXIgdGhhbiBteSBsYXN0IHBvbGxc
biIsCisgICAgICAgICAgICBncmlkX21vbml0b3Jfb3V0cHV0KTsKKyAgICAgICAgbG9jYWxfZ2xv
YnVzX3NldF9zdGF0dXMocmVxdWVzdCwgcmVxdWVzdC0+c3RhdHVzKTsKKyAgICAgICAgcmV0dXJu
X3ZhbCA9IEdMT0JVU19TVUNDRVNTOworICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUOworICAg
IH0KKworICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisg
ICAgICAgICJKTUk6IHBvbGxfZmFzdDogKioqKioqKiBzZWVraW5nOiAlc1xuIiwgcmVxdWVzdC0+
am9iX2NvbnRhY3QpOworICAgIC8qIFRPRE86IEZpcnN0IHBhc3MuICBJbXByb3ZlIHdpdGggYmlu
YXJ5IHNlYXJjaCBvZiBmaWxlIHRvIG1ha2UKKyAgICAgKiBzY2FubmluZyBsYXJnZSBmaWxlcyBm
YXN0LiBTdGlsbCB0aGlzIGlzIHByb2JhYmx5IHBsZW50eSBmYXN0CisgICAgICogZW5vdWdoIGZv
ciBmYWlybHkgbGFyZ2UgcnVucy4gKi8KKyAgICB3aGlsZSggMSApCisgICAgeworICAgICAgICBj
aGFyICogbWF0Y2ggPSAwOworICAgICAgICBzaXplX3Qgd2hpdGVzcGFjZV9sZW4gPSAwOworICAg
ICAgICBpZiggISBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGdyaWRfbW9uaXRvcl9maWxlKSAp
CisgICAgICAgIHsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rf
bG9nKHJlcXVlc3QsCisgICAgICAgICAgICAgICAgIkpNSTogcG9sbF9mYXN0OiAqKioqKioqKiAi
CisgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBmaW5kICVzXG4iLCByZXF1ZXN0LT5qb2JfY29u
dGFjdCk7CisgICAgICAgICAgICAvKiBlbmQgb2YgZmlsZSAob3IgZXJyb3IpLCBqb2IgaXNuJ3Qg
aW4gZmlsZS4gIEl0IG1pZ2h0IGp1c3Qgbm90CisgICAgICAgICAgICAgKiBoYXZlIGJlZW4gbm90
aWNlZCB5ZXQuICBTaWxlbnRseSBza2lwICovCisgICAgICAgICAgICBnb3RvIEZBU1RfUE9MTF9F
WElUX0ZBSUxVUkU7CisgICAgICAgIH0KKyAgICAgICAgaWYoICEgZmVvZihncmlkX21vbml0b3Jf
ZmlsZSkgJiYgbGluZVtzdHJsZW4obGluZSkgLSAxXSAhPSAnXG4nKQorICAgICAgICB7CisgICAg
ICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAg
ICAgICAgICAgICAgICJKTUk6IHBvbGxfZmFzdDogTW9uaXRvcmluZyBmaWxlIGxvb2tzIGNvcnJ1
cHQsIGxpbmVzIGFyZSB0b28gbG9uZy4gICIKKyAgICAgICAgICAgICAgICAiUmV2ZXJ0aW5nIHRv
IG5vcm1hbCBwb2xsaW5nXG4iKTsKKyAgICAgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJ
TFVSRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFRlc3QgdGhpcyBsaW5lIGZvciBhIG1hdGNo
ICovCisgICAgICAgIG1hdGNoID0gc3Ryc3RyKGxpbmUsIHJlcXVlc3QtPmpvYl9jb250YWN0KTsK
KyAgICAgICAgaWYobWF0Y2ggIT0gbGluZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIG1hdGNoICs9IHN0cmxlbihyZXF1ZXN0LT5qb2JfY29udGFjdCk7CisgICAgICAgIHdoaXRl
c3BhY2VfbGVuID0gc3Ryc3BuKG1hdGNoLCAiIFx0Iik7CisgICAgICAgIGlmKHdoaXRlc3BhY2Vf
bGVuID09IDApIC8qIGRpZG4ndCBhY3R1YWxseSBtYXRjaCAqLworICAgICAgICAgICAgY29udGlu
dWU7CisKKyAgICAgICAgLyogRm91bmQgZXhhY3QgbWF0Y2gsIHJlYWQgc3RhdHVzICovCisgICAg
ICAgIG1hdGNoICs9IHdoaXRlc3BhY2VfbGVuOworICAgICAgICB3aGl0ZXNwYWNlX2xlbiA9IHN0
cnNwbihtYXRjaCwgIjEyMzQ1Njc4OTAiKTsKKyAgICAgICAgaWYod2hpdGVzcGFjZV9sZW4gPT0g
MCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVz
dF9sb2cocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6ICoqKioqKiog
TWFsZm9ybWVkIGxpbmU6ICVzXG4iLCBsaW5lKTsKKyAgICAgICAgICAgIC8qIE5vIGRpZ2l0cyE/
ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmKG1hdGNo
W3N0cmxlbihtYXRjaCkgLSAxXSA9PSAnXG4nKSB7CisgICAgICAgICAgICBtYXRjaFtzdHJsZW4o
bWF0Y2gpIC0gMV0gPSAwOworICAgICAgICB9CisKKyAgICAgICAgbG9jYWxfZ2xvYnVzX3NldF9z
dGF0dXMocmVxdWVzdCwgYXRvaShtYXRjaCkpOworCisgICAgICAgIGdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisgICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6
ICoqKioqKioqICIKKyAgICAgICAgICAgICJPSy4gZm91bmQgJXMgKCVzKVxuIiwgcmVxdWVzdC0+
am9iX2NvbnRhY3QsIG1hdGNoKTsKKworICAgICAgICByZXR1cm5fdmFsID0gR0xPQlVTX1NVQ0NF
U1M7CisgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVQ7CisgICAgfQorCitGQVNUX1BPTExfRVhJ
VF9GQUlMVVJFOgorICAgIHJldHVybl92YWwgPSBHTE9CVVNfRkFJTFVSRTsKKworRkFTVF9QT0xM
X0VYSVQ6CisgICAgaWYoZ3JpZF9tb25pdG9yX2ZpbGUpIAorICAgICAgICBmY2xvc2UoZ3JpZF9t
b25pdG9yX2ZpbGUpOworICAgIGlmKCAhIGdyaWRfbW9uaXRvcl9vdXRwdXQpCisgICAgICAgIGds
b2J1c19saWJjX2ZyZWUoZ3JpZF9tb25pdG9yX291dHB1dCk7CisKKyAgICBnbG9idXNfZ3JhbV9q
b2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6
IHJldHVybmluZyAlZCAoJXMpXG4iLCByZXR1cm5fdmFsLAorICAgICAgICAocmV0dXJuX3ZhbCA9
PSBHTE9CVVNfRkFJTFVSRSkgPyAiR0xPQlVTX0ZBSUxVUkUiIDogIkdMT0JVU19TVUNDRVNTIik7
CisgICAgcmV0dXJuIHJldHVybl92YWw7Cit9CisvKiBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9z
Y3JpcHRfcG9sbF9mYXN0KCkgKi8KKworCisKKworCisKKworCisKKwogLyoqCiAgKiBQb2xsIHRo
ZSBzdGF0dXMgb2YgYSBqb2IgcmVxdWVzdC4KICAqCkBAIC00ODIsNiArNzIxLDEyIEBACiAgICAg
Y2hhciAqCQkJCXN0ZGVycl9maWxlbmFtZSA9ICIvZGV2L251bGwiOwogICAgIGNoYXIgKgkJCQlz
Y3JpcHRfYXJnX2ZpbGU7CiAKKyAgICAvKiBLZWVwIHRoZSBzdGF0ZSBmaWxlJ3MgdGltZXN0YW1w
IHVwIHRvIGRhdGUgc28gdGhhdAorICAgICAqIGFueXRoaW5nIHNjcnViYmluZyB0aGUgc3RhdGUg
ZmlsZXMgb2Ygb2xkIGFuZCBkZWFkCisgICAgICogcHJvY2Vzc2VzIGxlYXZlcyBpdCBhbG9uZSAq
LworICAgIGlmKHJlcXVlc3QtPmpvYl9zdGF0ZV9maWxlKQorICAgICAgICB1dGltZShyZXF1ZXN0
LT5qb2Jfc3RhdGVfZmlsZSwgTlVMTCk7CisKICAgICBzY3JpcHRfYXJnX2ZpbGUgPSB0ZW1wbmFt
KE5VTEwsICJncmFtX3BvbGwiKTsKIAogICAgIGlmICghcmVxdWVzdCkKQEAgLTUwOSwxMiArNzU0
LDE5IEBACiAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwK
ICAgICAgICAgICAiSk1JOiBsb2NhbCBzdGRlcnIgZmlsZW5hbWUgPSAlcy5cbiIsIHN0ZGVycl9m
aWxlbmFtZSk7CiAKKyAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1
ZXN0LAorCSJKTUk6IHBvbGw6IHNlZWtpbmc6ICVzXG4iLCByZXF1ZXN0LT5qb2JfY29udGFjdCk7
CisgICAgaWYoIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3NjcmlwdF9wb2xsX2Zhc3QocmVxdWVz
dCkgPT0gR0xPQlVTX1NVQ0NFU1MgKQorICAgIHsKKyAgICAgICAgcmV0dXJuKEdMT0JVU19TVUND
RVNTKTsKKyAgICB9CisKICAgICBpZiAoKHNjcmlwdF9hcmdfZnAgPSBmb3BlbihzY3JpcHRfYXJn
X2ZpbGUsICJ3IikpID09IE5VTEwpCiAgICAgewogICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAogICAgICAgICAgICAgICAiSk1JOiBGYWlsZWQgdG8g
b3BlbiBncmFtIHNjcmlwdCBhcmd1bWVudCBmaWxlLiAlc1xuIiwKICAgICAgICAgICAgICAgc2Ny
aXB0X2FyZ19maWxlICk7Ci0gICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2Vy
X3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RB
VEVfRkFJTEVEKTsKICAgICAgICAgcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0KICAgICAgICAgICAg
ICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfQVJHX0ZJTEVfQ1JFQVRJT05fRkFJTEVEOwog
ICAgICAgICByZXR1cm4oR0xPQlVTX0ZBSUxVUkUpOwpAQCAtMTAyNyw3ICsxMjc5LDcgQEAKIAln
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAogICAgICAgICAgICAg
ICAiSk1JOiBGYWlsZWQgdG8gb3BlbiBncmFtIHNjcmlwdCBhcmd1bWVudCBmaWxlLiAlc1xuIiwK
ICAgICAgICAgICAgICAgc2NyaXB0X2FyZ19maWxlICk7Ci0gICAgICAgIHJlcXVlc3QtPnN0YXR1
cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JB
TV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKICAgICAgICAgcmVxdWVzdC0+ZmFpbHVyZV9j
b2RlID0gCiAgICAgICAgICAgICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0FSR19GSUxF
X0NSRUFUSU9OX0ZBSUxFRDsKICAgICAgICAgcmV0dXJuKEdMT0JVU19GQUlMVVJFKTsKQEAgLTEy
NzUsNyArMTUyNyw3IEBACiAJZWxzZSBpZihnbG9idXNfbF9ncmFtX2pvYl9tYW5hZ2VyX3Njcmlw
dF92YWxpZF9zdGF0ZV9jaGFuZ2UoCiAJCSAgICByZXF1ZXN0LCBzY3JpcHRfc3RhdHVzKSkKIAl7
Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IHNjcmlwdF9zdGF0dXM7CisgICAgICAgIGdsb2J1c19n
cmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBzY3JpcHRfc3RhdHVz
KTsKIAkgICAgcmVxdWVzdC0+dW5zZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsKIAl9
CiAgICAgfQpAQCAtMTI4NSw3ICsxNTM3LDcgQEAKIAogCWlmKHJlcXVlc3QtPmpvYm1hbmFnZXJf
c3RhdGUgPT0gc3RhcnRpbmdfam9ibWFuYWdlcl9zdGF0ZSkKIAl7Ci0JICAgIHJlcXVlc3QtPnN0
YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisJICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JB
TV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgICAgaWYoc2NyaXB0X3N0YXR1cyA8PSAw
KQogCSAgICB7CiAJCXJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IApAQCAtMTM0MCw3ICsxNTkyLDcg
QEAKICAgICB9CiAgICAgZWxzZSBpZihyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID09IHN0YXJ0
aW5nX2pvYm1hbmFnZXJfc3RhdGUpCiAgICAgewotCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19H
UkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisJZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJf
cmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFU
RV9GQUlMRUQpOwogCXJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IAogCSAgICBHTE9CVVNfR1JBTV9Q
Uk9UT0NPTF9FUlJPUl9JTlZBTElEX1NDUklQVF9TVEFUVVM7CiAJcmVxdWVzdC0+dW5zZW50X3N0
YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsKQEAgLTE0MDcsNyArMTY1OSw3IEBACiAJCSAgICBy
ZXF1ZXN0LCBzY3JpcHRfc3RhdHVzKSkpCiAJewogCSAgICByZXF1ZXN0LT51bnNlbnRfc3RhdHVz
X2NoYW5nZSA9IEdMT0JVU19UUlVFOwotCSAgICByZXF1ZXN0LT5zdGF0dXMgPSBzY3JpcHRfc3Rh
dHVzOworCSAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVx
dWVzdCwgc2NyaXB0X3N0YXR1cyk7CiAJICAgIGlmKHJlcXVlc3QtPnN0YXR1cyA9PSBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKQogCSAgICB7CiAJCXJlcXVlc3QtPmZhaWx1
cmVfY29kZSA9CkBAIC0xNDIzLDcgKzE2NzUsNyBAQAogCQkJCQkJIHNjcmlwdF9zdGF0dXMpKQog
CQkKIAl7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IHNjcmlwdF9zdGF0dXM7CisJICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBzY3JpcHRfc3Rh
dHVzKTsKIAkgICAgcmVxdWVzdC0+dW5zZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsK
IAl9CiAgICAgfQpkaWZmIC1ydSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkub3JpZy9nbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9zdGF0ZS5jIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9n
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zdGF0ZS5jCi0tLSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
ci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zdGF0ZS5jCVNhdCBNYXIgMjkgMjI6
MzA6MTEgMjAwMworKysgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45L2dsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyX3N0YXRlLmMJTW9uIE1hciAzMSAxMTo0NjozNiAyMDAzCkBAIC0xNTIsNyArMTUy
LDcgQEAKIAkgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogdW5hYmxlIHRvIGdldCBIT01FIGZy
b20gdGhlIGVudmlyb25tZW50XG4iKTsKIAkgICAgcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0KIAkJ
R0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfR0FURUtFRVBFUl9NSVNDT05GSUdVUkVEOwotCSAg
ICByZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVE
OworCSAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVz
dCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3Qt
PmpvYm1hbmFnZXJfc3RhdGUgPQogCSAgICAgICAgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RB
VEVfRkFJTEVEX0RPTkU7CiAJICAgIGJyZWFrOwpAQCAtMTgzLDcgKzE4Myw3IEBACiAKIAkJcmVx
dWVzdC0+ZmFpbHVyZV9jb2RlID0KIAkJICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0dB
VEVLRUVQRVJfTUlTQ09ORklHVVJFRDsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1f
UFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKwkgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5h
Z2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0Jf
U1RBVEVfRkFJTEVEKTsKIAkJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCSAgICBHTE9C
VVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRURfRE9ORTsKIAkJYnJlYWs7CkBAIC0yMDYs
NyArMjA2LDcgQEAKIAogCSAgICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPQogCQlHTE9CVVNfR1JB
TV9QUk9UT0NPTF9FUlJPUl9HQVRFS0VFUEVSX01JU0NPTkZJR1VSRUQ7Ci0JICAgIHJlcXVlc3Qt
PnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisJICAgIGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdl
cl9zdGF0ZSA9CiAJICAgICAgICBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRURf
RE9ORTsKIAkgICAgYnJlYWs7CkBAIC0yMTgsNyArMjE4LDcgQEAKIAogCSAgICByZXF1ZXN0LT5m
YWlsdXJlX2NvZGUgPQogCQlHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9HQVRFS0VFUEVSX01J
U0NPTkZJR1VSRUQ7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09M
X0pPQl9TVEFURV9GQUlMRUQ7CisJICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rf
c2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVE
KTsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJICAgICAgICBHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRURfRE9ORTsKIAkgICAgYnJlYWs7CkBAIC0yMzMsNyAr
MjMzLDcgQEAKIAogCQlyZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPQogCQkgICAgR0xPQlVTX0dSQU1f
UFJPVE9DT0xfRVJST1JfQ09ORE9SX0FSQ0g7Ci0JCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19H
UkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisJICAgICAgICBnbG9idXNfZ3JhbV9qb2Jf
bWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xf
Sk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQkgICAg
R0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRkFJTEVEX0RPTkU7CiAJCWJyZWFrOwpAQCAt
MjQ1LDcgKzI0NSw3IEBACiAJCSAgICAiam9ibWFuYWdlciB0eXBlIGlzIGNvbmRvclxuIik7CiAJ
CXJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJP
Ul9DT05ET1JfQVJDSDsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xf
Sk9CX1NUQVRFX0ZBSUxFRDsKKwkgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVl
c3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJ
TEVEKTsKIAkJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9K
T0JfTUFOQUdFUl9TVEFURV9GQUlMRURfRE9ORTsKIAkgICAgfQpAQCAtMjY2LDcgKzI2Niw3IEBA
CiAJICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQogCSAgICB7CiAJCXJlcXVlc3QtPmZhaWx1
cmVfY29kZSA9IHJjOwotCQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9K
T0JfU1RBVEVfRkFJTEVEOworCSAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVz
dF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlM
RUQpOwogCQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJICAgIEdMT0JVU19HUkFNX0pP
Ql9NQU5BR0VSX1NUQVRFX0ZBSUxFRF9ET05FOwogCQlicmVhazsKQEAgLTU3OSw3ICs1NzksNyBA
QAogCSAgICByYyA9IGdsb2J1c19yc2xfZXZhbChyZXF1ZXN0LT5yc2wsICZyZXF1ZXN0LT5zeW1i
b2xfdGFibGUpOwogCSAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKIAkgICAgewotCQlyZXF1
ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAg
ICAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhy
ZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkJcmVxdWVz
dC0+ZmFpbHVyZV9jb2RlID0KIAkJICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX1JTTF9F
VkFMVUFUSU9OX0ZBSUxFRDsKIAkJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CkBAIC01OTUs
NyArNTk1LDcgQEAKIAkJICAgIEdMT0JVU19HUkFNX1ZBTElEQVRFX0pPQl9NQU5BR0VSX1JFU1RB
UlQpOwogCSAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKIAkgICAgewotCQlyZXF1ZXN0LT5z
dGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAg
ICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0
LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkJcmVxdWVzdC0+ZmFp
bHVyZV9jb2RlID0gcmM7CiAJCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQkgICAgR0xP
QlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwpAQCAtNjEyLDcgKzYxMiw3
IEBACiAJICAgIHJjID0gZ2xvYnVzX3JzbF9ldmFsKHJlcXVlc3QtPnJzbCwgJnJlcXVlc3QtPnN5
bWJvbF90YWJsZSk7CiAJICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQogCSAgICB7Ci0JCXJl
cXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7Cisg
ICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVz
KHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQlyZXF1
ZXN0LT5mYWlsdXJlX2NvZGUgPQogCQkgICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfUlNM
X0VWQUxVQVRJT05fRkFJTEVEOwogCQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KQEAgLTY0
Myw3ICs2NDMsNyBAQAogCSAgICByYyA9IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3N0YXRlX2Zp
bGVfcmVhZChyZXF1ZXN0KTsKIAkgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsK
LQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxF
RDsKKyAgICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9z
dGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJ
CXJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IHJjOwogCQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRl
ID0KIAkJICAgIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRDsKQEAg
LTY1Myw3ICs2NTMsNyBAQAogCSAgICByYyA9IGdsb2J1c19yc2xfYXNzaXN0X2F0dHJpYnV0ZXNf
Y2Fub25pY2FsaXplKHJlcXVlc3QtPnJzbCk7CiAJICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNT
KQogCSAgICB7Ci0JCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9GQUlMRUQ7CisgICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVx
dWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9G
QUlMRUQpOwogCQlyZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9F
UlJPUl9CQURfUlNMOwogCQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJICAgIEdMT0JV
U19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRDsKQEAgLTY5MSw3ICs2OTEsNyBA
QAogCSAgICByYyA9IGdsb2J1c19yc2xfYXNzaXN0X2F0dHJpYnV0ZXNfY2Fub25pY2FsaXplKHJl
cXVlc3QtPnJzbCk7CiAJICAgIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQogCSAgICB7Ci0JCXJl
cXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7Cisg
ICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVz
KHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQlyZXF1
ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9CQURfUlNMOwog
CQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJICAgIEdMT0JVU19HUkFNX0pPQl9NQU5B
R0VSX1NUQVRFX0VBUkxZX0ZBSUxFRDsKQEAgLTg3MSw3ICs4NzEsNyBAQAogCQkgICAgIkZhaWxl
ZCB0byBjcmVhdGUgc2NyYXRjaCBkaXJcbiIpOwogCSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0
YXRlID0KIAkJR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwotCSAg
ICByZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVE
OworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVz
KHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCSAgICBp
ZihyZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPT0gR0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsKIAkJcmVx
dWVzdC0+ZmFpbHVyZV9jb2RlID0KQEAgLTEwNjYsNyArMTA2Niw3IEBACiAJewogCSAgICByZXF1
ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0gCiAJCSAgICBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9T
VEFURV9FQVJMWV9GQUlMRUQ7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IHJjOwogCX0KIAli
cmVhazsKQEAgLTExNzcsNyArMTE3Nyw3IEBACiAJCXsKIAkJICAgIHJlcXVlc3QtPmpvYm1hbmFn
ZXJfc3RhdGUgPSAKIAkJCUdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxF
RDsKLQkJICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFU
RV9GQUlMRUQ7CisgICAgICAgICAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3Jl
cXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVf
RkFJTEVEKTsKIAkJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCQlHTE9CVVNfR1JBTV9Q
Uk9UT0NPTF9FUlJPUl9XUklUSU5HX1NUQVRFX0ZJTEU7CiAJCSAgICBnbG9idXNfZ3JhbV9qb2Jf
bWFuYWdlcl9yZXF1ZXN0X2xvZyggcmVxdWVzdCwKQEAgLTEyNzYsNyArMTI3Niw3IEBACiAKIAlp
ZihnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yc2xfbmVlZF9zdGFnZV9pbihyZXF1ZXN0KSkKIAl7
Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9T
VEFHRV9JTjsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0
X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfU1RBR0VfSU4p
OwogCiAJICAgIGlmKCFyZXF1ZXN0LT5kcnlfcnVuKQogCSAgICB7CkBAIC0xMzM1LDcgKzEzMzUs
NyBAQAogCWlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQogCXsKIAkgICAgcmVxdWVzdC0+ZmFpbHVy
ZV9jb2RlID0gcmM7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09M
X0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9y
ZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRCk7CiAKIAkgICAgaWYoIXJlcXVlc3QtPmRyeV9ydW4pCiAJICAgIHsKQEAgLTEzNjks
NyArMTM2OSw3IEBACiAJCXJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCSAgICBHTE9CVVNfR1JB
TV9QUk9UT0NPTF9FUlJPUl9TVUJNSVRfVU5LTk9XTjsKIAkgICAgfQotICAgICAgICAgICAgcmVx
dWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAg
ICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1
ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKICAgICAgICAgICAg
IHJlcXVlc3QtPnVuc2VudF9zdGF0dXNfY2hhbmdlID0gR0xPQlVTX1RSVUU7CiAJfQogCWdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcG9ydGluZ19maWxlX2NyZWF0ZShyZXF1ZXN0KTsKQEAgLTE0
MTUsNyArMTQxNSw3IEBACiAJICAgIC8qIEpvYiBmaW5pc2hlZCEgc3RhcnQgZmluYWxpemluZyAq
LwogCSAgICBpZihnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yc2xfbmVlZF9zdGFnZV9vdXQocmVx
dWVzdCkpCiAJICAgIHsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xf
Sk9CX1NUQVRFX1NUQUdFX09VVDsKKyAgICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX1NUQUdFX09VVCk7CiAJCWdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX2NvbnRhY3Rfc3Rh
dGVfY2FsbGJhY2socmVxdWVzdCk7CiAJICAgIH0KIAkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9z
dGF0ZSA9CkBAIC0xNDI1LDcgKzE0MjUsNyBAQAogCSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0
YXRlID0gR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RBR0VfT1VUOwogCSAgICBpZihn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yc2xfbmVlZF9zdGFnZV9vdXQocmVxdWVzdCkpCiAJICAg
IHsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX1NU
QUdFX09VVDsKKyAgICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX1NUQUdF
X09VVCk7CiAKIAogCQlyYyA9IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3NjcmlwdF9zdGFnZV9v
dXQocmVxdWVzdCk7CkBAIC0xNzYxLDcgKzE3NjEsNyBAQAogCX0KIAllbHNlCiAJewotCSAgICBy
ZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOwor
ICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJl
cXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCSAgICByZXF1
ZXN0LT5mYWlsdXJlX2NvZGUgPSByYzsKIAogCSAgICBpZihyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0
YXRlID09CkBAIC0xODU2LDcgKzE4NTYsNyBAQAogCSAgICBlbHNlCiAJICAgIHsKIAkJcmVxdWVz
dC0+ZmFpbHVyZV9jb2RlID0gcmM7Ci0JCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9i
X21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09M
X0pPQl9TVEFURV9GQUlMRUQpOwogCiAJCWlmKHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgIT0K
IAkJCUdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRF9GSUxFX0NMRUFO
X1VQKQpAQCAtMTkwOCw3ICsxOTA4LDcgQEAKIAkgICAgfQogCSAgICBlbHNlCiAJICAgIHsKLQkJ
cmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsK
KyAgICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0
dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJl
cXVlc3QtPmZhaWx1cmVfY29kZSA9IHJjOwogCiAJCWlmKHJlcXVlc3QtPmpvYm1hbmFnZXJfc3Rh
dGUgIT0KQEAgLTE5NTAsNyArMTk1MCw3IEBACiAJZWxzZSBpZihyYyAhPSBHTE9CVVNfU1VDQ0VT
UyAmJiByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPT0gMCkKIAl7CiAgICAgICAgICAgICByZXF1ZXN0
LT5mYWlsdXJlX2NvZGUgPSByYzsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1f
UFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9K
T0JfU1RBVEVfRkFJTEVEKTsKIAogCSAgICBpZihyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID09
IAogCQkgICAgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfQ0FDSEVfQ0xFQU5fVVApCkBA
IC0yMDMxLDcgKzIwMzEsNyBAQAogCSAqIFRoaXMgY2FsbGJhY2sgaXMgZGVsYXllZCB1bnRpbCBh
ZnRlciB0aGUgY2xvc2Ugb3V0cHV0IGlzIGNvbXBsZXRlZCwKIAkgKiBzbyB0aGF0IGNsaWVudHMg
d29uJ3QgZXhpdCBiZWZvcmUgdGhlIG91dHB1dCBpcyBzZW50LgogCSAqLwotCXJlcXVlc3QtPnN0
YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgIGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAogCWdsb2J1c19ncmFtX2pvYl9tYW5h
Z2VyX2NvbnRhY3Rfc3RhdGVfY2FsbGJhY2socmVxdWVzdCk7CiAKQEAgLTIxMTgsMjEgKzIxMTgs
MjEgQEAKIAl7CiAJICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQlHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9UV09fUEhBU0VfRU5EOwotCSAgICByZXF1ZXN0LT5zdGF0dXMg
PSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRE9ORTsKKyAgICAgICAgICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JB
TV9QUk9UT0NPTF9KT0JfU1RBVEVfRE9ORSk7CiAJfQogCWVsc2UgaWYocmVxdWVzdC0+am9ibWFu
YWdlcl9zdGF0ZSA9PQogCQlHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRURfQ0xP
U0VfT1VUUFVUKQogCXsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCUdMT0JV
U19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRF9UV09fUEhBU0U7Ci0JICAgIHJlcXVlc3Qt
PnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAg
ICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwg
R0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJfQogCWVsc2UgaWYocmVx
dWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9PQogCQlHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFU
RV9FQVJMWV9GQUlMRURfQ0xPU0VfT1VUUFVUKQogCXsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdl
cl9zdGF0ZSA9IAogCQlHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9FQVJMWV9GQUlMRURf
UFJFX0ZJTEVfQ0xFQU5fVVA7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX0ZBSUxFRCk7CiAJICAgIGJyZWFrOwogCX0KIApAQCAtMjI3OCw3ICsyMjc4LDcgQEAK
IAogCWlmKG1ham9yX3N0YXR1cyAhPSBHU1NfU19DT01QTEVURSkKIAl7Ci0JICAgIHJlcXVlc3Qt
PnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAg
ICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwg
R0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3QtPmpv
Ym1hbmFnZXJfc3RhdGUgPSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRUQ7CiAJ
ICAgIHJjID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfUFJPVE9DT0xfRkFJTEVEOwogCX0K
QEAgLTIyOTAsNyArMjI5MCw3IEBACiAJCSJKTTogY291bGRuJ3Qgc2VuZCBqb2IgY29udGFjdCB0
byBjbGllbnQ6IHJjPSVkICglcylcbiIsCiAJCXJjLAogCQlnbG9idXNfZ3JhbV9wcm90b2NvbF9l
cnJvcl9zdHJpbmcocmMpKTsKLQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NP
TF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1
ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZB
SUxFRCk7CiAJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9IEdMT0JVU19HUkFNX0pPQl9NQU5B
R0VSX1NUQVRFX0ZBSUxFRDsKICAgICB9CiAgICAgZ3NzX2RlbGV0ZV9zZWNfY29udGV4dCgmbWlu
b3Jfc3RhdHVzLApAQCAtMjQ4OSwxNCArMjQ4OSwxNCBAQAogICAgICAgY2FzZSBHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9DTE9TRV9PVVRQVVQ6CiAgICAgICBjYXNlIEdMT0JVU19HUkFN
X0pPQl9NQU5BR0VSX1NUQVRFX1BSRV9DTE9TRV9PVVRQVVQ6CiAgICAgICBjYXNlIEdMT0JVU19H
UkFNX0pPQl9NQU5BR0VSX1NUQVRFX1NUQUdFX09VVDoKLQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9C
VVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRE9ORTsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9i
X21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09M
X0pPQl9TVEFURV9ET05FKTsKIAlyZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JV
U19UUlVFOwogCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPSBHTE9CVVNfR1JBTV9KT0JfTUFO
QUdFUl9TVEFURV9QT0xMMTsKIAljaGFuZ2VkID0gR0xPQlVTX1RSVUU7CiAJYnJlYWs7CiAgICAg
ICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRDoKICAgICAg
IGNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRkFJTEVEOgotCXJlcXVlc3QtPnN0
YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgIGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAlyZXF1ZXN0LT51bnNlbnRfc3RhdHVz
X2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPSBHTE9C
VVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9QT0xMMTsKIAljaGFuZ2VkID0gR0xPQlVTX1RSVUU7
CmRpZmYgLXJ1IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyX3N0YXRlX2ZpbGUuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVz
X2dyYW1fam9iX21hbmFnZXJfc3RhdGVfZmlsZS5jCi0tLSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
ci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zdGF0ZV9maWxlLmMJU2F0IE1hciAy
OSAyMjozMDoxMSAyMDAzCisrKyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXJfc3RhdGVfZmlsZS5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAt
MjY5LDcgKzI2OSw3IEBACiAgICAgewogICAgICAgICBnb3RvIGVycm9yX2V4aXQ7CiAgICAgfQot
ICAgIHJlcXVlc3QtPnN0YXR1cyA9IGF0b2koIGJ1ZmZlciApOworICAgIGdsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBhdG9pKCBidWZmZXIgKSk7CiAg
ICAgaWYgKGZnZXRzKCBidWZmZXIsIHNpemVvZihidWZmZXIpLCBmcCApID09IE5VTEwpCiAgICAg
ewogICAgICAgICBnb3RvIGVycm9yX2V4aXQ7Cg==
</data>        

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>126</attachid>
            <date>2003-05-14 17:21</date>
            <desc>Corrections to scalability improvements</desc>
            <filename>job_manager_fast-2.diff</filename>
            <type>text/plain</type>
            <size>39425</size>
            <attacher>adesmet@cs.wisc.edu</attacher>
            <data encoding="base64">ZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1fam9i
X21hbmFnZXIuaCBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXIuaAotLS0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1f
am9iX21hbmFnZXIuaAlTYXQgTWFyIDI5IDIyOjMwOjExIDIwMDMKKysrIGdsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlci5oCVdlZCBNYXkgMTQgMTc6MTQ6
MjkgMjAwMwpAQCAtMTU4LDExICsxNTgsMjEgQEAKICAgICAgKiBUaGUgc3RhdGUgb2YgdGhlIGpv
Yi4gVGhpcyBjb3JyZXNwb25kcyB0byB0aGUgam9iIHN0YXRlIG1hY2hpbmUKICAgICAgKiBkZXNj
cmliZWQgaW4gdGhlIEdSQU0gZG9jdW1lbnRhdGlvbi4KICAgICAgKgorICAgICAqIFVzZSBnbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMoKSB0byBjaGFuZ2UuCisgICAg
ICoKICAgICAgKiBAdG9kbyBhZGQgbGluayAKICAgICAgKi8gCiAgICAgZ2xvYnVzX2dyYW1fcHJv
dG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzOwogCiAgICAgLyoqCisgICAgICogTGFzdCB0aW1lIHN0
YXR1cyB3YXMgY2hhbmdlZAorICAgICAqCisgICAgICogVGhlIHRpbWUgdGhhdCB0aGUgc3RhdHVz
IG1lbWJlciB3YXMgbGFzdCBjaGFuZ2VkLgorICAgICAqIEF1dG9tYXRpY2FsbHkgc2V0IGJ5IGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cygpLgorICAgICAqLworICAg
IHRpbWVfdCAJCQkJc3RhdHVzX3VwZGF0ZV90aW1lOworCisgICAgLyoqCiAgICAgICogSm9iIEZh
aWx1cmUgUmVhc29uCiAgICAgICoKICAgICAgKiBJZiB0aGUgc3RhdGUgaXMgR0xPQlVTX0dSQU1f
U1RBVEVfRkFJTEVELCB0aGVuIHRoaXMKQEAgLTM5NCw2ICs0MDQsMTcgQEAKIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3JlcXVlc3RfZGVzdHJveSgKICAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2Vy
X3JlcXVlc3RfdCAqCXJlcXVlc3QpOwogCitpbnQKK2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3Jl
cXVlc3Rfc2V0X3N0YXR1cygKKyAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2VyX3JlcXVlc3RfdCAq
CXJlcXVlc3QsCisgICAgZ2xvYnVzX2dyYW1fcHJvdG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzKTsK
KworaW50CitnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXNfdGltZSgK
KyAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2VyX3JlcXVlc3RfdCAqCXJlcXVlc3QsCisgICAgZ2xv
YnVzX2dyYW1fcHJvdG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzLAorCXRpbWVfdCB2YWxpZF90aW1l
KTsKKwogdm9pZAogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9vcGVuX2xvZ2ZpbGUo
CiAgICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LApAQCAtNTE4
LDYgKzUzOSwxMyBAQAogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X3JlYWRfc3RhdGUo
CiAgICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LAogICAgIEZJ
TEUgKgkJCQlmcCk7CisKK2ludAorZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9z
aXplKAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICoJcmVxdWVzdCwKKyAg
ICBjb25zdCBjaGFyICoJCQl0eXBlLAorICAgIGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAg
ICAgICAgIHNpemUKKyAgICApOwogCiBpbnQKIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1
dF9jaGVja19zaXplKApkaWZmIC1ydSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkub3JpZy9n
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9nc2kuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkv
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXJfZ3NpLmMKLS0tIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2Vy
LTMuOS5vcmlnL2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX2dzaS5jCVNhdCBNYXIgMjkgMjI6MzA6
MTEgMjAwMworKysgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45L2dsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX2dzaS5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAtMTg5LDcgKzE4OSw4IEBA
CiAgICAgewogCWlmICgoaW50KSBsaWZldGltZSAtIHJlcXVlc3QtPnByb3h5X3RpbWVvdXQgPD0g
MCkKIAl7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X3NldF9zdGF0dXMocmVxdWVzdCwgCisgICAgICAgICAgICAgICAgR0xPQlVTX0dSQU1fUFJPVE9D
T0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCUdM
T0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX1VTRVJfUFJPWFlfRVhQSVJFRDsKIAkgICAgcmMgPSBH
TE9CVVNfRkFJTFVSRTsKZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcv
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0LmMgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXIt
My45L2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1dC5jCi0tLSBnbG9idXNfZ3JhbV9qb2Jf
bWFuYWdlci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXQuYwlTYXQgTWFy
IDI5IDIyOjMwOjExIDIwMDMKKysrIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNf
Z3JhbV9qb2JfbWFuYWdlcl9vdXRwdXQuYwlNb24gTWFyIDMxIDExOjQ2OjM2IDIwMDMKQEAgLTc2
NSw2ICs3NjUsNDQgQEAKIC8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX291dHB1dF9nZXRfY2Fj
aGVfbmFtZSgpICovIAogCiAvKioKKyAqIEdldCBzaXplIG9mIHN0YW5kYXJkIG91dAorICoKKyAq
IEBwYXJhbSByZXF1ZXN0CisgKiAgICAgICAgUmVxdWVzdCB0aGF0IHdlIGFyZSBjaGVja2luZyB0
aGUgc2l6ZSBvZiB0aGUgb3V0cHV0IGZpbGUgb2YuCisgKiBAcGFyYW0gdHlwZQorICogICAgICAg
IE11c3QgYmUgZWl0aGVyICJzdGRvdXQiIG9yICJzdGRlcnIiLgorICogQHBhcmFtIHNpemUKKyAq
ICAgICAgICBQb2ludGVyIHRvIG1lbW9yeSB0byBob2xkIHJlc3VsdC4KKyAqCisgKiBAcmV0dmFs
IEdMT0JVU19TVUNDRVNTIChvciBHTE9CVVNfRkFJTFVSRSBpZiB5b3UgcGFzcyBpbiBib2d1cyBh
cmd1bWVudHMpCisgKi8KK2ludAorZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9z
aXplKAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICoJcmVxdWVzdCwKKyAg
ICBjb25zdCBjaGFyICoJCQl0eXBlLAorICAgIGdsb2J1c19vZmZfdCAqICAgICAgICAgICAgICAg
ICAgICAgIHNpemUKKyAgICApCit7CisgICAgaWYoIXNpemUgfHwgIXJlcXVlc3QgfHwgIXJlcXVl
c3QtPm91dHB1dCkgeworICAgICAgICByZXR1cm4gR0xPQlVTX0ZBSUxVUkU7CisgICAgfQorCisg
ICAgaWYoc3RyY21wKHR5cGUsICJzdGRvdXQiKSA9PSAwKQorICAgIHsKKyAgICAgICAgKnNpemUg
PSByZXF1ZXN0LT5vdXRwdXQtPnN0ZG91dF9zaXplOworICAgICAgICByZXR1cm4gR0xPQlVTX1NV
Q0NFU1M7CisgICAgfQorICAgIGVsc2UgaWYoc3RyY21wKHR5cGUsICJzdGRlcnIiKSA9PSAwKQor
ICAgIHsKKyAgICAgICAgKnNpemUgPSByZXF1ZXN0LT5vdXRwdXQtPnN0ZGVycl9zaXplOworICAg
ICAgICByZXR1cm4gR0xPQlVTX1NVQ0NFU1M7CisgICAgfQorCisgICAgcmV0dXJuIEdMT0JVU19G
QUlMVVJFOworfQorLyogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfb3V0cHV0X2dldF9zaXplKCkg
Ki8KKworLyoqCiAgKiBDaGVjayBzaXplIG9mIG91dHB1dCBmaWxlcwogICoKICAqIFZlcmlmaWVz
IHRoYXQgdGhlIHNpemUgb2YgdGhlIHN0ZG91dCBvciBzdGRlcnIgZmlsZSBpcyBleGFjdGx5IEBh
IHNpemUKZGlmZiAtcnUgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXJfcXVlcnkuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVz
X2dyYW1fam9iX21hbmFnZXJfcXVlcnkuYwotLS0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45
Lm9yaWcvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcXVlcnkuYwlTYXQgTWFyIDI5IDIyOjMwOjEx
IDIwMDMKKysrIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9xdWVyeS5jCU1vbiBNYXIgMzEgMTE6NDY6MzYgMjAwMwpAQCAtMzE5LDcgKzMxOSw3IEBA
CiAgICAgICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX1BST1hZX1JFTE9DQVRF
OgogICAgICAgICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUKICAgICAgICAgICAgICAgICAg
ID0gR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwotICAgICAgICAg
IHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7
CisgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJl
cXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogICAgICAgICAg
IHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX1VTRVJf
Q0FOQ0VMTEVEOwogCiAgICAgICAgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOwpAQCAtMzI3LDcg
KzMyNyw3IEBACiAgICAgICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX1RXT19Q
SEFTRToKICAgICAgICAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlCiAgICAgICAgICAgICAg
ICAgICA9IEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRDsKLSAgICAgICAgICBy
ZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOwor
ICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1
ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKICAgICAgICAgICBy
ZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9VU0VSX0NB
TkNFTExFRDsKICAgICAgICAgICByZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JV
U19UUlVFOwogICAgICAgICAgIGlmKHJlcXVlc3QtPnBvbGxfdGltZXIgIT0gR0xPQlVTX0hBTkRM
RV9UQUJMRV9OT19IQU5ETEUpCkBAIC0zNTQsNyArMzU0LDcgQEAKICAgICAgIGNhc2UgR0xPQlVT
X0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RBR0VfSU46CiAgICAgICAgICAgcmVxdWVzdC0+am9i
bWFuYWdlcl9zdGF0ZQogICAgICAgICAgICAgICAgICAgPSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdF
Ul9TVEFURV9GQUlMRUQ7Ci0gICAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1f
UFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX0ZBSUxFRCk7CiAgICAgICAgICAgcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0gR0xPQlVT
X0dSQU1fUFJPVE9DT0xfRVJST1JfVVNFUl9DQU5DRUxMRUQ7CiAgICAgICAgICAgcmVxdWVzdC0+
dW5zZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsKIApAQCAtNzEwLDYgKzcxMCwzMyBA
QAogCQkgICAgICAgIiUiR0xPQlVTX09GRl9UX0ZPUk1BVCIgJSJHTE9CVVNfT0ZGX1RfRk9STUFU
LAogCQkgICAgICAgJm91dF9zaXplLCAmZXJyX3NpemUpID4gMCkKIAl7CisJICAgIGlmKCAhIHJl
cXVlc3QgfHwgIShyZXF1ZXN0LT5vdXRwdXQpICkgeworICAgICAgICAgICAgICAgIGdsb2J1c19n
cmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKAorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LAorICAgICAgICAgICAgICAgICAgICAiSk06ICoqKioqIFNURElPX1NJWkUgcmVxdWVzdC4gIgor
ICAgICAgICAgICAgICAgICAgICAiQk9HVVMgUkVRVUVTVCBPQkpFQ1QhXG4iKTsKKwkgICAgfQor
CSAgICBlbHNlIAorCSAgICB7CisgICAgICAgICAgICAgICAgZ2xvYnVzX29mZl90IGxvY2FsX3Np
emVfc3Rkb3V0ID0gMDsKKyAgICAgICAgICAgICAgICBnbG9idXNfb2ZmX3QgbG9jYWxfc2l6ZV9z
dGRlcnIgPSAwOworICAgICAgICAgICAgICAgIGludCByY19vdXQsIHJjX2VycjsKKyAgICAgICAg
ICAgICAgICByY19vdXQgPSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXRfZ2V0X3NpemUo
cmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdGRvdXQiLCAmbG9jYWxfc2l6ZV9z
dGRvdXQpOworICAgICAgICAgICAgICAgIHJjX2VyciA9IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2Vy
X291dHB1dF9nZXRfc2l6ZShyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVy
ciIsICZsb2NhbF9zaXplX3N0ZGVycik7CisgICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9i
X21hbmFnZXJfcmVxdWVzdF9sb2coCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsCisgICAg
ICAgICAgICAgICAgICAgICJKTTogU1RESU9fU0laRSByZXF1ZXN0LiAiCisgICAgICAgICAgICAg
ICAgICAgICJzdGRvdXQ6IHJlbW90ZSAlZCwgbG9jYWwgJWQlcywgJXMuIgorICAgICAgICAgICAg
ICAgICAgICAic3RkZXJyOiByZW1vdGUgJWQsIGxvY2FsICVkJXMsICVzLlxuIiwKKyAgICAgICAg
ICAgICAgICAgICAgKGludCkob3V0X3NpemUpLCAoaW50KWxvY2FsX3NpemVfc3Rkb3V0LAorICAg
ICAgICAgICAgICAgICAgICAocmNfb3V0ID09IEdMT0JVU19TVUNDRVNTKSA/ICIiIDogIiBlcnJv
ciBxdWVyeWluZyBsb2NhbCB2YWx1ZSIsCisgICAgICAgICAgICAgICAgICAgIChvdXRfc2l6ZSA9
PSBsb2NhbF9zaXplX3N0ZG91dCk/Im9rIjoiRVJST1IiLAorICAgICAgICAgICAgICAgICAgICAo
aW50KShlcnJfc2l6ZSksIChpbnQpbG9jYWxfc2l6ZV9zdGRlcnIsCisgICAgICAgICAgICAgICAg
ICAgIChyY19lcnIgPT0gR0xPQlVTX1NVQ0NFU1MpID8gIiIgOiAiIGVycm9yIHF1ZXJ5aW5nIGxv
Y2FsIHZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgKGVycl9zaXplID09IGxvY2FsX3NpemVf
c3RkZXJyKT8ib2siOiJFUlJPUiIpOworCSAgICB9CiAJICAgIGlmKG91dF9zaXplID49IDApCiAJ
ICAgIHsKIAkJcmMgPSBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9vdXRwdXRfY2hlY2tfc2l6ZSgK
QEAgLTgwNCw3ICs4MzEsNyBAQAogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVf
U1RESU9fVVBEQVRFX0NMT1NFOgogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVf
U1RESU9fVVBEQVRFX09QRU46CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9T
VE9QOgotCSAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRDsKKyAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9z
dGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJ
ICByZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCSAgcmVxdWVz
dC0+ZmFpbHVyZV9jb2RlID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfSk1fU1RPUFBFRDsK
IAkgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9T
VEFURV9TVE9QOwpAQCAtODEyLDE0ICs4MzksMTQgQEAKIAljYXNlIEdMT0JVU19HUkFNX0pPQl9N
QU5BR0VSX1NUQVRFX1BSRV9DTE9TRV9PVVRQVVQ6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFO
QUdFUl9TVEFURV9DTE9TRV9PVVRQVVQ6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9T
VEFURV9TVE9QX0NMT1NFX09VVFBVVDoKLQkgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFN
X1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pP
Ql9TVEFURV9GQUlMRUQpOwogCSAgcmVxdWVzdC0+dW5zZW50X3N0YXR1c19jaGFuZ2UgPSBHTE9C
VVNfVFJVRTsKIAkgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9IEdMT0JVU19HUkFNX1BST1RPQ09M
X0VSUk9SX0pNX1NUT1BQRUQ7CiAJICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkgICAg
ICBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9TVE9QX0NMT1NFX09VVFBVVDsKIAkgIGJy
ZWFrOwogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfU1RBR0VfT1VUOgotCSAg
cmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsK
KyAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVx
dWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICByZXF1ZXN0
LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCSAgcmVxdWVzdC0+ZmFpbHVy
ZV9jb2RlID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfSk1fU1RPUFBFRDsKIAkgIHJlcXVl
c3QtPmpvYm1hbmFnZXJfc3RhdGUgPQpAQCAtODMwLDcgKzg1Nyw3IEBACiAJY2FzZSBHTE9CVVNf
R1JBTV9KT0JfTUFOQUdFUl9TVEFURV9TVE9QX0RPTkU6CiAJY2FzZSBHTE9CVVNfR1JBTV9KT0Jf
TUFOQUdFUl9TVEFURV9GQUlMRURfVFdPX1BIQVNFOgogCWNhc2UgR0xPQlVTX0dSQU1fSk9CX01B
TkFHRVJfU1RBVEVfRkFJTEVEX1RXT19QSEFTRV9DT01NSVRURUQ6Ci0JICByZXF1ZXN0LT5zdGF0
dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAgIGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgIHJlcXVlc3QtPnVuc2VudF9zdGF0
dXNfY2hhbmdlID0gR0xPQlVTX1RSVUU7CiAJICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSBHTE9C
VVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9KTV9TVE9QUEVEOwogCSAgcmVxdWVzdC0+am9ibWFuYWdl
cl9zdGF0ZSA9CmRpZmYgLXJ1IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3QuYyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkv
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdC5jCi0tLSBnbG9idXNfZ3JhbV9qb2JfbWFu
YWdlci0zLjkub3JpZy9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0LmMJU2F0IE1hciAy
OSAyMjozMDoxMSAyMDAzCisrKyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXJfcmVxdWVzdC5jCVdlZCBNYXkgMTQgMTc6MTQ6MzkgMjAwMwpAQCAtNTUs
NiArNTUsNyBAQAogICAgIHItPmNvbmRvcl9vcyA9IE5VTEw7CiAgICAgci0+Y29uZG9yX2FyY2gg
PSBOVUxMOwogICAgIHItPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9V
TlNVQk1JVFRFRDsKKwlyLT5zdGF0dXNfdXBkYXRlX3RpbWUgPSAwOwogICAgIHItPnVybF9iYXNl
ID0gR0xPQlVTX05VTEw7CiAgICAgci0+am9iX2NvbnRhY3QgPSBHTE9CVVNfTlVMTDsKICAgICBy
LT5qb2JfY29udGFjdF9wYXRoID0gR0xPQlVTX05VTEw7CkBAIC0xNDEsNiArMTQyLDY3IEBACiAK
IH0KIC8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfZGVzdHJveSgpICovCisKKy8q
KgorICogQ2hhbmdlIHRoZSBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIGEgam9iIHJlcXVlc3QKKyAq
CisgKiBDaGFuZ2VzIHRoZSBzdGF0dXMgYXNzb2NpYXRlZCB3aXRoIGEgam9iIHJlcXVlc3QuCisg
KiBUaGVyZSBpcyBub3cgYWRkaXRpb25hbCB0cmFja2luZyBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0
aGUKKyAqIHN0YXR1cyB0aGF0IG11c3QgYmUgdXBkYXRlZCB3aGVuIHRoZSBzdGF0dXMgaXMuICBU
aGlzIGZ1bmN0aW9uCisgKiBoYW5kbGVzIG1hbmFnaW5nIGl0LiAgSXQgaXMgTk9UIHJlY29tbWVu
ZGVkIHRoYXQgeW91IGRpcmVjdGx5CisgKiBjaGFuZ2UgdGhlIHN0YXR1cy4KKyAqCisgKiBAcGFy
YW0gcmVxdWVzdAorICogICAgICAgIEpvYiByZXF1ZXN0IHRvIGNoYW5nZSBzdGF0dXMgb2YuCisg
KiBAcGFyYW0gc3RhdHVzCisgKiAgICAgICAgU3RhdHVzIHRvIHNldCB0aGUgam9iIHJlcXVlc3Qg
dG8uCisgKgorICogQHJldHVybiBHTE9CVVNfU1VDQ0VTUyBhc3N1bWluZyB2YWxpZCBpbnB1dC4K
KyAqICAgICAgICAgSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgcmV0dXJucyBHTE9CVVNfRkFJTFVS
RS4KKyAqLworaW50CitnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMo
CisgICAgZ2xvYnVzX2dyYW1fam9ibWFuYWdlcl9yZXF1ZXN0X3QgKglyZXF1ZXN0LAorICAgIGds
b2J1c19ncmFtX3Byb3RvY29sX2pvYl9zdGF0ZV90CXN0YXR1cykKK3sKKyAgICByZXR1cm4gZ2xv
YnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzX3RpbWUocmVxdWVzdCwgc3Rh
dHVzLAorCQl0aW1lKDApKTsKK30KKy8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rf
c2V0X3N0YXR1cygpICovCisKKworLyoqCisgKiBDaGFuZ2UgdGhlIHN0YXR1cyBhc3NvY2lhdGVk
IHdpdGggYSBqb2IgcmVxdWVzdAorICoKKyAqIENoYW5nZXMgdGhlIHN0YXR1cyBhc3NvY2lhdGVk
IHdpdGggYSBqb2IgcmVxdWVzdC4KKyAqIFRoZXJlIGlzIG5vdyBhZGRpdGlvbmFsIHRyYWNraW5n
IGRhdGEgYXNzb2NpYXRlZCB3aXRoIHRoZQorICogc3RhdHVzIHRoYXQgbXVzdCBiZSB1cGRhdGVk
IHdoZW4gdGhlIHN0YXR1cyBpcy4gIFRoaXMgZnVuY3Rpb24KKyAqIGhhbmRsZXMgbWFuYWdpbmcg
aXQuICBJdCBpcyBOT1QgcmVjb21tZW5kZWQgdGhhdCB5b3UgZGlyZWN0bHkKKyAqIGNoYW5nZSB0
aGUgc3RhdHVzLgorICoKKyAqIEBwYXJhbSByZXF1ZXN0CisgKiAgICAgICAgSm9iIHJlcXVlc3Qg
dG8gY2hhbmdlIHN0YXR1cyBvZi4KKyAqIEBwYXJhbSBzdGF0dXMKKyAqICAgICAgICBTdGF0dXMg
dG8gc2V0IHRoZSBqb2IgcmVxdWVzdCB0by4KKyAqIEBwYXJhbSB2YWxpZF90aW1lCisgKiAgICAg
ICAgVGhlIHN0YXR1cyBpcyBrbm93biBnb29kIGFzIG9mIHRoaXMgdGltZSAoc2Vjb25kcyBzaW5j
ZSBlcG9jaCkgCisgKgorICogQHJldHVybiBHTE9CVVNfU1VDQ0VTUyBhc3N1bWluZyB2YWxpZCBp
bnB1dC4KKyAqICAgICAgICAgSWYgdGhlIHJlcXVlc3QgaXMgbnVsbCwgcmV0dXJucyBHTE9CVVNf
RkFJTFVSRS4KKyAqLworaW50CitnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9z
dGF0dXNfdGltZSgKKyAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2VyX3JlcXVlc3RfdCAqCXJlcXVl
c3QsCisgICAgZ2xvYnVzX2dyYW1fcHJvdG9jb2xfam9iX3N0YXRlX3QJc3RhdHVzLAorICAgIHRp
bWVfdCB2YWxpZF90aW1lKQoreworICAgIGlmKCAhIHJlcXVlc3QgKQorICAgICAgICByZXR1cm4g
R0xPQlVTX0ZBSUxVUkU7CisgICAgcmVxdWVzdC0+c3RhdHVzID0gc3RhdHVzOworICAgIHJlcXVl
c3QtPnN0YXR1c191cGRhdGVfdGltZSA9IHZhbGlkX3RpbWU7CisgICAgcmV0dXJuIEdMT0JVU19T
VUNDRVNTOworfQorLyogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVz
KCkgKi8KIAogZXh0ZXJuCiB2b2lkCmRpZmYgLXJ1IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMu
OS5vcmlnL2dsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3NjcmlwdC5jIGdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9zY3JpcHQuYwotLS0gZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2NyaXB0LmMJ
U2F0IE1hciAyOSAyMjozMDoxMSAyMDAzCisrKyBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkv
Z2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2NyaXB0LmMJTW9uIE1heSAxMiAxNzo0Mzo1NyAyMDAz
CkBAIC00NTcsNiArNDU3LDMxNyBAQAogfQogLyogZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2Ny
aXB0X3N1Ym1pdCgpICovCiAKKworCisvKioKKyAqIFNldCBqb2IgcmVxdWVzdCBzdGF0dXMgYW5k
IGZpcmUgY2FsbGJhY2sgc28gaXQgcmVnaXN0ZXJzCisgKgorICogQXZvaWRzIGFjdHVhbGx5IGxv
Y2tpbmcgcmVxdWVzdCBpZiBwb3NzaWJsZS4KKyAqLworc3RhdGljCitpbnQKK2xvY2FsX2dsb2J1
c19zZXRfc3RhdHVzKAorICAgIGdsb2J1c19ncmFtX2pvYm1hbmFnZXJfcmVxdWVzdF90ICogICAg
cmVxdWVzdCwKKyAgICBnbG9idXNfZ3JhbV9wcm90b2NvbF9qb2Jfc3RhdGVfdCAgICAgIHN0YXR1
cykKK3sKKyAgICBpZiggISByZXF1ZXN0ICkKKyAgICAgICAgcmV0dXJuIEdMT0JVU19GQUlMVVJF
OworCisgICAgaWYocmVxdWVzdC0+c3RhdHVzICE9IHN0YXR1cykKKyAgICB7CisgICAgICAgIGds
b2J1c19tdXRleF9sb2NrKCZyZXF1ZXN0LT5tdXRleCk7CisgICAgICAgIGdsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBzdGF0dXMpOworICAgICAgICBy
ZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOworICAgICAgICBnbG9i
dXNfbXV0ZXhfdW5sb2NrKCZyZXF1ZXN0LT5tdXRleCk7CisgICAgfQorCisgICAgeworICAgIC8q
IEdsb2J1cyBleHBlY3RzIHRoZSBjYWxsYmFjayB0byBmaXJlLiBGb3JjZSBpdCB0bworICAgICAq
IHJ1biBpbnN0YW50bHkuICovCisgICAgICAgIGdsb2J1c19yZWx0aW1lX3QgZGVsYXk7CisgICAg
ICAgIEdsb2J1c1RpbWVSZWx0aW1lU2V0KGRlbGF5LCAwLCAwKTsKKyAgICAgICAgZ2xvYnVzX2Nh
bGxiYWNrX3JlZ2lzdGVyX29uZXNob3QoCisgICAgICAgICAgICAmcmVxdWVzdC0+cG9sbF90aW1l
ciwKKyAgICAgICAgICAgICZkZWxheSwKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5h
Z2VyX3N0YXRlX21hY2hpbmVfY2FsbGJhY2ssCisgICAgICAgICAgICByZXF1ZXN0KTsKKyAgICB9
CisgICAgcmV0dXJuIEdMT0JVU19TVUNDRVNTOworfQorLyogbG9jYWxfZ2xvYnVzX3NldF9zdGF0
dXMoKSAqLworCisKKy8qKgorICogTW9kaWZpZWQgam9iX2NvbnRhY3QgaW4gcGxhY2UgdG8gcmVt
b3ZlIHRoZSBwb3J0LgorICovCitzdGF0aWMgdm9pZCBqb2JfY29udGFjdF9zdHJpcF9wb3J0KAor
ICAgIGNoYXIgKiBqb2JfY29udGFjdCkKK3sKKyAgICBjaGFyICogZmlyc3RfZW5kOworICAgIGNo
YXIgKiBzZWNvbmRfYmVnaW47CisKKyAgICBpZiggam9iX2NvbnRhY3QgPT0gMCApCisgICAgICAg
IHJldHVybjsKKworICAgIGZpcnN0X2VuZCA9IHN0cnJjaHIoIGpvYl9jb250YWN0LCAnOicgKTsK
KyAgICBpZiggZmlyc3RfZW5kID09IDAgKSAvKiBtYWxmb3JtZWQgam9iX2NvbnRhY3Q/ICovCisg
ICAgICAgIHJldHVybjsKKworICAgIHNlY29uZF9iZWdpbiA9IHN0cmNociggZmlyc3RfZW5kLCAn
LycgKTsKKyAgICBpZiggc2Vjb25kX2JlZ2luID09IDAgKSAvKiBtYWxmb3JtZWQgam9iX2NvbnRh
Y3Q/ICovCisgICAgICAgIHJldHVybjsKKworICAgIG1lbW1vdmUoZmlyc3RfZW5kLCBzZWNvbmRf
YmVnaW4sIHN0cmxlbihzZWNvbmRfYmVnaW4pICsgMSk7Cit9CisKKworCisvKioKKyAqIFRyeSB0
byBwb2xsIHN0YXR1cyBvZiBqb2IgcmVxdWVzdCB1c2luZyBDb25kb3IgZ3JpZF9tYW5hZ2VyX21v
bml0b3JfYWdlbnQKKyAqCisgKiBJZiB0aGUgQ29uZG9yIGdyaWRfbWFuYWdlcl9tb25pdG9yX2Fn
ZW50IGlzIHJ1bm5pbmcgb24gdGhlIG1hY2hpbmUsIHRoaXMKKyAqIGZ1bmN0aW9uIHJldHJpZXZl
IGpvYiByZXF1ZXN0IHN0YXR1cyB1c2luZyB0aGF0LCBvdGhlcndpc2UgaXQgZmFpbHMuIAorICog
RXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGV4Y2x1c2l2ZWx5IGZyb20gZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfc2NyaXB0X3BvbGwuCisgKi8KK2ludAorZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2Ny
aXB0X3BvbGxfZmFzdCgKKyAgICBnbG9idXNfZ3JhbV9qb2JtYW5hZ2VyX3JlcXVlc3RfdCAqICAg
IHJlcXVlc3QpCit7CisgICAgY2hhciAqIGdyaWRfbW9uaXRvcl9vdXRwdXQgPSAwOworICAgICAg
ICAgICAgICAgIC8qIFBhdGggaXMgJEdMT0JVU19MT0NBVElPTi9HUklEX01PTklUT1JfTE9DQVRJ
T04kVUlEICovCisgICAgY2hhciAqIEdSSURfTU9OSVRPUl9MT0NBVElPTiA9ICIvdG1wL2dyaWRf
bWFuYWdlcl9tb25pdG9yX2FnZW50X2xvZy4iOyAKKyAgICBjb25zdCBjaGFyICogV0hJVEVTUEFD
RSA9ICIgXHQiOworICAgIHVpZF90IHRoaXNfdWlkID0gZ2V0ZXVpZCgpOworICAgIHN0cnVjdCBz
dGF0IHN0YXRfcmVzdWx0czsKKyAgICBGSUxFICogZ3JpZF9tb25pdG9yX2ZpbGUgPSAwOworICAg
IGludCByYzsKKyAgICB0aW1lX3QgTUFYX01PTklUT1JfRklMRV9BR0UgPSAoNjAqNSk7IC8qIHNl
Y29uZHMgKi8KKyAgICBjaGFyIGxpbmVbMTAyNF07CisgICAgY2hhciBsaW5lX2pvYl9jb250YWN0
WzEwMjRdOworICAgIGludCByZXR1cm5fdmFsID0gR0xPQlVTX0ZBSUxVUkU7CisgICAgdGltZV90
IHN0YXR1c19maWxlX2xhc3RfdXBkYXRlID0gMDsKKyAgICBjb25zdCBpbnQgREVCVUdfRkFTVF9Q
T0xMID0gMDsgLyogU2V0IHRvIDEgZm9yIGV4dHJhIGxvZyBpbmZvICovCisgICAgY2hhciAqIGpv
Yl9jb250YWN0X21hdGNoID0gMDsKKworICAgIGlmKCAhIHJlcXVlc3QgfHwgISByZXF1ZXN0LT5n
bG9idXNfbG9jYXRpb24gfHwgISByZXF1ZXN0LT5qb2JfY29udGFjdCkKKyAgICAgICAgZ290byBG
QVNUX1BPTExfRVhJVF9GQUlMVVJFOworCisgICAgaWYodGhpc191aWQgPiA5OTk5OTkpCisgICAg
eworICAgIC8qIFVJRHMgdGhpcyBsYXJnZSBhcmUgdW5saWtlbHksIGJ1dCBpZiB0aGV5IG9jY3Vy
IHRoZSBidWZmZXIKKyAgICAgKiBpc24ndCBsYXJnZSBlbm91Z2ggdG8gaGFuZGxlIGl0CisgICAg
ICovCisgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAgICBn
cmlkX21vbml0b3Jfb3V0cHV0ID0gZ2xvYnVzX2xpYmNfbWFsbG9jKAorICAgICAgICBzdHJsZW4o
cmVxdWVzdC0+Z2xvYnVzX2xvY2F0aW9uKSArIAorICAgICAgICBzdHJsZW4oR1JJRF9NT05JVE9S
X0xPQ0FUSU9OKSArIDEwKTsKKyAgICBpZiggISBncmlkX21vbml0b3Jfb3V0cHV0KQorICAgICAg
ICBnb3RvIEZBU1RfUE9MTF9FWElUX0ZBSUxVUkU7CisKKyAgICBzcHJpbnRmKGdyaWRfbW9uaXRv
cl9vdXRwdXQsICIlcyVzJWQiLAorICAgICAgICByZXF1ZXN0LT5nbG9idXNfbG9jYXRpb24sCisg
ICAgICAgIEdSSURfTU9OSVRPUl9MT0NBVElPTiwKKyAgICAgICAgKGludCl0aGlzX3VpZCk7CisK
KyAgICBncmlkX21vbml0b3JfZmlsZSA9IGZvcGVuKGdyaWRfbW9uaXRvcl9vdXRwdXQsICJyIik7
CisKKyAgICBpZiggISBncmlkX21vbml0b3JfZmlsZSApCisgICAgeworICAgIC8qIE5vIG1vbml0
b3IgZmlsZT8gIFRoYXQncyBhY2NlcHRhYmxlLCBzaWxlbnRseSBmYWlsICovCisgICAgICAgIGdv
dG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAgICByYyA9IHN0YXQoZ3JpZF9t
b25pdG9yX291dHB1dCwgJnN0YXRfcmVzdWx0cyk7CisKKyAgICAKKyAgICBpZiggcmMgIT0gMCAp
CisgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKworICAgIGlmKHN0YXRfcmVz
dWx0cy5zdF91aWQgIT0gdGhpc191aWQgfHwKKyAgICAgICAgIVNfSVNSRUcoc3RhdF9yZXN1bHRz
LnN0X21vZGUpCisgICAgLyogVE9ETzogdGVzdCBmb3Igd29ybGQgd3JpdGFibGUgKGJhZCk/ICBJ
cyBzdWNoIGEgdGVzdCBsb2dpY2FsIG9uIEFGUz8gKi8KKyAgICApCisgICAgeworICAgICAgICBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAg
IkpNSTogcG9sbF9mYXN0OiBNb25pdG9yaW5nIGZpbGUgbG9va3MgdW50cnVzdHdvcnRoeS4gICIK
KyAgICAgICAgICAgICJSZXZlcnRpbmcgdG8gbm9ybWFsIHBvbGxpbmdcbiIpOworICAgICAgICBn
b3RvIEZBU1RfUE9MTF9FWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgaWYoIChzdGF0X3Jlc3Vs
dHMuc3RfbXRpbWUgKyBNQVhfTU9OSVRPUl9GSUxFX0FHRSkgPCB0aW1lKE5VTEwpICkKKyAgICB7
CisgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisg
ICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6IE1vbml0b3JpbmcgZmlsZSBsb29rcyBvdXQgb2Yg
ZGF0ZS4gICIKKyAgICAgICAgICAgICJSZXZlcnRpbmcgdG8gbm9ybWFsIHBvbGxpbmdcbiIpOwor
ICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUX0ZBSUxVUkU7CisgICAgfQorCisgICAgLyogSWYg
d2UgZ290IHRoaXMgZmFyLCB3ZSd2ZSBkZWNpZGVkIHdlIHRydXN0IHRoZSBmaWxlICovCisKKyAg
ICAvKiBSZWFkIHRoZSBmaXJzdCBsaW5lLCB3aGljaCBpcyB0d28gdGltZXN0YW1wcyBhcyBzZWNv
bmRzIHNpbmNlIGVwb2NoLgorICAgICAqIFRoZSBmaXJzdCBvbmUgaXMgc3RhcnQgdGltZSBvZiBs
YXN0IHF1ZXJ5IHBhc3MsIHRoZSBzZWNvbmQgaXMgZmluaXNoLiAqLworICAgIGlmKCAhIGZnZXRz
KGxpbmUsIHNpemVvZihsaW5lKSwgZ3JpZF9tb25pdG9yX2ZpbGUpICkKKyAgICB7CisgICAgICAg
IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisgICAgICAgICAg
ICAiSk1JOiBwb2xsX2Zhc3Q6IEpvYiBzdGF0ZSBmaWxlICVzIG1hbGZvcm1lZCwgbWlzc2luZyBm
aXJzdCBsaW5lXG4iLAorICAgICAgICAgICAgZ3JpZF9tb25pdG9yX291dHB1dCk7CisgICAgICAg
IGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAgICB9CisgICAgaWYoICEgZmVvZihncmlk
X21vbml0b3JfZmlsZSkgJiYgbGluZVtzdHJsZW4obGluZSkgLSAxXSAhPSAnXG4nKQorICAgIHsK
KyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwKKyAg
ICAgICAgICAgICJKTUk6IHBvbGxfZmFzdDogSm9iIHN0YXRlIGZpbGUgJXMgbWFsZm9ybWVkLCBm
aXJzdCBsaW5lIHRvbyBsb25nXG4iLAorICAgICAgICAgICAgZ3JpZF9tb25pdG9yX291dHB1dCk7
CisgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAgICB9CisKKyAgICBzdGF0
dXNfZmlsZV9sYXN0X3VwZGF0ZSA9IGF0b2kobGluZSk7CisgICAgaWYoc3RhdHVzX2ZpbGVfbGFz
dF91cGRhdGUgPCByZXF1ZXN0LT5zdGF0dXNfdXBkYXRlX3RpbWUpIHsKKyAgICAgICAgLyogV2Ug
c29tZWhvdyBnb3QgYSBzdGF0dXMgdXBkYXRlIG1vcmUgcmVjZW50IHRoYW4gdGhlIHN0YXR1cyBm
aWxlLgorICAgICAgICAgKiBNb3N0IGxpa2VseSB3ZSBzdWNjZXNzZnVsbHkgZXhlY3V0ZWQgYSB0
cmFkaXRpb25hbCBwb2xsIGZhc3RlciB0aGFuCisgICAgICAgICAqIHRoZSBzdGF0dXMgc2NyaXB0
IHByb2Nlc3NlZCB0aGluZ3MuICBUaGlzIHN0YXR1cyBmaWxlIGlzIGZyZXNoCisgICAgICAgICAq
IGVub3VnaCwgc28gd2Ugc2hvdWxkIHN3aXRjaCBvdmVyIHRvIHVzaW5nIHRoYXQsIHdlIHdhbnQg
dG8gYXZvaWQKKyAgICAgICAgICogZmlyaW5nIG9mZiBhIHRyYWRpdGlvbmFsIHBvbGwuICBTbywg
bGVhdmUgdGhlIGV4aXN0aW5nIHN0YXR1cyBpbgorICAgICAgICAgKiBwbGFjZSBhbmQgcmVwb3J0
IGEgc3VjY2Vzc2Z1bCBwb2xsLiAqLworICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9y
ZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAgIkpNSTogcG9sbF9mYXN0OiAqKioqIEpv
YiBzdGF0ZSBmaWxlICVzIG9sZGVyIHRoYW4gbXkgbGFzdCAiCisgICAgICAgICAgICAia25vd24g
c3RhdHVzLiAgVXNpbmcgbGFzdCBrbm93biBzdGF0dXMuICglZCA8ICVkKVxuIiwKKyAgICAgICAg
ICAgIGdyaWRfbW9uaXRvcl9vdXRwdXQsCisgICAgICAgICAgICBzdGF0dXNfZmlsZV9sYXN0X3Vw
ZGF0ZSwgcmVxdWVzdC0+c3RhdHVzX3VwZGF0ZV90aW1lKTsKKyAgICAgICAgbG9jYWxfZ2xvYnVz
X3NldF9zdGF0dXMocmVxdWVzdCwgcmVxdWVzdC0+c3RhdHVzKTsKKyAgICAgICAgcmV0dXJuX3Zh
bCA9IEdMT0JVU19TVUNDRVNTOworICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUOworICAgIH0K
KworICAgIGpvYl9jb250YWN0X21hdGNoID0gZ2xvYnVzX2xpYmNfbWFsbG9jKHN0cmxlbihyZXF1
ZXN0LT5qb2JfY29udGFjdCkgKyAxKTsKKyAgICBzdHJjcHkoam9iX2NvbnRhY3RfbWF0Y2gsIHJl
cXVlc3QtPmpvYl9jb250YWN0KTsKKyAgICBqb2JfY29udGFjdF9zdHJpcF9wb3J0KGpvYl9jb250
YWN0X21hdGNoKTsKKworICAgIGlmKERFQlVHX0ZBU1RfUE9MTCkKKyAgICB7CisgICAgICAgIGds
b2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisgICAgICAgICAgICAi
Sk1JOiBwb2xsX2Zhc3Q6ICoqKioqKiogc2Vla2luZzogJXMgaW4gJXNcbiIsIGpvYl9jb250YWN0
X21hdGNoLAorICAgICAgICAgICAgZ3JpZF9tb25pdG9yX291dHB1dCk7CisgICAgfQorICAgIC8q
IFRPRE86IEZpcnN0IHBhc3MuICBJbXByb3ZlIHdpdGggYmluYXJ5IHNlYXJjaCBvZiBmaWxlIHRv
IG1ha2UKKyAgICAgKiBzY2FubmluZyBsYXJnZSBmaWxlcyBmYXN0LiBTdGlsbCB0aGlzIGlzIHBy
b2JhYmx5IHBsZW50eSBmYXN0CisgICAgICogZW5vdWdoIGZvciBmYWlybHkgbGFyZ2UgcnVucy4g
Ki8KKyAgICB3aGlsZSggMSApCisgICAgeworICAgICAgICBzaXplX3QgbGVuID0gMDsKKyAgICAg
ICAgY2hhciAqIGxpbmVfYml0ID0gbGluZTsKKyAgICAgICAgaWYoICEgZmdldHMobGluZSwgc2l6
ZW9mKGxpbmUpLCBncmlkX21vbml0b3JfZmlsZSkgKQorICAgICAgICB7CisgICAgICAgICAgICBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAg
ICAgICJKTUk6IHBvbGxfZmFzdDogKioqKioqKiogIgorICAgICAgICAgICAgICAgICJGYWlsZWQg
dG8gZmluZCAlc1xuIiwgam9iX2NvbnRhY3RfbWF0Y2gpOworICAgICAgICAgICAgLyogZW5kIG9m
IGZpbGUgKG9yIGVycm9yKSwgam9iIGlzbid0IGluIGZpbGUuICBJdCBtaWdodCBqdXN0IG5vdAor
ICAgICAgICAgICAgICogaGF2ZSBiZWVuIG5vdGljZWQgeWV0LiAgU2lsZW50bHkgc2tpcCAqLwor
ICAgICAgICAgICAgZ290byBGQVNUX1BPTExfRVhJVF9GQUlMVVJFOworICAgICAgICB9CisgICAg
ICAgIGlmKCAhIGZlb2YoZ3JpZF9tb25pdG9yX2ZpbGUpICYmIGxpbmVbc3RybGVuKGxpbmUpIC0g
MV0gIT0gJ1xuJykKKyAgICAgICAgeworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6
IE1vbml0b3JpbmcgZmlsZSBsb29rcyBjb3JydXB0LCAiCisgICAgICAgICAgICAgICAgImxpbmVz
IGFyZSB0b28gbG9uZy4gICIKKyAgICAgICAgICAgICAgICAiUmV2ZXJ0aW5nIHRvIG5vcm1hbCBw
b2xsaW5nXG4iKTsKKyAgICAgICAgICAgIGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAg
ICAgICAgfQorCisgICAgICAgIGxlbiA9IHN0cmNzcG4obGluZV9iaXQsIFdISVRFU1BBQ0UpOwor
ICAgICAgICBpZihsZW4gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xvYnVzX2dyYW1f
am9iX21hbmFnZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAiSk1JOiBw
b2xsX2Zhc3Q6IE1vbml0b3JpbmcgZmlsZSBsb29rcyBjb3JydXB0LCAiCisgICAgICAgICAgICAg
ICAgImxpbmUgZG9lc24ndCBzdGFydCB3aXRoIGpvYiBjb250YWN0IHN0cmluZy4gICIKKyAgICAg
ICAgICAgICAgICAiUmV2ZXJ0aW5nIHRvIG5vcm1hbCBwb2xsaW5nXG4iKTsKKyAgICAgICAgICAg
IGdvdG8gRkFTVF9QT0xMX0VYSVRfRkFJTFVSRTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFNv
IGxvbmcgYXMgc2l6ZW9mKGxpbmVfam9iX2NvbnRhY3QpID09IHNpemVvZihsaW5lKSwgCisgICAg
ICAgICAqIHRoaXMgaXMgc2FmZSAqLworICAgICAgICBtZW1jcHkobGluZV9qb2JfY29udGFjdCwg
bGluZSwgbGVuKTsKKyAgICAgICAgbGluZV9qb2JfY29udGFjdFtsZW5dID0gMDsKKyAgICAgICAg
am9iX2NvbnRhY3Rfc3RyaXBfcG9ydChsaW5lX2pvYl9jb250YWN0KTsKKworICAgICAgICBpZigg
c3RyY21wKGxpbmVfam9iX2NvbnRhY3QsIGpvYl9jb250YWN0X21hdGNoKSAhPSAwICkKKyAgICAg
ICAgeworICAgICAgICAgICAgaWYoREVCVUdfRkFTVF9QT0xMKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3Qs
CisgICAgICAgICAgICAgICAgICAgICJKTUk6IHBvbGxfZmFzdDogICAgICAgICAgbm8gbWF0Y2g6
ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgbGluZSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmVfYml0ICs9IGxlbjsK
KworICAgICAgICBsZW4gPSBzdHJzcG4obGluZV9iaXQsIFdISVRFU1BBQ0UpOworICAgICAgICBp
ZihsZW4gPT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9sb2cocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6
IE1vbml0b3JpbmcgZmlsZSBsb29rcyBjb3JydXB0LCAiCisgICAgICAgICAgICAgICAgIm1pc3Np
bmcgd2hpdGVzcGFjZSBmaWVsZCBzZXBlcmF0b3IuICAiCisgICAgICAgICAgICAgICAgIlJldmVy
dGluZyB0byBub3JtYWwgcG9sbGluZ1xuIik7CisgICAgICAgICAgICBnb3RvIEZBU1RfUE9MTF9F
WElUX0ZBSUxVUkU7CisgICAgICAgIH0KKworICAgICAgICBsaW5lX2JpdCArPSBsZW47CisgICAg
ICAgIAorICAgICAgICAvKiBGb3VuZCBleGFjdCBtYXRjaCwgcmVhZCBzdGF0dXMgKi8KKyAgICAg
ICAgbGVuID0gc3Ryc3BuKGxpbmVfYml0LCAiMDEyMzQ1Njc4OSIpOworICAgICAgICBpZihsZW4g
PT0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgLyogTm8gZGlnaXRzIT8gKi8KKyAgICAgICAg
ICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisgICAgICAg
ICAgICAgICAgIkpNSTogcG9sbF9mYXN0OiBNb25pdG9yaW5nIGZpbGUgbG9va3MgY29ycnVwdCwg
IgorICAgICAgICAgICAgICAgICJub24gbnVtZXJpYyBzdGF0dXMuICAiCisgICAgICAgICAgICAg
ICAgIlJldmVydGluZyB0byBub3JtYWwgcG9sbGluZ1xuIik7CisgICAgICAgICAgICBnb3RvIEZB
U1RfUE9MTF9FWElUX0ZBSUxVUkU7CisgICAgICAgIH0KKworICAgICAgICBsb2NhbF9nbG9idXNf
c2V0X3N0YXR1cyhyZXF1ZXN0LCBhdG9pKGxpbmVfYml0KSk7CisKKyAgICAgICAgaWYoREVCVUdf
RkFTVF9QT0xMKQorICAgICAgICB7CisgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdl
cl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAorICAgICAgICAgICAgICAgICJKTUk6IHBvbGxfZmFzdDog
KioqKioqKiogIgorICAgICAgICAgICAgICAgICJPSy4gZm91bmQgJXMgKCVzKVxuIiwgam9iX2Nv
bnRhY3RfbWF0Y2gsIGxpbmVfam9iX2NvbnRhY3QpOworICAgICAgICB9CisKKyAgICAgICAgcmV0
dXJuX3ZhbCA9IEdMT0JVU19TVUNDRVNTOworICAgICAgICBnb3RvIEZBU1RfUE9MTF9FWElUOwor
ICAgIH0KKworRkFTVF9QT0xMX0VYSVRfRkFJTFVSRToKKyAgICByZXR1cm5fdmFsID0gR0xPQlVT
X0ZBSUxVUkU7CisKK0ZBU1RfUE9MTF9FWElUOgorICAgIGlmKGdyaWRfbW9uaXRvcl9maWxlKSAK
KyAgICAgICAgZmNsb3NlKGdyaWRfbW9uaXRvcl9maWxlKTsKKyAgICBpZiggZ3JpZF9tb25pdG9y
X291dHB1dCApCisgICAgICAgIGdsb2J1c19saWJjX2ZyZWUoZ3JpZF9tb25pdG9yX291dHB1dCk7
CisgICAgaWYoIGpvYl9jb250YWN0X21hdGNoICkKKyAgICAgICAgZ2xvYnVzX2xpYmNfZnJlZShq
b2JfY29udGFjdF9tYXRjaCk7CisKKyAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X2xvZyhyZXF1ZXN0LAorICAgICAgICAiSk1JOiBwb2xsX2Zhc3Q6IHJldHVybmluZyAlZCA9ICVz
XG4iLCByZXR1cm5fdmFsLAorICAgICAgICAocmV0dXJuX3ZhbCA9PSBHTE9CVVNfRkFJTFVSRSkg
PworICAgICAgICAgICAgIkdMT0JVU19GQUlMVVJFICh0cnkgUGVybCBzY3JpcHRzKSIgOgorICAg
ICAgICAgICAgIkdMT0JVU19TVUNDRVNTIChza2lwIFBlcmwgc2NyaXB0cykiKTsKKyAgICByZXR1
cm4gcmV0dXJuX3ZhbDsKK30KKy8qIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3NjcmlwdF9wb2xs
X2Zhc3QoKSAqLworCisKKworCisKKworCiAvKioKICAqIFBvbGwgdGhlIHN0YXR1cyBvZiBhIGpv
YiByZXF1ZXN0LgogICoKQEAgLTQ4Miw2ICs3OTMsMTIgQEAKICAgICBjaGFyICoJCQkJc3RkZXJy
X2ZpbGVuYW1lID0gIi9kZXYvbnVsbCI7CiAgICAgY2hhciAqCQkJCXNjcmlwdF9hcmdfZmlsZTsK
IAorICAgIC8qIEtlZXAgdGhlIHN0YXRlIGZpbGUncyB0aW1lc3RhbXAgdXAgdG8gZGF0ZSBzbyB0
aGF0CisgICAgICogYW55dGhpbmcgc2NydWJiaW5nIHRoZSBzdGF0ZSBmaWxlcyBvZiBvbGQgYW5k
IGRlYWQKKyAgICAgKiBwcm9jZXNzZXMgbGVhdmVzIGl0IGFsb25lICovCisgICAgaWYocmVxdWVz
dC0+am9iX3N0YXRlX2ZpbGUpCisgICAgICAgIHV0aW1lKHJlcXVlc3QtPmpvYl9zdGF0ZV9maWxl
LCBOVUxMKTsKKwogICAgIHNjcmlwdF9hcmdfZmlsZSA9IHRlbXBuYW0oTlVMTCwgImdyYW1fcG9s
bCIpOwogCiAgICAgaWYgKCFyZXF1ZXN0KQpAQCAtNTA5LDEyICs4MjYsMTkgQEAKICAgICBnbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X2xvZyhyZXF1ZXN0LAogICAgICAgICAgICJKTUk6
IGxvY2FsIHN0ZGVyciBmaWxlbmFtZSA9ICVzLlxuIiwgc3RkZXJyX2ZpbGVuYW1lKTsKIAorICAg
IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCisJIkpNSTogcG9s
bDogc2Vla2luZzogJXNcbiIsIHJlcXVlc3QtPmpvYl9jb250YWN0KTsKKyAgICBpZiggZ2xvYnVz
X2dyYW1fam9iX21hbmFnZXJfc2NyaXB0X3BvbGxfZmFzdChyZXF1ZXN0KSA9PSBHTE9CVVNfU1VD
Q0VTUyApCisgICAgeworICAgICAgICByZXR1cm4oR0xPQlVTX1NVQ0NFU1MpOworICAgIH0KKwog
ICAgIGlmICgoc2NyaXB0X2FyZ19mcCA9IGZvcGVuKHNjcmlwdF9hcmdfZmlsZSwgInciKSkgPT0g
TlVMTCkKICAgICB7CiAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3RfbG9n
KHJlcXVlc3QsCiAgICAgICAgICAgICAgICJKTUk6IEZhaWxlZCB0byBvcGVuIGdyYW0gc2NyaXB0
IGFyZ3VtZW50IGZpbGUuICVzXG4iLAogICAgICAgICAgICAgICBzY3JpcHRfYXJnX2ZpbGUgKTsK
LSAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRDsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3Rh
dHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogICAg
ICAgICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPQogICAgICAgICAgICAgICBHTE9CVVNfR1JBTV9Q
Uk9UT0NPTF9FUlJPUl9BUkdfRklMRV9DUkVBVElPTl9GQUlMRUQ7CiAgICAgICAgIHJldHVybihH
TE9CVVNfRkFJTFVSRSk7CkBAIC0xMDI3LDcgKzEzNTEsNyBAQAogCWdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX3JlcXVlc3RfbG9nKHJlcXVlc3QsCiAgICAgICAgICAgICAgICJKTUk6IEZhaWxlZCB0
byBvcGVuIGdyYW0gc2NyaXB0IGFyZ3VtZW50IGZpbGUuICVzXG4iLAogICAgICAgICAgICAgICBz
Y3JpcHRfYXJnX2ZpbGUgKTsKLSAgICAgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1f
UFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9GQUlMRUQpOwogICAgICAgICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSAKICAgICAgICAg
ICAgICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfQVJHX0ZJTEVfQ1JFQVRJT05fRkFJTEVE
OwogICAgICAgICByZXR1cm4oR0xPQlVTX0ZBSUxVUkUpOwpAQCAtMTI3NSw3ICsxNTk5LDcgQEAK
IAllbHNlIGlmKGdsb2J1c19sX2dyYW1fam9iX21hbmFnZXJfc2NyaXB0X3ZhbGlkX3N0YXRlX2No
YW5nZSgKIAkJICAgIHJlcXVlc3QsIHNjcmlwdF9zdGF0dXMpKQogCXsKLQkgICAgcmVxdWVzdC0+
c3RhdHVzID0gc2NyaXB0X3N0YXR1czsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJf
cmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIHNjcmlwdF9zdGF0dXMpOwogCSAgICByZXF1ZXN0
LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCX0KICAgICB9CkBAIC0xMjg1
LDcgKzE2MDksNyBAQAogCiAJaWYocmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9PSBzdGFydGlu
Z19qb2JtYW5hZ2VyX3N0YXRlKQogCXsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dS
QU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKwkgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9GQUlMRUQpOwogCSAgICBpZihzY3JpcHRfc3RhdHVzIDw9IDApCiAJICAgIHsKIAkJcmVx
dWVzdC0+ZmFpbHVyZV9jb2RlID0gCkBAIC0xMzQwLDcgKzE2NjQsNyBAQAogICAgIH0KICAgICBl
bHNlIGlmKHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPT0gc3RhcnRpbmdfam9ibWFuYWdlcl9z
dGF0ZSkKICAgICB7Ci0JcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX0ZBSUxFRDsKKwlnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0
dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJcmVx
dWVzdC0+ZmFpbHVyZV9jb2RlID0gCiAJICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0lO
VkFMSURfU0NSSVBUX1NUQVRVUzsKIAlyZXF1ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdM
T0JVU19UUlVFOwpAQCAtMTQwNyw3ICsxNzMxLDcgQEAKIAkJICAgIHJlcXVlc3QsIHNjcmlwdF9z
dGF0dXMpKSkKIAl7CiAJICAgIHJlcXVlc3QtPnVuc2VudF9zdGF0dXNfY2hhbmdlID0gR0xPQlVT
X1RSVUU7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IHNjcmlwdF9zdGF0dXM7CisJICAgIGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBzY3JpcHRfc3Rh
dHVzKTsKIAkgICAgaWYocmVxdWVzdC0+c3RhdHVzID09IEdMT0JVU19HUkFNX1BST1RPQ09MX0pP
Ql9TVEFURV9GQUlMRUQpCiAJICAgIHsKIAkJcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0KQEAgLTE0
MjMsNyArMTc0Nyw3IEBACiAJCQkJCQkgc2NyaXB0X3N0YXR1cykpCiAJCQogCXsKLQkgICAgcmVx
dWVzdC0+c3RhdHVzID0gc2NyaXB0X3N0YXR1czsKKwkgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIHNjcmlwdF9zdGF0dXMpOwogCSAgICByZXF1
ZXN0LT51bnNlbnRfc3RhdHVzX2NoYW5nZSA9IEdMT0JVU19UUlVFOwogCX0KICAgICB9CmRpZmYg
LXJ1IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1c19ncmFtX2pvYl9tYW5h
Z2VyX3N0YXRlLmMgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXItMy45L2dsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX3N0YXRlLmMKLS0tIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3N0YXRlLmMJU2F0IE1hciAyOSAyMjozMDoxMSAyMDAzCisrKyBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlci0zLjkvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc3RhdGUu
YwlNb24gTWFyIDMxIDExOjQ2OjM2IDIwMDMKQEAgLTE1Miw3ICsxNTIsNyBAQAogCSAgICBmcHJp
bnRmKHN0ZGVyciwgIkVSUk9SOiB1bmFibGUgdG8gZ2V0IEhPTUUgZnJvbSB0aGUgZW52aXJvbm1l
bnRcbiIpOwogCSAgICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPQogCQlHTE9CVVNfR1JBTV9QUk9U
T0NPTF9FUlJPUl9HQVRFS0VFUEVSX01JU0NPTkZJR1VSRUQ7Ci0JICAgIHJlcXVlc3QtPnN0YXR1
cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisJICAgIGdsb2J1c19n
cmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9Q
Uk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0
ZSA9CiAJICAgICAgICBHTE9CVVNfR1JBTV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRURfRE9ORTsK
IAkgICAgYnJlYWs7CkBAIC0xODMsNyArMTgzLDcgQEAKIAogCQlyZXF1ZXN0LT5mYWlsdXJlX2Nv
ZGUgPQogCQkgICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfR0FURUtFRVBFUl9NSVNDT05G
SUdVUkVEOwotCQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RB
VEVfRkFJTEVEOworCSAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRf
c3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwog
CQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJICAgIEdMT0JVU19HUkFNX0pPQl9NQU5B
R0VSX1NUQVRFX0ZBSUxFRF9ET05FOwogCQlicmVhazsKQEAgLTIwNiw3ICsyMDYsNyBAQAogCiAJ
ICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCUdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9S
X0dBVEVLRUVQRVJfTUlTQ09ORklHVVJFRDsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKwkgICAgZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pP
Ql9TVEFURV9GQUlMRUQpOwogCSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkgICAg
ICAgIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRF9ET05FOwogCSAgICBicmVh
azsKQEAgLTIxOCw3ICsyMTgsNyBAQAogCiAJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJ
CUdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0dBVEVLRUVQRVJfTUlTQ09ORklHVVJFRDsKLQkg
ICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxF
RDsKKwkgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVl
c3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCSAgICByZXF1ZXN0
LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkgICAgICAgIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NU
QVRFX0ZBSUxFRF9ET05FOwogCSAgICBicmVhazsKQEAgLTIzMyw3ICsyMzMsNyBAQAogCiAJCXJl
cXVlc3QtPmZhaWx1cmVfY29kZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9D
T05ET1JfQVJDSDsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9C
X1NUQVRFX0ZBSUxFRDsKKwkgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rf
c2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVE
KTsKIAkJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9KT0Jf
TUFOQUdFUl9TVEFURV9GQUlMRURfRE9ORTsKIAkJYnJlYWs7CkBAIC0yNDUsNyArMjQ1LDcgQEAK
IAkJICAgICJqb2JtYW5hZ2VyIHR5cGUgaXMgY29uZG9yXG4iKTsKIAkJcmVxdWVzdC0+ZmFpbHVy
ZV9jb2RlID0KIAkJICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0NPTkRPUl9BUkNIOwot
CQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVE
OworCSAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJl
cXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQlyZXF1ZXN0
LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJICAgIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRF
X0ZBSUxFRF9ET05FOwogCSAgICB9CkBAIC0yNjYsNyArMjY2LDcgQEAKIAkgICAgaWYocmMgIT0g
R0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsKIAkJcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0gcmM7Ci0J
CXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7
CisJICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVx
dWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJlcXVlc3Qt
PmpvYm1hbmFnZXJfc3RhdGUgPQogCQkgICAgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVf
RkFJTEVEX0RPTkU7CiAJCWJyZWFrOwpAQCAtNTc5LDcgKzU3OSw3IEBACiAJICAgIHJjID0gZ2xv
YnVzX3JzbF9ldmFsKHJlcXVlc3QtPnJzbCwgJnJlcXVlc3QtPnN5bWJvbF90YWJsZSk7CiAJICAg
IGlmKHJjICE9IEdMT0JVU19TVUNDRVNTKQogCSAgICB7Ci0JCXJlcXVlc3QtPnN0YXR1cyA9IEdM
T0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICAgICAgZ2xv
YnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19H
UkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQlyZXF1ZXN0LT5mYWlsdXJlX2NvZGUg
PQogCQkgICAgR0xPQlVTX0dSQU1fUFJPVE9DT0xfRVJST1JfUlNMX0VWQUxVQVRJT05fRkFJTEVE
OwogCQlyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KQEAgLTU5NSw3ICs1OTUsNyBAQAogCQkg
ICAgR0xPQlVTX0dSQU1fVkFMSURBVEVfSk9CX01BTkFHRVJfUkVTVEFSVCk7CiAJICAgIGlmKHJj
ICE9IEdMT0JVU19TVUNDRVNTKQogCSAgICB7Ci0JCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19H
UkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICAgICAgZ2xvYnVzX2dy
YW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQlyZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSByYzsK
IAkJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9KT0JfTUFO
QUdFUl9TVEFURV9FQVJMWV9GQUlMRUQ7CkBAIC02MTIsNyArNjEyLDcgQEAKIAkgICAgcmMgPSBn
bG9idXNfcnNsX2V2YWwocmVxdWVzdC0+cnNsLCAmcmVxdWVzdC0+c3ltYm9sX3RhYmxlKTsKIAkg
ICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsKLQkJcmVxdWVzdC0+c3RhdHVzID0g
R0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJlcXVlc3QtPmZhaWx1cmVfY29k
ZSA9CiAJCSAgICBHTE9CVVNfR1JBTV9QUk9UT0NPTF9FUlJPUl9SU0xfRVZBTFVBVElPTl9GQUlM
RUQ7CiAJCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQpAQCAtNjQzLDcgKzY0Myw3IEBACiAJ
ICAgIHJjID0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc3RhdGVfZmlsZV9yZWFkKHJlcXVlc3Qp
OwogCSAgICBpZihyYyAhPSBHTE9CVVNfU1VDQ0VTUykKIAkgICAgewotCQlyZXF1ZXN0LT5zdGF0
dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAgICAg
ICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBH
TE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkJcmVxdWVzdC0+ZmFpbHVy
ZV9jb2RlID0gcmM7CiAJCXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQkgICAgR0xPQlVT
X0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwpAQCAtNjUzLDcgKzY1Myw3IEBA
CiAJICAgIHJjID0gZ2xvYnVzX3JzbF9hc3Npc3RfYXR0cmlidXRlc19jYW5vbmljYWxpemUocmVx
dWVzdC0+cnNsKTsKIAkgICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsKLQkJcmVx
dWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAg
ICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMo
cmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJlcXVl
c3QtPmZhaWx1cmVfY29kZSA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0JBRF9SU0w7CiAJ
CXJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQkgICAgR0xPQlVTX0dSQU1fSk9CX01BTkFH
RVJfU1RBVEVfRUFSTFlfRkFJTEVEOwpAQCAtNjkxLDcgKzY5MSw3IEBACiAJICAgIHJjID0gZ2xv
YnVzX3JzbF9hc3Npc3RfYXR0cmlidXRlc19jYW5vbmljYWxpemUocmVxdWVzdC0+cnNsKTsKIAkg
ICAgaWYocmMgIT0gR0xPQlVTX1NVQ0NFU1MpCiAJICAgIHsKLQkJcmVxdWVzdC0+c3RhdHVzID0g
R0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJCXJlcXVlc3QtPmZhaWx1cmVfY29k
ZSA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX0JBRF9SU0w7CiAJCXJlcXVlc3QtPmpvYm1h
bmFnZXJfc3RhdGUgPQogCQkgICAgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlf
RkFJTEVEOwpAQCAtODcxLDcgKzg3MSw3IEBACiAJCSAgICAiRmFpbGVkIHRvIGNyZWF0ZSBzY3Jh
dGNoIGRpclxuIik7CiAJICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPQogCQlHTE9CVVNf
R1JBTV9KT0JfTUFOQUdFUl9TVEFURV9FQVJMWV9GQUlMRUQ7Ci0JICAgIHJlcXVlc3QtPnN0YXR1
cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICBn
bG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIGlmKHJlcXVlc3QtPmZhaWx1
cmVfY29kZSA9PSBHTE9CVVNfU1VDQ0VTUykKIAkgICAgewogCQlyZXF1ZXN0LT5mYWlsdXJlX2Nv
ZGUgPQpAQCAtMTA2Niw3ICsxMDY2LDcgQEAKIAl7CiAJICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJf
c3RhdGUgPSAKIAkJICAgIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxF
RDsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0
X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsK
IAkgICAgcmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0gcmM7CiAJfQogCWJyZWFrOwpAQCAtMTE3Nyw3
ICsxMTc3LDcgQEAKIAkJewogCQkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9IAogCQkJ
R0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOwotCQkgICAgcmVxdWVz
dC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAg
ICAgICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVz
KHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogCQkgICAg
cmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0KIAkJCUdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9SX1dS
SVRJTkdfU1RBVEVfRklMRTsKIAkJICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rf
bG9nKCByZXF1ZXN0LApAQCAtMTI3Niw3ICsxMjc2LDcgQEAKIAogCWlmKGdsb2J1c19ncmFtX2pv
Yl9tYW5hZ2VyX3JzbF9uZWVkX3N0YWdlX2luKHJlcXVlc3QpKQogCXsKLQkgICAgcmVxdWVzdC0+
c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX1NUQUdFX0lOOworICAgICAg
ICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3Qs
IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9TVEFHRV9JTik7CiAKIAkgICAgaWYoIXJl
cXVlc3QtPmRyeV9ydW4pCiAJICAgIHsKQEAgLTEzMzUsNyArMTMzNSw3IEBACiAJaWYocmMgIT0g
R0xPQlVTX1NVQ0NFU1MpCiAJewogCSAgICByZXF1ZXN0LT5mYWlsdXJlX2NvZGUgPSByYzsKLQkg
ICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxF
RDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1
cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAogCSAg
ICBpZighcmVxdWVzdC0+ZHJ5X3J1bikKIAkgICAgewpAQCAtMTM2OSw3ICsxMzY5LDcgQEAKIAkJ
cmVxdWVzdC0+ZmFpbHVyZV9jb2RlID0KIAkJICAgIEdMT0JVU19HUkFNX1BST1RPQ09MX0VSUk9S
X1NVQk1JVF9VTktOT1dOOwogCSAgICB9Ci0gICAgICAgICAgICByZXF1ZXN0LT5zdGF0dXMgPSBH
TE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAgICAgZ2xvYnVz
X2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFN
X1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQpOwogICAgICAgICAgICAgcmVxdWVzdC0+dW5zZW50
X3N0YXR1c19jaGFuZ2UgPSBHTE9CVVNfVFJVRTsKIAl9CiAJZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVwb3J0aW5nX2ZpbGVfY3JlYXRlKHJlcXVlc3QpOwpAQCAtMTQxNSw3ICsxNDE1LDcgQEAK
IAkgICAgLyogSm9iIGZpbmlzaGVkISBzdGFydCBmaW5hbGl6aW5nICovCiAJICAgIGlmKGdsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3JzbF9uZWVkX3N0YWdlX291dChyZXF1ZXN0KSkKIAkgICAgewot
CQlyZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfU1RBR0Vf
T1VUOworICAgICAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0
X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfU1RBR0VfT1VU
KTsKIAkJZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfY29udGFjdF9zdGF0ZV9jYWxsYmFjayhyZXF1
ZXN0KTsKIAkgICAgfQogCSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KQEAgLTE0MjUs
NyArMTQyNSw3IEBACiAJICAgIHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPSBHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9TVEFHRV9PVVQ7CiAJICAgIGlmKGdsb2J1c19ncmFtX2pvYl9t
YW5hZ2VyX3JzbF9uZWVkX3N0YWdlX291dChyZXF1ZXN0KSkKIAkgICAgewotCQlyZXF1ZXN0LT5z
dGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfU1RBR0VfT1VUOworICAgICAg
ICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1
ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfU1RBR0VfT1VUKTsKIAogCiAJCXJj
ID0gZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc2NyaXB0X3N0YWdlX291dChyZXF1ZXN0KTsKQEAg
LTE3NjEsNyArMTc2MSw3IEBACiAJfQogCWVsc2UKIAl7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9
IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQ7CisgICAgICAgICAgICBnbG9i
dXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dS
QU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRCk7CiAJICAgIHJlcXVlc3QtPmZhaWx1cmVfY29k
ZSA9IHJjOwogCiAJICAgIGlmKHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPT0KQEAgLTE4NTYs
NyArMTg1Niw3IEBACiAJICAgIGVsc2UKIAkgICAgewogCQlyZXF1ZXN0LT5mYWlsdXJlX2NvZGUg
PSByYzsKLQkJcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxF
RCk7CiAKIAkJaWYocmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSAhPQogCQkJR0xPQlVTX0dSQU1f
Sk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEX0ZJTEVfQ0xFQU5fVVApCkBAIC0xOTA4LDcg
KzE5MDgsNyBAQAogCSAgICB9CiAJICAgIGVsc2UKIAkgICAgewotCQlyZXF1ZXN0LT5zdGF0dXMg
PSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEOworICAgICAgICAgICAgICAg
IGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9C
VVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkJcmVxdWVzdC0+ZmFpbHVyZV9j
b2RlID0gcmM7CiAKIAkJaWYocmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSAhPQpAQCAtMTk1MCw3
ICsxOTUwLDcgQEAKIAllbHNlIGlmKHJjICE9IEdMT0JVU19TVUNDRVNTICYmIHJlcXVlc3QtPmZh
aWx1cmVfY29kZSA9PSAwKQogCXsKICAgICAgICAgICAgIHJlcXVlc3QtPmZhaWx1cmVfY29kZSA9
IHJjOwotCSAgICByZXF1ZXN0LT5zdGF0dXMgPSBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RB
VEVfRkFJTEVEOworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVzdF9z
ZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlMRUQp
OwogCiAJICAgIGlmKHJlcXVlc3QtPmpvYm1hbmFnZXJfc3RhdGUgPT0gCiAJCSAgICBHTE9CVVNf
R1JBTV9KT0JfTUFOQUdFUl9TVEFURV9DQUNIRV9DTEVBTl9VUCkKQEAgLTIwMzEsNyArMjAzMSw3
IEBACiAJICogVGhpcyBjYWxsYmFjayBpcyBkZWxheWVkIHVudGlsIGFmdGVyIHRoZSBjbG9zZSBv
dXRwdXQgaXMgY29tcGxldGVkLAogCSAqIHNvIHRoYXQgY2xpZW50cyB3b24ndCBleGl0IGJlZm9y
ZSB0aGUgb3V0cHV0IGlzIHNlbnQuCiAJICovCi0JcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dS
QU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pP
Ql9TVEFURV9GQUlMRUQpOwogCiAJZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfY29udGFjdF9zdGF0
ZV9jYWxsYmFjayhyZXF1ZXN0KTsKIApAQCAtMjExOCwyMSArMjExOCwyMSBAQAogCXsKIAkgICAg
cmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9CiAJCUdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NU
QVRFX1RXT19QSEFTRV9FTkQ7Ci0JICAgIHJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BS
T1RPQ09MX0pPQl9TVEFURV9ET05FOworICAgICAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFn
ZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9T
VEFURV9ET05FKTsKIAl9CiAJZWxzZSBpZihyZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID09CiAJ
CUdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRF9DTE9TRV9PVVRQVVQpCiAJewog
CSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0KIAkJR0xPQlVTX0dSQU1fSk9CX01BTkFH
RVJfU1RBVEVfRkFJTEVEX1RXT19QSEFTRTsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9U
T0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAl9CiAJZWxzZSBpZihyZXF1ZXN0LT5qb2JtYW5hZ2Vy
X3N0YXRlID09CiAJCUdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRF9D
TE9TRV9PVVRQVVQpCiAJewogCSAgICByZXF1ZXN0LT5qb2JtYW5hZ2VyX3N0YXRlID0gCiAJCUdM
T0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0VBUkxZX0ZBSUxFRF9QUkVfRklMRV9DTEVBTl9V
UDsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRF
X0ZBSUxFRDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0
X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsK
IAkgICAgYnJlYWs7CiAJfQogCkBAIC0yMjc4LDcgKzIyNzgsNyBAQAogCiAJaWYobWFqb3Jfc3Rh
dHVzICE9IEdTU19TX0NPTVBMRVRFKQogCXsKLQkgICAgcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVT
X0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgICAgIGdsb2J1c19ncmFt
X2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhyZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9U
T0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAkgICAgcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9
IEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX0ZBSUxFRDsKIAkgICAgcmMgPSBHTE9CVVNf
R1JBTV9QUk9UT0NPTF9FUlJPUl9QUk9UT0NPTF9GQUlMRUQ7CiAJfQpAQCAtMjI5MCw3ICsyMjkw
LDcgQEAKIAkJIkpNOiBjb3VsZG4ndCBzZW5kIGpvYiBjb250YWN0IHRvIGNsaWVudDogcmM9JWQg
KCVzKVxuIiwKIAkJcmMsCiAJCWdsb2J1c19ncmFtX3Byb3RvY29sX2Vycm9yX3N0cmluZyhyYykp
OwotCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09MX0pPQl9TVEFURV9GQUlM
RUQ7CisgICAgICAgIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyX3JlcXVlc3Rfc2V0X3N0YXR1cyhy
ZXF1ZXN0LCBHTE9CVVNfR1JBTV9QUk9UT0NPTF9KT0JfU1RBVEVfRkFJTEVEKTsKIAlyZXF1ZXN0
LT5qb2JtYW5hZ2VyX3N0YXRlID0gR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RBVEVfRkFJTEVE
OwogICAgIH0KICAgICBnc3NfZGVsZXRlX3NlY19jb250ZXh0KCZtaW5vcl9zdGF0dXMsCkBAIC0y
NDg5LDE0ICsyNDg5LDE0IEBACiAgICAgICBjYXNlIEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NU
QVRFX0NMT1NFX09VVFBVVDoKICAgICAgIGNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJfU1RB
VEVfUFJFX0NMT1NFX09VVFBVVDoKICAgICAgIGNhc2UgR0xPQlVTX0dSQU1fSk9CX01BTkFHRVJf
U1RBVEVfU1RBR0VfT1VUOgotCXJlcXVlc3QtPnN0YXR1cyA9IEdMT0JVU19HUkFNX1BST1RPQ09M
X0pPQl9TVEFURV9ET05FOworICAgICAgICBnbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9yZXF1ZXN0
X3NldF9zdGF0dXMocmVxdWVzdCwgR0xPQlVTX0dSQU1fUFJPVE9DT0xfSk9CX1NUQVRFX0RPTkUp
OwogCXJlcXVlc3QtPnVuc2VudF9zdGF0dXNfY2hhbmdlID0gR0xPQlVTX1RSVUU7CiAJcmVxdWVz
dC0+am9ibWFuYWdlcl9zdGF0ZSA9IEdMT0JVU19HUkFNX0pPQl9NQU5BR0VSX1NUQVRFX1BPTEwx
OwogCWNoYW5nZWQgPSBHTE9CVVNfVFJVRTsKIAlicmVhazsKICAgICAgIGNhc2UgR0xPQlVTX0dS
QU1fSk9CX01BTkFHRVJfU1RBVEVfRUFSTFlfRkFJTEVEOgogICAgICAgY2FzZSBHTE9CVVNfR1JB
TV9KT0JfTUFOQUdFUl9TVEFURV9GQUlMRUQ6Ci0JcmVxdWVzdC0+c3RhdHVzID0gR0xPQlVTX0dS
QU1fUFJPVE9DT0xfSk9CX1NUQVRFX0ZBSUxFRDsKKyAgICAgICAgZ2xvYnVzX2dyYW1fam9iX21h
bmFnZXJfcmVxdWVzdF9zZXRfc3RhdHVzKHJlcXVlc3QsIEdMT0JVU19HUkFNX1BST1RPQ09MX0pP
Ql9TVEFURV9GQUlMRUQpOwogCXJlcXVlc3QtPnVuc2VudF9zdGF0dXNfY2hhbmdlID0gR0xPQlVT
X1RSVUU7CiAJcmVxdWVzdC0+am9ibWFuYWdlcl9zdGF0ZSA9IEdMT0JVU19HUkFNX0pPQl9NQU5B
R0VSX1NUQVRFX1BPTEwxOwogCWNoYW5nZWQgPSBHTE9CVVNfVFJVRTsKZGlmZiAtcnUgZ2xvYnVz
X2dyYW1fam9iX21hbmFnZXItMy45Lm9yaWcvZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfc3RhdGVf
ZmlsZS5jIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdl
cl9zdGF0ZV9maWxlLmMKLS0tIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS5vcmlnL2dsb2J1
c19ncmFtX2pvYl9tYW5hZ2VyX3N0YXRlX2ZpbGUuYwlTYXQgTWFyIDI5IDIyOjMwOjExIDIwMDMK
KysrIGdsb2J1c19ncmFtX2pvYl9tYW5hZ2VyLTMuOS9nbG9idXNfZ3JhbV9qb2JfbWFuYWdlcl9z
dGF0ZV9maWxlLmMJTW9uIE1heSAxMiAxODo0MTozNyAyMDAzCkBAIC0yNjksNyArMjY5LDggQEAK
ICAgICB7CiAgICAgICAgIGdvdG8gZXJyb3JfZXhpdDsKICAgICB9Ci0gICAgcmVxdWVzdC0+c3Rh
dHVzID0gYXRvaSggYnVmZmVyICk7CisgICAgZ2xvYnVzX2dyYW1fam9iX21hbmFnZXJfcmVxdWVz
dF9zZXRfc3RhdHVzX3RpbWUocmVxdWVzdCwKKwkJYXRvaSggYnVmZmVyICksIHN0YXRidWYuc3Rf
bXRpbWUpOwogICAgIGlmIChmZ2V0cyggYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZnAgKSA9PSBO
VUxMKQogICAgIHsKICAgICAgICAgZ290byBlcnJvcl9leGl0Owo=
</data>        

          </attachment>
      

    </bug>

</bugzilla>