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

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

    <bug>
          <bug_id>85429</bug_id>
          
          <creation_ts>2012-05-02 16:09:28 -0700</creation_ts>
          <short_desc>Heap should sweep incrementally</short_desc>
          <delta_ts>2012-05-30 20:05:40 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Hahnenberg">mhahnenberg</reporter>
          <assigned_to name="Mark Hahnenberg">mhahnenberg</assigned_to>
          <cc>ggaren</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>614767</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 16:09:28 -0700</bug_when>
    <thetext>We shouldn&apos;t have to wait for the opportunistic GC timer to fire in order to call object destructors. Instead, we should incrementally sweep some subset of the blocks requiring sweeping with each collection. This way, our memory usage scales smoothly with actual use, regardless of whether we&apos;ve recently done an opportunistic GC or not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>614771</commentid>
    <comment_count>1</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-02 16:12:12 -0700</bug_when>
    <thetext>Actually, we don&apos;t want to depend on collections at all for sweeping. We should have a run loop timer that fires every so often to do some sweeping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636599</commentid>
    <comment_count>2</comment_count>
      <attachid>144651</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-29 17:14:51 -0700</bug_when>
    <thetext>Created attachment 144651
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636640</commentid>
    <comment_count>3</comment_count>
      <attachid>144651</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-29 17:46:11 -0700</bug_when>
    <thetext>Comment on attachment 144651
Patch

Attachment 144651 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/12853397</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636648</commentid>
    <comment_count>4</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-29 17:52:00 -0700</bug_when>
    <thetext>Some high-level thoughts here:

(1) Is it OK for the sweep timer to compete against the GC timer? 

(2) Should the incremental sweeper free empty blocks?

(3) Would be nice to save the resulting free list in the MarkedBlock, so we don&apos;t have to reproduce it later.

(4) It&apos;s not so good to fire every 100ms. If a given sweep operation took a long time, we could saturate the timer interval. I think it would be better to sweep the minimum possible in each interval -- one block -- and, after we&apos;re done, then schedule the next timer relative to the current time, with an interval equal to however long we took * constant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636652</commentid>
    <comment_count>5</comment_count>
      <attachid>144651</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-05-29 17:55:31 -0700</bug_when>
    <thetext>Comment on attachment 144651
Patch

Attachment 144651 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/12838783</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636661</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-29 18:07:10 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Some high-level thoughts here:
&gt; 
&gt; (1) Is it OK for the sweep timer to compete against the GC timer? 

I&apos;m not sure what you mean by &quot;compete&quot;. Do you mean does the order in which they run matter?

&gt; (2) Should the incremental sweeper free empty blocks?

I think it should, but I was going to add that when we can also do finalization incrementally so that we sweep, finalize, then free. I guess we could technically add freeing blocks to this patch though. 

&gt; 
&gt; (3) Would be nice to save the resulting free list in the MarkedBlock, so we don&apos;t have to reproduce it later.

Okiedokie.

&gt; (4) It&apos;s not so good to fire every 100ms. If a given sweep operation took a long time, we could saturate the timer interval. I think it would be better to sweep the minimum possible in each interval -- one block -- and, after we&apos;re done, then schedule the next timer relative to the current time, with an interval equal to however long we took * constant.

Okay. Perhaps the constant should be based on how quickly we want to give memory back? It&apos;s probably difficult to gauge how much memory we actually free during each sweep though :-(

I also tested 1 block/100 ms and it took quite a while (~3 minutes) to give all our memory back in high-load situations (e.g. &gt; 1 GB of dead stuff).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636668</commentid>
    <comment_count>7</comment_count>
      <attachid>144651</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-05-29 18:16:32 -0700</bug_when>
    <thetext>Comment on attachment 144651
Patch

Attachment 144651 did not pass qt-wk2-ews (qt):
Output: http://queues.webkit.org/results/12850633</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636749</commentid>
    <comment_count>8</comment_count>
      <attachid>144651</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-29 19:25:53 -0700</bug_when>
    <thetext>Comment on attachment 144651
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:711
&gt; +    m_objectSpace.didFinishMarking();
&gt; +    m_sweeper-&gt;didFinishMarking();

I&apos;d prefer to see a more explicit interface: m_sweeper-&gt;startSweeping(m_objectSpace.copyToVector()).

&gt; Source/JavaScriptCore/heap/Heap.cpp:794
&gt; +    m_bytesAbandoned = 0;

I tend to think that any GC should recent m_bytesAbandoned to 0, no?

&gt; Source/JavaScriptCore/heap/MarkedSpace.cpp:239
&gt; +    unsigned blocksSwept = 0;
&gt; +    for (; m_currentBlockToSweepIndex &lt; m_blocksToSweep.size(); m_currentBlockToSweepIndex++) {

I think it would make more sense to put this state and functionality into the incremental sweeper.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>636758</commentid>
    <comment_count>9</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-29 19:34:31 -0700</bug_when>
    <thetext>&gt; &gt; (1) Is it OK for the sweep timer to compete against the GC timer? 
&gt; 
&gt; I&apos;m not sure what you mean by &quot;compete&quot;. Do you mean does the order in which they run matter?

Yeah -- like, is it OK that they race? I guess there&apos;s no correctness harm. A GC will reset the sweeper.

&gt; &gt; (2) Should the incremental sweeper free empty blocks?
&gt; 
&gt; I think it should, but I was going to add that when we can also do finalization incrementally so that we sweep, finalize, then free. I guess we could technically add freeing blocks to this patch though. 

Separate patch is fine.

&gt; &gt; (3) Would be nice to save the resulting free list in the MarkedBlock, so we don&apos;t have to reproduce it later.
&gt; 
&gt; Okiedokie.

Separate patch is fine for this, too.

&gt; &gt; (4) It&apos;s not so good to fire every 100ms. If a given sweep operation took a long time, we could saturate the timer interval. I think it would be better to sweep the minimum possible in each interval -- one block -- and, after we&apos;re done, then schedule the next timer relative to the current time, with an interval equal to however long we took * constant.
&gt; 
&gt; Okay. Perhaps the constant should be based on how quickly we want to give memory back? It&apos;s probably difficult to gauge how much memory we actually free during each sweep though :-(
&gt; 
&gt; I also tested 1 block/100 ms and it took quite a while (~3 minutes) to give all our memory back in high-load situations (e.g. &gt; 1 GB of dead stuff).

I think some resolution to this is a blocker to landing, since this will be a regression over the current GC timer in some cases.

I&apos;d be interested to know how a proportional time heuristic worked in practice -- e.g., 1% CPU time instead of 1 block / 100 ms. We can always up the % if we think it&apos;s valuable, but we don&apos;t want an absolute time tick (100ms) because that can regress to 100% CPU time, which is no advantage over the status quo.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637756</commentid>
    <comment_count>10</comment_count>
      <attachid>144939</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-30 15:28:07 -0700</bug_when>
    <thetext>Created attachment 144939
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637760</commentid>
    <comment_count>11</comment_count>
      <attachid>144941</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-30 15:31:36 -0700</bug_when>
    <thetext>Created attachment 144941
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637835</commentid>
    <comment_count>12</comment_count>
      <attachid>144941</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-30 17:05:57 -0700</bug_when>
    <thetext>Comment on attachment 144941
Patch

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

r=me -- with these suggestions:

&gt; Source/JavaScriptCore/heap/Heap.h:169
&gt; +        void incrementalSweep();
&gt; +        void didFinishSweeping();

These functions don&apos;t exist anymore, so you can remove the declaration.

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:65
&gt; +        if (nextBlock-&gt;needsSweeping()) {

The WebKit style prefers &quot;if (!nextBlock-&gt;needsSweeping()) continue;&quot; because it reduces the indentation of subsequent code.

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:74
&gt; +    m_lengthOfLastSweepIncrement = WTF::monotonicallyIncreasingTime() - sweepBeginTime;

I think you should remove this -- if we&apos;re done, we didn&apos;t sweep, so we shouldn&apos;t record an increment.

&gt; Source/JavaScriptCore/heap/IncrementalSweeper.cpp:75
&gt; +    cancelTimer();

It would be nice to call m_blocksToSweep.clear() to give back the memory for the vector, in case the heap is very big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637841</commentid>
    <comment_count>13</comment_count>
      <attachid>144941</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-05-30 17:14:52 -0700</bug_when>
    <thetext>Comment on attachment 144941
Patch

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

&gt; Source/JavaScriptCore/heap/Heap.cpp:706
&gt; -        m_objectSpace.sweep();
&gt;          m_objectSpace.shrink();

This is a memory leak: You can&apos;t shrink without sweeping first. Pending destructors will not have run.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>637954</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2012-05-30 20:05:40 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/119028.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144651</attachid>
            <date>2012-05-29 17:14:51 -0700</date>
            <delta_ts>2012-05-30 15:28:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85429-20120529171450.patch</filename>
            <type>text/plain</type>
            <size>20911</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4ODYwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDcyIEBA
CisyMDEyLTA1LTI5ICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSGVhcCBzaG91bGQgc3dlZXAgaW5jcmVtZW50YWxseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU0MjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBzaG91bGRuJ3QgaGF2ZSB0byB3YWl0
IGZvciB0aGUgb3Bwb3J0dW5pc3RpYyBHQyB0aW1lciB0byBmaXJlIGluIG9yZGVyIAorICAgICAg
ICB0byBjYWxsIG9iamVjdCBkZXN0cnVjdG9ycy4gSW5zdGVhZCwgd2Ugc2hvdWxkIGluY3JlbWVu
dGFsbHkgc3dlZXAgc29tZSAKKyAgICAgICAgc3Vic2V0IG9mIHRoZSBibG9ja3MgcmVxdWlyaW5n
IHN3ZWVwaW5nIHBlcmlvZGljYWxseS4gV2UgdGllIHRoaXMgc3dlZXBpbmcgCisgICAgICAgIHRv
IGEgdGltZXIgcmF0aGVyIHRoYW4gdG8gY29sbGVjdGlvbnMgYmVjYXVzZSB3ZSB3YW50IHRvIHJl
Y2xhaW0gdGhpcyBtZW1vcnkgCisgICAgICAgIGV2ZW4gaWYgd2Ugc3RvcCBhbGxvY2F0aW5nLiBU
aGlzIHdheSwgb3VyIG1lbW9yeSB1c2FnZSBzY2FsZXMgc21vb3RobHkgd2l0aCAKKyAgICAgICAg
YWN0dWFsIHVzZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlJ3ZlIHJlY2VudGx5IGRvbmUgYW4g
b3Bwb3J0dW5pc3RpYyBHQyBvciBub3QuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5
cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogaGVhcC9IZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNv
bGxlY3QpOiBXZSBubyBsb25nZXIgc3dlZXAgZHVyaW5nIGEgZnVsbCBzd2VlcC4gV2Ugb25seSBz
aHJpbmsgbm93LAorICAgICAgICB3aGljaCB3ZSB3aWxsIHN3aXRjaCBvdmVyIHRvIGJlaW5nIGRv
bmUgZHVyaW5nIGluY3JlbWVudGFsIHN3ZWVwaW5nIHRvbyBhcyBzb29uIGFzCisgICAgICAgIGFs
bCBmaW5hbGl6ZXJzIGNhbiBiZSBydW4gbGF6aWx5IChhbmQsIGJ5IGV4dGVuc2lvbiwgaW5jcmVt
ZW50YWxseSkuIFdlIGFsc28gbm90aWZ5IAorICAgICAgICB0aGUgTWFya2VkU3BhY2UgYW5kIHRo
ZSBJbmNyZW1lbnRhbFN3ZWVwZXIgdGhhdCBtYXJraW5nIGhhcyB0YWtlbiBwbGFjZSAqYWZ0ZXIq
IGFsbCAKKyAgICAgICAgY2hhbmdlcyB0byBNYXJrZWRTcGFjZSBoYXZlIG9jY3VycmVkIGJlY2F1
c2Ugd2UgZG9uJ3Qgd2FudCB0byBnZXQgYSBzbmFwc2hvdCBvZiB0aGUgCisgICAgICAgIE1hcmtl
ZFNwYWNlIHRoYXQgd2lsbCBzb29uIGNoYW5nZS4KKyAgICAgICAgKEpTQzo6SGVhcDo6ZGlkRmlu
aXNoU3dlZXBpbmcpOiBUaGUgTWFya2VkU3BhY2UgY2FsbHMgdGhpcyBpZiBhbmQgd2hlbiBpdCBz
dWNjZXNzZnVsbHkgZ2V0cyAKKyAgICAgICAgdG8gdGhlIGVuZCBvZiBzd2VlcGluZyBhbGwgYmxv
Y2tzIGJlZm9yZSBhbm90aGVyIGNvbGxlY3Rpb24gaGFzIHJ1bi4KKyAgICAgICAgKEpTQyk6Cisg
ICAgICAgIChKU0M6OkhlYXA6OmluY3JlbWVudGFsU3dlZXApOiBQYXNzZXMgdGhlIG1lc3NhZ2Ug
YWxvbmcgdG8gdGhlIE1hcmtlZFNwYWNlLgorICAgICAgICAqIGhlYXAvSGVhcC5oOgorICAgICAg
ICAoSlNDKToKKyAgICAgICAgKEhlYXApOgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRh
bFN3ZWVwZXI6OnRpbWVyRGlkRmlyZSk6IFRoZSBJbmNyZW1lbnRhbFN3ZWVwZXIgd29ya3MgdmVy
eSBzaW1pbGFybHkgdG8gCisgICAgICAgIEdDQWN0aXZpdHlDYWxsYmFjay4gSXQgaXMgdGllZCB0
byBhIHJ1bi1sb29wIGJhc2VkIHRpbWVyIHRoYXQgZmlyZXMgb25jZSBldmVyeSAxMDBtcy4gSXQg
CisgICAgICAgIHNjaGVkdWxlcyBhbmQgY2FuY2VscyB0aGlzIHRpbWVyIGJhc2VkIG9uIGZlZWRi
YWNrIGl0IHJlY2VpdmVzIGZyb20gdGhlIEhlYXAgdGhhdCBvd25zIGl0LgorICAgICAgICBUaGUg
SW5jcmVtZW50YWxTd2VlcGVyIGRvZXNuJ3QgZG8gYW55dGhpbmcgaWYgdGhlIHBsYXRmb3JtIGRv
ZXNuJ3Qgc3VwcG9ydCBDb3JlRm91bmRhdGlvbi4KKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxT
d2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6On5JbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3
ZWVwZXI6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c2NoZWR1
bGVUaW1lcik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIp
OgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmRpZEZpbmlzaE1hcmtpbmcpOgor
ICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmRpZEZpbmlzaFN3ZWVwaW5nKToKKyAg
ICAgICAgKiBoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oOiBBZGRlZC4KKyAgICAgICAgKEpTQyk6
CisgICAgICAgIChJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAqIGhlYXAvTWFya2VkQmxv
Y2suaDoKKyAgICAgICAgKEpTQzo6TWFya2VkQmxvY2s6Om5lZWRzU3dlZXBpbmcpOiBJZiBhIGJs
b2NrIGlzIGluIHRoZSBNYXJrZWQgc3RhdGUgaXQgbmVlZHMgc3dlZXBpbmcgCisgICAgICAgIHRv
IGJlIHVzYWJsZSBhbmQgdG8gcnVuIGFueSBkZXN0cnVjdG9ycyB0aGF0IG5lZWQgdG8gYmUgcnVu
LgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBoZWFwL01hcmtlZFNwYWNlLmNwcDoKKyAgICAg
ICAgKEpTQzo6TWFya2VkU3BhY2U6OmluY3JlbWVudGFsU3dlZXApOiBJdGVyYXRlcyBvdmVyIHRo
ZSBzbmFwc2hvdCBvZiB0aGUgTWFya2VkU3BhY2UgdGFrZW4gCisgICAgICAgIGR1cmluZyB0aGUg
bGFzdCBjb2xsZWN0aW9uIGNoZWNraW5nIHRvIHNlZSB3aGljaCBibG9ja3MgbmVlZCBzd2VlcGlu
Zy4gSWYgaXQgc3VjY2Vzc2Z1bGx5IAorICAgICAgICBnZXRzIHRvIHRoZSBlbmQgb2YgdGhlIGJs
b2NrcyB0aGF0IG5lZWQgc3dlZXBpbmcgdGhlbiBpdCBub3RpZmllcyB0aGUgSGVhcCBieSBjYWxs
aW5nIAorICAgICAgICBkaWRGaW5pc2hTd2VlcGluZy4KKyAgICAgICAgKEpTQyk6CisgICAgICAg
ICogaGVhcC9NYXJrZWRTcGFjZS5oOgorICAgICAgICAoTWFya2VkU3BhY2UpOgorICAgICAgICAo
SlNDOjpNYXJrZWRTcGFjZTo6ZGlkRmluaXNoTWFya2luZyk6IFRoZSBIZWFwIG5vdGlmaWVzIHRo
ZSBNYXJrZWQgd2hlbiBpdCBoYXMgCisgICAgICAgIGNvbXBsZXRlZCBhIGNvbGxlY3Rpb24gdGhh
dCB5aWVsZGVkIG5ldyBibG9ja3MgdGhhdCBuZWVkIHN3ZWVwaW5nLiBXZSB0YWtlIGEgc25hcHNo
b3Qgb2YgCisgICAgICAgIHRoZSBIZWFwIGFuZCBzdG9yZSBpdCBpbiBhIFZlY3RvciB0aGF0IHRo
ZSBpbmNyZW1lbnRhbCBzd2VlcCB3aWxsIGl0ZXJhdGUgb3Zlci4gV2UgYWxzbyAKKyAgICAgICAg
cmVzZXQgb3VyIGluZGV4IGludG8gdGhpcyBWZWN0b3IuCisgICAgICAgIChKU0MpOgorCiAyMDEy
LTA1LTI5ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgREZHIHNo
b3VsZCBrZWVwIGNhcHR1cmVkIHZhcmlhYmxlcyBhbGl2ZSB1bnRpbCB0aGUgKGlubGluZSkgcmV0
dXJuLgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE4
ODAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC05Nyw2ICs5Nyw3IEBAIFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVh
cC9IYW5kbGVTZXQuY3BwCiAgICAgaGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAu
Y3BwCisgICAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCiAgICAgaGVhcC9NYWNoaW5lU3Rh
Y2tNYXJrZXIuY3BwCiAgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwCiAgICAgaGVhcC9NYXJr
ZWRCbG9jay5jcHAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCShyZXZpc2lvbiAxMTg4MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZp
bGUubGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMjMyLDYgKzIzMiw4IEBAIGphdmFzY3JpcHRj
b3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwQmxvY2suaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9o
ZWFwL1Nsb3RWaXNpdG9yLmggXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0
YWNrLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCBcCklu
ZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24g
MTE4ODAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdv
cmtpbmcgY29weSkKQEAgLTEzNCw2ICsxMzQsNyBAQAogICAgICAgICAgICAgJ2hlYXAvSGVhcC5o
JywKICAgICAgICAgICAgICdoZWFwL0hlYXBCbG9jay5oJywKICAgICAgICAgICAgICdoZWFwL0hl
YXBSb290VmlzaXRvci5oJywKKyAgICAgICAgICAgICdoZWFwL0luY3JlbWVudGFsU3dlZXBlci5o
JywKICAgICAgICAgICAgICdoZWFwL0xpc3RhYmxlSGFuZGxlci5oJywKICAgICAgICAgICAgICdo
ZWFwL0xvY2FsLmgnLAogICAgICAgICAgICAgJ2hlYXAvTG9jYWxTY29wZS5oJywKQEAgLTQwNiw2
ICs0MDcsNyBAQAogICAgICAgICAgICAgJ2hlYXAvSGFuZGxlU3RhY2suY3BwJywKICAgICAgICAg
ICAgICdoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwLmNw
cCcsCisgICAgICAgICAgICAnaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwJywKICAgICAgICAg
ICAgICdoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvTWFy
a2VkQWxsb2NhdG9yLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9NYXJrZWRCbG9jay5jcHAnLApJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL1RhcmdldC5wcmkJKHJldmlzaW9uIDExODgwMikKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3
IEBAIFNPVVJDRVMgKz0gXAogICAgIGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKICAgICBoZWFwL0Js
b2NrQWxsb2NhdG9yLmNwcCBcCiAgICAgaGVhcC9IZWFwLmNwcCBcCisgICAgaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwIFwKICAgICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgXAogICAg
IGhlYXAvTWFya1N0YWNrLmNwcCBcCiAgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwIFwKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENv
cmUudmNwcm9qCShyZXZpc2lvbiAxMTg4MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjE1OCw2ICsyMTU4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgog
CQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcSW5jcmVtZW50YWxTd2VlcGVy
LmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4u
XGhlYXBcSW5jcmVtZW50YWxTd2VlcGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8Rmls
ZQogCQkJCVJlbGF0aXZlUGF0aD0iLi5cLi5caGVhcFxXZWFrQmxvY2suY3BwIgogCQkJCT4KIAkJ
CTwvRmlsZT4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTg4
MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtNjM3LDYgKzYzNyw4IEBACiAJCUJDRkQ4
QzkzMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1w
VGFibGUuaCAqLzsgfTsKIAkJQzIyQjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBsaW5nQ291
bnRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3
NzAwOEUxNDAyRkRENjAwNzhFQjM5IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyNDAzMDU1MTRCNDA0RTYwMDc5
RUI2NCAvKiBDb3BpZWRTcGFjZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3Bw
ICovOyB9OworCQlDMjVGOEJDRDE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVy
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4
QkNCMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9OworCQlD
MjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0NEE5MDAy
NDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMg
PSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtl
ZEFsbG9jYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJCOTE2QzExNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkM1MTREQTA0
MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtl
ZEFsbG9jYXRvci5jcHAgKi87IH07CiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3Bp
ZWRTcGFjZUlubGluZU1ldGhvZHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGlu
ZU1ldGhvZHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwpAQCAtMTMzMSw2ICsxMzMzLDggQEAKIAkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1
bXBUYWJsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFi
bGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0ZEOEM5MTBFRUIyRUU3MDAy
ODM4NDggLyogSnVtcFRhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1
bXBUYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5
MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gQ29waWVkU3BhY2UuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJ
bmNyZW1lbnRhbFN3ZWVwZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5j
cmVtZW50YWxTd2VlcGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkMx
MTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUMyQjkxNkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8q
IENvcGllZFNwYWNlSW5saW5lTWV0aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKQEAgLTE2MDksNiArMTYxMyw4IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBo
ZWFwICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjVG
OEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLywKKwkJCQlD
MjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8sCiAJCQkJ
MTQ4MTZFMTkxNTRDQzU2QzAwQjgwNTRDIC8qIEJsb2NrQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkx
NDgxNkUxQTE1NENDNTZDMDBCODA1NEMgLyogQmxvY2tBbGxvY2F0b3IuaCAqLywKIAkJCQlBNzUy
MUUxMjE0MjkxNjlBMDAzQzhEMEMgLyogQ2FyZFNldC5oICovLApAQCAtMjMxMCw2ICsyMzE2LDcg
QEAKIAkJCQk4NkFERDE0NTBGRERFQTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBI
ZWFkZXJzICovLAogCQkJCUMyRUFEMkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0
b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJr
ZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAorCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3
MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBBcnJheUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlC
QzE4QzNFNzBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICov
LAogCQkJCUJDMThDNTI0MEUxNkZDOEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCBp
biBIZWFkZXJzICovLApAQCAtMzIyMSw2ICszMjI4LDcgQEAKIAkJCQkwRjNCM0EyQjE1NDc1MDAw
MDAzRUQwRkYgLyogREZHVmFsaWRhdGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIx
NTRGQjRFRTAwOTgzRTcyIC8qIERGR0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEYxNjAxNUQxNTYxOThDOTAwQzI1ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhh
c2UuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9y
RGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hlYXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0hlYXAuY3BwCShyZXZpc2lvbiAxMTg4MDIpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9IZWFwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1
ZGUgIkNvbnNlcnZhdGl2ZVJvb3RzLmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgi
CiAjaW5jbHVkZSAiSGVhcFJvb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2Vl
cGVyLmgiCiAjaW5jbHVkZSAiSW50ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdC5oIgpAQCAtMjQ1LDYgKzI0Niw3IEBAIEhlYXA6
OkhlYXAoSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhLCBIZWEKICAgICAsIG1fb2JqZWN0U3BhY2Uo
dGhpcykKICAgICAsIG1fc3RvcmFnZVNwYWNlKHRoaXMpCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJh
Y2soRGVmYXVsdEdDQWN0aXZpdHlDYWxsYmFjazo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9zd2Vl
cGVyKEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNoaW5lVGhy
ZWFkcyh0aGlzKQogICAgICwgbV9zaGFyZWREYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX3Nsb3RW
aXNpdG9yKG1fc2hhcmVkRGF0YSkKQEAgLTcwMSwxMSArNzAzLDEzIEBAIHZvaWQgSGVhcDo6Y29s
bGVjdChTd2VlcFRvZ2dsZSBzd2VlcFRvZ2cKICAgICBpZiAoc3dlZXBUb2dnbGUgPT0gRG9Td2Vl
cCkgewogICAgICAgICBTYW1wbGluZ1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xs
ZWN0aW9uOiBTd2VlcGluZyIpOwogICAgICAgICBHQ1BIQVNFKFN3ZWVwaW5nKTsKLSAgICAgICAg
bV9vYmplY3RTcGFjZS5zd2VlcCgpOwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOwog
ICAgICAgICBtX2J5dGVzQWJhbmRvbmVkID0gMDsKICAgICB9CiAKKyAgICBtX29iamVjdFNwYWNl
LmRpZEZpbmlzaE1hcmtpbmcoKTsKKyAgICBtX3N3ZWVwZXItPmRpZEZpbmlzaE1hcmtpbmcoKTsK
KwogICAgIHsKICAgICAgICAgR0NQSEFTRShSZXNldEFsbG9jYXRvcnMpOwogICAgICAgICBtX29i
amVjdFNwYWNlLnJlc2V0QWxsb2NhdG9ycygpOwpAQCAtNzg1LDQgKzc4OSwxNSBAQCB2b2lkIEhl
YXA6OnJlbW92ZUZ1bmN0aW9uRXhlY3V0YWJsZShGdW5jCiAgICAgbV9mdW5jdGlvbnMucmVtb3Zl
KGV4ZWN1dGFibGUpOwogfQogCit2b2lkIEhlYXA6OmRpZEZpbmlzaFN3ZWVwaW5nKCkKK3sKKyAg
ICBtX2J5dGVzQWJhbmRvbmVkID0gMDsKKyAgICBtX3N3ZWVwZXItPmRpZEZpbmlzaFN3ZWVwaW5n
KCk7Cit9CisKK3ZvaWQgSGVhcDo6aW5jcmVtZW50YWxTd2VlcCgpCit7CisgICAgbV9vYmplY3RT
cGFjZS5pbmNyZW1lbnRhbFN3ZWVwKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkocmV2aXNpb24gMTE4ODAyKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBA
IG5hbWVzcGFjZSBKU0MgewogICAgIGNsYXNzIEdsb2JhbENvZGVCbG9jazsKICAgICBjbGFzcyBI
ZWFwOwogICAgIGNsYXNzIEhlYXBSb290VmlzaXRvcjsKKyAgICBjbGFzcyBJbmNyZW1lbnRhbFN3
ZWVwZXI7CiAgICAgY2xhc3MgSlNDZWxsOwogICAgIGNsYXNzIEpTR2xvYmFsRGF0YTsKICAgICBj
bGFzcyBKU1ZhbHVlOwpAQCAtMTYyLDYgKzE2Myw5IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAg
ICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVhZGxpbmUpOwogCisgICAgICAgIHZvaWQgaW5j
cmVtZW50YWxTd2VlcCgpOworICAgICAgICB2b2lkIGRpZEZpbmlzaFN3ZWVwaW5nKCk7CisKICAg
ICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgQ29kZUJsb2NrOwogICAgICAgICBmcmll
bmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9yOwpAQCAtMjE3LDYgKzIyMSw3IEBAIG5hbWVz
cGFjZSBKU0MgewogICAgICAgICBPd25QdHI8SGFzaFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+
ID4gbV9tYXJrTGlzdFNldDsKIAogICAgICAgICBPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBt
X2FjdGl2aXR5Q2FsbGJhY2s7CisgICAgICAgIE93blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1f
c3dlZXBlcjsKICAgICAgICAgCiAgICAgICAgIE1hY2hpbmVUaHJlYWRzIG1fbWFjaGluZVRocmVh
ZHM7CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50
YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9J
bmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5
NSBAQAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5o
IgorCisjaW5jbHVkZSAiQVBJU2hpbXMuaCIKKyNpbmNsdWRlICJIZWFwLmgiCisjaW5jbHVkZSA8
d3RmL1dURlRocmVhZERhdGEuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKKyNpZiBVU0UoQ0YpCisK
K3N0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBkZWNhZGUgPSA2MCAqIDYwICogMjQgKiAzNjUg
KiAxMDsKK3N0YXRpYyBjb25zdCBDRlRpbWVJbnRlcnZhbCBpbmNyZW1lbnRJbnRlcnZhbCA9IDAu
MTsKKyAKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjp0aW1lckRpZEZpcmUoQ0ZSdW5Mb29wVGlt
ZXJSZWYsIHZvaWQqIGluZm8pCit7CisgICAgSGVhcCogaGVhcCA9IHN0YXRpY19jYXN0PEhlYXAq
PihpbmZvKTsKKyAgICBBUElFbnRyeVNoaW0gc2hpbShoZWFwLT5nbG9iYWxEYXRhKCkpOworICAg
IGhlYXAtPmluY3JlbWVudGFsU3dlZXAoKTsKK30KKyAgICAKK0luY3JlbWVudGFsU3dlZXBlcjo6
SW5jcmVtZW50YWxTd2VlcGVyKEhlYXAqIGhlYXAsIENGUnVuTG9vcFJlZiBydW5Mb29wKQorICAg
IDogbV9oZWFwKGhlYXApCisgICAgLCBtX3RpbWVySXNTZXQoZmFsc2UpCit7CisgICAgbWVtc2V0
KCZtX2NvbnRleHQsIDAsIHNpemVvZihDRlJ1bkxvb3BUaW1lckNvbnRleHQpKTsKKyAgICBtX2Nv
bnRleHQuaW5mbyA9IG1faGVhcDsKKyAgICBtX3J1bkxvb3AgPSBydW5Mb29wOworICAgIG1fdGlt
ZXIuYWRvcHRDRihDRlJ1bkxvb3BUaW1lckNyZWF0ZSgwLCBDRkFic29sdXRlVGltZUdldEN1cnJl
bnQoKSwgaW5jcmVtZW50SW50ZXJ2YWwsIDAsIDAsICZ0aW1lckRpZEZpcmUsICZtX2NvbnRleHQp
KTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCks
IGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0luY3JlbWVudGFsU3dlZXBlcjo6fkluY3Jl
bWVudGFsU3dlZXBlcigpCit7CisgICAgQ0ZSdW5Mb29wUmVtb3ZlVGltZXIobV9ydW5Mb29wLmdl
dCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9uTW9kZXMpOworICAgIENGUnVuTG9v
cFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKK30KKworUGFzc093blB0cjxJbmNyZW1l
bnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKEhlYXAqIGhlYXApCit7Cisg
ICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIoaGVhcCwgQ0ZSdW5Mb29w
R2V0Q3VycmVudCgpKSk7Cit9CisKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpzY2hlZHVsZVRp
bWVyKCkKK3sKKyAgICBBU1NFUlQoIW1fdGltZXJJc1NldCk7CisgICAgbV90aW1lcklzU2V0ID0g
dHJ1ZTsKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBD
RkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIGluY3JlbWVudEludGVydmFsKTsKK30KKwordm9p
ZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNhbmNlbFRpbWVyKCkKK3sKKyAgICBBU1NFUlQobV90aW1l
cklzU2V0KTsKKyAgICBtX3RpbWVySXNTZXQgPSBmYWxzZTsKKyAgICBDRlJ1bkxvb3BUaW1lclNl
dE5leHRGaXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSAr
IGRlY2FkZSk7Cit9CisKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkaWRGaW5pc2hNYXJraW5n
KCkKK3sKKyAgICBpZiAoIW1fdGltZXJJc1NldCkKKyAgICAgICAgc2NoZWR1bGVUaW1lcigpOwor
fQorICAgIAordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRpZEZpbmlzaFN3ZWVwaW5nKCkKK3sK
KyAgICBpZiAobV90aW1lcklzU2V0KQorICAgICAgICBjYW5jZWxUaW1lcigpOworfQorCisjZWxz
ZQorCitJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFsU3dlZXBlcigpCit7Cit9CisKK0lu
Y3JlbWVudGFsU3dlZXBlcjo6fkluY3JlbWVudGFsU3dlZXBlcigpCit7Cit9CisKK1Bhc3NPd25Q
dHI8SW5jcmVtZW50YWxTd2VlcGVyPiBJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0ZShIZWFwKikK
K3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluY3JlbWVudGFsU3dlZXBlcigpKTsKK30KKyAg
ICAKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpkaWRGaW5pc2hNYXJraW5nKCkKK3sKK30KKwor
dm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRpZEZpbmlzaFN3ZWVwaW5nKCkKK3sKK30KKyAgICAK
KyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZpc2lvbiAwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDApCkBA
IC0wLDAgKzEsNDkgQEAKKyNpZm5kZWYgSW5jcmVtZW50YWxTd2VlcGVyX2gKKyNkZWZpbmUgSW5j
cmVtZW50YWxTd2VlcGVyX2gKKworI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgVVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0
aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNz
IEhlYXA7CisgICAgCitjbGFzcyBJbmNyZW1lbnRhbFN3ZWVwZXIgeworcHVibGljOgorICAgIH5J
bmNyZW1lbnRhbFN3ZWVwZXIoKTsKKworICAgIHN0YXRpYyBQYXNzT3duUHRyPEluY3JlbWVudGFs
U3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsKKworICAgIHZvaWQgZGlkRmluaXNoTWFya2luZygpOwor
ICAgIHZvaWQgZGlkRmluaXNoU3dlZXBpbmcoKTsKKyAgIAorICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzX251bWJlck9mQmxvY2tzVG9Td2VlcFBlckluY3JlbWVudCA9IDQ7CisgCitwcml2YXRl
OgorI2lmIFVTRShDRikKKyAgICBJbmNyZW1lbnRhbFN3ZWVwZXIoSGVhcCosIENGUnVuTG9vcFJl
Zik7CisgICAgCisgICAgc3RhdGljIHZvaWQgdGltZXJEaWRGaXJlKENGUnVuTG9vcFRpbWVyUmVm
LCB2b2lkKik7CisgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CisgICAgdm9pZCBjYW5jZWxUaW1l
cigpOworICAgIAorICAgIEhlYXAqIG1faGVhcDsKKyAgICBib29sIG1fdGltZXJJc1NldDsKKyAg
ICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisgICAgUmV0YWluUHRyPENG
UnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIENGUnVuTG9vcFRpbWVyQ29udGV4dCBtX2NvbnRl
eHQ7CisgICAgCisjZWxzZQorICAgIAorICAgIEluY3JlbWVudGFsU3dlZXBlcigpOworICAgIAor
I2VuZGlmCit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHJldmlzaW9uIDExODgwMikKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE1Nyw2ICsxNTcsOCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxs
KGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBzZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAg
ICAgICAKKyAgICAgICAgYm9vbCBuZWVkc1N3ZWVwaW5nKCk7CisKICNpZiBFTkFCTEUoR0dDKQog
ICAgICAgICB2b2lkIHNldERpcnR5T2JqZWN0KGNvbnN0IHZvaWQqIGF0b20pCiAgICAgICAgIHsK
QEAgLTQxNiw2ICs0MTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIH0KICAgICB9CiAK
KyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6bmVlZHNTd2VlcGluZygpCisgICAgeworICAg
ICAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7CisgICAgfQorCiAjaWYgRU5BQkxFKEdHQykK
IHRlbXBsYXRlIDxpbnQgX2NlbGxTaXplPiB2b2lkIE1hcmtlZEJsb2NrOjpnYXRoZXJEaXJ0eUNl
bGxzV2l0aFNpemUoRGlydHlDZWxsVmVjdG9yJiBkaXJ0eUNlbGxzKQogewpJbmRleDogU291cmNl
L0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmNwcAkocmV2aXNpb24gMTE4ODAyKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFy
a2VkU3BhY2UuaCIKIAorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUg
IkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmpl
Y3QuaCIKQEAgLTIzMiw0ICsyMzMsMjIgQEAgdm9pZCBNYXJrZWRTcGFjZTo6Z2F0aGVyRGlydHlD
ZWxscyhNYXJrZQogfQogI2VuZGlmCiAKK3ZvaWQgTWFya2VkU3BhY2U6OmluY3JlbWVudGFsU3dl
ZXAoKQoreworICAgIHVuc2lnbmVkIGJsb2Nrc1N3ZXB0ID0gMDsKKyAgICBmb3IgKDsgbV9jdXJy
ZW50QmxvY2tUb1N3ZWVwSW5kZXggPCBtX2Jsb2Nrc1RvU3dlZXAuc2l6ZSgpOyBtX2N1cnJlbnRC
bG9ja1RvU3dlZXBJbmRleCsrKSB7CisgICAgICAgIE1hcmtlZEJsb2NrKiBuZXh0QmxvY2sgPSBt
X2Jsb2Nrc1RvU3dlZXBbbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXhdOworICAgICAgICBpZiAo
bmV4dEJsb2NrLT5uZWVkc1N3ZWVwaW5nKCkpIHsKKyAgICAgICAgICAgIG5leHRCbG9jay0+c3dl
ZXAoKTsKKyAgICAgICAgICAgIG1fYmxvY2tzVG9Td2VlcFttX2N1cnJlbnRCbG9ja1RvU3dlZXBJ
bmRleF0gPSAwOworICAgICAgICAgICAgYmxvY2tzU3dlcHQrKzsKKyAgICAgICAgICAgIGlmIChi
bG9ja3NTd2VwdCA+PSBJbmNyZW1lbnRhbFN3ZWVwZXI6OnNfbnVtYmVyT2ZCbG9ja3NUb1N3ZWVw
UGVySW5jcmVtZW50KSB7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5k
ZXgrKzsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICB9CisgICAgbV9oZWFwLT5kaWRGaW5pc2hTd2VlcGluZygpOworfQorCiB9IC8vIG5hbWVz
cGFjZSBKU0MKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAko
cmV2aXNpb24gMTE4ODAyKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsOCBAQCBwdWJsaWM6CiAgICAgCiAgICAg
dm9pZCByZXNldEFsbG9jYXRvcnMoKTsKIAorICAgIHZvaWQgZGlkRmluaXNoTWFya2luZygpOwor
CiAgICAgdm9pZCB2aXNpdFdlYWtTZXRzKEhlYXBSb290VmlzaXRvciYpOwogICAgIHZvaWQgcmVh
cFdlYWtTZXRzKCk7CiAgICAgdm9pZCBzd2VlcFdlYWtTZXRzKCk7CkBAIC0xMDYsNiArMTA4LDcg
QEAgcHVibGljOgogCiAgICAgdm9pZCBjbGVhck1hcmtzKCk7CiAgICAgdm9pZCBzd2VlcCgpOwor
ICAgIHZvaWQgaW5jcmVtZW50YWxTd2VlcCgpOwogICAgIHNpemVfdCBvYmplY3RDb3VudCgpOwog
ICAgIHNpemVfdCBzaXplKCk7CiAgICAgc2l6ZV90IGNhcGFjaXR5KCk7CkBAIC0xMzUsNiArMTM4
LDkgQEAgcHJpdmF0ZToKIAogICAgIEhlYXAqIG1faGVhcDsKICAgICBNYXJrZWRCbG9ja1NldCBt
X2Jsb2NrczsKKworICAgIHVuc2lnbmVkIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4OworICAg
IFZlY3RvcjxNYXJrZWRCbG9jayo+IG1fYmxvY2tzVG9Td2VlcDsKIH07CiAKIHRlbXBsYXRlPHR5
cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpSZXR1cm5UeXBlIE1hcmtl
ZFNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQpAQCAtMjQyLDYgKzI0OCwxMiBA
QCBpbmxpbmUgc2l6ZV90IE1hcmtlZFNwYWNlOjpjYXBhY2l0eSgpCiAgICAgcmV0dXJuIGZvckVh
Y2hCbG9jazxDYXBhY2l0eT4oKTsKIH0KIAoraW5saW5lIHZvaWQgTWFya2VkU3BhY2U6OmRpZEZp
bmlzaE1hcmtpbmcoKQoreworICAgIFdURjo6Y29weVRvVmVjdG9yKG1fYmxvY2tzLnNldCgpLCBt
X2Jsb2Nrc1RvU3dlZXApOworICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4ID0gMDsKK30K
KwogfSAvLyBuYW1lc3BhY2UgSlNDCiAKICNlbmRpZiAvLyBNYXJrZWRTcGFjZV9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144939</attachid>
            <date>2012-05-30 15:28:07 -0700</date>
            <delta_ts>2012-05-30 15:31:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85429-20120530152806.patch</filename>
            <type>text/plain</type>
            <size>20801</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDYyIEBA
CisyMDEyLTA1LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSGVhcCBzaG91bGQgc3dlZXAgaW5jcmVtZW50YWxseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU0MjkKKworICAgICAgICBXZSBzaG91
bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgb3Bwb3J0dW5pc3RpYyBHQyB0aW1lciB0byBmaXJl
IGluIG9yZGVyIAorICAgICAgICB0byBjYWxsIG9iamVjdCBkZXN0cnVjdG9ycy4gSW5zdGVhZCwg
d2Ugc2hvdWxkIGluY3JlbWVudGFsbHkgc3dlZXAgc29tZSAKKyAgICAgICAgc3Vic2V0IG9mIHRo
ZSBibG9ja3MgcmVxdWlyaW5nIHN3ZWVwaW5nIHBlcmlvZGljYWxseS4gV2UgdGllIHRoaXMgc3dl
ZXBpbmcgCisgICAgICAgIHRvIGEgdGltZXIgcmF0aGVyIHRoYW4gdG8gY29sbGVjdGlvbnMgYmVj
YXVzZSB3ZSB3YW50IHRvIHJlY2xhaW0gdGhpcyBtZW1vcnkgCisgICAgICAgIGV2ZW4gaWYgd2Ug
c3RvcCBhbGxvY2F0aW5nLiBUaGlzIHdheSwgb3VyIG1lbW9yeSB1c2FnZSBzY2FsZXMgc21vb3Ro
bHkgd2l0aCAKKyAgICAgICAgYWN0dWFsIHVzZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlJ3Zl
IHJlY2VudGx5IGRvbmUgYW4gb3Bwb3J0dW5pc3RpYyBHQyBvciBub3QuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5
cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogaGVhcC9IZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNv
bGxlY3QpOiBXZSBubyBsb25nZXIgc3dlZXAgZHVyaW5nIGEgZnVsbCBzd2VlcC4gV2Ugb25seSBz
aHJpbmsgbm93LAorICAgICAgICB3aGljaCB3ZSB3aWxsIHN3aXRjaCBvdmVyIHRvIGJlaW5nIGRv
bmUgZHVyaW5nIGluY3JlbWVudGFsIHN3ZWVwaW5nIHRvbyBhcyBzb29uIGFzCisgICAgICAgIGFs
bCBmaW5hbGl6ZXJzIGNhbiBiZSBydW4gbGF6aWx5IChhbmQsIGJ5IGV4dGVuc2lvbiwgaW5jcmVt
ZW50YWxseSkuIAorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcGVyKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6dGltZXJEaWRGaXJlKTog
VGhlIEluY3JlbWVudGFsU3dlZXBlciB3b3JrcyB2ZXJ5IHNpbWlsYXJseSB0byAKKyAgICAgICAg
R0NBY3Rpdml0eUNhbGxiYWNrLiBJdCBpcyB0aWVkIHRvIGEgcnVuLWxvb3AgYmFzZWQgdGltZXIg
dGhhdCBmaXJlcyBwZXJpb2RpY2FsbHkgYmFzZWQgCisgICAgICAgIG9uIGhvdyBsb25nIHRoZSBw
cmV2aW91cyBzd2VlcCBpbmNyZW1lbnQgdG9vayB0byBydW4uIFRoZSBJbmNyZW1lbnRhbFN3ZWVw
ZXIgZG9lc24ndCBkbyAKKyAgICAgICAgYW55dGhpbmcgaWYgdGhlIHBsYXRmb3JtIGRvZXNuJ3Qg
c3VwcG9ydCBDb3JlRm91bmRhdGlvbi4KKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6
On5JbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c2NoZWR1bGVUaW1l
cik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIpOgorICAg
ICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOiBJdGVyYXRlcyBvdmVyIHRo
ZSBzbmFwc2hvdCBvZiB0aGUgTWFya2VkU3BhY2UgdGFrZW4gCisgICAgICAgIGR1cmluZyB0aGUg
bGFzdCBjb2xsZWN0aW9uLCBjaGVja2luZyB0byBzZWUgd2hpY2ggYmxvY2tzIG5lZWQgc3dlZXBp
bmcuIElmIGl0IHN1Y2Nlc3NmdWxseSAKKyAgICAgICAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoZSBi
bG9ja3MgdGhhdCBuZWVkIHN3ZWVwaW5nIHRoZW4gaXQgY2FuY2VscyB0aGUgdGltZXIuCisgICAg
ICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6IFdlIHRha2UgYSBz
bmFwc2hvdCBvZiB0aGUgSGVhcCBhbmQgc3RvcmUgaXQgaW4gCisgICAgICAgIGEgVmVjdG9yIHRo
YXQgdGhlIGluY3JlbWVudGFsIHN3ZWVwIHdpbGwgaXRlcmF0ZSBvdmVyLiBXZSBhbHNvIHJlc2V0
IG91ciBpbmRleCBpbnRvIHRoaXMgVmVjdG9yLgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEluY3JlbWVudGFsU3dl
ZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5jcHA6CisgICAgICAgIChKU0M6Ok1h
cmtlZEJsb2NrOjpzd2VlcEhlbHBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgor
ICAgICAgICAoSlNDOjpNYXJrZWRCbG9jazo6bmVlZHNTd2VlcGluZyk6IElmIGEgYmxvY2sgaXMg
aW4gdGhlIE1hcmtlZCBzdGF0ZSBpdCBuZWVkcyBzd2VlcGluZyAKKyAgICAgICAgdG8gYmUgdXNh
YmxlIGFuZCB0byBydW4gYW55IGRlc3RydWN0b3JzIHRoYXQgbmVlZCB0byBiZSBydW4uCisgICAg
ICAgIChKU0MpOgorICAgICAgICAqIGhlYXAvTWFya2VkU3BhY2UuY3BwOgorICAgICAgICAqIGhl
YXAvTWFya2VkU3BhY2UuaDoKKyAgICAgICAgKE1hcmtlZFNwYWNlKToKKwogMjAxMi0wNS0zMCAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgogCiAgICAgICAgIFNjcmlwdERlYnVnU2Vy
dmVyIHdhbnRzIHNvdXJjZUlEcyB0aGF0IGFyZSBub24temVybyBiZWNhdXNlIHRoYXQncyB3aGF0
IEhhc2hNYXBzIHdhbnQsIHNvIEpTQyBzaG91bGQgcGxhY2F0ZSBpdApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTE4OTc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05Nyw2ICs5Nyw3IEBA
IFNFVChKYXZhU2NyaXB0Q29yZV9TT1VSQ0VTCiAgICAgaGVhcC9IYW5kbGVTZXQuY3BwCiAgICAg
aGVhcC9IYW5kbGVTdGFjay5jcHAKICAgICBoZWFwL0hlYXAuY3BwCisgICAgaGVhcC9JbmNyZW1l
bnRhbFN3ZWVwZXIuY3BwCiAgICAgaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIuY3BwCiAgICAgaGVh
cC9NYXJrZWRBbGxvY2F0b3IuY3BwCiAgICAgaGVhcC9NYXJrZWRCbG9jay5jcHAKSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiAxMTg5Nzcp
CisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkod29ya2luZyBj
b3B5KQpAQCAtMjMyLDYgKzIzMiw4IEBAIGphdmFzY3JpcHRjb3JlX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVNldC5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9oZWFwL0hhbmRsZVNldC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9I
ZWFwQmxvY2suaCBcCisgICAgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dl
ZXBlci5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL1Nsb3RWaXNpdG9yLmggXAog
CVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmNwcCBcCiAJU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSGFuZGxlU3RhY2suaCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUuZ3lwaQkocmV2aXNpb24gMTE4OTc3KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEzNCw2
ICsxMzQsNyBAQAogICAgICAgICAgICAgJ2hlYXAvSGVhcC5oJywKICAgICAgICAgICAgICdoZWFw
L0hlYXBCbG9jay5oJywKICAgICAgICAgICAgICdoZWFwL0hlYXBSb290VmlzaXRvci5oJywKKyAg
ICAgICAgICAgICdoZWFwL0luY3JlbWVudGFsU3dlZXBlci5oJywKICAgICAgICAgICAgICdoZWFw
L0xpc3RhYmxlSGFuZGxlci5oJywKICAgICAgICAgICAgICdoZWFwL0xvY2FsLmgnLAogICAgICAg
ICAgICAgJ2hlYXAvTG9jYWxTY29wZS5oJywKQEAgLTQwNiw2ICs0MDcsNyBAQAogICAgICAgICAg
ICAgJ2hlYXAvSGFuZGxlU3RhY2suY3BwJywKICAgICAgICAgICAgICdoZWFwL0Jsb2NrQWxsb2Nh
dG9yLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwLmNwcCcsCisgICAgICAgICAgICAnaGVh
cC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwJywKICAgICAgICAgICAgICdoZWFwL01hY2hpbmVTdGFj
a01hcmtlci5jcHAnLAogICAgICAgICAgICAgJ2hlYXAvTWFya2VkQWxsb2NhdG9yLmNwcCcsCiAg
ICAgICAgICAgICAnaGVhcC9NYXJrZWRCbG9jay5jcHAnLApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL1RhcmdldC5wcmkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL1Rh
cmdldC5wcmkJKHJldmlzaW9uIDExODk3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJn
ZXQucHJpCSh3b3JraW5nIGNvcHkpCkBAIC03OCw2ICs3OCw3IEBAIFNPVVJDRVMgKz0gXAogICAg
IGhlYXAvSGFuZGxlU3RhY2suY3BwIFwKICAgICBoZWFwL0Jsb2NrQWxsb2NhdG9yLmNwcCBcCiAg
ICAgaGVhcC9IZWFwLmNwcCBcCisgICAgaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIFwKICAg
ICBoZWFwL01hY2hpbmVTdGFja01hcmtlci5jcHAgXAogICAgIGhlYXAvTWFya1N0YWNrLmNwcCBc
CiAgICAgaGVhcC9NYXJrZWRBbGxvY2F0b3IuY3BwIFwKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
dmNwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3Byb2ovSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qCShyZXZpc2lvbiAx
MTg5NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9qL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtMjE1
OCw2ICsyMTU4LDE0IEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXC4uXGhlYXBcSW5jcmVtZW50YWxTd2VlcGVyLmgiCisJCQkJPgorCQkJPC9GaWxl
PgorCQkJPEZpbGUKKwkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhlYXBcSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cLi5caGVhcFxXZWFrQmxvY2suY3BwIgogCQkJCT4KIAkJCTwvRmlsZT4KSW5kZXg6IFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAxMTg5NzcpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2lu
ZyBjb3B5KQpAQCAtNjM3LDYgKzYzNyw4IEBACiAJCUJDRkQ4QzkzMEVFQjJFRTcwMDI4Mzg0OCAv
KiBKdW1wVGFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEJDRkQ4QzkxMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuaCAqLzsgfTsKIAkJQzIy
QjMxQjkxNDA1NzdENzAwREI0NzVBIC8qIFNhbXBsaW5nQ291bnRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEY3NzAwOEUxNDAyRkRENjAwNzhFQjM5
IC8qIFNhbXBsaW5nQ291bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZh
dGUsICk7IH07IH07CiAJCUMyNDAzMDU1MTRCNDA0RTYwMDc5RUI2NCAvKiBDb3BpZWRTcGFjZS5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjQwMzA1
MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwICovOyB9OworCQlDMjVGOEJDRDE1
NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyNUY4QkNCMTU3NTQ0QTkwMDI0NUI3MSAv
KiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwICovOyB9OworCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVC
NzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxT
d2VlcGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJQzJCOTE2QzIxNERBMDE0RTAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzJCOTE2QzExNERBMDE0RTAw
Q0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkxNkM1MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRB
bGxvY2F0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gQzJCOTE2QzQxNERBMDQwQzAwQ0JBQzg2IC8qIE1hcmtlZEFsbG9jYXRvci5jcHAgKi87IH07
CiAJCUMyQzhEMDJEMTRBM0M2RTAwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQzhEMDJC
MTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTMzMSw2ICsxMzMzLDgg
QEAKIAkJQkNGRDhDOTAwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKdW1wVGFibGUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQ0ZEOEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEp1bXBUYWJsZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMjQwMzA1MzE0QjQwNEM5MDA3OUVCNjQgLyogQ29waWVkU3Bh
Y2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29waWVkU3BhY2Uu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVC
NzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUMyNUY4QkNDMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5jcmVtZW50YWxTd2VlcGVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAvKiBN
YXJrZWRBbGxvY2F0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWFya2Vk
QWxsb2NhdG9yLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUMyQjkxNkM0MTREQTA0
MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWFya2VkQWxsb2NhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQzJDOEQwMkIxNEEzQzZCMjAwNTc4RTY1IC8qIENvcGllZFNwYWNlSW5saW5lTWV0
aG9kcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb3BpZWRTcGFjZUlubGlu
ZU1ldGhvZHMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE2MDksNiArMTYxMyw4
IEBACiAJCTE0MkUzMTJBMTM0RkYwQTYwMEFGQURCNSAvKiBoZWFwICovID0gewogCQkJaXNhID0g
UEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQlDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEg
LyogSW5jcmVtZW50YWxTd2VlcGVyLmNwcCAqLywKKwkJCQlDMjVGOEJDQzE1NzU0NEE5MDAyNDVC
NzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8sCiAJCQkJMTQ4MTZFMTkxNTRDQzU2QzAwQjgw
NTRDIC8qIEJsb2NrQWxsb2NhdG9yLmNwcCAqLywKIAkJCQkxNDgxNkUxQTE1NENDNTZDMDBCODA1
NEMgLyogQmxvY2tBbGxvY2F0b3IuaCAqLywKIAkJCQlBNzUyMUUxMjE0MjkxNjlBMDAzQzhEMEMg
LyogQ2FyZFNldC5oICovLApAQCAtMjMxMCw2ICsyMzE2LDcgQEAKIAkJCQk4NkFERDE0NTBGRERF
QTk4MDAwNkVFQzIgLyogQVJNdjdBc3NlbWJsZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUMyRUFE
MkZDMTRGMDI0OTgwMEE0QjE1OSAvKiBDb3BpZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAog
CQkJCUMyQjkxNkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFk
ZXJzICovLAorCQkJCUMyNUY4QkNFMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVw
ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDM0U2MEUxNkY1Q0QwMEIzNDQ2MCAvKiBBcnJh
eUNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNzBFMTZGNUNEMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNTI0MEUxNkZD
OEEwMEIzNDQ2MCAvKiBBcnJheVByb3RvdHlwZS5sdXQuaCBpbiBIZWFkZXJzICovLApAQCAtMzIy
MSw2ICszMjI4LDcgQEAKIAkJCQkwRjNCM0EyQjE1NDc1MDAwMDAzRUQwRkYgLyogREZHVmFsaWRh
dGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZEODFBRDIxNTRGQjRFRTAwOTgzRTcyIC8qIERG
R0RvbWluYXRvcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYxNjAxNUQxNTYxOThDOTAwQzI1
ODdDIC8qIERGR0FyZ3VtZW50c1NpbXBsaWZpY2F0aW9uUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8s
CisJCQkJQzI1RjhCQ0QxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAg
aW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNz
aW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuY3BwCShyZXZp
c2lvbiAxMTg5NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjcsNiArMjcsNyBAQAogI2luY2x1ZGUgIkNvbnNlcnZhdGl2ZVJvb3Rz
LmgiCiAjaW5jbHVkZSAiR0NBY3Rpdml0eUNhbGxiYWNrLmgiCiAjaW5jbHVkZSAiSGVhcFJvb3RW
aXNpdG9yLmgiCisjaW5jbHVkZSAiSW5jcmVtZW50YWxTd2VlcGVyLmgiCiAjaW5jbHVkZSAiSW50
ZXJwcmV0ZXIuaCIKICNpbmNsdWRlICJKU0dsb2JhbERhdGEuaCIKICNpbmNsdWRlICJKU0dsb2Jh
bE9iamVjdC5oIgpAQCAtMjQ1LDYgKzI0Niw3IEBAIEhlYXA6OkhlYXAoSlNHbG9iYWxEYXRhKiBn
bG9iYWxEYXRhLCBIZWEKICAgICAsIG1fb2JqZWN0U3BhY2UodGhpcykKICAgICAsIG1fc3RvcmFn
ZVNwYWNlKHRoaXMpCiAgICAgLCBtX2FjdGl2aXR5Q2FsbGJhY2soRGVmYXVsdEdDQWN0aXZpdHlD
YWxsYmFjazo6Y3JlYXRlKHRoaXMpKQorICAgICwgbV9zd2VlcGVyKEluY3JlbWVudGFsU3dlZXBl
cjo6Y3JlYXRlKHRoaXMpKQogICAgICwgbV9tYWNoaW5lVGhyZWFkcyh0aGlzKQogICAgICwgbV9z
aGFyZWREYXRhKGdsb2JhbERhdGEpCiAgICAgLCBtX3Nsb3RWaXNpdG9yKG1fc2hhcmVkRGF0YSkK
QEAgLTcwMSwxMSArNzAzLDEyIEBAIHZvaWQgSGVhcDo6Y29sbGVjdChTd2VlcFRvZ2dsZSBzd2Vl
cFRvZ2cKICAgICBpZiAoc3dlZXBUb2dnbGUgPT0gRG9Td2VlcCkgewogICAgICAgICBTYW1wbGlu
Z1JlZ2lvbiBzYW1wbGluZ1JlZ2lvbigiR2FyYmFnZSBDb2xsZWN0aW9uOiBTd2VlcGluZyIpOwog
ICAgICAgICBHQ1BIQVNFKFN3ZWVwaW5nKTsKLSAgICAgICAgbV9vYmplY3RTcGFjZS5zd2VlcCgp
OwogICAgICAgICBtX29iamVjdFNwYWNlLnNocmluaygpOwotICAgICAgICBtX2J5dGVzQWJhbmRv
bmVkID0gMDsKICAgICB9CiAKKyAgICBtX3N3ZWVwZXItPnN0YXJ0U3dlZXBpbmcobV9vYmplY3RT
cGFjZS5ibG9ja3MoKS5zZXQoKSk7CisgICAgbV9ieXRlc0FiYW5kb25lZCA9IDA7CisKICAgICB7
CiAgICAgICAgIEdDUEhBU0UoUmVzZXRBbGxvY2F0b3JzKTsKICAgICAgICAgbV9vYmplY3RTcGFj
ZS5yZXNldEFsbG9jYXRvcnMoKTsKQEAgLTczNyw2ICs3NDAsMTEgQEAgR0NBY3Rpdml0eUNhbGxi
YWNrKiBIZWFwOjphY3Rpdml0eUNhbGxiYQogICAgIHJldHVybiBtX2FjdGl2aXR5Q2FsbGJhY2su
Z2V0KCk7CiB9CiAKK0luY3JlbWVudGFsU3dlZXBlciogSGVhcDo6c3dlZXBlcigpCit7CisgICAg
cmV0dXJuIG1fc3dlZXBlci5nZXQoKTsKK30KKwogdm9pZCBIZWFwOjpzZXRHYXJiYWdlQ29sbGVj
dGlvblRpbWVyRW5hYmxlZChib29sIGVuYWJsZSkKIHsKICAgICBhY3Rpdml0eUNhbGxiYWNrKCkt
PnNldEVuYWJsZWQoZW5hYmxlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hl
YXAuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHJl
dmlzaW9uIDExODk3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0hlYXAuaAkod29y
a2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBjbGFzcyBH
bG9iYWxDb2RlQmxvY2s7CiAgICAgY2xhc3MgSGVhcDsKICAgICBjbGFzcyBIZWFwUm9vdFZpc2l0
b3I7CisgICAgY2xhc3MgSW5jcmVtZW50YWxTd2VlcGVyOwogICAgIGNsYXNzIEpTQ2VsbDsKICAg
ICBjbGFzcyBKU0dsb2JhbERhdGE7CiAgICAgY2xhc3MgSlNWYWx1ZTsKQEAgLTEwMCw2ICsxMDEs
OCBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRB
Y3Rpdml0eUNhbGxiYWNrKFBhc3NPd25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPik7CiAgICAgICAg
IEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1lckVuYWJsZWQo
Ym9vbCk7CiAKKyAgICAgICAgSW5jcmVtZW50YWxTd2VlcGVyKiBzd2VlcGVyKCk7CisKICAgICAg
ICAgLy8gdHJ1ZSBpZiBhbiBhbGxvY2F0aW9uIG9yIGNvbGxlY3Rpb24gaXMgaW4gcHJvZ3Jlc3MK
ICAgICAgICAgaW5saW5lIGJvb2wgaXNCdXN5KCk7CiAgICAgICAgIApAQCAtMTYyLDYgKzE2NSw5
IEBAIG5hbWVzcGFjZSBKU0MgewogCiAgICAgICAgIGJvb2wgaXNQYWdlZE91dChkb3VibGUgZGVh
ZGxpbmUpOwogCisgICAgICAgIHZvaWQgaW5jcmVtZW50YWxTd2VlcCgpOworICAgICAgICB2b2lk
IGRpZEZpbmlzaFN3ZWVwaW5nKCk7CisKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xh
c3MgQ29kZUJsb2NrOwogICAgICAgICBmcmllbmQgY2xhc3MgTExJbnRPZmZzZXRzRXh0cmFjdG9y
OwpAQCAtMjE3LDYgKzIyMyw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBPd25QdHI8SGFz
aFNldDxNYXJrZWRBcmd1bWVudEJ1ZmZlcio+ID4gbV9tYXJrTGlzdFNldDsKIAogICAgICAgICBP
d25QdHI8R0NBY3Rpdml0eUNhbGxiYWNrPiBtX2FjdGl2aXR5Q2FsbGJhY2s7CisgICAgICAgIE93
blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IG1fc3dlZXBlcjsKICAgICAgICAgCiAgICAgICAgIE1h
Y2hpbmVUaHJlYWRzIG1fbWFjaGluZVRocmVhZHM7CiAgICAgICAgIApJbmRleDogU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwCShyZXZpc2lv
biAwKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNw
cAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMDYgQEAKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJJbmNyZW1lbnRhbFN3ZWVwZXIuaCIKKworI2luY2x1ZGUgIkFQSVNoaW1zLmgiCisj
aW5jbHVkZSAiSGVhcC5oIgorI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSAiSlNTdHJp
bmcuaCIKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgorI2luY2x1ZGUgIlNjb3BlQ2hhaW4uaCIK
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9XVEZUaHJlYWREYXRhLmg+
CisKK25hbWVzcGFjZSBKU0MgeworCisjaWYgVVNFKENGKQorCitzdGF0aWMgY29uc3QgQ0ZUaW1l
SW50ZXJ2YWwgZGVjYWRlID0gNjAgKiA2MCAqIDI0ICogMzY1ICogMTA7CitzdGF0aWMgY29uc3Qg
Q0ZUaW1lSW50ZXJ2YWwgc3dlZXBUaW1lU2xpY2VQZXJCbG9jayA9IDAuMDE7CitzdGF0aWMgY29u
c3QgQ0ZUaW1lSW50ZXJ2YWwgc3dlZXBUaW1lTXVsdGlwbGllciA9IDEuMCAvIHN3ZWVwVGltZVNs
aWNlUGVyQmxvY2s7CisgCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6dGltZXJEaWRGaXJlKENG
UnVuTG9vcFRpbWVyUmVmLCB2b2lkKiBpbmZvKQoreworICAgIEhlYXAqIGhlYXAgPSBzdGF0aWNf
Y2FzdDxIZWFwKj4oaW5mbyk7CisgICAgQVBJRW50cnlTaGltIHNoaW0oaGVhcC0+Z2xvYmFsRGF0
YSgpKTsKKyAgICBoZWFwLT5zd2VlcGVyKCktPmRvU3dlZXAoV1RGOjptb25vdG9uaWNhbGx5SW5j
cmVhc2luZ1RpbWUoKSk7Cit9CisgICAgCitJbmNyZW1lbnRhbFN3ZWVwZXI6OkluY3JlbWVudGFs
U3dlZXBlcihIZWFwKiBoZWFwLCBDRlJ1bkxvb3BSZWYgcnVuTG9vcCkKKyAgICA6IG1faGVhcCho
ZWFwKQorICAgICwgbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgoMCkKKyAgICAsIG1fbGVuZ3Ro
T2ZMYXN0U3dlZXBJbmNyZW1lbnQoMC4wKQoreworICAgIG1lbXNldCgmbV9jb250ZXh0LCAwLCBz
aXplb2YoQ0ZSdW5Mb29wVGltZXJDb250ZXh0KSk7CisgICAgbV9jb250ZXh0LmluZm8gPSBtX2hl
YXA7CisgICAgbV9ydW5Mb29wID0gcnVuTG9vcDsKKyAgICBtX3RpbWVyLmFkb3B0Q0YoQ0ZSdW5M
b29wVGltZXJDcmVhdGUoMCwgQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCksIGRlY2FkZSwgMCwg
MCwgJnRpbWVyRGlkRmlyZSwgJm1fY29udGV4dCkpOworICAgIENGUnVuTG9vcEFkZFRpbWVyKG1f
cnVuTG9vcC5nZXQoKSwgbV90aW1lci5nZXQoKSwga0NGUnVuTG9vcENvbW1vbk1vZGVzKTsKK30K
KworSW5jcmVtZW50YWxTd2VlcGVyOjp+SW5jcmVtZW50YWxTd2VlcGVyKCkKK3sKKyAgICBDRlJ1
bkxvb3BSZW1vdmVUaW1lcihtX3J1bkxvb3AuZ2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxv
b3BDb21tb25Nb2Rlcyk7CisgICAgQ0ZSdW5Mb29wVGltZXJJbnZhbGlkYXRlKG1fdGltZXIuZ2V0
KCkpOworfQorCitQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gSW5jcmVtZW50YWxTd2Vl
cGVyOjpjcmVhdGUoSGVhcCogaGVhcCkKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IEluY3Jl
bWVudGFsU3dlZXBlcihoZWFwLCBDRlJ1bkxvb3BHZXRDdXJyZW50KCkpKTsKK30KKwordm9pZCBJ
bmNyZW1lbnRhbFN3ZWVwZXI6OnNjaGVkdWxlVGltZXIoKQoreworICAgIENGUnVuTG9vcFRpbWVy
U2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgp
ICsgKG1fbGVuZ3RoT2ZMYXN0U3dlZXBJbmNyZW1lbnQgKiBzd2VlcFRpbWVNdWx0aXBsaWVyKSk7
Cit9CisKK3ZvaWQgSW5jcmVtZW50YWxTd2VlcGVyOjpjYW5jZWxUaW1lcigpCit7CisgICAgQ0ZS
dW5Mb29wVGltZXJTZXROZXh0RmlyZURhdGUobV90aW1lci5nZXQoKSwgQ0ZBYnNvbHV0ZVRpbWVH
ZXRDdXJyZW50KCkgKyBkZWNhZGUpOworfQorCit2b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6ZG9T
d2VlcChkb3VibGUgc3dlZXBCZWdpblRpbWUpCit7CisgICAgZm9yICg7IG1fY3VycmVudEJsb2Nr
VG9Td2VlcEluZGV4IDwgbV9ibG9ja3NUb1N3ZWVwLnNpemUoKTsgbV9jdXJyZW50QmxvY2tUb1N3
ZWVwSW5kZXgrKykgeworICAgICAgICBNYXJrZWRCbG9jayogbmV4dEJsb2NrID0gbV9ibG9ja3NU
b1N3ZWVwW21fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4XTsKKyAgICAgICAgaWYgKG5leHRCbG9j
ay0+bmVlZHNTd2VlcGluZygpKSB7CisgICAgICAgICAgICBuZXh0QmxvY2stPnN3ZWVwKCk7Cisg
ICAgICAgICAgICBtX2Jsb2Nrc1RvU3dlZXBbbV9jdXJyZW50QmxvY2tUb1N3ZWVwSW5kZXgrK10g
PSAwOworICAgICAgICAgICAgbV9sZW5ndGhPZkxhc3RTd2VlcEluY3JlbWVudCA9IFdURjo6bW9u
b3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBzd2VlcEJlZ2luVGltZTsKKyAgICAgICAgICAg
IHNjaGVkdWxlVGltZXIoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0K
KworICAgIG1fbGVuZ3RoT2ZMYXN0U3dlZXBJbmNyZW1lbnQgPSBXVEY6Om1vbm90b25pY2FsbHlJ
bmNyZWFzaW5nVGltZSgpIC0gc3dlZXBCZWdpblRpbWU7CisgICAgY2FuY2VsVGltZXIoKTsKK30K
Kwordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnN0YXJ0U3dlZXBpbmcoY29uc3QgSGFzaFNldDxN
YXJrZWRCbG9jayo+JiBibG9ja1NuYXBzaG90KQoreworICAgIFdURjo6Y29weVRvVmVjdG9yKGJs
b2NrU25hcHNob3QsIG1fYmxvY2tzVG9Td2VlcCk7CisgICAgbV9jdXJyZW50QmxvY2tUb1N3ZWVw
SW5kZXggPSAwOworICAgIHNjaGVkdWxlVGltZXIoKTsKK30KKworI2Vsc2UKKworSW5jcmVtZW50
YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIoKQoreworfQorCitJbmNyZW1lbnRhbFN3ZWVw
ZXI6On5JbmNyZW1lbnRhbFN3ZWVwZXIoKQoreworfQorCitQYXNzT3duUHRyPEluY3JlbWVudGFs
U3dlZXBlcj4gSW5jcmVtZW50YWxTd2VlcGVyOjpjcmVhdGUoSGVhcCopCit7CisgICAgcmV0dXJu
IGFkb3B0UHRyKG5ldyBJbmNyZW1lbnRhbFN3ZWVwZXIoKSk7Cit9CisKK3ZvaWQgSW5jcmVtZW50
YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYpCit7
Cit9CisgICAgCisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgSlNDCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5oCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUxIEBACisjaWZuZGVmIEluY3JlbWVudGFsU3dlZXBlcl9oCisj
ZGVmaW5lIEluY3JlbWVudGFsU3dlZXBlcl9oCisKKyNpbmNsdWRlICJNYXJrZWRCbG9jay5oIgor
I2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNp
bmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCisjaWYg
VVNFKENGKQorI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CisjZW5k
aWYKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIEhlYXA7CisgICAgCitjbGFzcyBJbmNyZW1l
bnRhbFN3ZWVwZXIgeworcHVibGljOgorICAgIH5JbmNyZW1lbnRhbFN3ZWVwZXIoKTsKKworICAg
IHN0YXRpYyBQYXNzT3duUHRyPEluY3JlbWVudGFsU3dlZXBlcj4gY3JlYXRlKEhlYXAqKTsKKyAg
ICB2b2lkIHN0YXJ0U3dlZXBpbmcoY29uc3QgSGFzaFNldDxNYXJrZWRCbG9jayo+JiBibG9ja1Nu
YXBzaG90KTsKKworcHJpdmF0ZToKKyNpZiBVU0UoQ0YpCisgICAgSW5jcmVtZW50YWxTd2VlcGVy
KEhlYXAqLCBDRlJ1bkxvb3BSZWYpOworICAgIAorICAgIHN0YXRpYyB2b2lkIHRpbWVyRGlkRmly
ZShDRlJ1bkxvb3BUaW1lclJlZiwgdm9pZCopOworICAgIHZvaWQgZG9Td2VlcChkb3VibGUgc3Rh
cnRUaW1lKTsKKyAgICB2b2lkIHNjaGVkdWxlVGltZXIoKTsKKyAgICB2b2lkIGNhbmNlbFRpbWVy
KCk7CisgICAgCisgICAgSGVhcCogbV9oZWFwOworICAgIHVuc2lnbmVkIG1fY3VycmVudEJsb2Nr
VG9Td2VlcEluZGV4OworICAgIFJldGFpblB0cjxDRlJ1bkxvb3BUaW1lclJlZj4gbV90aW1lcjsK
KyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wUmVmPiBtX3J1bkxvb3A7CisgICAgQ0ZSdW5Mb29wVGlt
ZXJDb250ZXh0IG1fY29udGV4dDsKKyAgIAorICAgIGRvdWJsZSBtX2xlbmd0aE9mTGFzdFN3ZWVw
SW5jcmVtZW50OyAKKyAgICBWZWN0b3I8TWFya2VkQmxvY2sqPiBtX2Jsb2Nrc1RvU3dlZXA7Cisj
ZWxzZQorICAgIAorICAgIEluY3JlbWVudGFsU3dlZXBlcigpOworICAgIAorI2VuZGlmCit9Owor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaGVhcC9NYXJrZWRCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkQmxvY2suY3BwCShyZXZpc2lvbiAxMTg5NzcpCisrKyBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyOSwx
MCArMTI5LDExIEBAIE1hcmtlZEJsb2NrOjpGcmVlTGlzdCBNYXJrZWRCbG9jazo6c3dlZXAKICAg
ICBjYXNlIE5ldzoKICAgICAgICAgQVNTRVJUKHN3ZWVwTW9kZSA9PSBTd2VlcFRvRnJlZUxpc3Qp
OwogICAgICAgICByZXR1cm4gc3BlY2lhbGl6ZWRTd2VlcDxOZXcsIFN3ZWVwVG9GcmVlTGlzdCwg
ZGVzdHJ1Y3RvckNhbGxOZWVkZWQ+KCk7Ci0gICAgY2FzZSBGcmVlTGlzdGVkOgorICAgIGNhc2Ug
RnJlZUxpc3RlZDogewogICAgICAgICAvLyBIYXBwZW5zIHdoZW4gYSBibG9jayB0cmFuc2l0aW9u
cyB0byBmdWxseSBhbGxvY2F0ZWQuCiAgICAgICAgIEFTU0VSVChzd2VlcE1vZGUgPT0gU3dlZXBU
b0ZyZWVMaXN0KTsKICAgICAgICAgcmV0dXJuIEZyZWVMaXN0KCk7CisgICAgfQogICAgIGNhc2Ug
QWxsb2NhdGVkOgogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJu
IEZyZWVMaXN0KCk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9NYXJrZWRCbG9j
ay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZEJsb2Nr
LmgJKHJldmlzaW9uIDExODk3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtl
ZEJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Nyw2ICsxNTcsOCBAQCBuYW1lc3BhY2UgSlND
IHsKICAgICAgICAgYm9vbCBpc0xpdmVDZWxsKGNvbnN0IHZvaWQqKTsKICAgICAgICAgdm9pZCBz
ZXRNYXJrZWQoY29uc3Qgdm9pZCopOwogICAgICAgICAKKyAgICAgICAgYm9vbCBuZWVkc1N3ZWVw
aW5nKCk7CisKICNpZiBFTkFCTEUoR0dDKQogICAgICAgICB2b2lkIHNldERpcnR5T2JqZWN0KGNv
bnN0IHZvaWQqIGF0b20pCiAgICAgICAgIHsKQEAgLTQxNiw2ICs0MTgsMTEgQEAgbmFtZXNwYWNl
IEpTQyB7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpbmxpbmUgYm9vbCBNYXJrZWRCbG9jazo6
bmVlZHNTd2VlcGluZygpCisgICAgeworICAgICAgICByZXR1cm4gbV9zdGF0ZSA9PSBNYXJrZWQ7
CisgICAgfQorCiAjaWYgRU5BQkxFKEdHQykKIHRlbXBsYXRlIDxpbnQgX2NlbGxTaXplPiB2b2lk
IE1hcmtlZEJsb2NrOjpnYXRoZXJEaXJ0eUNlbGxzV2l0aFNpemUoRGlydHlDZWxsVmVjdG9yJiBk
aXJ0eUNlbGxzKQogewpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvTWFya2VkU3Bh
Y2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL01hcmtlZFNw
YWNlLmNwcAkocmV2aXNpb24gMTE4OTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkU3BhY2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWFya2VkU3BhY2UuaCIKIAorI2luY2x1ZGUgIkluY3Jl
bWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVkZSAi
SlNMb2NrLmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL01hcmtlZFNwYWNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvTWFya2VkU3BhY2UuaAkocmV2aXNpb24gMTE4OTc3KQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvTWFya2VkU3BhY2UuaAkod29ya2luZyBjb3B5KQpAQCAtMTM1LDYgKzEz
NSw4IEBAIHByaXZhdGU6CiAKICAgICBIZWFwKiBtX2hlYXA7CiAgICAgTWFya2VkQmxvY2tTZXQg
bV9ibG9ja3M7CisKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleDsKIH07
CiAKIHRlbXBsYXRlPHR5cGVuYW1lIEZ1bmN0b3I+IGlubGluZSB0eXBlbmFtZSBGdW5jdG9yOjpS
ZXR1cm5UeXBlIE1hcmtlZFNwYWNlOjpmb3JFYWNoQ2VsbChGdW5jdG9yJiBmdW5jdG9yKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>144941</attachid>
            <date>2012-05-30 15:31:36 -0700</date>
            <delta_ts>2012-05-30 17:14:52 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-85429-20120530153135.patch</filename>
            <type>text/plain</type>
            <size>19005</size>
            <attacher name="Mark Hahnenberg">mhahnenberg</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTE4OTgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU2IEBA
CisyMDEyLTA1LTMwICBNYXJrIEhhaG5lbmJlcmcgIDxtaGFobmVuYmVyZ0BhcHBsZS5jb20+CisK
KyAgICAgICAgSGVhcCBzaG91bGQgc3dlZXAgaW5jcmVtZW50YWxseQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODU0MjkKKworICAgICAgICBXZSBzaG91
bGRuJ3QgaGF2ZSB0byB3YWl0IGZvciB0aGUgb3Bwb3J0dW5pc3RpYyBHQyB0aW1lciB0byBmaXJl
IGluIG9yZGVyIAorICAgICAgICB0byBjYWxsIG9iamVjdCBkZXN0cnVjdG9ycy4gSW5zdGVhZCwg
d2Ugc2hvdWxkIGluY3JlbWVudGFsbHkgc3dlZXAgc29tZSAKKyAgICAgICAgc3Vic2V0IG9mIHRo
ZSBibG9ja3MgcmVxdWlyaW5nIHN3ZWVwaW5nIHBlcmlvZGljYWxseS4gV2UgdGllIHRoaXMgc3dl
ZXBpbmcgCisgICAgICAgIHRvIGEgdGltZXIgcmF0aGVyIHRoYW4gdG8gY29sbGVjdGlvbnMgYmVj
YXVzZSB3ZSB3YW50IHRvIHJlY2xhaW0gdGhpcyBtZW1vcnkgCisgICAgICAgIGV2ZW4gaWYgd2Ug
c3RvcCBhbGxvY2F0aW5nLiBUaGlzIHdheSwgb3VyIG1lbW9yeSB1c2FnZSBzY2FsZXMgc21vb3Ro
bHkgd2l0aCAKKyAgICAgICAgYWN0dWFsIHVzZSwgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIHdlJ3Zl
IHJlY2VudGx5IGRvbmUgYW4gb3Bwb3J0dW5pc3RpYyBHQyBvciBub3QuCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAg
ICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLmd5
cGk6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFT
Y3JpcHRDb3JlLnZjcHJvajoKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRhcmdldC5wcmk6CisgICAgICAgICogaGVhcC9IZWFw
LmNwcDoKKyAgICAgICAgKEpTQzo6SGVhcDo6SGVhcCk6CisgICAgICAgIChKU0M6OkhlYXA6OmNv
bGxlY3QpOiBXZSBubyBsb25nZXIgc3dlZXAgZHVyaW5nIGEgZnVsbCBzd2VlcC4gV2Ugb25seSBz
aHJpbmsgbm93LAorICAgICAgICB3aGljaCB3ZSB3aWxsIHN3aXRjaCBvdmVyIHRvIGJlaW5nIGRv
bmUgZHVyaW5nIGluY3JlbWVudGFsIHN3ZWVwaW5nIHRvbyBhcyBzb29uIGFzCisgICAgICAgIGFs
bCBmaW5hbGl6ZXJzIGNhbiBiZSBydW4gbGF6aWx5IChhbmQsIGJ5IGV4dGVuc2lvbiwgaW5jcmVt
ZW50YWxseSkuIAorICAgICAgICAoSlNDOjpIZWFwOjpzd2VlcGVyKToKKyAgICAgICAgKEpTQyk6
CisgICAgICAgICogaGVhcC9IZWFwLmg6CisgICAgICAgIChKU0MpOgorICAgICAgICAoSGVhcCk6
CisgICAgICAgICogaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOiBBZGRlZC4KKyAgICAgICAg
KEpTQyk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6dGltZXJEaWRGaXJlKTog
VGhlIEluY3JlbWVudGFsU3dlZXBlciB3b3JrcyB2ZXJ5IHNpbWlsYXJseSB0byAKKyAgICAgICAg
R0NBY3Rpdml0eUNhbGxiYWNrLiBJdCBpcyB0aWVkIHRvIGEgcnVuLWxvb3AgYmFzZWQgdGltZXIg
dGhhdCBmaXJlcyBwZXJpb2RpY2FsbHkgYmFzZWQgCisgICAgICAgIG9uIGhvdyBsb25nIHRoZSBw
cmV2aW91cyBzd2VlcCBpbmNyZW1lbnQgdG9vayB0byBydW4uIFRoZSBJbmNyZW1lbnRhbFN3ZWVw
ZXIgZG9lc24ndCBkbyAKKyAgICAgICAgYW55dGhpbmcgaWYgdGhlIHBsYXRmb3JtIGRvZXNuJ3Qg
c3VwcG9ydCBDb3JlRm91bmRhdGlvbi4KKyAgICAgICAgKEpTQzo6SW5jcmVtZW50YWxTd2VlcGVy
OjpJbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6
On5JbmNyZW1lbnRhbFN3ZWVwZXIpOgorICAgICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c2NoZWR1bGVUaW1l
cik6CisgICAgICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIpOgorICAg
ICAgICAoSlNDOjpJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXApOiBJdGVyYXRlcyBvdmVyIHRo
ZSBzbmFwc2hvdCBvZiB0aGUgTWFya2VkU3BhY2UgdGFrZW4gCisgICAgICAgIGR1cmluZyB0aGUg
bGFzdCBjb2xsZWN0aW9uLCBjaGVja2luZyB0byBzZWUgd2hpY2ggYmxvY2tzIG5lZWQgc3dlZXBp
bmcuIElmIGl0IHN1Y2Nlc3NmdWxseSAKKyAgICAgICAgZ2V0cyB0byB0aGUgZW5kIG9mIHRoZSBi
bG9ja3MgdGhhdCBuZWVkIHN3ZWVwaW5nIHRoZW4gaXQgY2FuY2VscyB0aGUgdGltZXIuCisgICAg
ICAgIChKU0M6OkluY3JlbWVudGFsU3dlZXBlcjo6c3RhcnRTd2VlcGluZyk6IFdlIHRha2UgYSBz
bmFwc2hvdCBvZiB0aGUgSGVhcCBhbmQgc3RvcmUgaXQgaW4gCisgICAgICAgIGEgVmVjdG9yIHRo
YXQgdGhlIGluY3JlbWVudGFsIHN3ZWVwIHdpbGwgaXRlcmF0ZSBvdmVyLiBXZSBhbHNvIHJlc2V0
IG91ciBpbmRleCBpbnRvIHRoaXMgVmVjdG9yLgorICAgICAgICAqIGhlYXAvSW5jcmVtZW50YWxT
d2VlcGVyLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEluY3JlbWVudGFsU3dl
ZXBlcik6CisgICAgICAgICogaGVhcC9NYXJrZWRCbG9jay5oOgorICAgICAgICAoSlNDOjpNYXJr
ZWRCbG9jazo6bmVlZHNTd2VlcGluZyk6IElmIGEgYmxvY2sgaXMgaW4gdGhlIE1hcmtlZCBzdGF0
ZSBpdCBuZWVkcyBzd2VlcGluZyAKKyAgICAgICAgdG8gYmUgdXNhYmxlIGFuZCB0byBydW4gYW55
IGRlc3RydWN0b3JzIHRoYXQgbmVlZCB0byBiZSBydW4uCisKIDIwMTItMDUtMzAgIEZpbGlwIFBp
emxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBTY3JpcHREZWJ1Z1NlcnZlciB3YW50
cyBzb3VyY2VJRHMgdGhhdCBhcmUgbm9uLXplcm8gYmVjYXVzZSB0aGF0J3Mgd2hhdCBIYXNoTWFw
cyB3YW50LCBzbyBKU0Mgc2hvdWxkIHBsYWNhdGUgaXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
Q01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDExODk3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOTcsNiArOTcsNyBAQCBTRVQoSmF2
YVNjcmlwdENvcmVfU09VUkNFUwogICAgIGhlYXAvSGFuZGxlU2V0LmNwcAogICAgIGhlYXAvSGFu
ZGxlU3RhY2suY3BwCiAgICAgaGVhcC9IZWFwLmNwcAorICAgIGhlYXAvSW5jcmVtZW50YWxTd2Vl
cGVyLmNwcAogICAgIGhlYXAvTWFjaGluZVN0YWNrTWFya2VyLmNwcAogICAgIGhlYXAvTWFya2Vk
QWxsb2NhdG9yLmNwcAogICAgIGhlYXAvTWFya2VkQmxvY2suY3BwCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQkocmV2aXNpb24gMTE4OTc3KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAg
LTIzMiw2ICsyMzIsOCBAQCBqYXZhc2NyaXB0Y29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTZXQuY3BwIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9IYW5kbGVTZXQuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcEJsb2Nr
LmggXAorICAgIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5o
IFwKKyAgICBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuY3Bw
IFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9TbG90VmlzaXRvci5oIFwKIAlTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaGVhcC9IYW5kbGVTdGFjay5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0hhbmRsZVN0YWNrLmggXApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0ph
dmFTY3JpcHRDb3JlLmd5cGkJKHJldmlzaW9uIDExODk3NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS5neXBpCSh3b3JraW5nIGNvcHkpCkBAIC0xMzQsNiArMTM0LDcg
QEAKICAgICAgICAgICAgICdoZWFwL0hlYXAuaCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwQmxv
Y2suaCcsCiAgICAgICAgICAgICAnaGVhcC9IZWFwUm9vdFZpc2l0b3IuaCcsCisgICAgICAgICAg
ICAnaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaCcsCiAgICAgICAgICAgICAnaGVhcC9MaXN0YWJs
ZUhhbmRsZXIuaCcsCiAgICAgICAgICAgICAnaGVhcC9Mb2NhbC5oJywKICAgICAgICAgICAgICdo
ZWFwL0xvY2FsU2NvcGUuaCcsCkBAIC00MDYsNiArNDA3LDcgQEAKICAgICAgICAgICAgICdoZWFw
L0hhbmRsZVN0YWNrLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAn
LAogICAgICAgICAgICAgJ2hlYXAvSGVhcC5jcHAnLAorICAgICAgICAgICAgJ2hlYXAvSW5jcmVt
ZW50YWxTd2VlcGVyLmNwcCcsCiAgICAgICAgICAgICAnaGVhcC9NYWNoaW5lU3RhY2tNYXJrZXIu
Y3BwJywKICAgICAgICAgICAgICdoZWFwL01hcmtlZEFsbG9jYXRvci5jcHAnLAogICAgICAgICAg
ICAgJ2hlYXAvTWFya2VkQmxvY2suY3BwJywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9U
YXJnZXQucHJpCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9UYXJnZXQucHJp
CShyZXZpc2lvbiAxMTg5NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvVGFyZ2V0LnByaQko
d29ya2luZyBjb3B5KQpAQCAtNzgsNiArNzgsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBoZWFwL0hh
bmRsZVN0YWNrLmNwcCBcCiAgICAgaGVhcC9CbG9ja0FsbG9jYXRvci5jcHAgXAogICAgIGhlYXAv
SGVhcC5jcHAgXAorICAgIGhlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcCBcCiAgICAgaGVhcC9N
YWNoaW5lU3RhY2tNYXJrZXIuY3BwIFwKICAgICBoZWFwL01hcmtTdGFjay5jcHAgXAogICAgIGhl
YXAvTWFya2VkQWxsb2NhdG9yLmNwcCBcCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUudmNwcm9qL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvago9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmNwcm9q
L0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvagkocmV2aXNpb24gMTE4OTc3KQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjcHJvai9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTIxNTgsNiArMjE1
OCwxNCBAQAogCQkJCT4KIAkJCTwvRmlsZT4KIAkJCTxGaWxlCisJCQkJUmVsYXRpdmVQYXRoPSIu
LlwuLlxoZWFwXEluY3JlbWVudGFsU3dlZXBlci5oIgorCQkJCT4KKwkJCTwvRmlsZT4KKwkJCTxG
aWxlCisJCQkJUmVsYXRpdmVQYXRoPSIuLlwuLlxoZWFwXEluY3JlbWVudGFsU3dlZXBlci5jcHAi
CisJCQkJPgorCQkJPC9GaWxlPgorCQkJPEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXC4uXGhl
YXBcV2Vha0Jsb2NrLmNwcCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkocmV2aXNpb24gMTE4OTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkK
QEAgLTYzNyw2ICs2MzcsOCBAQAogCQlCQ0ZEOEM5MzBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRh
YmxlLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0ZE
OEM5MTBFRUIyRUU3MDAyODM4NDggLyogSnVtcFRhYmxlLmggKi87IH07CiAJCUMyMkIzMUI5MTQw
NTc3RDcwMERCNDc1QSAvKiBTYW1wbGluZ0NvdW50ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNzcwMDhFMTQwMkZERDYwMDc4RUIzOSAvKiBTYW1w
bGluZ0NvdW50ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQlDMjQwMzA1NTE0QjQwNEU2MDA3OUVCNjQgLyogQ29waWVkU3BhY2UuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQzI0MDMwNTMxNEI0MDRD
OTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAqLzsgfTsKKwkJQzI1RjhCQ0QxNTc1NDRBOTAw
MjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMjVGOEJDQjE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVt
ZW50YWxTd2VlcGVyLmNwcCAqLzsgfTsKKwkJQzI1RjhCQ0UxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3JlbWVudGFsU3dlZXBlci5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUMyQjkx
NkMyMTREQTAxNEUwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkxNkMxMTREQTAxNEUwMENCQUM4NiAv
KiBNYXJrZWRBbGxvY2F0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQlDMkI5MTZDNTE0REEwNDBDMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9y
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEMyQjkx
NkM0MTREQTA0MEMwMENCQUM4NiAvKiBNYXJrZWRBbGxvY2F0b3IuY3BwICovOyB9OwogCQlDMkM4
RDAyRDE0QTNDNkUwMDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBDMkM4RDAyQjE0QTNDNkIy
MDA1NzhFNjUgLyogQ29waWVkU3BhY2VJbmxpbmVNZXRob2RzLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEzMzEsNiArMTMzMyw4IEBACiAJCUJD
RkQ4QzkwMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gSnVtcFRhYmxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQkNGRDhDOTEwRUVCMkVFNzAwMjgzODQ4IC8qIEp1bXBUYWJsZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKdW1wVGFibGUuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQzI0MDMwNTMxNEI0MDRDOTAwNzlFQjY0IC8qIENvcGllZFNwYWNlLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvcGllZFNwYWNlLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlD
MjVGOEJDQzE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEluY3JlbWVudGFsU3dlZXBlci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDMTE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxs
b2NhdG9yLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1hcmtlZEFsbG9jYXRv
ci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlDMkI5MTZDNDE0REEwNDBDMDBDQkFD
ODYgLyogTWFya2VkQWxsb2NhdG9yLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IE1hcmtlZEFsbG9jYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUMyQzhEMDJCMTRBM0M2QjIwMDU3OEU2NSAvKiBDb3BpZWRTcGFjZUlubGluZU1ldGhvZHMuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29waWVkU3BhY2VJbmxpbmVNZXRob2Rz
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xNjA5LDYgKzE2MTMsOCBAQAogCQkx
NDJFMzEyQTEzNEZGMEE2MDBBRkFEQjUgLyogaGVhcCAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3Vw
OwogCQkJY2hpbGRyZW4gPSAoCisJCQkJQzI1RjhCQ0IxNTc1NDRBOTAwMjQ1QjcxIC8qIEluY3Jl
bWVudGFsU3dlZXBlci5jcHAgKi8sCisJCQkJQzI1RjhCQ0MxNTc1NDRBOTAwMjQ1QjcxIC8qIElu
Y3JlbWVudGFsU3dlZXBlci5oICovLAogCQkJCTE0ODE2RTE5MTU0Q0M1NkMwMEI4MDU0QyAvKiBC
bG9ja0FsbG9jYXRvci5jcHAgKi8sCiAJCQkJMTQ4MTZFMUExNTRDQzU2QzAwQjgwNTRDIC8qIEJs
b2NrQWxsb2NhdG9yLmggKi8sCiAJCQkJQTc1MjFFMTIxNDI5MTY5QTAwM0M4RDBDIC8qIENhcmRT
ZXQuaCAqLywKQEAgLTIzMTAsNiArMjMxNiw3IEBACiAJCQkJODZBREQxNDUwRkRERUE5ODAwMDZF
RUMyIC8qIEFSTXY3QXNzZW1ibGVyLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkVBRDJGQzE0RjAy
NDk4MDBBNEIxNTkgLyogQ29waWVkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlDMkI5
MTZDMjE0REEwMTRFMDBDQkFDODYgLyogTWFya2VkQWxsb2NhdG9yLmggaW4gSGVhZGVycyAqLywK
KwkJCQlDMjVGOEJDRTE1NzU0NEE5MDAyNDVCNzEgLyogSW5jcmVtZW50YWxTd2VlcGVyLmggaW4g
SGVhZGVycyAqLywKIAkJCQlCQzE4QzNFNjBFMTZGNUNEMDBCMzQ0NjAgLyogQXJyYXlDb25zdHJ1
Y3Rvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRTcwRTE2RjVDRDAwQjM0NDYwIC8qIEFy
cmF5UHJvdG90eXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzE4QzUyNDBFMTZGQzhBMDBCMzQ0
NjAgLyogQXJyYXlQcm90b3R5cGUubHV0LmggaW4gSGVhZGVycyAqLywKQEAgLTMyMjEsNiArMzIy
OCw3IEBACiAJCQkJMEYzQjNBMkIxNTQ3NTAwMDAwM0VEMEZGIC8qIERGR1ZhbGlkYXRlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDgxQUQyMTU0RkI0RUUwMDk4M0U3MiAvKiBERkdEb21pbmF0
b3JzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMTYwMTVEMTU2MTk4QzkwMEMyNTg3QyAvKiBE
RkdBcmd1bWVudHNTaW1wbGlmaWNhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUMy
NUY4QkNEMTU3NTQ0QTkwMDI0NUI3MSAvKiBJbmNyZW1lbnRhbFN3ZWVwZXIuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7
CiAJCX07CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmNwcAkocmV2aXNpb24gMTE4
OTc3KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJDb25zZXJ2YXRpdmVSb290cy5oIgogI2lu
Y2x1ZGUgIkdDQWN0aXZpdHlDYWxsYmFjay5oIgogI2luY2x1ZGUgIkhlYXBSb290VmlzaXRvci5o
IgorI2luY2x1ZGUgIkluY3JlbWVudGFsU3dlZXBlci5oIgogI2luY2x1ZGUgIkludGVycHJldGVy
LmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxEYXRhLmgiCiAjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3Qu
aCIKQEAgLTI0NSw2ICsyNDYsNyBAQCBIZWFwOjpIZWFwKEpTR2xvYmFsRGF0YSogZ2xvYmFsRGF0
YSwgSGVhCiAgICAgLCBtX29iamVjdFNwYWNlKHRoaXMpCiAgICAgLCBtX3N0b3JhZ2VTcGFjZSh0
aGlzKQogICAgICwgbV9hY3Rpdml0eUNhbGxiYWNrKERlZmF1bHRHQ0FjdGl2aXR5Q2FsbGJhY2s6
OmNyZWF0ZSh0aGlzKSkKKyAgICAsIG1fc3dlZXBlcihJbmNyZW1lbnRhbFN3ZWVwZXI6OmNyZWF0
ZSh0aGlzKSkKICAgICAsIG1fbWFjaGluZVRocmVhZHModGhpcykKICAgICAsIG1fc2hhcmVkRGF0
YShnbG9iYWxEYXRhKQogICAgICwgbV9zbG90VmlzaXRvcihtX3NoYXJlZERhdGEpCkBAIC03MDEs
MTEgKzcwMywxMiBAQCB2b2lkIEhlYXA6OmNvbGxlY3QoU3dlZXBUb2dnbGUgc3dlZXBUb2dnCiAg
ICAgaWYgKHN3ZWVwVG9nZ2xlID09IERvU3dlZXApIHsKICAgICAgICAgU2FtcGxpbmdSZWdpb24g
c2FtcGxpbmdSZWdpb24oIkdhcmJhZ2UgQ29sbGVjdGlvbjogU3dlZXBpbmciKTsKICAgICAgICAg
R0NQSEFTRShTd2VlcGluZyk7Ci0gICAgICAgIG1fb2JqZWN0U3BhY2Uuc3dlZXAoKTsKICAgICAg
ICAgbV9vYmplY3RTcGFjZS5zaHJpbmsoKTsKLSAgICAgICAgbV9ieXRlc0FiYW5kb25lZCA9IDA7
CiAgICAgfQogCisgICAgbV9zd2VlcGVyLT5zdGFydFN3ZWVwaW5nKG1fb2JqZWN0U3BhY2UuYmxv
Y2tzKCkuc2V0KCkpOworICAgIG1fYnl0ZXNBYmFuZG9uZWQgPSAwOworCiAgICAgewogICAgICAg
ICBHQ1BIQVNFKFJlc2V0QWxsb2NhdG9ycyk7CiAgICAgICAgIG1fb2JqZWN0U3BhY2UucmVzZXRB
bGxvY2F0b3JzKCk7CkBAIC03MzcsNiArNzQwLDExIEBAIEdDQWN0aXZpdHlDYWxsYmFjayogSGVh
cDo6YWN0aXZpdHlDYWxsYmEKICAgICByZXR1cm4gbV9hY3Rpdml0eUNhbGxiYWNrLmdldCgpOwog
fQogCitJbmNyZW1lbnRhbFN3ZWVwZXIqIEhlYXA6OnN3ZWVwZXIoKQoreworICAgIHJldHVybiBt
X3N3ZWVwZXIuZ2V0KCk7Cit9CisKIHZvaWQgSGVhcDo6c2V0R2FyYmFnZUNvbGxlY3Rpb25UaW1l
ckVuYWJsZWQoYm9vbCBlbmFibGUpCiB7CiAgICAgYWN0aXZpdHlDYWxsYmFjaygpLT5zZXRFbmFi
bGVkKGVuYWJsZSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAvSGVhcC5oCShyZXZpc2lvbiAx
MTg5NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9IZWFwLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ3LDYgKzQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgY2xhc3MgR2xvYmFsQ29k
ZUJsb2NrOwogICAgIGNsYXNzIEhlYXA7CiAgICAgY2xhc3MgSGVhcFJvb3RWaXNpdG9yOworICAg
IGNsYXNzIEluY3JlbWVudGFsU3dlZXBlcjsKICAgICBjbGFzcyBKU0NlbGw7CiAgICAgY2xhc3Mg
SlNHbG9iYWxEYXRhOwogICAgIGNsYXNzIEpTVmFsdWU7CkBAIC0xMDAsNiArMTAxLDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0QWN0aXZpdHlD
YWxsYmFjayhQYXNzT3duUHRyPEdDQWN0aXZpdHlDYWxsYmFjaz4pOwogICAgICAgICBKU19FWFBP
UlRfUFJJVkFURSB2b2lkIHNldEdhcmJhZ2VDb2xsZWN0aW9uVGltZXJFbmFibGVkKGJvb2wpOwog
CisgICAgICAgIEluY3JlbWVudGFsU3dlZXBlciogc3dlZXBlcigpOworCiAgICAgICAgIC8vIHRy
dWUgaWYgYW4gYWxsb2NhdGlvbiBvciBjb2xsZWN0aW9uIGlzIGluIHByb2dyZXNzCiAgICAgICAg
IGlubGluZSBib29sIGlzQnVzeSgpOwogICAgICAgICAKQEAgLTE2Miw2ICsxNjUsOSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICBib29sIGlzUGFnZWRPdXQoZG91YmxlIGRlYWRsaW5lKTsK
IAorICAgICAgICB2b2lkIGluY3JlbWVudGFsU3dlZXAoKTsKKyAgICAgICAgdm9pZCBkaWRGaW5p
c2hTd2VlcGluZygpOworCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENvZGVC
bG9jazsKICAgICAgICAgZnJpZW5kIGNsYXNzIExMSW50T2Zmc2V0c0V4dHJhY3RvcjsKQEAgLTIx
Nyw2ICsyMjMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICAgICAgT3duUHRyPEhhc2hTZXQ8TWFy
a2VkQXJndW1lbnRCdWZmZXIqPiA+IG1fbWFya0xpc3RTZXQ7CiAKICAgICAgICAgT3duUHRyPEdD
QWN0aXZpdHlDYWxsYmFjaz4gbV9hY3Rpdml0eUNhbGxiYWNrOworICAgICAgICBPd25QdHI8SW5j
cmVtZW50YWxTd2VlcGVyPiBtX3N3ZWVwZXI7CiAgICAgICAgIAogICAgICAgICBNYWNoaW5lVGhy
ZWFkcyBtX21hY2hpbmVUaHJlYWRzOwogICAgICAgICAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmNwcAkocmV2aXNpb24gMCkKKysr
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9oZWFwL0luY3JlbWVudGFsU3dlZXBlci5jcHAJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsMTA2IEBACisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAi
SW5jcmVtZW50YWxTd2VlcGVyLmgiCisKKyNpbmNsdWRlICJBUElTaGltcy5oIgorI2luY2x1ZGUg
IkhlYXAuaCIKKyNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgIkpTU3RyaW5nLmgiCisj
aW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRlICJTY29wZUNoYWluLmgiCisjaW5jbHVk
ZSA8d3RmL0hhc2hTZXQuaD4KKyNpbmNsdWRlIDx3dGYvV1RGVGhyZWFkRGF0YS5oPgorCituYW1l
c3BhY2UgSlNDIHsKKworI2lmIFVTRShDRikKKworc3RhdGljIGNvbnN0IENGVGltZUludGVydmFs
IGRlY2FkZSA9IDYwICogNjAgKiAyNCAqIDM2NSAqIDEwOworc3RhdGljIGNvbnN0IENGVGltZUlu
dGVydmFsIHN3ZWVwVGltZVNsaWNlUGVyQmxvY2sgPSAwLjAxOworc3RhdGljIGNvbnN0IENGVGlt
ZUludGVydmFsIHN3ZWVwVGltZU11bHRpcGxpZXIgPSAxLjAgLyBzd2VlcFRpbWVTbGljZVBlckJs
b2NrOworIAordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OnRpbWVyRGlkRmlyZShDRlJ1bkxvb3BU
aW1lclJlZiwgdm9pZCogaW5mbykKK3sKKyAgICBIZWFwKiBoZWFwID0gc3RhdGljX2Nhc3Q8SGVh
cCo+KGluZm8pOworICAgIEFQSUVudHJ5U2hpbSBzaGltKGhlYXAtPmdsb2JhbERhdGEoKSk7Cisg
ICAgaGVhcC0+c3dlZXBlcigpLT5kb1N3ZWVwKFdURjo6bW9ub3RvbmljYWxseUluY3JlYXNpbmdU
aW1lKCkpOworfQorICAgIAorSW5jcmVtZW50YWxTd2VlcGVyOjpJbmNyZW1lbnRhbFN3ZWVwZXIo
SGVhcCogaGVhcCwgQ0ZSdW5Mb29wUmVmIHJ1bkxvb3ApCisgICAgOiBtX2hlYXAoaGVhcCkKKyAg
ICAsIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KDApCisgICAgLCBtX2xlbmd0aE9mTGFzdFN3
ZWVwSW5jcmVtZW50KDAuMCkKK3sKKyAgICBtZW1zZXQoJm1fY29udGV4dCwgMCwgc2l6ZW9mKENG
UnVuTG9vcFRpbWVyQ29udGV4dCkpOworICAgIG1fY29udGV4dC5pbmZvID0gbV9oZWFwOworICAg
IG1fcnVuTG9vcCA9IHJ1bkxvb3A7CisgICAgbV90aW1lci5hZG9wdENGKENGUnVuTG9vcFRpbWVy
Q3JlYXRlKDAsIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVudCgpLCBkZWNhZGUsIDAsIDAsICZ0aW1l
ckRpZEZpcmUsICZtX2NvbnRleHQpKTsKKyAgICBDRlJ1bkxvb3BBZGRUaW1lcihtX3J1bkxvb3Au
Z2V0KCksIG1fdGltZXIuZ2V0KCksIGtDRlJ1bkxvb3BDb21tb25Nb2Rlcyk7Cit9CisKK0luY3Jl
bWVudGFsU3dlZXBlcjo6fkluY3JlbWVudGFsU3dlZXBlcigpCit7CisgICAgQ0ZSdW5Mb29wUmVt
b3ZlVGltZXIobV9ydW5Mb29wLmdldCgpLCBtX3RpbWVyLmdldCgpLCBrQ0ZSdW5Mb29wQ29tbW9u
TW9kZXMpOworICAgIENGUnVuTG9vcFRpbWVySW52YWxpZGF0ZShtX3RpbWVyLmdldCgpKTsKK30K
KworUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IEluY3JlbWVudGFsU3dlZXBlcjo6Y3Jl
YXRlKEhlYXAqIGhlYXApCit7CisgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBJbmNyZW1lbnRhbFN3
ZWVwZXIoaGVhcCwgQ0ZSdW5Mb29wR2V0Q3VycmVudCgpKSk7Cit9CisKK3ZvaWQgSW5jcmVtZW50
YWxTd2VlcGVyOjpzY2hlZHVsZVRpbWVyKCkKK3sKKyAgICBDRlJ1bkxvb3BUaW1lclNldE5leHRG
aXJlRGF0ZShtX3RpbWVyLmdldCgpLCBDRkFic29sdXRlVGltZUdldEN1cnJlbnQoKSArIChtX2xl
bmd0aE9mTGFzdFN3ZWVwSW5jcmVtZW50ICogc3dlZXBUaW1lTXVsdGlwbGllcikpOworfQorCit2
b2lkIEluY3JlbWVudGFsU3dlZXBlcjo6Y2FuY2VsVGltZXIoKQoreworICAgIENGUnVuTG9vcFRp
bWVyU2V0TmV4dEZpcmVEYXRlKG1fdGltZXIuZ2V0KCksIENGQWJzb2x1dGVUaW1lR2V0Q3VycmVu
dCgpICsgZGVjYWRlKTsKK30KKwordm9pZCBJbmNyZW1lbnRhbFN3ZWVwZXI6OmRvU3dlZXAoZG91
YmxlIHN3ZWVwQmVnaW5UaW1lKQoreworICAgIGZvciAoOyBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJ
bmRleCA8IG1fYmxvY2tzVG9Td2VlcC5zaXplKCk7IG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4
KyspIHsKKyAgICAgICAgTWFya2VkQmxvY2sqIG5leHRCbG9jayA9IG1fYmxvY2tzVG9Td2VlcFtt
X2N1cnJlbnRCbG9ja1RvU3dlZXBJbmRleF07CisgICAgICAgIGlmIChuZXh0QmxvY2stPm5lZWRz
U3dlZXBpbmcoKSkgeworICAgICAgICAgICAgbmV4dEJsb2NrLT5zd2VlcCgpOworICAgICAgICAg
ICAgbV9ibG9ja3NUb1N3ZWVwW21fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4KytdID0gMDsKKyAg
ICAgICAgICAgIG1fbGVuZ3RoT2ZMYXN0U3dlZXBJbmNyZW1lbnQgPSBXVEY6Om1vbm90b25pY2Fs
bHlJbmNyZWFzaW5nVGltZSgpIC0gc3dlZXBCZWdpblRpbWU7CisgICAgICAgICAgICBzY2hlZHVs
ZVRpbWVyKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBt
X2xlbmd0aE9mTGFzdFN3ZWVwSW5jcmVtZW50ID0gV1RGOjptb25vdG9uaWNhbGx5SW5jcmVhc2lu
Z1RpbWUoKSAtIHN3ZWVwQmVnaW5UaW1lOworICAgIGNhbmNlbFRpbWVyKCk7Cit9CisKK3ZvaWQg
SW5jcmVtZW50YWxTd2VlcGVyOjpzdGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxv
Y2sqPiYgYmxvY2tTbmFwc2hvdCkKK3sKKyAgICBXVEY6OmNvcHlUb1ZlY3RvcihibG9ja1NuYXBz
aG90LCBtX2Jsb2Nrc1RvU3dlZXApOworICAgIG1fY3VycmVudEJsb2NrVG9Td2VlcEluZGV4ID0g
MDsKKyAgICBzY2hlZHVsZVRpbWVyKCk7Cit9CisKKyNlbHNlCisKK0luY3JlbWVudGFsU3dlZXBl
cjo6SW5jcmVtZW50YWxTd2VlcGVyKCkKK3sKK30KKworSW5jcmVtZW50YWxTd2VlcGVyOjp+SW5j
cmVtZW50YWxTd2VlcGVyKCkKK3sKK30KKworUGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+
IEluY3JlbWVudGFsU3dlZXBlcjo6Y3JlYXRlKEhlYXAqKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgSW5jcmVtZW50YWxTd2VlcGVyKCkpOworfQorCit2b2lkIEluY3JlbWVudGFsU3dlZXBl
cjo6c3RhcnRTd2VlcGluZyhjb25zdCBIYXNoU2V0PE1hcmtlZEJsb2NrKj4mKQoreworfQorICAg
IAorI2VuZGlmCisKK30gLy8gbmFtZXNwYWNlIEpTQwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFT
Y3JpcHRDb3JlL2hlYXAvSW5jcmVtZW50YWxTd2VlcGVyLmgJKHJldmlzaW9uIDApCisrKyBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaGVhcC9JbmNyZW1lbnRhbFN3ZWVwZXIuaAkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSw1MSBAQAorI2lmbmRlZiBJbmNyZW1lbnRhbFN3ZWVwZXJfaAorI2RlZmluZSBJ
bmNyZW1lbnRhbFN3ZWVwZXJfaAorCisjaW5jbHVkZSAiTWFya2VkQmxvY2suaCIKKyNpbmNsdWRl
IDx3dGYvSGFzaFNldC5oPgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworI2lmIFVTRShDRikK
KyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2VuZGlmCisKK25h
bWVzcGFjZSBKU0MgeworCitjbGFzcyBIZWFwOworICAgIAorY2xhc3MgSW5jcmVtZW50YWxTd2Vl
cGVyIHsKK3B1YmxpYzoKKyAgICB+SW5jcmVtZW50YWxTd2VlcGVyKCk7CisKKyAgICBzdGF0aWMg
UGFzc093blB0cjxJbmNyZW1lbnRhbFN3ZWVwZXI+IGNyZWF0ZShIZWFwKik7CisgICAgdm9pZCBz
dGFydFN3ZWVwaW5nKGNvbnN0IEhhc2hTZXQ8TWFya2VkQmxvY2sqPiYgYmxvY2tTbmFwc2hvdCk7
CisKK3ByaXZhdGU6CisjaWYgVVNFKENGKQorICAgIEluY3JlbWVudGFsU3dlZXBlcihIZWFwKiwg
Q0ZSdW5Mb29wUmVmKTsKKyAgICAKKyAgICBzdGF0aWMgdm9pZCB0aW1lckRpZEZpcmUoQ0ZSdW5M
b29wVGltZXJSZWYsIHZvaWQqKTsKKyAgICB2b2lkIGRvU3dlZXAoZG91YmxlIHN0YXJ0VGltZSk7
CisgICAgdm9pZCBzY2hlZHVsZVRpbWVyKCk7CisgICAgdm9pZCBjYW5jZWxUaW1lcigpOworICAg
IAorICAgIEhlYXAqIG1faGVhcDsKKyAgICB1bnNpZ25lZCBtX2N1cnJlbnRCbG9ja1RvU3dlZXBJ
bmRleDsKKyAgICBSZXRhaW5QdHI8Q0ZSdW5Mb29wVGltZXJSZWY+IG1fdGltZXI7CisgICAgUmV0
YWluUHRyPENGUnVuTG9vcFJlZj4gbV9ydW5Mb29wOworICAgIENGUnVuTG9vcFRpbWVyQ29udGV4
dCBtX2NvbnRleHQ7CisgICAKKyAgICBkb3VibGUgbV9sZW5ndGhPZkxhc3RTd2VlcEluY3JlbWVu
dDsgCisgICAgVmVjdG9yPE1hcmtlZEJsb2NrKj4gbV9ibG9ja3NUb1N3ZWVwOworI2Vsc2UKKyAg
ICAKKyAgICBJbmNyZW1lbnRhbFN3ZWVwZXIoKTsKKyAgICAKKyNlbmRpZgorfTsKKworfSAvLyBu
YW1lc3BhY2UgSlNDCisKKyNlbmRpZgpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2hlYXAv
TWFya2VkQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaGVhcC9N
YXJrZWRCbG9jay5oCShyZXZpc2lvbiAxMTg5NzcpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aGVhcC9NYXJrZWRCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDggQEAgbmFt
ZXNwYWNlIEpTQyB7CiAgICAgICAgIGJvb2wgaXNMaXZlQ2VsbChjb25zdCB2b2lkKik7CiAgICAg
ICAgIHZvaWQgc2V0TWFya2VkKGNvbnN0IHZvaWQqKTsKICAgICAgICAgCisgICAgICAgIGJvb2wg
bmVlZHNTd2VlcGluZygpOworCiAjaWYgRU5BQkxFKEdHQykKICAgICAgICAgdm9pZCBzZXREaXJ0
eU9iamVjdChjb25zdCB2b2lkKiBhdG9tKQogICAgICAgICB7CkBAIC00MTYsNiArNDE4LDExIEBA
IG5hbWVzcGFjZSBKU0MgewogICAgICAgICB9CiAgICAgfQogCisgICAgaW5saW5lIGJvb2wgTWFy
a2VkQmxvY2s6Om5lZWRzU3dlZXBpbmcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fc3RhdGUg
PT0gTWFya2VkOworICAgIH0KKwogI2lmIEVOQUJMRShHR0MpCiB0ZW1wbGF0ZSA8aW50IF9jZWxs
U2l6ZT4gdm9pZCBNYXJrZWRCbG9jazo6Z2F0aGVyRGlydHlDZWxsc1dpdGhTaXplKERpcnR5Q2Vs
bFZlY3RvciYgZGlydHlDZWxscykKIHsK
</data>
<flag name="review"
          id="151944"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>